@ptsecurity/mosaic 13.6.1 → 13.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (907) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +6 -6
  3. package/_theming.scss +7238 -7141
  4. package/_visual.scss +2724 -2695
  5. package/autocomplete/autocomplete-origin.directive.d.ts +12 -12
  6. package/autocomplete/autocomplete-trigger.directive.d.ts +167 -167
  7. package/autocomplete/autocomplete.component.d.ts +73 -73
  8. package/autocomplete/autocomplete.module.d.ts +12 -12
  9. package/autocomplete/index.d.ts +1 -1
  10. package/autocomplete/ptsecurity-mosaic-autocomplete.d.ts +5 -5
  11. package/autocomplete/public-api.d.ts +4 -4
  12. package/button/button.component.d.ts +40 -40
  13. package/button/button.module.d.ts +10 -10
  14. package/button/index.d.ts +1 -1
  15. package/button/ptsecurity-mosaic-button.d.ts +5 -5
  16. package/button/public-api.d.ts +2 -2
  17. package/button-toggle/button-toggle.component.d.ts +141 -141
  18. package/button-toggle/button-toggle.module.d.ts +9 -9
  19. package/button-toggle/index.d.ts +1 -1
  20. package/button-toggle/ptsecurity-mosaic-button-toggle.d.ts +5 -5
  21. package/button-toggle/public-api.d.ts +2 -2
  22. package/card/card.component.d.ts +26 -26
  23. package/card/card.module.d.ts +10 -10
  24. package/card/index.d.ts +1 -1
  25. package/card/ptsecurity-mosaic-card.d.ts +5 -5
  26. package/card/public-api.d.ts +2 -2
  27. package/checkbox/README.md +1 -1
  28. package/checkbox/checkbox-config.d.ts +13 -13
  29. package/checkbox/checkbox-module.d.ts +9 -9
  30. package/checkbox/checkbox-required-validator.d.ts +13 -13
  31. package/checkbox/checkbox.d.ts +140 -140
  32. package/checkbox/index.d.ts +1 -1
  33. package/checkbox/ptsecurity-mosaic-checkbox.d.ts +5 -5
  34. package/checkbox/public-api.d.ts +4 -4
  35. package/core/animation/animation.d.ts +6 -6
  36. package/core/animation/fade-animations.d.ts +2 -2
  37. package/core/animation/index.d.ts +3 -3
  38. package/core/animation/select-animations.d.ts +12 -12
  39. package/core/common-behaviors/color.d.ts +19 -19
  40. package/core/common-behaviors/common-module.d.ts +25 -25
  41. package/core/common-behaviors/constructor.d.ts +9 -9
  42. package/core/common-behaviors/disabled.d.ts +8 -8
  43. package/core/common-behaviors/error-state.d.ts +25 -25
  44. package/core/common-behaviors/index.d.ts +5 -5
  45. package/core/common-behaviors/tabindex.d.ts +8 -8
  46. package/core/error/error-options.d.ts +14 -14
  47. package/core/formatters/date/formatter.d.ts +203 -203
  48. package/core/formatters/date/templates/en-US.d.ts +74 -74
  49. package/core/formatters/date/templates/ru-RU.d.ts +74 -74
  50. package/core/formatters/index.d.ts +9 -9
  51. package/core/formatters/number/formatter.d.ts +27 -27
  52. package/core/forms/forms-module.d.ts +7 -7
  53. package/core/forms/forms.directive.d.ts +22 -22
  54. package/core/forms/index.d.ts +2 -2
  55. package/core/highlight/highlight.pipe.d.ts +7 -7
  56. package/core/highlight/index.d.ts +9 -9
  57. package/core/index.d.ts +1 -1
  58. package/core/label/label-options.d.ts +13 -13
  59. package/core/line/line.d.ts +28 -28
  60. package/core/option/action.d.ts +42 -42
  61. package/core/option/index.d.ts +4 -4
  62. package/core/option/optgroup.d.ts +16 -16
  63. package/core/option/option-module.d.ts +11 -11
  64. package/core/option/option.d.ts +115 -115
  65. package/core/overlay/overlay-position-map.d.ts +34 -34
  66. package/core/pop-up/constants.d.ts +29 -29
  67. package/core/pop-up/index.d.ts +3 -3
  68. package/core/pop-up/pop-up-trigger.d.ts +70 -70
  69. package/core/pop-up/pop-up.d.ts +36 -36
  70. package/core/ptsecurity-mosaic-core.d.ts +5 -5
  71. package/core/public-api.d.ts +17 -17
  72. package/core/select/constants.d.ts +23 -23
  73. package/core/select/errors.d.ts +19 -19
  74. package/core/select/events.d.ts +1 -1
  75. package/core/select/index.d.ts +3 -3
  76. package/core/selection/constants.d.ts +4 -4
  77. package/core/selection/index.d.ts +3 -3
  78. package/core/selection/pseudo-checkbox/pseudo-checkbox.d.ts +30 -30
  79. package/core/selection/pseudo-checkbox/pseudo-checkbox.module.d.ts +8 -8
  80. package/core/services/measure-scrollbar.service.d.ts +11 -11
  81. package/core/utils/index.d.ts +1 -1
  82. package/core/utils/public-api.d.ts +1 -1
  83. package/core/utils/utils.d.ts +2 -2
  84. package/core/validation/index.d.ts +1 -1
  85. package/core/validation/validation.d.ts +18 -18
  86. package/core/version.d.ts +2 -2
  87. package/datepicker/calendar-body.component.d.ts +63 -63
  88. package/datepicker/calendar.component.d.ts +151 -151
  89. package/datepicker/datepicker-animations.d.ts +9 -9
  90. package/datepicker/datepicker-errors.d.ts +2 -2
  91. package/datepicker/datepicker-input.directive.d.ts +178 -178
  92. package/datepicker/datepicker-intl.d.ts +32 -32
  93. package/datepicker/datepicker-module.d.ts +20 -20
  94. package/datepicker/datepicker-toggle.component.d.ts +35 -35
  95. package/datepicker/datepicker.component.d.ts +158 -158
  96. package/datepicker/index.d.ts +1 -1
  97. package/datepicker/month-view.component.d.ts +93 -93
  98. package/datepicker/multi-year-view.component.d.ts +72 -72
  99. package/datepicker/ptsecurity-mosaic-datepicker.d.ts +5 -5
  100. package/datepicker/public-api.d.ts +11 -11
  101. package/datepicker/year-view.component.d.ts +90 -90
  102. package/design-tokens/index.d.ts +1 -1
  103. package/design-tokens/legacy-2017/tokens/components/alert.json5 +83 -83
  104. package/design-tokens/legacy-2017/tokens/components/autocomplete.json5 +11 -11
  105. package/design-tokens/legacy-2017/tokens/components/badge.json5 +174 -174
  106. package/design-tokens/legacy-2017/tokens/components/button-toggle.json5 +10 -10
  107. package/design-tokens/legacy-2017/tokens/components/button.json5 +142 -142
  108. package/design-tokens/legacy-2017/tokens/components/card.json5 +51 -51
  109. package/design-tokens/legacy-2017/tokens/components/checkbox.json5 +97 -97
  110. package/design-tokens/legacy-2017/tokens/components/datepicker.json5 +64 -64
  111. package/design-tokens/legacy-2017/tokens/components/divider.json5 +14 -14
  112. package/design-tokens/legacy-2017/tokens/components/dl.json5 +38 -38
  113. package/design-tokens/legacy-2017/tokens/components/dropdown.json5 +48 -48
  114. package/design-tokens/legacy-2017/tokens/components/form-field.json5 +92 -92
  115. package/design-tokens/legacy-2017/tokens/components/forms.json5 +52 -52
  116. package/design-tokens/legacy-2017/tokens/components/icon.json5 +104 -104
  117. package/design-tokens/legacy-2017/tokens/components/input.json5 +12 -12
  118. package/design-tokens/legacy-2017/tokens/components/link.json5 +50 -50
  119. package/design-tokens/legacy-2017/tokens/components/list.json5 +13 -13
  120. package/design-tokens/legacy-2017/tokens/components/loader-overlay.json5 +23 -0
  121. package/design-tokens/legacy-2017/tokens/components/modal.json5 +81 -81
  122. package/design-tokens/legacy-2017/tokens/components/navbar.json5 +70 -70
  123. package/design-tokens/legacy-2017/tokens/components/optgroup.json5 +10 -10
  124. package/design-tokens/legacy-2017/tokens/components/option.json5 +12 -12
  125. package/design-tokens/legacy-2017/tokens/components/popover.json5 +68 -68
  126. package/design-tokens/legacy-2017/tokens/components/popup.json5 +16 -16
  127. package/design-tokens/legacy-2017/tokens/components/progress-bar.json5 +13 -13
  128. package/design-tokens/legacy-2017/tokens/components/progress-spinner.json5 +7 -7
  129. package/design-tokens/legacy-2017/tokens/components/radio.json5 +45 -45
  130. package/design-tokens/legacy-2017/tokens/components/select.json5 +24 -24
  131. package/design-tokens/legacy-2017/tokens/components/sidepanel.json5 +44 -44
  132. package/design-tokens/legacy-2017/tokens/components/table.json5 +15 -15
  133. package/design-tokens/legacy-2017/tokens/components/tabs.json5 +101 -101
  134. package/design-tokens/legacy-2017/tokens/components/tags.json5 +134 -134
  135. package/design-tokens/legacy-2017/tokens/components/textarea.json5 +12 -12
  136. package/design-tokens/legacy-2017/tokens/components/timepicker.json5 +7 -7
  137. package/design-tokens/legacy-2017/tokens/components/toggle.json5 +79 -79
  138. package/design-tokens/legacy-2017/tokens/components/tooltip.json5 +83 -83
  139. package/design-tokens/legacy-2017/tokens/components/tree.json5 +15 -15
  140. package/design-tokens/legacy-2017/tokens/properties/aliases.json5 +3 -3
  141. package/design-tokens/legacy-2017/tokens/properties/colors.json5 +119 -119
  142. package/design-tokens/legacy-2017/tokens/properties/font.json5 +12 -12
  143. package/design-tokens/legacy-2017/tokens/properties/globals.json5 +49 -49
  144. package/design-tokens/legacy-2017/tokens/properties/padding.json5 +3 -3
  145. package/design-tokens/legacy-2017/tokens/properties/palette.json5 +163 -163
  146. package/design-tokens/legacy-2017/tokens/properties/typography.json5 +175 -175
  147. package/design-tokens/legacy-2017/tokens.d.ts +7873 -7844
  148. package/design-tokens/pt-2022/tokens/components/alert.json5 +83 -83
  149. package/design-tokens/pt-2022/tokens/components/autocomplete.json5 +11 -11
  150. package/design-tokens/pt-2022/tokens/components/badge.json5 +174 -174
  151. package/design-tokens/pt-2022/tokens/components/button-toggle.json5 +10 -10
  152. package/design-tokens/pt-2022/tokens/components/button.json5 +142 -142
  153. package/design-tokens/pt-2022/tokens/components/card.json5 +51 -51
  154. package/design-tokens/pt-2022/tokens/components/checkbox.json5 +97 -97
  155. package/design-tokens/pt-2022/tokens/components/datepicker.json5 +64 -64
  156. package/design-tokens/pt-2022/tokens/components/divider.json5 +14 -14
  157. package/design-tokens/pt-2022/tokens/components/dl.json5 +38 -38
  158. package/design-tokens/pt-2022/tokens/components/dropdown.json5 +48 -48
  159. package/design-tokens/pt-2022/tokens/components/form-field.json5 +92 -92
  160. package/design-tokens/pt-2022/tokens/components/forms.json5 +52 -52
  161. package/design-tokens/pt-2022/tokens/components/icon.json5 +104 -104
  162. package/design-tokens/pt-2022/tokens/components/input.json5 +12 -12
  163. package/design-tokens/pt-2022/tokens/components/link.json5 +50 -50
  164. package/design-tokens/pt-2022/tokens/components/list.json5 +13 -13
  165. package/design-tokens/pt-2022/tokens/components/loader-overlay.json5 +23 -0
  166. package/design-tokens/pt-2022/tokens/components/modal.json5 +81 -81
  167. package/design-tokens/pt-2022/tokens/components/navbar.json5 +70 -70
  168. package/design-tokens/pt-2022/tokens/components/optgroup.json5 +10 -10
  169. package/design-tokens/pt-2022/tokens/components/option.json5 +12 -12
  170. package/design-tokens/pt-2022/tokens/components/popover.json5 +68 -68
  171. package/design-tokens/pt-2022/tokens/components/popup.json5 +16 -16
  172. package/design-tokens/pt-2022/tokens/components/progress-bar.json5 +13 -13
  173. package/design-tokens/pt-2022/tokens/components/progress-spinner.json5 +7 -7
  174. package/design-tokens/pt-2022/tokens/components/radio.json5 +45 -45
  175. package/design-tokens/pt-2022/tokens/components/select.json5 +24 -24
  176. package/design-tokens/pt-2022/tokens/components/sidepanel.json5 +44 -44
  177. package/design-tokens/pt-2022/tokens/components/table.json5 +15 -15
  178. package/design-tokens/pt-2022/tokens/components/tabs.json5 +101 -101
  179. package/design-tokens/pt-2022/tokens/components/tags.json5 +137 -137
  180. package/design-tokens/pt-2022/tokens/components/textarea.json5 +12 -12
  181. package/design-tokens/pt-2022/tokens/components/timepicker.json5 +7 -7
  182. package/design-tokens/pt-2022/tokens/components/toggle.json5 +79 -79
  183. package/design-tokens/pt-2022/tokens/components/tooltip.json5 +83 -83
  184. package/design-tokens/pt-2022/tokens/components/tree.json5 +15 -15
  185. package/design-tokens/pt-2022/tokens/properties/aliases.json5 +3 -3
  186. package/design-tokens/pt-2022/tokens/properties/colors.json5 +122 -122
  187. package/design-tokens/pt-2022/tokens/properties/font.json5 +15 -15
  188. package/design-tokens/pt-2022/tokens/properties/globals.json5 +49 -49
  189. package/design-tokens/pt-2022/tokens/properties/padding.json5 +3 -3
  190. package/design-tokens/pt-2022/tokens/properties/palette.json5 +232 -232
  191. package/design-tokens/pt-2022/tokens/properties/typography.json5 +175 -175
  192. package/design-tokens/pt-2022/tokens.d.ts +9205 -9176
  193. package/design-tokens/ptsecurity-mosaic-design-tokens.d.ts +5 -5
  194. package/design-tokens/public-api.d.ts +3 -3
  195. package/design-tokens/style-dictionary/build.js +76 -63
  196. package/design-tokens/style-dictionary/configs/css.js +13 -13
  197. package/design-tokens/style-dictionary/configs/figma.js +11 -0
  198. package/design-tokens/style-dictionary/configs/index.js +48 -48
  199. package/design-tokens/style-dictionary/configs/js.js +9 -9
  200. package/design-tokens/style-dictionary/configs/scss.js +23 -23
  201. package/design-tokens/style-dictionary/figma-types.js +41 -0
  202. package/design-tokens/style-dictionary/filters/color.js +7 -7
  203. package/design-tokens/style-dictionary/filters/palette.js +7 -7
  204. package/design-tokens/style-dictionary/filters/size.js +7 -7
  205. package/design-tokens/style-dictionary/filters/typography.js +7 -7
  206. package/design-tokens/style-dictionary/formats/figma.js +104 -0
  207. package/design-tokens/style-dictionary/formats/palette.js +25 -25
  208. package/design-tokens/style-dictionary/formats/typography.js +52 -52
  209. package/design-tokens/style-dictionary/transformGroups/css.js +13 -13
  210. package/design-tokens/style-dictionary/transformGroups/figma.js +21 -0
  211. package/design-tokens/style-dictionary/transformGroups/scss.js +12 -12
  212. package/design-tokens/style-dictionary/transformGroups/ts.js +11 -11
  213. package/design-tokens/style-dictionary/transforms/attribute/figma-border.js +18 -0
  214. package/design-tokens/style-dictionary/transforms/attribute/figma-color.js +25 -0
  215. package/design-tokens/style-dictionary/transforms/attribute/figma-default.js +10 -0
  216. package/design-tokens/style-dictionary/transforms/attribute/figma-font.js +31 -0
  217. package/design-tokens/style-dictionary/transforms/attribute/figma-group.js +17 -0
  218. package/design-tokens/style-dictionary/transforms/attribute/figma-opacity.js +10 -0
  219. package/design-tokens/style-dictionary/transforms/attribute/figma-shadow.js +66 -0
  220. package/design-tokens/style-dictionary/transforms/attribute/figma-sizing.js +16 -0
  221. package/design-tokens/style-dictionary/transforms/attribute/figma-spacing.js +15 -0
  222. package/design-tokens/style-dictionary/transforms/attribute/figma-typography.js +24 -0
  223. package/design-tokens/style-dictionary/transforms/attribute/palette.js +9 -9
  224. package/design-tokens/style-dictionary/transforms/attribute/prefix.js +11 -11
  225. package/design-tokens/style-dictionary/transforms/attribute/size.js +8 -8
  226. package/design-tokens/style-dictionary/transforms/attribute/typography.js +9 -9
  227. package/design-tokens/style-dictionary/transforms/value/figma-values.js +7 -0
  228. package/divider/divider.component.d.ts +11 -11
  229. package/divider/divider.module.d.ts +8 -8
  230. package/divider/index.d.ts +1 -1
  231. package/divider/ptsecurity-mosaic-divider.d.ts +5 -5
  232. package/divider/public-api.d.ts +2 -2
  233. package/dl/dl.component.d.ts +26 -26
  234. package/dl/dl.module.d.ts +10 -10
  235. package/dl/index.d.ts +1 -1
  236. package/dl/ptsecurity-mosaic-dl.d.ts +5 -5
  237. package/dl/public-api.d.ts +2 -2
  238. package/dropdown/dropdown-animations.d.ts +11 -11
  239. package/dropdown/dropdown-content.directive.d.ts +32 -32
  240. package/dropdown/dropdown-errors.d.ts +17 -17
  241. package/dropdown/dropdown-item.component.d.ts +50 -50
  242. package/dropdown/dropdown-trigger.directive.d.ts +136 -136
  243. package/dropdown/dropdown.component.d.ts +121 -121
  244. package/dropdown/dropdown.module.d.ts +13 -13
  245. package/dropdown/dropdown.types.d.ts +53 -53
  246. package/dropdown/index.d.ts +1 -1
  247. package/dropdown/ptsecurity-mosaic-dropdown.d.ts +5 -5
  248. package/dropdown/public-api.d.ts +8 -8
  249. package/esm2020/autocomplete/autocomplete-origin.directive.mjs +21 -21
  250. package/esm2020/autocomplete/autocomplete-trigger.directive.mjs +555 -555
  251. package/esm2020/autocomplete/autocomplete.component.mjs +154 -154
  252. package/esm2020/autocomplete/autocomplete.module.mjs +34 -34
  253. package/esm2020/autocomplete/index.mjs +2 -2
  254. package/esm2020/autocomplete/ptsecurity-mosaic-autocomplete.mjs +4 -4
  255. package/esm2020/autocomplete/public-api.mjs +5 -5
  256. package/esm2020/button/button.component.mjs +137 -137
  257. package/esm2020/button/button.module.mjs +38 -38
  258. package/esm2020/button/index.mjs +2 -2
  259. package/esm2020/button/ptsecurity-mosaic-button.mjs +4 -4
  260. package/esm2020/button/public-api.mjs +3 -3
  261. package/esm2020/button-toggle/button-toggle.component.mjs +362 -362
  262. package/esm2020/button-toggle/button-toggle.module.mjs +19 -19
  263. package/esm2020/button-toggle/index.mjs +2 -2
  264. package/esm2020/button-toggle/ptsecurity-mosaic-button-toggle.mjs +4 -4
  265. package/esm2020/button-toggle/public-api.mjs +3 -3
  266. package/esm2020/card/card.component.mjs +80 -80
  267. package/esm2020/card/card.module.mjs +30 -30
  268. package/esm2020/card/index.mjs +2 -2
  269. package/esm2020/card/ptsecurity-mosaic-card.mjs +4 -4
  270. package/esm2020/card/public-api.mjs +3 -3
  271. package/esm2020/checkbox/checkbox-config.mjs +6 -6
  272. package/esm2020/checkbox/checkbox-module.mjs +19 -19
  273. package/esm2020/checkbox/checkbox-required-validator.mjs +27 -27
  274. package/esm2020/checkbox/checkbox.mjs +316 -316
  275. package/esm2020/checkbox/index.mjs +2 -2
  276. package/esm2020/checkbox/ptsecurity-mosaic-checkbox.mjs +4 -4
  277. package/esm2020/checkbox/public-api.mjs +5 -5
  278. package/esm2020/core/animation/animation.mjs +8 -8
  279. package/esm2020/core/animation/fade-animations.mjs +9 -9
  280. package/esm2020/core/animation/index.mjs +4 -4
  281. package/esm2020/core/animation/select-animations.mjs +45 -45
  282. package/esm2020/core/common-behaviors/color.mjs +30 -30
  283. package/esm2020/core/common-behaviors/common-module.mjs +83 -83
  284. package/esm2020/core/common-behaviors/constructor.mjs +2 -2
  285. package/esm2020/core/common-behaviors/disabled.mjs +17 -17
  286. package/esm2020/core/common-behaviors/error-state.mjs +31 -31
  287. package/esm2020/core/common-behaviors/index.mjs +6 -6
  288. package/esm2020/core/common-behaviors/tabindex.mjs +18 -18
  289. package/esm2020/core/error/error-options.mjs +26 -26
  290. package/esm2020/core/formatters/date/formatter.mjs +359 -359
  291. package/esm2020/core/formatters/date/templates/en-US.mjs +281 -281
  292. package/esm2020/core/formatters/date/templates/ru-RU.mjs +281 -281
  293. package/esm2020/core/formatters/index.mjs +20 -20
  294. package/esm2020/core/formatters/number/formatter.mjs +105 -105
  295. package/esm2020/core/forms/forms-module.mjs +24 -24
  296. package/esm2020/core/forms/forms.directive.mjs +66 -66
  297. package/esm2020/core/forms/index.mjs +3 -3
  298. package/esm2020/core/highlight/highlight.pipe.mjs +17 -17
  299. package/esm2020/core/highlight/index.mjs +19 -19
  300. package/esm2020/core/index.mjs +2 -2
  301. package/esm2020/core/label/label-options.mjs +4 -4
  302. package/esm2020/core/line/line.mjs +70 -70
  303. package/esm2020/core/option/action.mjs +121 -121
  304. package/esm2020/core/option/index.mjs +5 -5
  305. package/esm2020/core/option/optgroup.mjs +31 -31
  306. package/esm2020/core/option/option-module.mjs +21 -21
  307. package/esm2020/core/option/option.mjs +257 -257
  308. package/esm2020/core/overlay/overlay-position-map.mjs +244 -244
  309. package/esm2020/core/pop-up/constants.mjs +34 -34
  310. package/esm2020/core/pop-up/index.mjs +4 -4
  311. package/esm2020/core/pop-up/pop-up-trigger.mjs +239 -239
  312. package/esm2020/core/pop-up/pop-up.mjs +94 -94
  313. package/esm2020/core/ptsecurity-mosaic-core.mjs +4 -4
  314. package/esm2020/core/public-api.mjs +18 -18
  315. package/esm2020/core/select/constants.mjs +27 -27
  316. package/esm2020/core/select/errors.mjs +26 -26
  317. package/esm2020/core/select/events.mjs +2 -2
  318. package/esm2020/core/select/index.mjs +4 -4
  319. package/esm2020/core/selection/constants.mjs +6 -6
  320. package/esm2020/core/selection/index.mjs +4 -4
  321. package/esm2020/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +49 -49
  322. package/esm2020/core/selection/pseudo-checkbox/pseudo-checkbox.module.mjs +18 -18
  323. package/esm2020/core/services/measure-scrollbar.service.mjs +48 -48
  324. package/esm2020/core/utils/index.mjs +2 -2
  325. package/esm2020/core/utils/public-api.mjs +2 -2
  326. package/esm2020/core/utils/utils.mjs +5 -5
  327. package/esm2020/core/validation/index.mjs +2 -2
  328. package/esm2020/core/validation/validation.mjs +118 -118
  329. package/esm2020/core/version.mjs +3 -3
  330. package/esm2020/datepicker/calendar-body.component.mjs +106 -106
  331. package/esm2020/datepicker/calendar.component.mjs +362 -362
  332. package/esm2020/datepicker/datepicker-animations.mjs +32 -32
  333. package/esm2020/datepicker/datepicker-errors.mjs +6 -6
  334. package/esm2020/datepicker/datepicker-input.directive.mjs +938 -938
  335. package/esm2020/datepicker/datepicker-intl.mjs +40 -40
  336. package/esm2020/datepicker/datepicker-module.mjs +107 -107
  337. package/esm2020/datepicker/datepicker-toggle.component.mjs +86 -86
  338. package/esm2020/datepicker/datepicker.component.mjs +404 -404
  339. package/esm2020/datepicker/index.mjs +2 -2
  340. package/esm2020/datepicker/month-view.component.mjs +257 -257
  341. package/esm2020/datepicker/multi-year-view.component.mjs +218 -218
  342. package/esm2020/datepicker/ptsecurity-mosaic-datepicker.mjs +4 -4
  343. package/esm2020/datepicker/public-api.mjs +12 -12
  344. package/esm2020/datepicker/year-view.component.mjs +253 -253
  345. package/esm2020/design-tokens/index.mjs +2 -2
  346. package/esm2020/design-tokens/legacy-2017/tokens.mjs +1167 -1138
  347. package/esm2020/design-tokens/pt-2022/tokens.mjs +1237 -1208
  348. package/esm2020/design-tokens/ptsecurity-mosaic-design-tokens.mjs +4 -4
  349. package/esm2020/design-tokens/public-api.mjs +4 -4
  350. package/esm2020/divider/divider.component.mjs +39 -39
  351. package/esm2020/divider/divider.module.mjs +18 -18
  352. package/esm2020/divider/index.mjs +2 -2
  353. package/esm2020/divider/ptsecurity-mosaic-divider.mjs +4 -4
  354. package/esm2020/divider/public-api.mjs +3 -3
  355. package/esm2020/dl/dl.component.mjs +78 -78
  356. package/esm2020/dl/dl.module.mjs +42 -42
  357. package/esm2020/dl/index.mjs +2 -2
  358. package/esm2020/dl/ptsecurity-mosaic-dl.mjs +4 -4
  359. package/esm2020/dl/public-api.mjs +3 -3
  360. package/esm2020/dropdown/dropdown-animations.mjs +41 -41
  361. package/esm2020/dropdown/dropdown-content.directive.mjs +64 -64
  362. package/esm2020/dropdown/dropdown-errors.mjs +29 -29
  363. package/esm2020/dropdown/dropdown-item.component.mjs +139 -139
  364. package/esm2020/dropdown/dropdown-trigger.directive.mjs +489 -489
  365. package/esm2020/dropdown/dropdown.component.mjs +292 -292
  366. package/esm2020/dropdown/dropdown.module.mjs +50 -50
  367. package/esm2020/dropdown/dropdown.types.mjs +24 -24
  368. package/esm2020/dropdown/index.mjs +2 -2
  369. package/esm2020/dropdown/ptsecurity-mosaic-dropdown.mjs +4 -4
  370. package/esm2020/dropdown/public-api.mjs +9 -9
  371. package/esm2020/form-field/cleaner.mjs +23 -23
  372. package/esm2020/form-field/form-field-control.mjs +5 -5
  373. package/esm2020/form-field/form-field-errors.mjs +7 -7
  374. package/esm2020/form-field/form-field.mjs +225 -225
  375. package/esm2020/form-field/form-field.module.mjs +57 -57
  376. package/esm2020/form-field/hint.mjs +34 -23
  377. package/esm2020/form-field/index.mjs +2 -2
  378. package/esm2020/form-field/password-hint.mjs +139 -139
  379. package/esm2020/form-field/prefix.mjs +13 -13
  380. package/esm2020/form-field/ptsecurity-mosaic-form-field.mjs +4 -4
  381. package/esm2020/form-field/public-api.mjs +11 -11
  382. package/esm2020/form-field/stepper.mjs +55 -55
  383. package/esm2020/form-field/suffix.mjs +13 -13
  384. package/esm2020/icon/icon.component.mjs +44 -44
  385. package/esm2020/icon/icon.module.mjs +38 -38
  386. package/esm2020/icon/index.mjs +2 -2
  387. package/esm2020/icon/ptsecurity-mosaic-icon.mjs +4 -4
  388. package/esm2020/icon/public-api.mjs +3 -3
  389. package/esm2020/index.mjs +2 -2
  390. package/esm2020/input/index.mjs +2 -2
  391. package/esm2020/input/input-errors.mjs +4 -4
  392. package/esm2020/input/input-number-validators.mjs +92 -92
  393. package/esm2020/input/input-number.mjs +163 -163
  394. package/esm2020/input/input-password.mjs +372 -372
  395. package/esm2020/input/input-value-accessor.mjs +3 -3
  396. package/esm2020/input/input.mjs +334 -334
  397. package/esm2020/input/input.module.mjs +65 -65
  398. package/esm2020/input/ptsecurity-mosaic-input.mjs +4 -4
  399. package/esm2020/input/public-api.mjs +7 -7
  400. package/esm2020/link/index.mjs +2 -2
  401. package/esm2020/link/link.component.mjs +107 -107
  402. package/esm2020/link/link.module.mjs +26 -26
  403. package/esm2020/link/ptsecurity-mosaic-link.mjs +4 -4
  404. package/esm2020/link/public-api.mjs +3 -3
  405. package/esm2020/list/index.mjs +2 -2
  406. package/esm2020/list/list-selection.component.mjs +689 -686
  407. package/esm2020/list/list.component.mjs +44 -44
  408. package/esm2020/list/list.module.mjs +55 -55
  409. package/esm2020/list/ptsecurity-mosaic-list.mjs +4 -4
  410. package/esm2020/list/public-api.mjs +4 -4
  411. package/esm2020/loader-overlay/index.mjs +2 -0
  412. package/esm2020/loader-overlay/loader-overlay.component.mjs +99 -0
  413. package/esm2020/loader-overlay/loader-overlay.module.mjs +50 -0
  414. package/esm2020/loader-overlay/ptsecurity-mosaic-loader-overlay.mjs +5 -0
  415. package/esm2020/loader-overlay/public-api.mjs +3 -0
  416. package/esm2020/modal/css-unit.pipe.mjs +17 -17
  417. package/esm2020/modal/index.mjs +2 -2
  418. package/esm2020/modal/modal-control.service.mjs +85 -85
  419. package/esm2020/modal/modal-ref.class.mjs +8 -8
  420. package/esm2020/modal/modal-util.mjs +17 -17
  421. package/esm2020/modal/modal.component.mjs +509 -501
  422. package/esm2020/modal/modal.directive.mjs +52 -52
  423. package/esm2020/modal/modal.module.mjs +72 -72
  424. package/esm2020/modal/modal.service.mjs +124 -124
  425. package/esm2020/modal/modal.type.mjs +7 -7
  426. package/esm2020/modal/ptsecurity-mosaic-modal.mjs +4 -4
  427. package/esm2020/modal/public-api.mjs +7 -7
  428. package/esm2020/navbar/index.mjs +2 -2
  429. package/esm2020/navbar/navbar-item.component.mjs +582 -582
  430. package/esm2020/navbar/navbar.component.mjs +239 -237
  431. package/esm2020/navbar/navbar.module.mjs +92 -92
  432. package/esm2020/navbar/ptsecurity-mosaic-navbar.mjs +4 -4
  433. package/esm2020/navbar/public-api.mjs +5 -5
  434. package/esm2020/navbar/vertical-navbar.animation.mjs +10 -10
  435. package/esm2020/navbar/vertical-navbar.component.mjs +114 -114
  436. package/esm2020/popover/index.mjs +2 -2
  437. package/esm2020/popover/popover-animations.mjs +16 -16
  438. package/esm2020/popover/popover-confirm.component.mjs +108 -108
  439. package/esm2020/popover/popover.component.mjs +253 -253
  440. package/esm2020/popover/popover.module.mjs +24 -24
  441. package/esm2020/popover/ptsecurity-mosaic-popover.mjs +4 -4
  442. package/esm2020/popover/public-api.mjs +5 -5
  443. package/esm2020/progress-bar/index.mjs +2 -2
  444. package/esm2020/progress-bar/progress-bar.component.mjs +42 -42
  445. package/esm2020/progress-bar/progress-bar.module.mjs +30 -30
  446. package/esm2020/progress-bar/ptsecurity-mosaic-progress-bar.mjs +4 -4
  447. package/esm2020/progress-bar/public-api.mjs +3 -3
  448. package/esm2020/progress-spinner/index.mjs +2 -2
  449. package/esm2020/progress-spinner/progress-spinner.component.mjs +46 -46
  450. package/esm2020/progress-spinner/progress-spinner.module.mjs +30 -30
  451. package/esm2020/progress-spinner/ptsecurity-mosaic-progress-spinner.mjs +4 -4
  452. package/esm2020/progress-spinner/public-api.mjs +3 -3
  453. package/esm2020/ptsecurity-mosaic.mjs +4 -4
  454. package/esm2020/public-api.mjs +2 -2
  455. package/esm2020/radio/index.mjs +2 -2
  456. package/esm2020/radio/ptsecurity-mosaic-radio.mjs +4 -4
  457. package/esm2020/radio/public-api.mjs +3 -3
  458. package/esm2020/radio/radio.component.mjs +458 -458
  459. package/esm2020/radio/radio.module.mjs +20 -20
  460. package/esm2020/select/index.mjs +2 -2
  461. package/esm2020/select/ptsecurity-mosaic-select.mjs +4 -4
  462. package/esm2020/select/public-api.mjs +4 -4
  463. package/esm2020/select/select-option.directive.mjs +65 -65
  464. package/esm2020/select/select.component.mjs +1117 -1117
  465. package/esm2020/select/select.module.mjs +73 -73
  466. package/esm2020/sidebar/index.mjs +2 -2
  467. package/esm2020/sidebar/ptsecurity-mosaic-sidebar.mjs +4 -4
  468. package/esm2020/sidebar/public-api.mjs +3 -3
  469. package/esm2020/sidebar/sidebar-animations.mjs +23 -23
  470. package/esm2020/sidebar/sidebar.component.mjs +146 -146
  471. package/esm2020/sidebar/sidebar.module.mjs +30 -30
  472. package/esm2020/sidepanel/index.mjs +2 -2
  473. package/esm2020/sidepanel/ptsecurity-mosaic-sidepanel.mjs +4 -4
  474. package/esm2020/sidepanel/public-api.mjs +7 -7
  475. package/esm2020/sidepanel/sidepanel-animations.mjs +26 -26
  476. package/esm2020/sidepanel/sidepanel-config.mjs +26 -26
  477. package/esm2020/sidepanel/sidepanel-container.component.mjs +106 -106
  478. package/esm2020/sidepanel/sidepanel-directives.mjs +159 -159
  479. package/esm2020/sidepanel/sidepanel-ref.mjs +53 -53
  480. package/esm2020/sidepanel/sidepanel.module.mjs +74 -74
  481. package/esm2020/sidepanel/sidepanel.service.mjs +167 -167
  482. package/esm2020/splitter/index.mjs +2 -2
  483. package/esm2020/splitter/ptsecurity-mosaic-splitter.mjs +4 -4
  484. package/esm2020/splitter/public-api.mjs +3 -3
  485. package/esm2020/splitter/splitter.component.mjs +482 -482
  486. package/esm2020/splitter/splitter.module.mjs +40 -40
  487. package/esm2020/table/index.mjs +2 -2
  488. package/esm2020/table/ptsecurity-mosaic-table.mjs +4 -4
  489. package/esm2020/table/public-api.mjs +3 -3
  490. package/esm2020/table/table.component.mjs +16 -16
  491. package/esm2020/table/table.module.mjs +30 -30
  492. package/esm2020/tabs/index.mjs +2 -2
  493. package/esm2020/tabs/paginated-tab-header.mjs +479 -479
  494. package/esm2020/tabs/ptsecurity-mosaic-tabs.mjs +4 -4
  495. package/esm2020/tabs/public-api.mjs +11 -11
  496. package/esm2020/tabs/tab-body.component.mjs +178 -178
  497. package/esm2020/tabs/tab-content.directive.mjs +15 -15
  498. package/esm2020/tabs/tab-group.component.mjs +350 -350
  499. package/esm2020/tabs/tab-header.component.mjs +67 -67
  500. package/esm2020/tabs/tab-label-wrapper.directive.mjs +78 -78
  501. package/esm2020/tabs/tab-label.directive.mjs +17 -17
  502. package/esm2020/tabs/tab-nav-bar/index.mjs +2 -2
  503. package/esm2020/tabs/tab-nav-bar/tab-nav-bar.mjs +110 -110
  504. package/esm2020/tabs/tab.component.mjs +133 -133
  505. package/esm2020/tabs/tabs-animations.mjs +24 -24
  506. package/esm2020/tabs/tabs.module.mjs +104 -104
  507. package/esm2020/tags/index.mjs +2 -2
  508. package/esm2020/tags/ptsecurity-mosaic-tags.mjs +4 -4
  509. package/esm2020/tags/public-api.mjs +6 -6
  510. package/esm2020/tags/tag-default-options.mjs +4 -4
  511. package/esm2020/tags/tag-input.mjs +229 -229
  512. package/esm2020/tags/tag-list.component.mjs +722 -722
  513. package/esm2020/tags/tag-text-control.mjs +2 -2
  514. package/esm2020/tags/tag.component.mjs +375 -375
  515. package/esm2020/tags/tag.module.mjs +56 -56
  516. package/esm2020/textarea/index.mjs +2 -2
  517. package/esm2020/textarea/ptsecurity-mosaic-textarea.mjs +4 -4
  518. package/esm2020/textarea/public-api.mjs +3 -3
  519. package/esm2020/textarea/textarea.component.mjs +269 -269
  520. package/esm2020/textarea/textarea.module.mjs +21 -21
  521. package/esm2020/timepicker/index.mjs +2 -2
  522. package/esm2020/timepicker/ptsecurity-mosaic-timepicker.mjs +4 -4
  523. package/esm2020/timepicker/public-api.mjs +4 -4
  524. package/esm2020/timepicker/timepicker.constants.mjs +25 -25
  525. package/esm2020/timepicker/timepicker.directive.mjs +665 -665
  526. package/esm2020/timepicker/timepicker.module.mjs +34 -34
  527. package/esm2020/toggle/index.mjs +2 -2
  528. package/esm2020/toggle/ptsecurity-mosaic-toggle.mjs +4 -4
  529. package/esm2020/toggle/public-api.mjs +3 -3
  530. package/esm2020/toggle/toggle.component.mjs +158 -158
  531. package/esm2020/toggle/toggle.module.mjs +20 -20
  532. package/esm2020/tooltip/index.mjs +2 -2
  533. package/esm2020/tooltip/ptsecurity-mosaic-tooltip.mjs +4 -4
  534. package/esm2020/tooltip/public-api.mjs +3 -3
  535. package/esm2020/tooltip/tooltip.animations.mjs +19 -19
  536. package/esm2020/tooltip/tooltip.component.mjs +295 -295
  537. package/esm2020/tooltip/tooltip.module.mjs +43 -43
  538. package/esm2020/tree/control/base-tree-control.mjs +60 -60
  539. package/esm2020/tree/control/flat-tree-control.mjs +126 -126
  540. package/esm2020/tree/control/nested-tree-control.mjs +41 -41
  541. package/esm2020/tree/control/tree-control.mjs +2 -2
  542. package/esm2020/tree/data-source/flat-data-source.mjs +162 -162
  543. package/esm2020/tree/data-source/nested-data-source.mjs +30 -30
  544. package/esm2020/tree/index.mjs +2 -2
  545. package/esm2020/tree/node.mjs +31 -31
  546. package/esm2020/tree/outlet.mjs +15 -15
  547. package/esm2020/tree/padding.directive.mjs +113 -113
  548. package/esm2020/tree/ptsecurity-mosaic-tree.mjs +4 -4
  549. package/esm2020/tree/public-api.mjs +16 -16
  550. package/esm2020/tree/toggle.mjs +80 -80
  551. package/esm2020/tree/tree-base.mjs +243 -243
  552. package/esm2020/tree/tree-errors.mjs +36 -36
  553. package/esm2020/tree/tree-option.component.mjs +248 -248
  554. package/esm2020/tree/tree-selection.component.mjs +541 -540
  555. package/esm2020/tree/tree.mjs +15 -15
  556. package/esm2020/tree/tree.module.mjs +57 -57
  557. package/esm2020/tree-select/index.mjs +2 -2
  558. package/esm2020/tree-select/ptsecurity-mosaic-tree-select.mjs +4 -4
  559. package/esm2020/tree-select/public-api.mjs +3 -3
  560. package/esm2020/tree-select/tree-select.component.mjs +939 -939
  561. package/esm2020/tree-select/tree-select.module.mjs +47 -47
  562. package/fesm2015/ptsecurity-mosaic-autocomplete.mjs +726 -726
  563. package/fesm2015/ptsecurity-mosaic-autocomplete.mjs.map +1 -1
  564. package/fesm2015/ptsecurity-mosaic-button-toggle.mjs +367 -367
  565. package/fesm2015/ptsecurity-mosaic-button-toggle.mjs.map +1 -1
  566. package/fesm2015/ptsecurity-mosaic-button.mjs +160 -160
  567. package/fesm2015/ptsecurity-mosaic-button.mjs.map +1 -1
  568. package/fesm2015/ptsecurity-mosaic-card.mjs +96 -96
  569. package/fesm2015/ptsecurity-mosaic-card.mjs.map +1 -1
  570. package/fesm2015/ptsecurity-mosaic-checkbox.mjs +348 -348
  571. package/fesm2015/ptsecurity-mosaic-checkbox.mjs.map +1 -1
  572. package/fesm2015/ptsecurity-mosaic-core.mjs +2652 -2652
  573. package/fesm2015/ptsecurity-mosaic-core.mjs.map +1 -1
  574. package/fesm2015/ptsecurity-mosaic-datepicker.mjs +2682 -2682
  575. package/fesm2015/ptsecurity-mosaic-datepicker.mjs.map +1 -1
  576. package/fesm2015/ptsecurity-mosaic-design-tokens.mjs +2432 -2345
  577. package/fesm2015/ptsecurity-mosaic-design-tokens.mjs.map +1 -1
  578. package/fesm2015/ptsecurity-mosaic-divider.mjs +48 -48
  579. package/fesm2015/ptsecurity-mosaic-divider.mjs.map +1 -1
  580. package/fesm2015/ptsecurity-mosaic-dl.mjs +108 -108
  581. package/fesm2015/ptsecurity-mosaic-dl.mjs.map +1 -1
  582. package/fesm2015/ptsecurity-mosaic-dropdown.mjs +1069 -1069
  583. package/fesm2015/ptsecurity-mosaic-dropdown.mjs.map +1 -1
  584. package/fesm2015/ptsecurity-mosaic-form-field.mjs +522 -512
  585. package/fesm2015/ptsecurity-mosaic-form-field.mjs.map +1 -1
  586. package/fesm2015/ptsecurity-mosaic-icon.mjs +73 -73
  587. package/fesm2015/ptsecurity-mosaic-icon.mjs.map +1 -1
  588. package/fesm2015/ptsecurity-mosaic-input.mjs +979 -979
  589. package/fesm2015/ptsecurity-mosaic-input.mjs.map +1 -1
  590. package/fesm2015/ptsecurity-mosaic-link.mjs +121 -121
  591. package/fesm2015/ptsecurity-mosaic-link.mjs.map +1 -1
  592. package/fesm2015/ptsecurity-mosaic-list.mjs +765 -762
  593. package/fesm2015/ptsecurity-mosaic-list.mjs.map +1 -1
  594. package/fesm2015/ptsecurity-mosaic-loader-overlay.mjs +155 -0
  595. package/fesm2015/ptsecurity-mosaic-loader-overlay.mjs.map +1 -0
  596. package/fesm2015/ptsecurity-mosaic-modal.mjs +833 -824
  597. package/fesm2015/ptsecurity-mosaic-modal.mjs.map +1 -1
  598. package/fesm2015/ptsecurity-mosaic-navbar.mjs +996 -994
  599. package/fesm2015/ptsecurity-mosaic-navbar.mjs.map +1 -1
  600. package/fesm2015/ptsecurity-mosaic-popover.mjs +364 -364
  601. package/fesm2015/ptsecurity-mosaic-popover.mjs.map +1 -1
  602. package/fesm2015/ptsecurity-mosaic-progress-bar.mjs +61 -61
  603. package/fesm2015/ptsecurity-mosaic-progress-bar.mjs.map +1 -1
  604. package/fesm2015/ptsecurity-mosaic-progress-spinner.mjs +65 -65
  605. package/fesm2015/ptsecurity-mosaic-progress-spinner.mjs.map +1 -1
  606. package/fesm2015/ptsecurity-mosaic-radio.mjs +464 -464
  607. package/fesm2015/ptsecurity-mosaic-radio.mjs.map +1 -1
  608. package/fesm2015/ptsecurity-mosaic-select.mjs +1213 -1213
  609. package/fesm2015/ptsecurity-mosaic-select.mjs.map +1 -1
  610. package/fesm2015/ptsecurity-mosaic-sidebar.mjs +185 -185
  611. package/fesm2015/ptsecurity-mosaic-sidebar.mjs.map +1 -1
  612. package/fesm2015/ptsecurity-mosaic-sidepanel.mjs +555 -555
  613. package/fesm2015/ptsecurity-mosaic-sidepanel.mjs.map +1 -1
  614. package/fesm2015/ptsecurity-mosaic-splitter.mjs +511 -511
  615. package/fesm2015/ptsecurity-mosaic-splitter.mjs.map +1 -1
  616. package/fesm2015/ptsecurity-mosaic-table.mjs +36 -36
  617. package/fesm2015/ptsecurity-mosaic-table.mjs.map +1 -1
  618. package/fesm2015/ptsecurity-mosaic-tabs.mjs +1460 -1460
  619. package/fesm2015/ptsecurity-mosaic-tabs.mjs.map +1 -1
  620. package/fesm2015/ptsecurity-mosaic-tags.mjs +1342 -1342
  621. package/fesm2015/ptsecurity-mosaic-tags.mjs.map +1 -1
  622. package/fesm2015/ptsecurity-mosaic-textarea.mjs +274 -274
  623. package/fesm2015/ptsecurity-mosaic-textarea.mjs.map +1 -1
  624. package/fesm2015/ptsecurity-mosaic-timepicker.mjs +703 -703
  625. package/fesm2015/ptsecurity-mosaic-timepicker.mjs.map +1 -1
  626. package/fesm2015/ptsecurity-mosaic-toggle.mjs +163 -163
  627. package/fesm2015/ptsecurity-mosaic-toggle.mjs.map +1 -1
  628. package/fesm2015/ptsecurity-mosaic-tooltip.mjs +344 -344
  629. package/fesm2015/ptsecurity-mosaic-tooltip.mjs.map +1 -1
  630. package/fesm2015/ptsecurity-mosaic-tree-select.mjs +954 -954
  631. package/fesm2015/ptsecurity-mosaic-tree-select.mjs.map +1 -1
  632. package/fesm2015/ptsecurity-mosaic-tree.mjs +1689 -1688
  633. package/fesm2015/ptsecurity-mosaic-tree.mjs.map +1 -1
  634. package/fesm2015/ptsecurity-mosaic.mjs +2 -2
  635. package/fesm2020/ptsecurity-mosaic-autocomplete.mjs +722 -722
  636. package/fesm2020/ptsecurity-mosaic-autocomplete.mjs.map +1 -1
  637. package/fesm2020/ptsecurity-mosaic-button-toggle.mjs +365 -365
  638. package/fesm2020/ptsecurity-mosaic-button-toggle.mjs.map +1 -1
  639. package/fesm2020/ptsecurity-mosaic-button.mjs +160 -160
  640. package/fesm2020/ptsecurity-mosaic-button.mjs.map +1 -1
  641. package/fesm2020/ptsecurity-mosaic-card.mjs +96 -96
  642. package/fesm2020/ptsecurity-mosaic-card.mjs.map +1 -1
  643. package/fesm2020/ptsecurity-mosaic-checkbox.mjs +346 -346
  644. package/fesm2020/ptsecurity-mosaic-checkbox.mjs.map +1 -1
  645. package/fesm2020/ptsecurity-mosaic-core.mjs +2681 -2681
  646. package/fesm2020/ptsecurity-mosaic-core.mjs.map +1 -1
  647. package/fesm2020/ptsecurity-mosaic-datepicker.mjs +2667 -2667
  648. package/fesm2020/ptsecurity-mosaic-datepicker.mjs.map +1 -1
  649. package/fesm2020/ptsecurity-mosaic-design-tokens.mjs +2432 -2345
  650. package/fesm2020/ptsecurity-mosaic-design-tokens.mjs.map +1 -1
  651. package/fesm2020/ptsecurity-mosaic-divider.mjs +48 -48
  652. package/fesm2020/ptsecurity-mosaic-divider.mjs.map +1 -1
  653. package/fesm2020/ptsecurity-mosaic-dl.mjs +108 -108
  654. package/fesm2020/ptsecurity-mosaic-dl.mjs.map +1 -1
  655. package/fesm2020/ptsecurity-mosaic-dropdown.mjs +1056 -1056
  656. package/fesm2020/ptsecurity-mosaic-dropdown.mjs.map +1 -1
  657. package/fesm2020/ptsecurity-mosaic-form-field.mjs +507 -497
  658. package/fesm2020/ptsecurity-mosaic-form-field.mjs.map +1 -1
  659. package/fesm2020/ptsecurity-mosaic-icon.mjs +71 -71
  660. package/fesm2020/ptsecurity-mosaic-icon.mjs.map +1 -1
  661. package/fesm2020/ptsecurity-mosaic-input.mjs +968 -968
  662. package/fesm2020/ptsecurity-mosaic-input.mjs.map +1 -1
  663. package/fesm2020/ptsecurity-mosaic-link.mjs +120 -120
  664. package/fesm2020/ptsecurity-mosaic-link.mjs.map +1 -1
  665. package/fesm2020/ptsecurity-mosaic-list.mjs +758 -755
  666. package/fesm2020/ptsecurity-mosaic-list.mjs.map +1 -1
  667. package/fesm2020/ptsecurity-mosaic-loader-overlay.mjs +153 -0
  668. package/fesm2020/ptsecurity-mosaic-loader-overlay.mjs.map +1 -0
  669. package/fesm2020/ptsecurity-mosaic-modal.mjs +828 -820
  670. package/fesm2020/ptsecurity-mosaic-modal.mjs.map +1 -1
  671. package/fesm2020/ptsecurity-mosaic-navbar.mjs +980 -978
  672. package/fesm2020/ptsecurity-mosaic-navbar.mjs.map +1 -1
  673. package/fesm2020/ptsecurity-mosaic-popover.mjs +360 -360
  674. package/fesm2020/ptsecurity-mosaic-popover.mjs.map +1 -1
  675. package/fesm2020/ptsecurity-mosaic-progress-bar.mjs +61 -61
  676. package/fesm2020/ptsecurity-mosaic-progress-bar.mjs.map +1 -1
  677. package/fesm2020/ptsecurity-mosaic-progress-spinner.mjs +65 -65
  678. package/fesm2020/ptsecurity-mosaic-progress-spinner.mjs.map +1 -1
  679. package/fesm2020/ptsecurity-mosaic-radio.mjs +462 -462
  680. package/fesm2020/ptsecurity-mosaic-radio.mjs.map +1 -1
  681. package/fesm2020/ptsecurity-mosaic-select.mjs +1208 -1208
  682. package/fesm2020/ptsecurity-mosaic-select.mjs.map +1 -1
  683. package/fesm2020/ptsecurity-mosaic-sidebar.mjs +185 -185
  684. package/fesm2020/ptsecurity-mosaic-sidebar.mjs.map +1 -1
  685. package/fesm2020/ptsecurity-mosaic-sidepanel.mjs +552 -552
  686. package/fesm2020/ptsecurity-mosaic-sidepanel.mjs.map +1 -1
  687. package/fesm2020/ptsecurity-mosaic-splitter.mjs +511 -511
  688. package/fesm2020/ptsecurity-mosaic-splitter.mjs.map +1 -1
  689. package/fesm2020/ptsecurity-mosaic-table.mjs +36 -36
  690. package/fesm2020/ptsecurity-mosaic-table.mjs.map +1 -1
  691. package/fesm2020/ptsecurity-mosaic-tabs.mjs +1445 -1445
  692. package/fesm2020/ptsecurity-mosaic-tabs.mjs.map +1 -1
  693. package/fesm2020/ptsecurity-mosaic-tags.mjs +1335 -1335
  694. package/fesm2020/ptsecurity-mosaic-tags.mjs.map +1 -1
  695. package/fesm2020/ptsecurity-mosaic-textarea.mjs +272 -272
  696. package/fesm2020/ptsecurity-mosaic-textarea.mjs.map +1 -1
  697. package/fesm2020/ptsecurity-mosaic-timepicker.mjs +700 -700
  698. package/fesm2020/ptsecurity-mosaic-timepicker.mjs.map +1 -1
  699. package/fesm2020/ptsecurity-mosaic-toggle.mjs +163 -163
  700. package/fesm2020/ptsecurity-mosaic-toggle.mjs.map +1 -1
  701. package/fesm2020/ptsecurity-mosaic-tooltip.mjs +336 -336
  702. package/fesm2020/ptsecurity-mosaic-tooltip.mjs.map +1 -1
  703. package/fesm2020/ptsecurity-mosaic-tree-select.mjs +951 -951
  704. package/fesm2020/ptsecurity-mosaic-tree-select.mjs.map +1 -1
  705. package/fesm2020/ptsecurity-mosaic-tree.mjs +1676 -1675
  706. package/fesm2020/ptsecurity-mosaic-tree.mjs.map +1 -1
  707. package/fesm2020/ptsecurity-mosaic.mjs +2 -2
  708. package/form-field/cleaner.d.ts +7 -7
  709. package/form-field/form-field-control.d.ts +37 -37
  710. package/form-field/form-field-errors.d.ts +2 -2
  711. package/form-field/form-field.d.ts +69 -69
  712. package/form-field/form-field.module.d.ts +15 -15
  713. package/form-field/hint.d.ts +14 -6
  714. package/form-field/index.d.ts +1 -1
  715. package/form-field/password-hint.d.ts +40 -40
  716. package/form-field/prefix.d.ts +5 -5
  717. package/form-field/ptsecurity-mosaic-form-field.d.ts +5 -5
  718. package/form-field/public-api.d.ts +10 -10
  719. package/form-field/stepper.d.ts +11 -11
  720. package/form-field/suffix.d.ts +5 -5
  721. package/icon/icon.component.d.ts +18 -18
  722. package/icon/icon.module.d.ts +10 -10
  723. package/icon/index.d.ts +1 -1
  724. package/icon/ptsecurity-mosaic-icon.d.ts +5 -5
  725. package/icon/public-api.d.ts +2 -2
  726. package/index.d.ts +1 -1
  727. package/input/index.d.ts +1 -1
  728. package/input/input-errors.d.ts +1 -1
  729. package/input/input-number-validators.d.ts +39 -39
  730. package/input/input-number.d.ts +33 -33
  731. package/input/input-password.d.ts +123 -123
  732. package/input/input-value-accessor.d.ts +4 -4
  733. package/input/input.d.ts +116 -116
  734. package/input/input.module.d.ts +14 -14
  735. package/input/ptsecurity-mosaic-input.d.ts +5 -5
  736. package/input/public-api.d.ts +6 -6
  737. package/link/index.d.ts +1 -1
  738. package/link/link.component.d.ts +38 -38
  739. package/link/link.module.d.ts +9 -9
  740. package/link/ptsecurity-mosaic-link.d.ts +5 -5
  741. package/link/public-api.d.ts +2 -2
  742. package/list/index.d.ts +1 -1
  743. package/list/list-selection.component.d.ts +168 -168
  744. package/list/list.component.d.ts +18 -18
  745. package/list/list.module.d.ts +11 -11
  746. package/list/ptsecurity-mosaic-list.d.ts +5 -5
  747. package/list/public-api.d.ts +3 -3
  748. package/{toggle → loader-overlay}/README.md +0 -0
  749. package/loader-overlay/index.d.ts +1 -0
  750. package/loader-overlay/loader-overlay.component.d.ts +33 -0
  751. package/loader-overlay/loader-overlay.module.d.ts +11 -0
  752. package/loader-overlay/package.json +10 -0
  753. package/loader-overlay/ptsecurity-mosaic-loader-overlay.d.ts +5 -0
  754. package/loader-overlay/public-api.d.ts +2 -0
  755. package/modal/README.md +33 -33
  756. package/modal/css-unit.pipe.d.ts +7 -7
  757. package/modal/index.d.ts +1 -1
  758. package/modal/modal-control.service.d.ts +20 -20
  759. package/modal/modal-ref.class.d.ts +36 -36
  760. package/modal/modal-util.d.ts +12 -12
  761. package/modal/modal.component.d.ts +128 -126
  762. package/modal/modal.directive.d.ts +17 -17
  763. package/modal/modal.module.d.ts +14 -14
  764. package/modal/modal.service.d.ts +33 -33
  765. package/modal/modal.type.d.ts +60 -59
  766. package/modal/ptsecurity-mosaic-modal.d.ts +5 -5
  767. package/modal/public-api.d.ts +6 -6
  768. package/navbar/README.md +41 -41
  769. package/navbar/index.d.ts +1 -1
  770. package/navbar/navbar-item.component.d.ts +161 -161
  771. package/navbar/navbar.component.d.ts +58 -58
  772. package/navbar/navbar.module.d.ts +14 -14
  773. package/navbar/ptsecurity-mosaic-navbar.d.ts +5 -5
  774. package/navbar/public-api.d.ts +4 -4
  775. package/navbar/vertical-navbar.animation.d.ts +2 -2
  776. package/navbar/vertical-navbar.component.d.ts +23 -23
  777. package/package.json +12 -4
  778. package/popover/README.md +32 -32
  779. package/popover/index.d.ts +1 -1
  780. package/popover/popover-animations.d.ts +4 -4
  781. package/popover/popover-confirm.component.d.ts +33 -33
  782. package/popover/popover.component.d.ts +74 -74
  783. package/popover/popover.module.d.ts +12 -12
  784. package/popover/ptsecurity-mosaic-popover.d.ts +5 -5
  785. package/popover/public-api.d.ts +4 -4
  786. package/prebuilt-themes/dark-theme.css +1 -1
  787. package/prebuilt-themes/default-theme.css +1 -1
  788. package/progress-bar/index.d.ts +1 -1
  789. package/progress-bar/progress-bar.component.d.ts +18 -18
  790. package/progress-bar/progress-bar.module.d.ts +9 -9
  791. package/progress-bar/ptsecurity-mosaic-progress-bar.d.ts +5 -5
  792. package/progress-bar/public-api.d.ts +2 -2
  793. package/progress-spinner/index.d.ts +1 -1
  794. package/progress-spinner/progress-spinner.component.d.ts +19 -19
  795. package/progress-spinner/progress-spinner.module.d.ts +9 -9
  796. package/progress-spinner/ptsecurity-mosaic-progress-spinner.d.ts +5 -5
  797. package/progress-spinner/public-api.d.ts +2 -2
  798. package/ptsecurity-mosaic.d.ts +5 -5
  799. package/public-api.d.ts +1 -1
  800. package/radio/index.d.ts +1 -1
  801. package/radio/ptsecurity-mosaic-radio.d.ts +5 -5
  802. package/radio/public-api.d.ts +2 -2
  803. package/radio/radio.component.d.ts +207 -207
  804. package/radio/radio.module.d.ts +10 -10
  805. package/schematics/README.md +35 -35
  806. package/select/index.d.ts +1 -1
  807. package/select/ptsecurity-mosaic-select.d.ts +5 -5
  808. package/select/public-api.d.ts +3 -3
  809. package/select/select-option.directive.d.ts +20 -20
  810. package/select/select.component.d.ts +310 -310
  811. package/select/select.module.d.ts +15 -15
  812. package/sidebar/index.d.ts +1 -1
  813. package/sidebar/ptsecurity-mosaic-sidebar.d.ts +5 -5
  814. package/sidebar/public-api.d.ts +2 -2
  815. package/sidebar/sidebar-animations.d.ts +8 -8
  816. package/sidebar/sidebar.component.d.ts +53 -53
  817. package/sidebar/sidebar.module.d.ts +8 -8
  818. package/sidepanel/index.d.ts +1 -1
  819. package/sidepanel/ptsecurity-mosaic-sidepanel.d.ts +5 -5
  820. package/sidepanel/public-api.d.ts +6 -6
  821. package/sidepanel/sidepanel-animations.d.ts +14 -14
  822. package/sidepanel/sidepanel-config.d.ts +25 -25
  823. package/sidepanel/sidepanel-container.component.d.ts +45 -45
  824. package/sidepanel/sidepanel-directives.d.ts +50 -50
  825. package/sidepanel/sidepanel-ref.d.ts +24 -24
  826. package/sidepanel/sidepanel.module.d.ts +15 -15
  827. package/sidepanel/sidepanel.service.d.ts +57 -57
  828. package/splitter/index.d.ts +1 -1
  829. package/splitter/ptsecurity-mosaic-splitter.d.ts +5 -5
  830. package/splitter/public-api.d.ts +2 -2
  831. package/splitter/splitter.component.d.ts +130 -130
  832. package/splitter/splitter.module.d.ts +9 -9
  833. package/table/index.d.ts +1 -1
  834. package/table/ptsecurity-mosaic-table.d.ts +5 -5
  835. package/table/public-api.d.ts +2 -2
  836. package/table/table.component.d.ts +5 -5
  837. package/table/table.module.d.ts +10 -10
  838. package/tabs/index.d.ts +1 -1
  839. package/tabs/paginated-tab-header.d.ts +179 -179
  840. package/tabs/ptsecurity-mosaic-tabs.d.ts +5 -5
  841. package/tabs/public-api.d.ts +10 -10
  842. package/tabs/tab-body.component.d.ts +95 -95
  843. package/tabs/tab-content.directive.d.ts +9 -9
  844. package/tabs/tab-group.component.d.ts +133 -133
  845. package/tabs/tab-header.component.d.ts +35 -35
  846. package/tabs/tab-label-wrapper.directive.d.ts +30 -30
  847. package/tabs/tab-label.directive.d.ts +9 -9
  848. package/tabs/tab-nav-bar/index.d.ts +1 -1
  849. package/tabs/tab-nav-bar/tab-nav-bar.d.ts +38 -38
  850. package/tabs/tab.component.d.ts +66 -66
  851. package/tabs/tabs-animations.d.ts +4 -4
  852. package/tabs/tabs.module.d.ts +20 -20
  853. package/tags/index.d.ts +1 -1
  854. package/tags/ptsecurity-mosaic-tags.d.ts +5 -5
  855. package/tags/public-api.d.ts +5 -5
  856. package/tags/tag-default-options.d.ts +8 -8
  857. package/tags/tag-input.d.ts +77 -77
  858. package/tags/tag-list.component.d.ts +240 -240
  859. package/tags/tag-text-control.d.ts +10 -10
  860. package/tags/tag.component.d.ts +135 -135
  861. package/tags/tag.module.d.ts +11 -11
  862. package/textarea/index.d.ts +1 -1
  863. package/textarea/ptsecurity-mosaic-textarea.d.ts +5 -5
  864. package/textarea/public-api.d.ts +2 -2
  865. package/textarea/textarea.component.d.ts +111 -111
  866. package/textarea/textarea.module.d.ts +11 -11
  867. package/timepicker/index.d.ts +1 -1
  868. package/timepicker/ptsecurity-mosaic-timepicker.d.ts +5 -5
  869. package/timepicker/public-api.d.ts +3 -3
  870. package/timepicker/timepicker.constants.d.ts +20 -20
  871. package/timepicker/timepicker.directive.d.ts +146 -146
  872. package/timepicker/timepicker.module.d.ts +11 -11
  873. package/toggle/index.d.ts +1 -1
  874. package/toggle/ptsecurity-mosaic-toggle.d.ts +5 -5
  875. package/toggle/public-api.d.ts +2 -2
  876. package/toggle/toggle.component.d.ts +54 -54
  877. package/toggle/toggle.module.d.ts +10 -10
  878. package/tooltip/index.d.ts +1 -1
  879. package/tooltip/ptsecurity-mosaic-tooltip.d.ts +5 -5
  880. package/tooltip/public-api.d.ts +2 -2
  881. package/tooltip/tooltip.animations.d.ts +8 -8
  882. package/tooltip/tooltip.component.d.ts +91 -91
  883. package/tooltip/tooltip.module.d.ts +9 -9
  884. package/tree/control/base-tree-control.d.ts +40 -40
  885. package/tree/control/flat-tree-control.d.ts +52 -52
  886. package/tree/control/nested-tree-control.d.ts +19 -19
  887. package/tree/control/tree-control.d.ts +44 -44
  888. package/tree/data-source/flat-data-source.d.ts +80 -80
  889. package/tree/data-source/nested-data-source.d.ts +15 -15
  890. package/tree/index.d.ts +1 -1
  891. package/tree/node.d.ts +34 -34
  892. package/tree/outlet.d.ts +9 -9
  893. package/tree/padding.directive.d.ts +47 -47
  894. package/tree/ptsecurity-mosaic-tree.d.ts +5 -5
  895. package/tree/public-api.d.ts +15 -15
  896. package/tree/toggle.d.ts +28 -28
  897. package/tree/tree-base.d.ts +97 -97
  898. package/tree/tree-errors.d.ts +25 -25
  899. package/tree/tree-option.component.d.ts +72 -72
  900. package/tree/tree-selection.component.d.ts +132 -132
  901. package/tree/tree.d.ts +6 -6
  902. package/tree/tree.module.d.ts +16 -16
  903. package/tree-select/index.d.ts +1 -1
  904. package/tree-select/ptsecurity-mosaic-tree-select.d.ts +5 -5
  905. package/tree-select/public-api.d.ts +2 -2
  906. package/tree-select/tree-select.component.d.ts +277 -277
  907. package/tree-select/tree-select.module.d.ts +14 -14
@@ -1 +1 @@
1
- {"version":3,"file":"ptsecurity-mosaic-datepicker.mjs","sources":["../../../packages/mosaic/datepicker/calendar-body.component.ts","../../../packages/mosaic/datepicker/calendar-body.html","../../../packages/mosaic/datepicker/datepicker-errors.ts","../../../packages/mosaic/datepicker/month-view.component.ts","../../../packages/mosaic/datepicker/month-view.html","../../../packages/mosaic/datepicker/multi-year-view.component.ts","../../../packages/mosaic/datepicker/multi-year-view.html","../../../packages/mosaic/datepicker/year-view.component.ts","../../../packages/mosaic/datepicker/year-view.html","../../../packages/mosaic/datepicker/datepicker-intl.ts","../../../packages/mosaic/datepicker/calendar.component.ts","../../../packages/mosaic/datepicker/calendar-header.html","../../../packages/mosaic/datepicker/calendar.html","../../../packages/mosaic/datepicker/datepicker-input.directive.ts","../../../packages/mosaic/datepicker/datepicker-toggle.component.ts","../../../packages/mosaic/datepicker/datepicker-toggle.html","../../../packages/mosaic/datepicker/datepicker-animations.ts","../../../packages/mosaic/datepicker/datepicker.component.ts","../../../packages/mosaic/datepicker/datepicker-content.html","../../../packages/mosaic/datepicker/datepicker-module.ts","../../../packages/mosaic/datepicker/ptsecurity-mosaic-datepicker.ts"],"sourcesContent":["// tslint:disable:no-magic-numbers\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n ViewEncapsulation,\r\n NgZone,\r\n OnChanges,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { take } from 'rxjs/operators';\r\n\r\n\r\n/**\r\n * Extra CSS classes that can be associated with a calendar cell.\r\n */\r\nexport type McCalendarCellCssClasses = string | string[] | Set<string> | { [key: string]: any };\r\n\r\n/**\r\n * An internal class that represents the data corresponding to a single calendar cell.\r\n * @docs-private\r\n */\r\nexport class McCalendarCell {\r\n constructor(\r\n public value: number,\r\n public displayValue: string,\r\n public ariaLabel: string,\r\n public enabled: boolean,\r\n public cssClasses?: McCalendarCellCssClasses\r\n ) {}\r\n}\r\n\r\n\r\n/**\r\n * An internal component used to display calendar data in a table.\r\n * @docs-private\r\n */\r\n@Component({\r\n selector: '[mc-calendar-body]',\r\n exportAs: 'mcCalendarBody',\r\n templateUrl: 'calendar-body.html',\r\n styleUrls: ['calendar-body.scss'],\r\n host: {\r\n class: 'mc-calendar__body',\r\n role: 'grid',\r\n 'aria-readonly': 'true'\r\n },\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class McCalendarBody implements OnChanges {\r\n /** The label for the table. (e.g. \"Jan 2017\"). */\r\n @Input() label: string;\r\n\r\n /** The cells to display in the table. */\r\n @Input() rows: McCalendarCell[][];\r\n\r\n /** The value in the table that corresponds to today. */\r\n @Input() todayValue: number;\r\n\r\n /** The value in the table that is currently selected. */\r\n @Input() selectedValue: number;\r\n\r\n /** The minimum number of free cells needed to fit the label in the first row. */\r\n @Input() labelMinRequiredCells: number;\r\n\r\n /** The number of columns in the table. */\r\n @Input() numCols = 7;\r\n\r\n /** The cell number of the active cell in the table. */\r\n @Input() activeCell = 0;\r\n\r\n /**\r\n * The aspect ratio (width / height) to use for the cells in the table. This aspect ratio will be\r\n * maintained even as the table resizes.\r\n */\r\n @Input() cellAspectRatio = 1;\r\n\r\n /** Emits when a new value is selected. */\r\n @Output() readonly selectedValueChange: EventEmitter<number> = new EventEmitter<number>();\r\n\r\n /** The number of blank cells to put at the beginning for the first row. */\r\n firstRowOffset: number;\r\n\r\n /** Padding for the individual date cells. */\r\n cellPadding: string;\r\n\r\n /** Width of an individual cell. */\r\n cellWidth: string;\r\n\r\n constructor(private readonly elementRef: ElementRef<HTMLElement>, private readonly ngZone: NgZone) {}\r\n\r\n cellClicked(cell: McCalendarCell): void {\r\n if (cell.enabled) {\r\n this.selectedValueChange.emit(cell.value);\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n const columnChanges = changes.numCols;\r\n // tslint:disable-next-line:no-this-assignment\r\n const { rows, numCols } = this;\r\n\r\n if (changes.rows || columnChanges) {\r\n this.firstRowOffset = rows && rows.length && rows[0].length ? numCols - rows[0].length : 0;\r\n }\r\n\r\n if (changes.cellAspectRatio || columnChanges || !this.cellPadding) {\r\n this.cellPadding = `${this.cellAspectRatio * 50 / numCols}%`;\r\n }\r\n\r\n if (columnChanges || !this.cellWidth) {\r\n this.cellWidth = `${100 / numCols}%`;\r\n }\r\n }\r\n\r\n isActiveCell(rowIndex: number, colIndex: number): boolean {\r\n let cellNumber = rowIndex * this.numCols + colIndex;\r\n\r\n // Account for the fact that the first row may not have as many cells.\r\n if (rowIndex) {\r\n cellNumber -= this.firstRowOffset;\r\n }\r\n\r\n return cellNumber === this.activeCell;\r\n }\r\n\r\n /** Focuses the active cell after the microtask queue is empty. */\r\n focusActiveCell() {\r\n this.ngZone.runOutsideAngular(() => {\r\n this.ngZone.onStable.asObservable().pipe(take(1)).subscribe(() => {\r\n const activeCell: HTMLElement | null =\r\n this.elementRef.nativeElement.querySelector('.mc-calendar__body_active');\r\n\r\n if (activeCell) {\r\n activeCell.focus();\r\n }\r\n });\r\n });\r\n }\r\n}\r\n","<!--\r\n If there's not enough space in the first row, create a separate label row. We mark this row as\r\n aria-hidden because we don't want it to be read out as one of the weeks in the month.\r\n-->\r\n<tr *ngIf=\"firstRowOffset < labelMinRequiredCells\">\r\n <td class=\"mc-calendar__body-label\" [attr.colspan]=\"numCols\">\r\n {{ label }}\r\n </td>\r\n</tr>\r\n\r\n<!-- Create the first row separately so we can include a special spacer cell. -->\r\n<tr *ngFor=\"let row of rows; let rowIndex = index\">\r\n <!--\r\n We mark this cell as aria-hidden so it doesn't get read out as one of the days in the week.\r\n The aspect ratio of the table cells is maintained by setting the top and bottom padding as a\r\n percentage of the width (a variant of the trick described here:\r\n https://www.w3schools.com/howto/howto_css_aspect_ratio.asp).\r\n -->\r\n <td *ngIf=\"rowIndex === 0 && firstRowOffset\"\r\n class=\"mc-calendar__body-label\"\r\n [attr.colspan]=\"firstRowOffset\">\r\n {{ firstRowOffset >= labelMinRequiredCells ? label : '' }}\r\n </td>\r\n <td *ngFor=\"let item of row; let colIndex = index\"\r\n class=\"mc-calendar__body-cell\"\r\n [ngClass]=\"item.cssClasses!\"\r\n [tabindex]=\"isActiveCell(rowIndex, colIndex) ? 0 : -1\"\r\n [class.mc-calendar__body_disabled]=\"!item.enabled\"\r\n [class.mc-calendar__body_active]=\"isActiveCell(rowIndex, colIndex)\"\r\n (click)=\"cellClicked(item)\"\r\n [style.width]=\"cellWidth\"\r\n [style.paddingTop]=\"cellPadding\"\r\n [style.paddingBottom]=\"cellPadding\">\r\n <div class=\"mc-calendar__body-cell-content\"\r\n [class.mc-selected]=\"selectedValue === item.value\"\r\n [class.mc-calendar__body-today]=\"todayValue === item.value\">\r\n {{ item.displayValue }}\r\n </div>\r\n </td>\r\n</tr>\r\n","/** @docs-private */\r\nexport function createMissingDateImplError(provider: string) {\r\n return Error(\r\n `McDatepicker: No provider found for ${provider}. You must import one of the existing ` +\r\n `modules at your application root or provide a custom implementation or use exists ones.`);\r\n}\r\n","// tslint:disable:no-magic-numbers\r\nimport { Directionality } from '@angular/cdk/bidi';\r\nimport {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n Optional,\r\n Output,\r\n ViewEncapsulation,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { DateAdapter, MC_DATE_FORMATS, McDateFormats } from '@ptsecurity/cdk/datetime';\r\nimport {\r\n DOWN_ARROW,\r\n END,\r\n ENTER,\r\n HOME,\r\n LEFT_ARROW,\r\n PAGE_DOWN,\r\n PAGE_UP,\r\n RIGHT_ARROW,\r\n UP_ARROW,\r\n SPACE\r\n} from '@ptsecurity/cdk/keycodes';\r\n\r\nimport { McCalendarBody, McCalendarCell, McCalendarCellCssClasses } from './calendar-body.component';\r\nimport { createMissingDateImplError } from './datepicker-errors';\r\n\r\n\r\nconst DAYS_PER_WEEK = 7;\r\n\r\n\r\n/**\r\n * An internal component used to display a single month in the datepicker.\r\n * @docs-private\r\n */\r\n@Component({\r\n selector: 'mc-month-view',\r\n exportAs: 'mcMonthView',\r\n templateUrl: 'month-view.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class McMonthView<D> implements AfterContentInit {\r\n /**\r\n * The date to display in this month view (everything other than the month and year is ignored).\r\n */\r\n @Input()\r\n get activeDate(): D {\r\n return this._activeDate;\r\n }\r\n\r\n set activeDate(value: D) {\r\n const oldActiveDate = this._activeDate;\r\n const validDate = this.getValidDateOrNull(this.dateAdapter.deserialize(value)) || this.dateAdapter.today();\r\n this._activeDate = this.dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\r\n\r\n if (!this.hasSameMonthAndYear(oldActiveDate, this._activeDate)) {\r\n this.init();\r\n }\r\n }\r\n\r\n /** The currently selected date. */\r\n @Input()\r\n get selected(): D | null {\r\n return this._selected;\r\n }\r\n\r\n set selected(value: D | null) {\r\n this._selected = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\r\n this.selectedDate = this.getDateInCurrentMonth(this._selected);\r\n }\r\n\r\n /** The minimum selectable date. */\r\n @Input()\r\n get minDate(): D | null {\r\n return this._minDate;\r\n }\r\n\r\n set minDate(value: D | null) {\r\n this._minDate = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\r\n }\r\n\r\n /** The maximum selectable date. */\r\n @Input()\r\n get maxDate(): D | null {\r\n return this._maxDate;\r\n }\r\n\r\n set maxDate(value: D | null) {\r\n this._maxDate = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\r\n }\r\n\r\n /** Function used to filter which dates are selectable. */\r\n @Input() dateFilter: (date: D) => boolean;\r\n\r\n /** Function that can be used to add custom CSS classes to dates. */\r\n @Input() dateClass: (date: D) => McCalendarCellCssClasses;\r\n\r\n /** Emits when a new date is selected. */\r\n @Output() readonly selectedChange: EventEmitter<D | null> = new EventEmitter<D | null>();\r\n\r\n /** Emits when any date is selected. */\r\n @Output() readonly userSelection: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n /** Emits when any date is activated. */\r\n @Output() readonly activeDateChange: EventEmitter<D> = new EventEmitter<D>();\r\n\r\n /** The body of calendar table */\r\n @ViewChild(McCalendarBody, {static: false}) mcCalendarBody: McCalendarBody;\r\n\r\n /** The label for this month (e.g. \"January 2017\"). */\r\n monthLabel: string;\r\n\r\n /** Grid of calendar cells representing the dates of the month. */\r\n weeks: McCalendarCell[][];\r\n\r\n /** The number of blank cells in the first row before the 1st of the month. */\r\n firstWeekOffset: number;\r\n\r\n /**\r\n * The date of the month that the currently selected Date falls on.\r\n * Null if the currently selected Date is in another month.\r\n */\r\n selectedDate: number | null;\r\n\r\n /** The date of the month that today falls on. Null if today is in another month. */\r\n todayDate: number | null;\r\n\r\n /** The names of the weekdays. */\r\n weekdays: { long: string; narrow: string }[];\r\n private _activeDate: D;\r\n private _selected: D | null;\r\n private _minDate: D | null;\r\n private _maxDate: D | null;\r\n\r\n constructor(\r\n private changeDetectorRef: ChangeDetectorRef,\r\n @Optional() @Inject(MC_DATE_FORMATS) private readonly dateFormats: McDateFormats,\r\n @Optional() public dateAdapter: DateAdapter<D>,\r\n @Optional() private dir?: Directionality\r\n ) {\r\n\r\n if (!this.dateAdapter) {\r\n throw createMissingDateImplError('DateAdapter');\r\n }\r\n\r\n if (!this.dateFormats) {\r\n throw createMissingDateImplError('MC_DATE_FORMATS');\r\n }\r\n\r\n const firstDayOfWeek = this.dateAdapter.getFirstDayOfWeek();\r\n const narrowWeekdays = this.dateAdapter.getDayOfWeekNames('short');\r\n const longWeekdays = this.dateAdapter.getDayOfWeekNames('long');\r\n\r\n // Rotate the labels for days of the week based on the configured first day of the week.\r\n const weekdays = longWeekdays.map((long, i) => {\r\n return { long, narrow: narrowWeekdays[i] };\r\n });\r\n this.weekdays = weekdays\r\n .slice(firstDayOfWeek)\r\n .concat(weekdays.slice(0, firstDayOfWeek));\r\n\r\n this._activeDate = this.dateAdapter.today();\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.init();\r\n }\r\n\r\n /** Handles when a new date is selected. */\r\n dateSelected(date: number) {\r\n if (this.selectedDate !== date) {\r\n const selectedYear = this.dateAdapter.getYear(this.activeDate);\r\n const selectedMonth = this.dateAdapter.getMonth(this.activeDate);\r\n const selectedDate = this.dateAdapter.createDate(selectedYear, selectedMonth, date);\r\n\r\n this.selectedChange.emit(selectedDate);\r\n }\r\n\r\n this.userSelection.emit();\r\n }\r\n\r\n /** Handles keydown events on the calendar body when calendar is in month view. */\r\n handleCalendarBodyKeydown(event: KeyboardEvent): void {\r\n // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent\r\n // disabled ones from being selected. This may not be ideal, we should look into whether\r\n // navigation should skip over disabled dates, and if so, how to implement that efficiently.\r\n\r\n const oldActiveDate = this._activeDate;\r\n const isRtl = this.isRtl();\r\n\r\n // tslint:disable-next-line:deprecation\r\n switch (event.keyCode) {\r\n case LEFT_ARROW:\r\n this.activeDate = this.dateAdapter.addCalendarDays(this._activeDate, isRtl ? 1 : -1);\r\n break;\r\n case RIGHT_ARROW:\r\n this.activeDate = this.dateAdapter.addCalendarDays(this._activeDate, isRtl ? -1 : 1);\r\n break;\r\n case UP_ARROW:\r\n this.activeDate = this.dateAdapter.addCalendarDays(this._activeDate, -7);\r\n break;\r\n case DOWN_ARROW:\r\n this.activeDate = this.dateAdapter.addCalendarDays(this._activeDate, 7);\r\n break;\r\n case HOME:\r\n this.activeDate = this.dateAdapter.addCalendarDays(\r\n this._activeDate,\r\n 1 - this.dateAdapter.getDate(this._activeDate)\r\n );\r\n break;\r\n case END:\r\n this.activeDate = this.dateAdapter.addCalendarDays(\r\n this._activeDate,\r\n (this.dateAdapter.getNumDaysInMonth(this._activeDate) - this.dateAdapter.getDate(this._activeDate))\r\n );\r\n break;\r\n case PAGE_UP:\r\n this.activeDate = event.altKey ?\r\n this.dateAdapter.addCalendarYears(this._activeDate, -1) :\r\n this.dateAdapter.addCalendarMonths(this._activeDate, -1);\r\n break;\r\n case PAGE_DOWN:\r\n this.activeDate = event.altKey ?\r\n this.dateAdapter.addCalendarYears(this._activeDate, 1) :\r\n this.dateAdapter.addCalendarMonths(this._activeDate, 1);\r\n break;\r\n case ENTER:\r\n case SPACE:\r\n if (!this.dateFilter || this.dateFilter(this._activeDate)) {\r\n this.dateSelected(this.dateAdapter.getDate(this._activeDate));\r\n this.userSelection.emit();\r\n // Prevent unexpected default actions such as form submission.\r\n event.preventDefault();\r\n }\r\n\r\n return;\r\n default:\r\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\r\n return;\r\n }\r\n\r\n if (this.dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\r\n this.activeDateChange.emit(this.activeDate);\r\n }\r\n\r\n this.focusActiveCell();\r\n // Prevent unexpected default actions such as form submission.\r\n event.preventDefault();\r\n }\r\n\r\n /** Initializes this month view. */\r\n init() {\r\n this.selectedDate = this.getDateInCurrentMonth(this.selected);\r\n this.todayDate = this.getDateInCurrentMonth(this.dateAdapter.today());\r\n this.monthLabel = this.dateAdapter.getMonthNames('short')[this.dateAdapter.getMonth(this.activeDate)];\r\n\r\n this.monthLabel = this.monthLabel[0].toLocaleUpperCase() + this.monthLabel.substr(1);\r\n\r\n const firstOfMonth = this.dateAdapter.createDate(\r\n this.dateAdapter.getYear(this.activeDate),\r\n this.dateAdapter.getMonth(this.activeDate)\r\n );\r\n\r\n this.firstWeekOffset =\r\n (DAYS_PER_WEEK + this.dateAdapter.getDayOfWeek(firstOfMonth) -\r\n this.dateAdapter.getFirstDayOfWeek()) % DAYS_PER_WEEK;\r\n\r\n this.createWeekCells();\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n /** Focuses the active cell after the microtask queue is empty. */\r\n focusActiveCell() {\r\n this.mcCalendarBody.focusActiveCell();\r\n }\r\n\r\n /** Creates McCalendarCells for the dates in this month. */\r\n private createWeekCells() {\r\n const daysInMonth = this.dateAdapter.getNumDaysInMonth(this.activeDate);\r\n const dateNames = this.dateAdapter.getDateNames();\r\n\r\n this.weeks = [[]];\r\n\r\n for (let i = 0, cell = this.firstWeekOffset; i < daysInMonth; i++, cell++) {\r\n if (cell === DAYS_PER_WEEK) {\r\n this.weeks.push([]);\r\n cell = 0;\r\n }\r\n\r\n const date = this.dateAdapter.createDate(\r\n this.dateAdapter.getYear(this.activeDate),\r\n this.dateAdapter.getMonth(this.activeDate),\r\n i + 1\r\n );\r\n const enabled = this.shouldEnableDate(date);\r\n const ariaLabel = this.dateAdapter.format(date, this.dateFormats.dateA11yLabel);\r\n const cellClasses = this.dateClass ? this.dateClass(date) : undefined;\r\n\r\n this.weeks[this.weeks.length - 1]\r\n .push(new McCalendarCell(i + 1, dateNames[i], ariaLabel, enabled, cellClasses));\r\n }\r\n }\r\n\r\n /** Date filter for the month */\r\n private shouldEnableDate(date: D): boolean {\r\n return !!date &&\r\n (!this.dateFilter || this.dateFilter(date)) &&\r\n (!this.minDate || this.dateAdapter.compareDate(date, this.minDate) >= 0) &&\r\n (!this.maxDate || this.dateAdapter.compareDate(date, this.maxDate) <= 0);\r\n }\r\n\r\n /**\r\n * Gets the date in this month that the given Date falls on.\r\n * Returns null if the given Date is in another month.\r\n */\r\n private getDateInCurrentMonth(date: D | null): number | null {\r\n return date && this.hasSameMonthAndYear(date, this.activeDate) ?\r\n this.dateAdapter.getDate(date) : null;\r\n }\r\n\r\n /** Checks whether the 2 dates are non-null and fall within the same month of the same year. */\r\n private hasSameMonthAndYear(d1: D | null, d2: D | null): boolean {\r\n return !!(d1 && d2 && this.dateAdapter.getMonth(d1) === this.dateAdapter.getMonth(d2) &&\r\n this.dateAdapter.getYear(d1) === this.dateAdapter.getYear(d2));\r\n }\r\n\r\n /**\r\n * @param obj The object to check.\r\n * @returns The given object if it is both a date instance and valid, otherwise null.\r\n */\r\n private getValidDateOrNull(obj: any): D | null {\r\n return (this.dateAdapter.isDateInstance(obj) && this.dateAdapter.isValid(obj)) ? obj : null;\r\n }\r\n\r\n /** Determines whether the user has the RTL layout direction. */\r\n private isRtl() {\r\n return this.dir && this.dir.value === 'rtl';\r\n }\r\n}\r\n","<table class=\"mc-calendar__table\">\r\n <thead class=\"mc-calendar__table-header\">\r\n <tr>\r\n <th *ngFor=\"let day of weekdays\" [attr.aria-label]=\"day.long\">{{day.narrow}}</th>\r\n </tr>\r\n <tr>\r\n <th class=\"mc-calendar__table-header-divider\" colspan=\"7\"></th>\r\n </tr>\r\n </thead>\r\n <tbody mc-calendar-body\r\n [label]=\"monthLabel\"\r\n [rows]=\"weeks\"\r\n [todayValue]=\"todayDate!\"\r\n [selectedValue]=\"selectedDate!\"\r\n [labelMinRequiredCells]=\"3\"\r\n [activeCell]=\"dateAdapter.getDate(activeDate) - 1\"\r\n (selectedValueChange)=\"dateSelected($event)\"\r\n (keydown)=\"handleCalendarBodyKeydown($event)\">\r\n </tbody>\r\n</table>\r\n","// tslint:disable:no-magic-numbers\r\nimport { Directionality } from '@angular/cdk/bidi';\r\nimport {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Optional,\r\n Output,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { DateAdapter } from '@ptsecurity/cdk/datetime';\r\nimport {\r\n DOWN_ARROW,\r\n END,\r\n ENTER,\r\n HOME,\r\n LEFT_ARROW,\r\n PAGE_DOWN,\r\n PAGE_UP,\r\n RIGHT_ARROW,\r\n UP_ARROW,\r\n SPACE\r\n} from '@ptsecurity/cdk/keycodes';\r\n\r\nimport { McCalendarBody, McCalendarCell } from './calendar-body.component';\r\nimport { createMissingDateImplError } from './datepicker-errors';\r\n\r\n\r\nexport const yearsPerPage = 24;\r\n\r\nexport const yearsPerRow = 4;\r\n\r\n\r\n/**\r\n * An internal component used to display a year selector in the datepicker.\r\n * @docs-private\r\n */\r\n@Component({\r\n selector: 'mc-multi-year-view',\r\n exportAs: 'mcMultiYearView',\r\n templateUrl: 'multi-year-view.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class McMultiYearView<D> implements AfterContentInit {\r\n /** The date to display in this multi-year view (everything other than the year is ignored). */\r\n @Input()\r\n get activeDate(): D {\r\n return this._activeDate;\r\n }\r\n\r\n set activeDate(value: D) {\r\n const oldActiveDate = this._activeDate;\r\n const validDate =\r\n this.getValidDateOrNull(this.dateAdapter.deserialize(value)) || this.dateAdapter.today();\r\n this._activeDate = this.dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\r\n\r\n if (Math.floor(this.dateAdapter.getYear(oldActiveDate) / yearsPerPage) !==\r\n Math.floor(this.dateAdapter.getYear(this._activeDate) / yearsPerPage)) {\r\n this.init();\r\n }\r\n }\r\n\r\n /** The currently selected date. */\r\n @Input()\r\n get selected(): D | null {\r\n return this._selected;\r\n }\r\n\r\n set selected(value: D | null) {\r\n this._selected = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\r\n this.selectedYear = this._selected && this.dateAdapter.getYear(this._selected);\r\n }\r\n\r\n /** The minimum selectable date. */\r\n @Input()\r\n get minDate(): D | null {\r\n return this._minDate;\r\n }\r\n\r\n set minDate(value: D | null) {\r\n this._minDate = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\r\n }\r\n\r\n /** The maximum selectable date. */\r\n @Input()\r\n get maxDate(): D | null {\r\n return this._maxDate;\r\n }\r\n\r\n set maxDate(value: D | null) {\r\n this._maxDate = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\r\n }\r\n\r\n /** A function used to filter which dates are selectable. */\r\n @Input() dateFilter: (date: D) => boolean;\r\n\r\n /** Emits when a new year is selected. */\r\n @Output() readonly selectedChange: EventEmitter<D> = new EventEmitter<D>();\r\n\r\n /** Emits the selected year. This doesn't imply a change on the selected date */\r\n @Output() readonly yearSelected: EventEmitter<D> = new EventEmitter<D>();\r\n\r\n /** Emits when any date is activated. */\r\n @Output() readonly activeDateChange: EventEmitter<D> = new EventEmitter<D>();\r\n\r\n /** The body of calendar table */\r\n @ViewChild(McCalendarBody, {static: false}) mcCalendarBody: McCalendarBody;\r\n\r\n /** Grid of calendar cells representing the currently displayed years. */\r\n years: McCalendarCell[][];\r\n\r\n /** The year that today falls on. */\r\n todayYear: number;\r\n\r\n /** The year of the selected date. Null if the selected date is null. */\r\n selectedYear: number | null;\r\n private _activeDate: D;\r\n private _selected: D | null;\r\n private _minDate: D | null;\r\n private _maxDate: D | null;\r\n\r\n constructor(\r\n private readonly changeDetectorRef: ChangeDetectorRef,\r\n @Optional() public dateAdapter: DateAdapter<D>,\r\n @Optional() private dir?: Directionality\r\n ) {\r\n if (!this.dateAdapter) {\r\n throw createMissingDateImplError('DateAdapter');\r\n }\r\n\r\n this._activeDate = this.dateAdapter.today();\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.init();\r\n }\r\n\r\n /** Initializes this multi-year view. */\r\n init() {\r\n this.todayYear = this.dateAdapter.getYear(this.dateAdapter.today());\r\n const activeYear = this.dateAdapter.getYear(this._activeDate);\r\n const activeOffset = activeYear % yearsPerPage;\r\n this.years = [];\r\n for (let i = 0, row: number[] = []; i < yearsPerPage; i++) {\r\n row.push(activeYear - activeOffset + i);\r\n if (row.length === yearsPerRow) {\r\n this.years.push(row.map((year) => this.createCellForYear(year)));\r\n row = [];\r\n }\r\n }\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n /** Handles when a new year is selected. */\r\n onYearSelected(year: number) {\r\n this.yearSelected.emit(this.dateAdapter.createDate(year));\r\n const month = this.dateAdapter.getMonth(this.activeDate);\r\n const daysInMonth =\r\n this.dateAdapter.getNumDaysInMonth(this.dateAdapter.createDate(year, month));\r\n this.selectedChange.emit(\r\n this.dateAdapter.createDate(year, month, Math.min(this.dateAdapter.getDate(this.activeDate), daysInMonth))\r\n );\r\n }\r\n\r\n /** Handles keydown events on the calendar body when calendar is in multi-year view. */\r\n handleCalendarBodyKeydown(event: KeyboardEvent): void {\r\n // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent\r\n // disabled ones from being selected. This may not be ideal, we should look into whether\r\n // navigation should skip over disabled dates, and if so, how to implement that efficiently.\r\n\r\n const oldActiveDate = this._activeDate;\r\n const isRtl = this.isRtl();\r\n\r\n // tslint:disable-next-line:deprecation\r\n switch (event.keyCode) {\r\n case LEFT_ARROW:\r\n this.activeDate = this.dateAdapter.addCalendarYears(this._activeDate, isRtl ? 1 : -1);\r\n break;\r\n case RIGHT_ARROW:\r\n this.activeDate = this.dateAdapter.addCalendarYears(this._activeDate, isRtl ? -1 : 1);\r\n break;\r\n case UP_ARROW:\r\n this.activeDate = this.dateAdapter.addCalendarYears(this._activeDate, -yearsPerRow);\r\n break;\r\n case DOWN_ARROW:\r\n this.activeDate = this.dateAdapter.addCalendarYears(this._activeDate, yearsPerRow);\r\n break;\r\n case HOME:\r\n this.activeDate = this.dateAdapter.addCalendarYears(\r\n this._activeDate,\r\n -this.dateAdapter.getYear(this._activeDate) % yearsPerPage\r\n );\r\n break;\r\n case END:\r\n this.activeDate = this.dateAdapter.addCalendarYears(\r\n this._activeDate,\r\n yearsPerPage - this.dateAdapter.getYear(this._activeDate) % yearsPerPage - 1\r\n );\r\n break;\r\n case PAGE_UP:\r\n this.activeDate =\r\n this.dateAdapter.addCalendarYears(\r\n this._activeDate, event.altKey ? -yearsPerPage * 10 : -yearsPerPage);\r\n break;\r\n case PAGE_DOWN:\r\n this.activeDate =\r\n this.dateAdapter.addCalendarYears(\r\n this._activeDate, event.altKey ? yearsPerPage * 10 : yearsPerPage);\r\n break;\r\n case ENTER:\r\n case SPACE:\r\n this.onYearSelected(this.dateAdapter.getYear(this._activeDate));\r\n break;\r\n default:\r\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\r\n return;\r\n }\r\n\r\n if (this.dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\r\n this.activeDateChange.emit(this.activeDate);\r\n }\r\n\r\n this.focusActiveCell();\r\n // Prevent unexpected default actions such as form submission.\r\n event.preventDefault();\r\n }\r\n\r\n getActiveCell(): number {\r\n return this.dateAdapter.getYear(this.activeDate) % yearsPerPage;\r\n }\r\n\r\n /** Focuses the active cell after the microtask queue is empty. */\r\n focusActiveCell() {\r\n this.mcCalendarBody.focusActiveCell();\r\n }\r\n\r\n /** Creates an McCalendarCell for the given year. */\r\n private createCellForYear(year: number) {\r\n const yearName = this.dateAdapter.getYearName(this.dateAdapter.createDate(year));\r\n\r\n return new McCalendarCell(year, yearName, yearName, this.shouldEnableYear(year));\r\n }\r\n\r\n /** Whether the given year is enabled. */\r\n private shouldEnableYear(year: number) {\r\n // disable if the year is greater than maxDate lower than minDate\r\n if (year === undefined || year === null ||\r\n (this.maxDate && year > this.dateAdapter.getYear(this.maxDate)) ||\r\n (this.minDate && year < this.dateAdapter.getYear(this.minDate))) {\r\n return false;\r\n }\r\n\r\n // enable if it reaches here and there's no filter defined\r\n if (!this.dateFilter) {\r\n return true;\r\n }\r\n\r\n const firstOfYear = this.dateAdapter.createDate(year);\r\n\r\n // If any date in the year is enabled count the year as enabled.\r\n for (let date = firstOfYear; this.dateAdapter.getYear(date) === year;\r\n date = this.dateAdapter.addCalendarDays(date, 1)) {\r\n if (this.dateFilter(date)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * @param obj The object to check.\r\n * @returns The given object if it is both a date instance and valid, otherwise null.\r\n */\r\n private getValidDateOrNull(obj: any): D | null {\r\n return (this.dateAdapter.isDateInstance(obj) && this.dateAdapter.isValid(obj)) ? obj : null;\r\n }\r\n\r\n /** Determines whether the user has the RTL layout direction. */\r\n private isRtl() {\r\n return this.dir && this.dir.value === 'rtl';\r\n }\r\n}\r\n","<table class=\"mc-calendar__table\">\r\n <thead class=\"mc-calendar__table-header\">\r\n <tr>\r\n <th class=\"mc-calendar__table-header-divider\" colspan=\"4\"></th>\r\n </tr>\r\n </thead>\r\n <tbody mc-calendar-body\r\n [rows]=\"years\"\r\n [todayValue]=\"todayYear\"\r\n [selectedValue]=\"selectedYear!\"\r\n [numCols]=\"4\"\r\n [cellAspectRatio]=\"4 / 7\"\r\n [activeCell]=\"getActiveCell()\"\r\n (selectedValueChange)=\"onYearSelected($event)\"\r\n (keydown)=\"handleCalendarBodyKeydown($event)\">\r\n </tbody>\r\n</table>\r\n","import { Directionality } from '@angular/cdk/bidi';\r\nimport {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n Optional,\r\n Output,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { DateAdapter, MC_DATE_FORMATS, McDateFormats } from '@ptsecurity/cdk/datetime';\r\nimport {\r\n DOWN_ARROW,\r\n END,\r\n ENTER,\r\n HOME,\r\n LEFT_ARROW,\r\n PAGE_DOWN,\r\n PAGE_UP,\r\n RIGHT_ARROW,\r\n UP_ARROW,\r\n SPACE\r\n} from '@ptsecurity/cdk/keycodes';\r\n\r\nimport { McCalendarBody, McCalendarCell } from './calendar-body.component';\r\nimport { createMissingDateImplError } from './datepicker-errors';\r\n\r\n\r\n/**\r\n * An internal component used to display a single year in the datepicker.\r\n * @docs-private\r\n */\r\n@Component({\r\n selector: 'mc-year-view',\r\n exportAs: 'mcYearView',\r\n templateUrl: 'year-view.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class McYearView<D> implements AfterContentInit {\r\n /** The date to display in this year view (everything other than the year is ignored). */\r\n @Input()\r\n get activeDate(): D {\r\n return this._activeDate;\r\n }\r\n\r\n set activeDate(value: D) {\r\n const oldActiveDate = this._activeDate;\r\n const validDate =\r\n this.getValidDateOrNull(this.dateAdapter.deserialize(value)) || this.dateAdapter.today();\r\n this._activeDate = this.dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\r\n\r\n if (this.dateAdapter.getYear(oldActiveDate) !== this.dateAdapter.getYear(this._activeDate)) {\r\n this.init();\r\n }\r\n }\r\n\r\n /** The currently selected date. */\r\n @Input()\r\n get selected(): D | null {\r\n return this._selected;\r\n }\r\n\r\n set selected(value: D | null) {\r\n this._selected = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\r\n this.selectedMonth = this.getMonthInCurrentYear(this._selected);\r\n }\r\n\r\n /** The minimum selectable date. */\r\n @Input()\r\n get minDate(): D | null {\r\n return this._minDate;\r\n }\r\n\r\n set minDate(value: D | null) {\r\n this._minDate = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\r\n }\r\n\r\n /** The maximum selectable date. */\r\n @Input()\r\n get maxDate(): D | null {\r\n return this._maxDate;\r\n }\r\n\r\n set maxDate(value: D | null) {\r\n this._maxDate = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\r\n }\r\n\r\n /** A function used to filter which dates are selectable. */\r\n @Input() dateFilter: (date: D) => boolean;\r\n\r\n /** Emits when a new month is selected. */\r\n @Output() readonly selectedChange: EventEmitter<D> = new EventEmitter<D>();\r\n\r\n /** Emits the selected month. This doesn't imply a change on the selected date */\r\n @Output() readonly monthSelected: EventEmitter<D> = new EventEmitter<D>();\r\n\r\n /** Emits when any date is activated. */\r\n @Output() readonly activeDateChange: EventEmitter<D> = new EventEmitter<D>();\r\n\r\n /** The body of calendar table */\r\n @ViewChild(McCalendarBody, {static: false}) mcCalendarBody: McCalendarBody;\r\n\r\n /** Grid of calendar cells representing the months of the year. */\r\n months: McCalendarCell[][];\r\n\r\n /** The label for this year (e.g. \"2017\"). */\r\n yearLabel: string;\r\n\r\n /** The month in this year that today falls on. Null if today is in a different year. */\r\n todayMonth: number | null;\r\n\r\n /**\r\n * The month in this year that the selected Date falls on.\r\n * Null if the selected Date is in a different year.\r\n */\r\n selectedMonth: number | null;\r\n private _activeDate: D;\r\n private _selected: D | null;\r\n private _minDate: D | null;\r\n private _maxDate: D | null;\r\n\r\n constructor(\r\n private changeDetectorRef: ChangeDetectorRef,\r\n @Optional() @Inject(MC_DATE_FORMATS) private readonly dateFormats: McDateFormats,\r\n @Optional() public dateAdapter: DateAdapter<D>,\r\n @Optional() private dir?: Directionality\r\n ) {\r\n if (!this.dateAdapter) {\r\n throw createMissingDateImplError('DateAdapter');\r\n }\r\n\r\n if (!this.dateFormats) {\r\n throw createMissingDateImplError('MC_DATE_FORMATS');\r\n }\r\n\r\n this._activeDate = this.dateAdapter.today();\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.init();\r\n }\r\n\r\n /** Handles when a new month is selected. */\r\n onMonthSelected(month: number) {\r\n const year = this.dateAdapter.getYear(this.activeDate);\r\n\r\n const normalizedDate = this.dateAdapter.createDate(year, month);\r\n\r\n this.monthSelected.emit(normalizedDate);\r\n\r\n const daysInMonth = this.dateAdapter.getNumDaysInMonth(normalizedDate);\r\n\r\n this.selectedChange.emit(\r\n this.dateAdapter.createDate(\r\n year,\r\n month,\r\n Math.min(this.dateAdapter.getDate(this.activeDate), daysInMonth)\r\n )\r\n );\r\n }\r\n\r\n /** Handles keydown events on the calendar body when calendar is in year view. */\r\n handleCalendarBodyKeydown(event: KeyboardEvent): void {\r\n // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent\r\n // disabled ones from being selected. This may not be ideal, we should look into whether\r\n // navigation should skip over disabled dates, and if so, how to implement that efficiently.\r\n\r\n const oldActiveDate = this._activeDate;\r\n const isRtl = this.isRtl();\r\n\r\n const VERTICAL_SHIFT = 4;\r\n const PAGE_SHIFT = 10;\r\n const MAX_MONTH_INDEX = 11;\r\n\r\n // tslint:disable-next-line:deprecation\r\n switch (event.keyCode) {\r\n case LEFT_ARROW:\r\n this.activeDate = this.dateAdapter.addCalendarMonths(this._activeDate, isRtl ? 1 : -1);\r\n break;\r\n case RIGHT_ARROW:\r\n this.activeDate = this.dateAdapter.addCalendarMonths(this._activeDate, isRtl ? -1 : 1);\r\n break;\r\n case UP_ARROW:\r\n this.activeDate = this.dateAdapter.addCalendarMonths(this._activeDate, -VERTICAL_SHIFT);\r\n break;\r\n case DOWN_ARROW:\r\n this.activeDate = this.dateAdapter.addCalendarMonths(this._activeDate, VERTICAL_SHIFT);\r\n break;\r\n case HOME:\r\n this.activeDate = this.dateAdapter.addCalendarMonths(\r\n this._activeDate,\r\n -this.dateAdapter.getMonth(this._activeDate)\r\n );\r\n break;\r\n case END:\r\n this.activeDate = this.dateAdapter.addCalendarMonths(\r\n this._activeDate,\r\n MAX_MONTH_INDEX - this.dateAdapter.getMonth(this._activeDate)\r\n );\r\n break;\r\n case PAGE_UP:\r\n this.activeDate =\r\n this.dateAdapter.addCalendarYears(this._activeDate, event.altKey ? -PAGE_SHIFT : -1);\r\n break;\r\n case PAGE_DOWN:\r\n this.activeDate =\r\n this.dateAdapter.addCalendarYears(this._activeDate, event.altKey ? PAGE_SHIFT : 1);\r\n break;\r\n case ENTER:\r\n case SPACE:\r\n this.onMonthSelected(this.dateAdapter.getMonth(this._activeDate));\r\n break;\r\n default:\r\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\r\n return;\r\n }\r\n\r\n if (this.dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\r\n this.activeDateChange.emit(this.activeDate);\r\n }\r\n\r\n this.focusActiveCell();\r\n // Prevent unexpected default actions such as form submission.\r\n event.preventDefault();\r\n }\r\n\r\n /** Initializes this year view. */\r\n init() {\r\n this.selectedMonth = this.getMonthInCurrentYear(this.selected);\r\n this.todayMonth = this.getMonthInCurrentYear(this.dateAdapter.today());\r\n this.yearLabel = this.dateAdapter.getYearName(this.activeDate);\r\n\r\n const monthNames = this.dateAdapter.getMonthNames('short');\r\n\r\n // First row of months only contains 5 elements so we can fit the year label on the same row.\r\n // tslint:disable-next-line:no-magic-numbers\r\n this.months = [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]\r\n .map((row) => row.map((month) => this.createCellForMonth(month, monthNames[month])));\r\n\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n /** Focuses the active cell after the microtask queue is empty. */\r\n focusActiveCell() {\r\n this.mcCalendarBody.focusActiveCell();\r\n }\r\n\r\n /**\r\n * Gets the month in this year that the given Date falls on.\r\n * Returns null if the given Date is in another year.\r\n */\r\n private getMonthInCurrentYear(date: D | null) {\r\n return date && this.dateAdapter.getYear(date) === this.dateAdapter.getYear(this.activeDate) ?\r\n this.dateAdapter.getMonth(date) : null;\r\n }\r\n\r\n /** Creates an McCalendarCell for the given month. */\r\n private createCellForMonth(month: number, monthName: string) {\r\n const ariaLabel = this.dateAdapter.format(\r\n this.dateAdapter.createDate(this.dateAdapter.getYear(this.activeDate), month),\r\n this.dateFormats.monthYearA11yLabel\r\n );\r\n\r\n const newMonthName = monthName[0].toLocaleUpperCase() + monthName.substr(1);\r\n\r\n return new McCalendarCell(\r\n month, newMonthName, ariaLabel, this.shouldEnableMonth(month));\r\n }\r\n\r\n /** Whether the given month is enabled. */\r\n private shouldEnableMonth(month: number) {\r\n\r\n const activeYear = this.dateAdapter.getYear(this.activeDate);\r\n\r\n if (month === undefined || month === null ||\r\n this.isYearAndMonthAfterMaxDate(activeYear, month) ||\r\n this.isYearAndMonthBeforeMinDate(activeYear, month)) {\r\n return false;\r\n }\r\n\r\n if (!this.dateFilter) {\r\n return true;\r\n }\r\n\r\n const firstOfMonth = this.dateAdapter.createDate(activeYear, month);\r\n\r\n // If any date in the month is enabled count the month as enabled.\r\n for (let date = firstOfMonth; this.dateAdapter.getMonth(date) === month;\r\n date = this.dateAdapter.addCalendarDays(date, 1)) {\r\n if (this.dateFilter(date)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Tests whether the combination month/year is after this.maxDate, considering\r\n * just the month and year of this.maxDate\r\n */\r\n private isYearAndMonthAfterMaxDate(year: number, month: number) {\r\n if (this.maxDate) {\r\n const maxYear = this.dateAdapter.getYear(this.maxDate);\r\n const maxMonth = this.dateAdapter.getMonth(this.maxDate);\r\n\r\n return year > maxYear || (year === maxYear && month > maxMonth);\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Tests whether the combination month/year is before this.minDate, considering\r\n * just the month and year of this.minDate\r\n */\r\n private isYearAndMonthBeforeMinDate(year: number, month: number) {\r\n if (this.minDate) {\r\n const minYear = this.dateAdapter.getYear(this.minDate);\r\n const minMonth = this.dateAdapter.getMonth(this.minDate);\r\n\r\n return year < minYear || (year === minYear && month < minMonth);\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * @param obj The object to check.\r\n * @returns The given object if it is both a date instance and valid, otherwise null.\r\n */\r\n private getValidDateOrNull(obj: any): D | null {\r\n return (this.dateAdapter.isDateInstance(obj) && this.dateAdapter.isValid(obj)) ? obj : null;\r\n }\r\n\r\n /** Determines whether the user has the RTL layout direction. */\r\n private isRtl() {\r\n return this.dir && this.dir.value === 'rtl';\r\n }\r\n}\r\n","<table class=\"mc-calendar__table\">\r\n <thead class=\"mc-calendar__table-header\">\r\n <tr>\r\n <th class=\"mc-calendar__table-header-divider\" colspan=\"4\"></th>\r\n </tr>\r\n </thead>\r\n <tbody mc-calendar-body\r\n [label]=\"yearLabel\"\r\n [rows]=\"months\"\r\n [todayValue]=\"todayMonth!\"\r\n [selectedValue]=\"selectedMonth!\"\r\n [labelMinRequiredCells]=\"2\"\r\n [numCols]=\"4\"\r\n [cellAspectRatio]=\"4 / 7\"\r\n [activeCell]=\"dateAdapter.getMonth(activeDate)\"\r\n (selectedValueChange)=\"onMonthSelected($event)\"\r\n (keydown)=\"handleCalendarBodyKeydown($event)\">\r\n </tbody>\r\n</table>\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n\r\n/** Datepicker data that requires internationalization. */\r\n@Injectable({ providedIn: 'root' })\r\nexport class McDatepickerIntl {\r\n /**\r\n * Stream that emits whenever the labels here are changed. Use this to notify\r\n * components if the labels have changed after initialization.\r\n */\r\n readonly changes: Subject<void> = new Subject<void>();\r\n\r\n /** A label for the calendar popup (used by screen readers). */\r\n calendarLabel: string = 'Calendar';\r\n\r\n /** A label for the button used to open the calendar popup (used by screen readers). */\r\n openCalendarLabel: string = 'Open calendar';\r\n\r\n /** A label for the previous month button (used by screen readers). */\r\n prevMonthLabel: string = 'Previous month';\r\n\r\n /** A label for the next month button (used by screen readers). */\r\n nextMonthLabel: string = 'Next month';\r\n\r\n /** A label for the previous year button (used by screen readers). */\r\n prevYearLabel: string = 'Previous year';\r\n\r\n /** A label for the next year button (used by screen readers). */\r\n nextYearLabel: string = 'Next year';\r\n\r\n /** A label for the previous multi-year button (used by screen readers). */\r\n prevMultiYearLabel: string = 'Previous 20 years';\r\n\r\n /** A label for the next multi-year button (used by screen readers). */\r\n nextMultiYearLabel: string = 'Next 20 years';\r\n\r\n /** A label for the 'switch to month view' button (used by screen readers). */\r\n switchToMonthViewLabel: string = 'Choose date';\r\n\r\n /** A label for the 'switch to year view' button (used by screen readers). */\r\n switchToMultiYearViewLabel: string = 'Choose month and year';\r\n}\r\n","import { ComponentPortal, ComponentType, Portal } from '@angular/cdk/portal';\r\nimport {\r\n AfterContentInit,\r\n AfterViewChecked,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n forwardRef,\r\n Inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n Optional,\r\n Output,\r\n SimpleChanges,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { DateAdapter, MC_DATE_FORMATS, McDateFormats } from '@ptsecurity/cdk/datetime';\r\nimport { Subject, Subscription } from 'rxjs';\r\n\r\nimport { McCalendarCellCssClasses } from './calendar-body.component';\r\nimport { createMissingDateImplError } from './datepicker-errors';\r\nimport { McDatepickerIntl } from './datepicker-intl';\r\nimport { McMonthView } from './month-view.component';\r\nimport { McMultiYearView, yearsPerPage } from './multi-year-view.component';\r\nimport { McYearView } from './year-view.component';\r\n\r\n\r\n/**\r\n * Possible views for the calendar.\r\n * @docs-private\r\n */\r\nexport enum McCalendarView {\r\n Month = 'month',\r\n Year = 'year',\r\n MultiYear = 'multi-year'\r\n}\r\n\r\n/** Default header for McCalendar */\r\n@Component({\r\n selector: 'mc-calendar-header',\r\n templateUrl: 'calendar-header.html',\r\n exportAs: 'mcCalendarHeader',\r\n host: {\r\n class: 'mc-calendar-header'\r\n },\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class McCalendarHeader<D> {\r\n constructor(\r\n private readonly intl: McDatepickerIntl,\r\n @Inject(forwardRef(() => McCalendar)) public calendar: McCalendar<D>,\r\n @Optional() private readonly dateAdapter: DateAdapter<D>,\r\n @Optional() @Inject(MC_DATE_FORMATS) private readonly dateFormats: McDateFormats,\r\n changeDetectorRef: ChangeDetectorRef\r\n ) {\r\n this.calendar.stateChanges.subscribe(() => changeDetectorRef.markForCheck());\r\n }\r\n\r\n /** The label for the current calendar view. */\r\n get periodButtonText(): string {\r\n if (this.calendar.currentView === McCalendarView.Month) {\r\n const label = this.dateAdapter.format(this.calendar.activeDate, this.dateFormats.monthYearLabel);\r\n\r\n return (label[0].toLocaleUpperCase() + label.substr(1)).replace('.', '');\r\n }\r\n\r\n if (this.calendar.currentView === McCalendarView.Year) {\r\n return this.dateAdapter.getYearName(this.calendar.activeDate);\r\n }\r\n\r\n const activeYear = this.dateAdapter.getYear(this.calendar.activeDate);\r\n const firstYearInView = this.dateAdapter.getYearName(\r\n // tslint:disable-next-line:no-magic-numbers\r\n this.dateAdapter.createDate(activeYear - activeYear % 24)\r\n );\r\n const lastYearInView = this.dateAdapter.getYearName(\r\n // tslint:disable-next-line:no-magic-numbers\r\n this.dateAdapter.createDate(activeYear + yearsPerPage - 1 - activeYear % 24)\r\n );\r\n\r\n return `${firstYearInView} \\u2013 ${lastYearInView}`;\r\n }\r\n\r\n get periodButtonLabel(): string {\r\n return this.calendar.currentView === McCalendarView.Month ?\r\n this.intl.switchToMultiYearViewLabel : this.intl.switchToMonthViewLabel;\r\n }\r\n\r\n /** The label for the previous button. */\r\n get prevButtonLabel(): string {\r\n return {\r\n [McCalendarView.Month]: this.intl.prevMonthLabel,\r\n [McCalendarView.Year]: this.intl.prevYearLabel,\r\n [McCalendarView.MultiYear]: this.intl.prevMultiYearLabel\r\n }[this.calendar.currentView];\r\n }\r\n\r\n /** The label for the next button. */\r\n get nextButtonLabel(): string {\r\n return {\r\n [McCalendarView.Month]: this.intl.nextMonthLabel,\r\n [McCalendarView.Year]: this.intl.nextYearLabel,\r\n [McCalendarView.MultiYear]: this.intl.nextMultiYearLabel\r\n }[this.calendar.currentView];\r\n }\r\n\r\n /** Handles user clicks on the period label. */\r\n currentPeriodClicked(): void {\r\n if (([McCalendarView.Month, McCalendarView.MultiYear] as McCalendarView[]).includes(this.calendar.currentView)) {\r\n this.calendar.currentView = McCalendarView.Year;\r\n } else if (this.calendar.currentView === McCalendarView.Year) {\r\n this.calendar.currentView = McCalendarView.Month;\r\n }\r\n }\r\n\r\n /** Handles user clicks on the previous button. */\r\n previousClicked(): void {\r\n if (this.calendar.currentView === McCalendarView.Month) {\r\n this.calendar.activeDate = this.dateAdapter.addCalendarMonths(this.calendar.activeDate, -1);\r\n } else {\r\n this.calendar.activeDate = this.dateAdapter.addCalendarYears(\r\n this.calendar.activeDate,\r\n this.calendar.currentView === McCalendarView.Year ? -1 : -yearsPerPage\r\n );\r\n }\r\n }\r\n\r\n /** Handles user clicks on the next button. */\r\n nextClicked(): void {\r\n if (this.calendar.currentView === McCalendarView.Month) {\r\n this.calendar.activeDate = this.dateAdapter.addCalendarMonths(this.calendar.activeDate, 1);\r\n } else {\r\n this.calendar.activeDate = this.dateAdapter.addCalendarYears(\r\n this.calendar.activeDate,\r\n this.calendar.currentView === McCalendarView.Year ? 1 : yearsPerPage\r\n );\r\n }\r\n }\r\n\r\n /** Whether the previous period button is enabled. */\r\n previousEnabled(): boolean {\r\n if (!this.calendar.minDate) { return true; }\r\n\r\n return !this.calendar.minDate || !this.isSameView(this.calendar.activeDate, this.calendar.minDate);\r\n }\r\n\r\n /** Whether the next period button is enabled. */\r\n nextEnabled(): boolean {\r\n return !this.calendar.maxDate || !this.isSameView(this.calendar.activeDate, this.calendar.maxDate);\r\n }\r\n\r\n /** Whether the two dates represent the same view in the current view mode (month or year). */\r\n private isSameView(firstDate: D, secondDate: D): boolean {\r\n const firstYear = this.dateAdapter.getYear(firstDate);\r\n const secondYear = this.dateAdapter.getYear(secondDate);\r\n\r\n const firstMonth = this.dateAdapter.getMonth(firstDate);\r\n const secondMonth = this.dateAdapter.getMonth(secondDate);\r\n\r\n if (this.calendar.currentView === McCalendarView.Month) {\r\n return firstYear === secondYear && firstMonth === secondMonth;\r\n }\r\n\r\n if (this.calendar.currentView === McCalendarView.Year) { return firstYear === secondYear; }\r\n\r\n // Otherwise we are in 'multi-year' view.\r\n return Math.floor(firstYear / yearsPerPage) === Math.floor(secondYear / yearsPerPage);\r\n }\r\n}\r\n\r\n/**\r\n * A calendar that is used as part of the datepicker.\r\n * @docs-private\r\n */\r\n@Component({\r\n selector: 'mc-calendar',\r\n exportAs: 'mcCalendar',\r\n templateUrl: 'calendar.html',\r\n styleUrls: ['calendar.scss'],\r\n host: {\r\n class: 'mc-calendar'\r\n },\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class McCalendar<D> implements AfterContentInit, AfterViewChecked, OnDestroy, OnChanges {\r\n\r\n /** A date representing the period (month or year) to start the calendar in. */\r\n @Input()\r\n get startAt(): D | null {\r\n return this._startAt;\r\n }\r\n\r\n set startAt(value: D | null) {\r\n this._startAt = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\r\n }\r\n\r\n /** The currently selected date. */\r\n @Input()\r\n get selected(): D | null {\r\n return this._selected;\r\n }\r\n\r\n set selected(value: D | null) {\r\n this._selected = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\r\n }\r\n\r\n /** The minimum selectable date. */\r\n @Input()\r\n get minDate(): D | null {\r\n return this._minDate;\r\n }\r\n\r\n set minDate(value: D | null) {\r\n this._minDate = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\r\n }\r\n\r\n /** The maximum selectable date. */\r\n @Input()\r\n get maxDate(): D | null {\r\n return this._maxDate;\r\n }\r\n\r\n set maxDate(value: D | null) {\r\n this._maxDate = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\r\n }\r\n\r\n /**\r\n * The current active date. This determines which time period is shown and which date is\r\n * highlighted when using keyboard navigation.\r\n */\r\n get activeDate(): D {\r\n return this.clampedActiveDate;\r\n }\r\n\r\n set activeDate(value: D) {\r\n this.clampedActiveDate = this.dateAdapter.clampDate(value, this.minDate, this.maxDate);\r\n this.stateChanges.next();\r\n }\r\n\r\n /** Whether the calendar is in month view. */\r\n get currentView(): McCalendarView {\r\n return this._currentView;\r\n }\r\n\r\n set currentView(value: McCalendarView) {\r\n this._currentView = value;\r\n this.moveFocusOnNextTick = true;\r\n }\r\n\r\n /** An input indicating the type of the header component, if set. */\r\n @Input() headerComponent: ComponentType<any>;\r\n\r\n /** A portal containing the header component type for this calendar. */\r\n calendarHeaderPortal: Portal<any>;\r\n\r\n /** Whether the calendar should be started in month or year view. */\r\n @Input() startView: McCalendarView = McCalendarView.Month;\r\n\r\n /** Function used to filter which dates are selectable. */\r\n @Input() dateFilter: (date: D) => boolean;\r\n\r\n /** Function that can be used to add custom CSS classes to dates. */\r\n @Input() dateClass: (date: D) => McCalendarCellCssClasses;\r\n\r\n /** Emits when the currently selected date changes. */\r\n @Output() readonly selectedChange: EventEmitter<D> = new EventEmitter<D>();\r\n\r\n /**\r\n * Emits the year chosen in multiyear view.\r\n * This doesn't imply a change on the selected date.\r\n */\r\n @Output() readonly yearSelected: EventEmitter<D> = new EventEmitter<D>();\r\n\r\n /**\r\n * Emits the month chosen in year view.\r\n * This doesn't imply a change on the selected date.\r\n */\r\n @Output() readonly monthSelected: EventEmitter<D> = new EventEmitter<D>();\r\n\r\n /** Emits when any date is selected. */\r\n @Output() readonly userSelection: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n /** Reference to the current month view component. */\r\n @ViewChild(McMonthView, {static: false}) monthView: McMonthView<D>;\r\n\r\n /** Reference to the current year view component. */\r\n @ViewChild(McYearView, {static: false}) yearView: McYearView<D>;\r\n\r\n /** Reference to the current multi-year view component. */\r\n @ViewChild(McMultiYearView, {static: false}) multiYearView: McMultiYearView<D>;\r\n\r\n /**\r\n * Emits whenever there is a state change that the header may need to respond to.\r\n */\r\n stateChanges = new Subject<void>();\r\n\r\n private readonly intlChanges: Subscription;\r\n\r\n /**\r\n * Used for scheduling that focus should be moved to the active cell on the next tick.\r\n * We need to schedule it, rather than do it immediately, because we have to wait\r\n * for Angular to re-evaluate the view children.\r\n */\r\n private moveFocusOnNextTick = false;\r\n private _startAt: D | null;\r\n private _selected: D | null;\r\n private _minDate: D | null;\r\n private _maxDate: D | null;\r\n private clampedActiveDate: D;\r\n private _currentView: McCalendarView;\r\n\r\n constructor(\r\n intl: McDatepickerIntl,\r\n @Optional() private readonly dateAdapter: DateAdapter<D>,\r\n @Optional() @Inject(MC_DATE_FORMATS) private readonly dateFormats: McDateFormats,\r\n private changeDetectorRef: ChangeDetectorRef\r\n ) {\r\n if (!this.dateAdapter) {\r\n throw createMissingDateImplError('DateAdapter');\r\n }\r\n\r\n if (!this.dateFormats) {\r\n throw createMissingDateImplError('MC_DATE_FORMATS');\r\n }\r\n\r\n this.intlChanges = intl.changes.subscribe(() => {\r\n changeDetectorRef.markForCheck();\r\n this.stateChanges.next();\r\n });\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.calendarHeaderPortal = new ComponentPortal(this.headerComponent || McCalendarHeader);\r\n this.activeDate = this.startAt || this.dateAdapter.today();\r\n\r\n // Assign to the private property since we don't want to move focus on init.\r\n this._currentView = this.startView;\r\n }\r\n\r\n ngAfterViewChecked() {\r\n if (this.moveFocusOnNextTick) {\r\n this.moveFocusOnNextTick = false;\r\n this.focusActiveCell();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.intlChanges.unsubscribe();\r\n this.stateChanges.complete();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n const change = changes.minDate || changes.maxDate || changes.dateFilter;\r\n\r\n if (change && !change.firstChange) {\r\n const view = this.getCurrentViewComponent();\r\n\r\n if (view) {\r\n // We need to `detectChanges` manually here, because the `minDate`, `maxDate` etc. are\r\n // passed down to the view via data bindings which won't be up-to-date when we call `init`.\r\n this.changeDetectorRef.detectChanges();\r\n view.init();\r\n }\r\n }\r\n\r\n this.stateChanges.next();\r\n }\r\n\r\n focusActiveCell() {\r\n this.getCurrentViewComponent().focusActiveCell();\r\n }\r\n\r\n /** Updates today's date after an update of the active date */\r\n updateTodaysDate() {\r\n const view = this.currentView === McCalendarView.Month ? this.monthView :\r\n (this.currentView === McCalendarView.Year ? this.yearView : this.multiYearView);\r\n\r\n view.ngAfterContentInit();\r\n }\r\n\r\n /** Handles date selection in the month view. */\r\n dateSelected(date: D): void {\r\n if (!this.dateAdapter.sameDate(date, this.selected)) {\r\n this.selectedChange.emit(date);\r\n }\r\n }\r\n\r\n /** Handles year selection in the multiyear view. */\r\n yearSelectedInMultiYearView(normalizedYear: D) {\r\n this.yearSelected.emit(normalizedYear);\r\n }\r\n\r\n /** Handles month selection in the year view. */\r\n monthSelectedInYearView(normalizedMonth: D) {\r\n this.monthSelected.emit(normalizedMonth);\r\n }\r\n\r\n userSelected(): void {\r\n this.userSelection.emit();\r\n }\r\n\r\n /** Handles year/month selection in the multi-year/year views. */\r\n goToDateInView(date: D, view: McCalendarView | string): void {\r\n this.activeDate = date;\r\n this.currentView = view as McCalendarView;\r\n }\r\n\r\n /**\r\n * @param obj The object to check.\r\n * @returns The given object if it is both a date instance and valid, otherwise null.\r\n */\r\n private getValidDateOrNull(obj: any): D | null {\r\n return (this.dateAdapter.isDateInstance(obj) && this.dateAdapter.isValid(obj)) ? obj : null;\r\n }\r\n\r\n /** Returns the component instance that corresponds to the current calendar view. */\r\n private getCurrentViewComponent() {\r\n return this.monthView || this.yearView || this.multiYearView;\r\n }\r\n}\r\n","<button mc-button\r\n [tabindex]=\"'-1'\"\r\n class=\"mc-button_transparent mc-calendar__period-button\"\r\n (click)=\"currentPeriodClicked()\">\r\n {{ periodButtonText }}\r\n\r\n <i class=\"mc mc-icon\"\r\n [class.mc-angle-up-M_16]=\"calendar.currentView !== 'month'\"\r\n [class.mc-angle-down-M_16]=\"calendar.currentView === 'month'\">\r\n </i>\r\n</button>\r\n\r\n<div class=\"mc-calendar-spacer\"></div>\r\n\r\n<button mc-button\r\n [tabindex]=\"'-1'\"\r\n class=\"mc-button_transparent mc-calendar__previous-button\"\r\n [disabled]=\"!previousEnabled()\"\r\n (click)=\"previousClicked()\">\r\n\r\n <i mc-icon=\"mc-angle-left-L_16\"></i>\r\n</button>\r\n\r\n<button mc-button\r\n [tabindex]=\"'-1'\"\r\n class=\"mc-button_transparent mc-calendar__next-button\"\r\n [disabled]=\"!nextEnabled()\"\r\n (click)=\"nextClicked()\">\r\n\r\n <i mc-icon=\"mc-angle-right-L_16\"></i>\r\n</button>\r\n","<ng-template [cdkPortalOutlet]=\"calendarHeaderPortal\"></ng-template>\r\n\r\n<div class=\"mc-calendar__content\" [ngSwitch]=\"currentView\">\r\n <mc-month-view\r\n *ngSwitchCase=\"'month'\"\r\n [(activeDate)]=\"activeDate\"\r\n [selected]=\"selected\"\r\n [dateFilter]=\"dateFilter\"\r\n [maxDate]=\"maxDate\"\r\n [minDate]=\"minDate\"\r\n [dateClass]=\"dateClass\"\r\n (selectedChange)=\"dateSelected($event!)\"\r\n (userSelection)=\"userSelected()\">\r\n </mc-month-view>\r\n\r\n <mc-year-view\r\n *ngSwitchCase=\"'year'\"\r\n [(activeDate)]=\"activeDate\"\r\n [selected]=\"selected\"\r\n [dateFilter]=\"dateFilter\"\r\n [maxDate]=\"maxDate\"\r\n [minDate]=\"minDate\"\r\n (monthSelected)=\"monthSelectedInYearView($event)\"\r\n (selectedChange)=\"goToDateInView($event, 'multi-year')\">\r\n </mc-year-view>\r\n\r\n <mc-multi-year-view\r\n *ngSwitchCase=\"'multi-year'\"\r\n [(activeDate)]=\"activeDate\"\r\n [selected]=\"selected\"\r\n [dateFilter]=\"dateFilter\"\r\n [maxDate]=\"maxDate\"\r\n [minDate]=\"minDate\"\r\n (yearSelected)=\"yearSelectedInMultiYearView($event)\"\r\n (selectedChange)=\"goToDateInView($event, 'month')\">\r\n </mc-multi-year-view>\r\n</div>\r\n","// tslint:disable:no-empty\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport {\r\n ChangeDetectorRef,\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n Inject,\r\n Input,\r\n OnDestroy,\r\n Optional,\r\n Output,\r\n Renderer2\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n FormGroupDirective,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n NgForm,\r\n ValidationErrors,\r\n Validator,\r\n ValidatorFn,\r\n Validators\r\n} from '@angular/forms';\r\nimport { DateAdapter, MC_DATE_FORMATS, McDateFormats } from '@ptsecurity/cdk/datetime';\r\nimport {\r\n UP_ARROW,\r\n RIGHT_ARROW,\r\n DOWN_ARROW,\r\n LEFT_ARROW,\r\n END,\r\n PAGE_DOWN,\r\n HOME,\r\n PAGE_UP,\r\n SPACE,\r\n TAB,\r\n ESCAPE,\r\n DELETE,\r\n BACKSPACE,\r\n hasModifierKey,\r\n isHorizontalMovement,\r\n isLetterKey,\r\n isVerticalMovement\r\n} from '@ptsecurity/cdk/keycodes';\r\nimport {\r\n MC_VALIDATION,\r\n McValidationOptions,\r\n setMosaicValidationForCustomFormControl,\r\n validationTooltipHideDelay,\r\n validationTooltipShowDelay\r\n} from '@ptsecurity/mosaic/core';\r\nimport { McFormFieldControl } from '@ptsecurity/mosaic/form-field';\r\nimport { McWarningTooltipTrigger } from '@ptsecurity/mosaic/tooltip';\r\nimport { Subject, Subscription } from 'rxjs';\r\n\r\nimport { createMissingDateImplError } from './datepicker-errors';\r\nimport { McDatepicker } from './datepicker.component';\r\n\r\n\r\n// tslint:disable:naming-convention\r\nenum DateParts {\r\n year = 'y',\r\n month = 'm',\r\n day = 'd'\r\n}\r\n\r\nexport const MAX_YEAR = 9999;\r\nconst YEAR_LENGTH = 4;\r\n\r\nclass DateDigit {\r\n maxDays = 31;\r\n maxMonth = 12;\r\n\r\n parse: (value: string) => number;\r\n\r\n constructor(public value: DateParts, public start: number, public length: number) {\r\n if (value === DateParts.day) {\r\n this.parse = this.parseDay;\r\n } else if (value === DateParts.month) {\r\n this.parse = this.parseMonth;\r\n } else if (value === DateParts.year) {\r\n this.parse = this.parseYear;\r\n }\r\n }\r\n\r\n get end(): number {\r\n return this.start + this.length;\r\n }\r\n\r\n get isDay(): boolean {\r\n return this.value === DateParts.day;\r\n }\r\n\r\n get isMonth(): boolean {\r\n return this.value === DateParts.month;\r\n }\r\n\r\n get isYear(): boolean {\r\n return this.value === DateParts.year;\r\n }\r\n\r\n get fullName(): string {\r\n if (this.isDay) { return 'date'; }\r\n\r\n if (this.isMonth) { return 'month'; }\r\n\r\n if (this.isYear) { return 'year'; }\r\n\r\n return '';\r\n }\r\n\r\n private parseDay(value: string): number {\r\n const parsedValue: number = parseInt(value);\r\n\r\n if (parsedValue === 0) { return 1; }\r\n\r\n if (parsedValue > this.maxDays) { return this.maxDays; }\r\n\r\n return parsedValue;\r\n }\r\n\r\n private parseMonth(value: string): number {\r\n const parsedValue: number = parseInt(value);\r\n\r\n if (parsedValue === 0) { return 1; }\r\n\r\n if (parsedValue > this.maxMonth) { return this.maxMonth; }\r\n\r\n return parsedValue;\r\n }\r\n\r\n private parseYear(value: string): number {\r\n const parsedValue: number = parseInt(value);\r\n\r\n if (parsedValue === 0) { return 1; }\r\n\r\n if (parsedValue > MAX_YEAR) { return parseInt(value.substring(0, YEAR_LENGTH)); }\r\n\r\n return parsedValue;\r\n }\r\n}\r\n\r\n/** @docs-private */\r\nexport const MC_DATEPICKER_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => McDatepickerInput),\r\n multi: true\r\n};\r\n\r\n/** @docs-private */\r\nexport const MC_DATEPICKER_VALIDATORS: any = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => McDatepickerInput),\r\n multi: true\r\n};\r\n\r\n\r\n/**\r\n * An event used for datepicker input and change events. We don't always have access to a native\r\n * input or change event because the event may have been triggered by the user clicking on the\r\n * calendar popup. For consistency, we always use McDatepickerInputEvent instead.\r\n */\r\nexport class McDatepickerInputEvent<D> {\r\n /** The new value for the target datepicker input. */\r\n value: D | null;\r\n\r\n constructor(\r\n /** Reference to the datepicker input component that emitted the event. */\r\n public target: McDatepickerInput<D>,\r\n /** Reference to the native input element associated with the datepicker input. */\r\n public targetElement: HTMLElement\r\n ) {\r\n this.value = this.target.value;\r\n }\r\n}\r\n\r\nlet uniqueComponentIdSuffix = 0;\r\n\r\n\r\n/** Directive used to connect an input to a McDatepicker. */\r\n@Directive({\r\n selector: 'input[mcDatepicker]',\r\n exportAs: 'mcDatepickerInput',\r\n providers: [\r\n MC_DATEPICKER_VALUE_ACCESSOR,\r\n MC_DATEPICKER_VALIDATORS,\r\n { provide: McFormFieldControl, useExisting: McDatepickerInput }\r\n ],\r\n host: {\r\n class: 'mc-input mc-datepicker',\r\n '[attr.placeholder]': 'placeholder',\r\n '[attr.required]': 'required',\r\n '[attr.disabled]': 'disabled || null',\r\n '[attr.min]': 'min ? toISO8601(min) : null',\r\n '[attr.max]': 'max ? toISO8601(max) : null',\r\n '[attr.autocomplete]': '\"off\"',\r\n\r\n '(paste)': 'onPaste($event)',\r\n '(change)': 'onChange()',\r\n\r\n '(focus)': 'focusChanged(true)',\r\n '(blur)': 'onBlur()',\r\n\r\n '(keydown)': 'onKeyDown($event)'\r\n }\r\n})\r\nexport class McDatepickerInput<D> implements McFormFieldControl<D>, ControlValueAccessor, Validator, OnDestroy {\r\n readonly stateChanges: Subject<void> = new Subject<void>();\r\n\r\n readonly errorState: boolean;\r\n\r\n controlType: string = 'datepicker';\r\n\r\n focused: boolean = false;\r\n\r\n datepicker: McDatepicker<D>;\r\n\r\n dateFilter: (date: D | null) => boolean;\r\n\r\n /** Emits when the value changes (either due to user input or programmatic change). */\r\n valueChange = new EventEmitter<D | null>();\r\n\r\n /** Emits when the disabled state has changed */\r\n disabledChange = new EventEmitter<boolean>();\r\n\r\n @Input() placeholder: string;\r\n\r\n @Input()\r\n get required(): boolean {\r\n return this._required;\r\n }\r\n\r\n set required(value: boolean) {\r\n this._required = coerceBooleanProperty(value);\r\n }\r\n\r\n private _required: boolean;\r\n\r\n /** The datepicker that this input is associated with. */\r\n @Input()\r\n set mcDatepicker(value: McDatepicker<D>) {\r\n if (!value) { return; }\r\n\r\n this.datepicker = value;\r\n this.datepicker.registerInput(this);\r\n this.datepickerSubscription.unsubscribe();\r\n\r\n this.datepickerSubscription = this.datepicker.selectedChanged\r\n .subscribe((selected: D) => {\r\n const newValue = this.saveTimePart(selected);\r\n\r\n this.value = newValue;\r\n this.cvaOnChange(newValue);\r\n this.onTouched();\r\n this.dateChange.emit(new McDatepickerInputEvent(this, this.elementRef.nativeElement));\r\n });\r\n }\r\n\r\n /** Function that can be used to filter out dates within the datepicker. */\r\n @Input()\r\n set mcDatepickerFilter(value: (date: D | null) => boolean) {\r\n this.dateFilter = value;\r\n this.validatorOnChange();\r\n }\r\n\r\n /** The value of the input. */\r\n @Input()\r\n get value(): D | null {\r\n return this._value;\r\n }\r\n\r\n set value(value: D | null) {\r\n let newValue = this.dateAdapter.deserialize(value);\r\n\r\n this.lastValueValid = !newValue || this.dateAdapter.isValid(newValue);\r\n\r\n newValue = this.getValidDateOrNull(newValue);\r\n\r\n const oldDate = this.value;\r\n this._value = newValue;\r\n this.formatValue(newValue);\r\n\r\n if (!this.dateAdapter.sameDate(oldDate, newValue)) {\r\n this.valueChange.emit(newValue);\r\n }\r\n }\r\n\r\n private _value: D | null;\r\n\r\n /** The minimum valid date. */\r\n @Input()\r\n get min(): D | null {\r\n return this._min;\r\n }\r\n\r\n set min(value: D | null) {\r\n this._min = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\r\n this.validatorOnChange();\r\n }\r\n\r\n private _min: D | null;\r\n\r\n /** The maximum valid date. */\r\n @Input()\r\n get max(): D | null {\r\n return this._max;\r\n }\r\n\r\n set max(value: D | null) {\r\n this._max = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\r\n this.validatorOnChange();\r\n }\r\n\r\n private _max: D | null;\r\n\r\n /** Whether the datepicker-input is disabled. */\r\n @Input()\r\n get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n const newValue = coerceBooleanProperty(value);\r\n const element = this.elementRef.nativeElement;\r\n\r\n if (this._disabled !== newValue) {\r\n this._disabled = newValue;\r\n this.disabledChange.emit(newValue);\r\n }\r\n\r\n // We need to null check the `blur` method, because it's undefined during SSR.\r\n if (newValue && element.blur) {\r\n // Normally, native input elements automatically blur if they turn disabled. This behavior\r\n // is problematic, because it would mean that it triggers another change detection cycle,\r\n // which then causes a changed after checked error if the input element was focused before.\r\n element.blur();\r\n }\r\n }\r\n\r\n private _disabled: boolean = false;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this.uid;\r\n }\r\n\r\n private _id: string;\r\n\r\n @Input()\r\n set mcValidationTooltip(tooltip: McWarningTooltipTrigger) {\r\n if (!tooltip) { return; }\r\n\r\n tooltip.enterDelay = validationTooltipShowDelay;\r\n tooltip.trigger = 'manual';\r\n\r\n tooltip.initListeners();\r\n\r\n this.incorrectInput.subscribe(() => {\r\n if (tooltip.isOpen) { return; }\r\n\r\n tooltip.show();\r\n\r\n setTimeout(() => tooltip.hide(), validationTooltipHideDelay);\r\n });\r\n }\r\n\r\n @Output() incorrectInput = new EventEmitter<void>();\r\n\r\n /** Emits when a `change` event is fired on this `<input>`. */\r\n @Output() readonly dateChange = new EventEmitter<McDatepickerInputEvent<D>>();\r\n\r\n /** Emits when an `input` event is fired on this `<input>`. */\r\n @Output() readonly dateInput = new EventEmitter<McDatepickerInputEvent<D>>();\r\n\r\n get empty(): boolean {\r\n return !this.viewValue && !this.isBadInput();\r\n }\r\n\r\n get viewValue(): string {\r\n return this.elementRef.nativeElement.value;\r\n }\r\n\r\n get ngControl(): any {\r\n return this.control;\r\n }\r\n\r\n get isReadOnly(): boolean {\r\n return this.elementRef.nativeElement.readOnly;\r\n }\r\n\r\n private get selectionStart(): number | null {\r\n return this.elementRef.nativeElement.selectionStart;\r\n }\r\n\r\n private set selectionStart(value: number | null) {\r\n this.elementRef.nativeElement.selectionStart = value;\r\n }\r\n\r\n private get selectionEnd(): number | null {\r\n return this.elementRef.nativeElement.selectionEnd;\r\n }\r\n\r\n private set selectionEnd(value: number | null) {\r\n this.elementRef.nativeElement.selectionEnd = value;\r\n }\r\n\r\n private control: AbstractControl;\r\n private readonly uid = `mc-datepicker-${uniqueComponentIdSuffix++}`;\r\n\r\n private datepickerSubscription = Subscription.EMPTY;\r\n\r\n private localeSubscription = Subscription.EMPTY;\r\n\r\n /** Whether the last value set on the input was valid. */\r\n private lastValueValid = false;\r\n\r\n /** The combined form control validator for this input. */\r\n private readonly validator: ValidatorFn | null;\r\n\r\n private separator: string;\r\n\r\n private firstDigit: DateDigit;\r\n private secondDigit: DateDigit;\r\n private thirdDigit: DateDigit;\r\n\r\n private separatorPositions: number[];\r\n\r\n constructor(\r\n public elementRef: ElementRef<HTMLInputElement>,\r\n private changeDetectorRef: ChangeDetectorRef,\r\n private readonly renderer: Renderer2,\r\n @Optional() @Inject(MC_VALIDATION) private mcValidation: McValidationOptions,\r\n @Optional() public parentForm: NgForm,\r\n @Optional() public parentFormGroup: FormGroupDirective,\r\n @Optional() readonly dateAdapter: DateAdapter<D>,\r\n @Optional() @Inject(MC_DATE_FORMATS) private readonly dateFormats: McDateFormats\r\n ) {\r\n this.validator = Validators.compose([\r\n this.parseValidator,\r\n this.minValidator,\r\n this.maxValidator,\r\n this.filterValidator\r\n ]);\r\n\r\n if (!this.dateAdapter) {\r\n throw createMissingDateImplError('DateAdapter');\r\n }\r\n\r\n if (!this.dateFormats) {\r\n throw createMissingDateImplError('MC_DATE_FORMATS');\r\n }\r\n\r\n this.setFormat(dateFormats.dateInput);\r\n\r\n this.localeSubscription = dateAdapter.localeChanges\r\n .subscribe(this.updateLocaleParams);\r\n }\r\n\r\n onContainerClick() {\r\n this.focus();\r\n }\r\n\r\n focus(): void {\r\n this.elementRef.nativeElement.focus();\r\n }\r\n\r\n focusChanged(isFocused: boolean): void {\r\n if (isFocused !== this.focused) {\r\n this.focused = isFocused;\r\n this.onTouched();\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n onTouched = () => {};\r\n\r\n ngOnDestroy() {\r\n this.datepickerSubscription.unsubscribe();\r\n this.localeSubscription.unsubscribe();\r\n this.valueChange.complete();\r\n this.disabledChange.complete();\r\n }\r\n\r\n /** @docs-private */\r\n registerOnValidatorChange(fn: () => void): void {\r\n this.validatorOnChange = fn;\r\n }\r\n\r\n /** @docs-private */\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n this.setControl(control);\r\n\r\n return this.validator ? this.validator(control) : null;\r\n }\r\n\r\n // Implemented as part of ControlValueAccessor.\r\n writeValue(value: D): void {\r\n this.value = value;\r\n }\r\n\r\n // Implemented as part of ControlValueAccessor.\r\n registerOnChange(fn: (value: any) => void): void {\r\n this.cvaOnChange = fn;\r\n }\r\n\r\n // Implemented as part of ControlValueAccessor.\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n // Implemented as part of ControlValueAccessor.\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n onKeyDown(event: KeyboardEvent): void {\r\n if (this.isReadOnly) { return; }\r\n\r\n // tslint:disable-next-line: deprecation\r\n const keyCode = event.keyCode;\r\n\r\n if (this.isLetterKey(event)) {\r\n event.preventDefault();\r\n\r\n this.incorrectInput.emit();\r\n } else if (this.isKeyForOpen(event)) {\r\n event.preventDefault();\r\n\r\n this.datepicker?.open();\r\n } else if (this.isKeyForClose(event)) {\r\n event.preventDefault();\r\n\r\n this.datepicker.close();\r\n } else if (keyCode === TAB) {\r\n this.datepicker.close(false);\r\n } else if (this.isKeyForByPass(event)) {\r\n return;\r\n } else if (keyCode === SPACE) {\r\n this.spaceKeyHandler(event);\r\n } else if ([UP_ARROW, DOWN_ARROW].includes(keyCode)) {\r\n event.preventDefault();\r\n\r\n this.verticalArrowKeyHandler(keyCode);\r\n } else if ([LEFT_ARROW, RIGHT_ARROW, HOME, PAGE_UP, END, PAGE_DOWN].includes(keyCode)) {\r\n event.preventDefault();\r\n\r\n this.changeCaretPosition(keyCode);\r\n } else if (/^\\D$/.test(event.key)) {\r\n event.preventDefault();\r\n\r\n const newValue = this.getNewValue(event.key, this.selectionStart as number);\r\n const formattedValue = this.replaceSymbols(newValue);\r\n\r\n if (newValue !== formattedValue) {\r\n this.setViewValue(formattedValue, true);\r\n\r\n setTimeout(this.onInput);\r\n } else {\r\n this.incorrectInput.emit();\r\n }\r\n } else {\r\n setTimeout(this.onInput);\r\n }\r\n }\r\n\r\n onInput = () => {\r\n this.correctCursorPosition();\r\n const formattedValue = this.replaceSymbols(this.viewValue);\r\n\r\n const newTimeObj = this.getDateFromString(formattedValue);\r\n this.lastValueValid = !!newTimeObj;\r\n\r\n if (!newTimeObj) {\r\n if (!this.viewValue) {\r\n this._value = null;\r\n this.cvaOnChange(null);\r\n } else {\r\n this.control.updateValueAndValidity();\r\n }\r\n\r\n return;\r\n }\r\n\r\n this.setViewValue(this.getTimeStringFromDate(newTimeObj, this.dateFormats.dateInput), true);\r\n\r\n this.selectNextDigitByCursor((this.selectionStart as number));\r\n\r\n this.updateValue(newTimeObj);\r\n }\r\n\r\n parseOnBlur = () => {\r\n if (!this.viewValue) { return null; }\r\n\r\n const date = this.getDefaultValue();\r\n\r\n const viewDigits: string[] = this.viewValue\r\n .split(this.separator)\r\n .map((value: string) => value)\r\n .filter((value) => value);\r\n\r\n const [firsViewDigit, secondViewDigit, thirdViewDigit] = viewDigits;\r\n\r\n // tslint:disable-next-line:no-magic-numbers\r\n if (viewDigits.length !== 3) {\r\n this.lastValueValid = false;\r\n this._value = null;\r\n\r\n return setTimeout(() => this.control.updateValueAndValidity());\r\n }\r\n\r\n date[this.firstDigit.fullName] = this.firstDigit.parse(firsViewDigit);\r\n date[this.secondDigit.fullName] = this.secondDigit.parse(secondViewDigit);\r\n date[this.thirdDigit.fullName] = this.thirdDigit.parse(thirdViewDigit);\r\n\r\n const [digitWithYear, viewDigitWithYear] = [this.firstDigit, this.secondDigit, this.thirdDigit]\r\n .reduce((acc: any, digit, index) => digit.value === DateParts.year ? [digit, viewDigits[index]] : acc, []);\r\n\r\n // tslint:disable-next-line:no-magic-numbers\r\n if (viewDigitWithYear.length < 3) {\r\n // tslint:disable-next-line:no-magic-numbers\r\n date.year += date.year < 30 ? 2000 : 1900;\r\n } else if (viewDigitWithYear.length < digitWithYear.length) {\r\n this.lastValueValid = false;\r\n this._value = null;\r\n\r\n return setTimeout(() => this.control.updateValueAndValidity());\r\n }\r\n\r\n if (Object.values(date).some(isNaN)) { return; }\r\n\r\n const newTimeObj = this.getValidDateOrNull(this.dateAdapter.createDateTime(\r\n date.year, date.month - 1, date.date, date.hours, date.minutes, date.seconds, date.milliseconds\r\n ));\r\n\r\n if (!newTimeObj) {\r\n this.lastValueValid = false;\r\n this._value = null;\r\n this.cvaOnChange(null);\r\n\r\n return setTimeout(() => this.control.updateValueAndValidity());\r\n }\r\n\r\n this.lastValueValid = !!newTimeObj;\r\n\r\n this.setViewValue(this.getTimeStringFromDate(newTimeObj, this.dateFormats.dateInput), true);\r\n\r\n this.updateValue(newTimeObj);\r\n }\r\n\r\n onChange() {\r\n this.dateChange.emit(new McDatepickerInputEvent(this, this.elementRef.nativeElement));\r\n }\r\n\r\n /** Handles blur events on the input. */\r\n onBlur() {\r\n // Reformat the input only if we have a valid value.\r\n this.parseOnBlur();\r\n\r\n this.focusChanged(false);\r\n\r\n this.onInput();\r\n }\r\n\r\n onPaste($event) {\r\n $event.preventDefault();\r\n\r\n let rawValue = $event.clipboardData.getData('text');\r\n\r\n if (rawValue.match(/^\\d\\D/)) {\r\n rawValue = `0${rawValue}`;\r\n }\r\n rawValue.replace(/[^A-Za-z0-9]+/g, this.separator);\r\n\r\n if (/[a-z]/gi.test(rawValue)) {\r\n this.incorrectInput.emit();\r\n }\r\n\r\n const match: RegExpMatchArray | null = rawValue.match(/^(?<first>\\d+)\\W(?<second>\\d+)\\W(?<third>\\d+)$/);\r\n\r\n if (!match?.groups?.first || !match?.groups?.second || !match?.groups?.third) {\r\n this.setViewValue(rawValue);\r\n\r\n return rawValue;\r\n }\r\n\r\n const value = [match.groups.first, match.groups.second, match.groups.third].join(this.separator);\r\n\r\n const newTimeObj = this.getDateFromString(value);\r\n\r\n if (!newTimeObj) {\r\n this.setViewValue(value);\r\n\r\n return value;\r\n }\r\n\r\n this.setViewValue(this.getTimeStringFromDate(newTimeObj, this.dateFormats.dateInput));\r\n\r\n this.updateValue(newTimeObj);\r\n }\r\n\r\n toISO8601(value: D): string {\r\n return this.dateAdapter.toIso8601(value);\r\n }\r\n\r\n private saveTimePart(selected: D) {\r\n if (!this.value) { return selected; }\r\n\r\n const years = this.dateAdapter.getYear(selected);\r\n const month = this.dateAdapter.getMonth(selected);\r\n const day = this.dateAdapter.getDate(selected);\r\n\r\n const hours = this.dateAdapter.getHours(this.value);\r\n const minutes = this.dateAdapter.getMinutes(this.value);\r\n const seconds = this.dateAdapter.getSeconds(this.value);\r\n const milliseconds = this.dateAdapter.getMilliseconds(this.value);\r\n\r\n return this.dateAdapter.createDateTime(years, month, day, hours, minutes, seconds, milliseconds);\r\n }\r\n\r\n private updateLocaleParams = () => {\r\n this.setFormat(this.dateFormats.dateInput);\r\n\r\n this.value = this.value;\r\n }\r\n\r\n private setFormat(format: string): void {\r\n // @ts-ignore\r\n this.separator = format.match(/[aA-zZ]+(?<separator>\\W|\\D)[aA-zZ]+/).groups.separator;\r\n\r\n this.separatorPositions = format\r\n .split('')\r\n .reduce((acc: any, item, index: number) => this.separator === item ? [...acc, index + 1] : acc, []);\r\n\r\n this.getDigitPositions(format);\r\n }\r\n\r\n private updateValue(newValue: D) {\r\n if (!this.dateAdapter.sameDate(newValue, this.value)) {\r\n this._value = newValue;\r\n this.cvaOnChange(newValue);\r\n this.valueChange.emit(newValue);\r\n this.dateInput.emit(new McDatepickerInputEvent(this, this.elementRef.nativeElement));\r\n }\r\n\r\n this.control?.updateValueAndValidity({ emitEvent: false });\r\n }\r\n\r\n private isKeyForClose(event: KeyboardEvent): boolean {\r\n // tslint:disable-next-line: deprecation\r\n return (event.altKey && event.keyCode === UP_ARROW) || event.keyCode === ESCAPE;\r\n }\r\n\r\n private isKeyForOpen(event: KeyboardEvent): boolean {\r\n // tslint:disable-next-line: deprecation\r\n return event.altKey && event.keyCode === DOWN_ARROW;\r\n }\r\n\r\n private isLetterKey(event: KeyboardEvent): boolean {\r\n return isLetterKey(event) && !event.ctrlKey && !event.metaKey;\r\n }\r\n\r\n private isKeyForByPass(event: KeyboardEvent): boolean {\r\n return (hasModifierKey(event) && (isVerticalMovement(event) || isHorizontalMovement(event))) ||\r\n event.ctrlKey || event.metaKey ||\r\n // tslint:disable-next-line: deprecation\r\n [DELETE, BACKSPACE, TAB].includes(event.keyCode);\r\n }\r\n\r\n private spaceKeyHandler(event: KeyboardEvent) {\r\n event.preventDefault();\r\n\r\n if (this.selectionStart === this.selectionEnd) {\r\n const value = this.getNewValue(event.key, this.selectionStart as number);\r\n this.setViewValue(value);\r\n\r\n setTimeout(this.onInput);\r\n } else if (this.selectionStart !== this.selectionEnd) {\r\n this.selectNextDigit(this.selectionStart as number, true);\r\n }\r\n }\r\n\r\n private getNewValue(key: string, position: number) {\r\n return [this.viewValue.slice(0, position), key, this.viewValue.slice(position)].join('');\r\n }\r\n\r\n private setViewValue(value: string, savePosition: boolean = false) {\r\n if (savePosition) {\r\n const selectionStart = this.selectionStart;\r\n const selectionEnd = this.selectionEnd;\r\n\r\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', value);\r\n\r\n this.selectionStart = selectionStart;\r\n this.selectionEnd = selectionEnd;\r\n } else {\r\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', value);\r\n }\r\n }\r\n\r\n private replaceSymbols(value: string): string {\r\n return value\r\n .split(this.separator)\r\n .map((part: string) => part.replace(/^([0-9]+)\\W$/, '0$1'))\r\n .join(this.separator);\r\n }\r\n\r\n private getDateFromString(timeString: string): D | null {\r\n if (!timeString || timeString.length < this.firstDigit.length) { return null; }\r\n\r\n const date = this.getDefaultValue();\r\n\r\n const viewDigits: string[] = timeString\r\n .split(this.separator)\r\n .map((value: string) => value);\r\n\r\n const [firsViewDigit, secondViewDigit, thirdViewDigit] = viewDigits;\r\n\r\n\r\n if (viewDigits.length === 1) {\r\n if (/\\D/.test(firsViewDigit) || firsViewDigit.length < this.firstDigit.length) { return null; }\r\n\r\n date[this.firstDigit.fullName] = this.firstDigit.parse(firsViewDigit);\r\n date.month = 1;\r\n // tslint:disable-next-line:no-magic-numbers\r\n } else if (viewDigits.length === 2) {\r\n if (firsViewDigit.length < this.firstDigit.length || secondViewDigit.length < this.secondDigit.length) {\r\n return null;\r\n }\r\n\r\n date[this.firstDigit.fullName] = this.firstDigit.parse(firsViewDigit);\r\n date[this.secondDigit.fullName] = this.secondDigit.parse(secondViewDigit);\r\n // tslint:disable-next-line:no-magic-numbers\r\n } else if (viewDigits.length === 3) {\r\n if (\r\n firsViewDigit.length < this.firstDigit.length ||\r\n secondViewDigit.length < this.secondDigit.length ||\r\n thirdViewDigit.length < this.thirdDigit.length\r\n ) { return null; }\r\n\r\n date[this.firstDigit.fullName] = this.firstDigit.parse(firsViewDigit);\r\n date[this.secondDigit.fullName] = this.secondDigit.parse(secondViewDigit);\r\n date[this.thirdDigit.fullName] = this.thirdDigit.parse(thirdViewDigit);\r\n } else {\r\n return null;\r\n }\r\n\r\n return this.getValidDateOrNull(this.dateAdapter.createDateTime(\r\n date.year, date.month - 1, date.date, date.hours, date.minutes, date.seconds, date.milliseconds\r\n ));\r\n }\r\n\r\n private getDefaultValue() {\r\n const defaultValue = this.value || this.dateAdapter.today();\r\n\r\n return {\r\n year: this.dateAdapter.getYear(defaultValue),\r\n month: this.dateAdapter.getMonth(defaultValue),\r\n date: this.dateAdapter.getDate(defaultValue),\r\n hours: this.dateAdapter.getHours(defaultValue),\r\n minutes: this.dateAdapter.getMinutes(defaultValue),\r\n seconds: this.dateAdapter.getSeconds(defaultValue),\r\n milliseconds: this.dateAdapter.getMilliseconds(defaultValue)\r\n };\r\n }\r\n\r\n private getTimeStringFromDate(value: D | null, timeFormat: string): string {\r\n if (!value || !this.dateAdapter.isValid(value)) { return ''; }\r\n\r\n return this.dateAdapter.format(value, timeFormat);\r\n }\r\n\r\n private getDateEditMetrics(cursorPosition: number): [\r\n modifiedTimePart: DateParts,\r\n cursorStartPosition: number,\r\n cursorEndPosition: number\r\n ] {\r\n for (const digit of [this.firstDigit, this.secondDigit, this.thirdDigit]) {\r\n if (cursorPosition >= digit.start && cursorPosition <= digit.end) {\r\n return [digit.value, digit.start, digit.end];\r\n }\r\n }\r\n\r\n return [this.thirdDigit.value, this.thirdDigit.start, this.thirdDigit.end];\r\n }\r\n\r\n private incrementDate(dateVal: D, whatToIncrement: DateParts): D {\r\n let year = this.dateAdapter.getYear(dateVal);\r\n let month = this.dateAdapter.getMonth(dateVal);\r\n let day = this.dateAdapter.getDate(dateVal);\r\n\r\n switch (whatToIncrement) {\r\n case DateParts.day:\r\n day++;\r\n\r\n if (day > this.dateAdapter.getNumDaysInMonth(dateVal)) {\r\n day = 1;\r\n }\r\n\r\n break;\r\n case DateParts.month:\r\n month++;\r\n\r\n // tslint:disable-next-line:no-magic-numbers\r\n if (month > 11) {\r\n month = 0;\r\n }\r\n\r\n const lastDay = this.getLastDayFor(year, month);\r\n\r\n if (day > lastDay) {\r\n day = lastDay;\r\n }\r\n\r\n break;\r\n case DateParts.year:\r\n year++;\r\n\r\n if (year > MAX_YEAR) {\r\n year = 1;\r\n }\r\n\r\n break;\r\n default:\r\n }\r\n\r\n return this.createDate(year, month, day);\r\n }\r\n\r\n private getLastDayFor(year: number, month: number): number {\r\n return this.dateAdapter.getNumDaysInMonth(this.createDate(year, month, 1));\r\n }\r\n\r\n private decrementDate(dateVal: D, whatToDecrement: DateParts): D {\r\n let year = this.dateAdapter.getYear(dateVal);\r\n let month = this.dateAdapter.getMonth(dateVal);\r\n let day = this.dateAdapter.getDate(dateVal);\r\n\r\n switch (whatToDecrement) {\r\n case DateParts.day:\r\n day--;\r\n\r\n if (day < 1) {\r\n day = this.dateAdapter.getNumDaysInMonth(dateVal);\r\n }\r\n\r\n break;\r\n case DateParts.month:\r\n month--;\r\n\r\n if (month < 0) {\r\n // tslint:disable-next-line:no-magic-numbers\r\n month = 11;\r\n }\r\n\r\n const lastDay = this.getLastDayFor(year, month);\r\n\r\n if (day > lastDay) {\r\n day = lastDay;\r\n }\r\n\r\n break;\r\n case DateParts.year:\r\n year--;\r\n\r\n if (year < 1) {\r\n year = MAX_YEAR;\r\n }\r\n\r\n break;\r\n default:\r\n }\r\n\r\n return this.createDate(year, month, day);\r\n }\r\n\r\n private verticalArrowKeyHandler(keyCode: number): void {\r\n if (!this.value) { return; }\r\n\r\n let changedTime;\r\n\r\n const [modifiedTimePart, selectionStart, selectionEnd] = this.getDateEditMetrics(this.selectionStart as number);\r\n\r\n if (keyCode === UP_ARROW) {\r\n changedTime = this.incrementDate(this.value, modifiedTimePart);\r\n }\r\n\r\n if (keyCode === DOWN_ARROW) {\r\n changedTime = this.decrementDate(this.value, modifiedTimePart);\r\n }\r\n\r\n this.value = changedTime;\r\n\r\n this.selectionStart = selectionStart;\r\n this.selectionEnd = selectionEnd;\r\n\r\n this.cvaOnChange(changedTime);\r\n\r\n this.onChange();\r\n this.stateChanges.next();\r\n }\r\n\r\n private changeCaretPosition(keyCode: number): void {\r\n if (!this.value) { return; }\r\n\r\n let cursorPos = this.selectionStart as number;\r\n\r\n if ([HOME, PAGE_UP].includes(keyCode)) {\r\n cursorPos = 0;\r\n } else if ([END, PAGE_DOWN].includes(keyCode)) {\r\n cursorPos = this.viewValue.length;\r\n } else if (keyCode === LEFT_ARROW) {\r\n cursorPos = cursorPos === 0 ? this.viewValue.length : cursorPos - 1;\r\n } else if (keyCode === RIGHT_ARROW) {\r\n const nextSeparatorPos: number = this.viewValue.indexOf(this.separator, cursorPos);\r\n\r\n cursorPos = nextSeparatorPos ? nextSeparatorPos + 1 : 0;\r\n }\r\n\r\n this.selectDigitByCursor(cursorPos);\r\n }\r\n\r\n private selectDigitByCursor(cursorPos: number): void {\r\n setTimeout(() => {\r\n const [, selectionStart, selectionEnd] = this.getDateEditMetrics(cursorPos);\r\n\r\n this.selectionStart = selectionStart;\r\n this.selectionEnd = selectionEnd;\r\n });\r\n }\r\n\r\n private selectNextDigitByCursor(cursorPos: number): void {\r\n setTimeout(() => {\r\n const [, , endPositionOfCurrentDigit] = this.getDateEditMetrics(cursorPos);\r\n const [, selectionStart, selectionEnd] = this.getDateEditMetrics(endPositionOfCurrentDigit + 1);\r\n\r\n this.selectionStart = selectionStart;\r\n this.selectionEnd = selectionEnd;\r\n });\r\n }\r\n\r\n private selectNextDigit(cursorPos: number, cycle: boolean = false): void {\r\n setTimeout(() => {\r\n const lastValue = cycle ? 0 : cursorPos;\r\n const nextSeparatorPos: number = this.viewValue.indexOf(this.separator, cursorPos);\r\n\r\n const newCursorPos = nextSeparatorPos > 0 ? nextSeparatorPos + 1 : lastValue;\r\n\r\n const [, selectionStart, selectionEnd] = this.getDateEditMetrics(newCursorPos);\r\n\r\n this.selectionStart = selectionStart;\r\n this.selectionEnd = selectionEnd;\r\n });\r\n }\r\n\r\n /** Checks whether the input is invalid based on the native validation. */\r\n private isBadInput(): boolean {\r\n const validity = (<HTMLInputElement> this.elementRef.nativeElement).validity;\r\n\r\n return validity && validity.badInput;\r\n }\r\n\r\n private cvaOnChange: (value: any) => void = () => {};\r\n\r\n private validatorOnChange = () => {};\r\n\r\n /** The form control validator for whether the input parses. */\r\n private parseValidator: ValidatorFn = (): ValidationErrors | null => {\r\n return this.focused ||\r\n this.empty ||\r\n this.lastValueValid ? null : { mcDatepickerParse: { text: this.elementRef.nativeElement.value } };\r\n }\r\n\r\n /** The form control validator for the min date. */\r\n private minValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\r\n const controlValue = this.getValidDateOrNull(this.dateAdapter.deserialize(control.value));\r\n\r\n return !this.min || !controlValue || this.dateAdapter.compareDateTime(this.min, controlValue) <= 0 ?\r\n null :\r\n { mcDatepickerMin: { min: this.min, actual: controlValue } };\r\n }\r\n\r\n /** The form control validator for the max date. */\r\n private maxValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\r\n const controlValue = this.getValidDateOrNull(this.dateAdapter.deserialize(control.value));\r\n\r\n return !this.max || !controlValue || this.dateAdapter.compareDateTime(this.max, controlValue) >= 0 ?\r\n null :\r\n { mcDatepickerMax: { max: this.max, actual: controlValue } };\r\n }\r\n\r\n /** The form control validator for the date filter. */\r\n private filterValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\r\n const controlValue = this.getValidDateOrNull(this.dateAdapter.deserialize(control.value));\r\n\r\n return !this.dateFilter || !controlValue || this.dateFilter(controlValue) ?\r\n null : { mcDatepickerFilter: true };\r\n }\r\n\r\n /** Formats a value and sets it on the input element. */\r\n private formatValue(value: D | null) {\r\n const formattedValue = value ? this.dateAdapter.format(value, this.dateFormats.dateInput) : '';\r\n\r\n this.setViewValue(formattedValue);\r\n }\r\n\r\n /**\r\n * @param obj The object to check.\r\n * @returns The given object if it is both a date instance and valid, otherwise null.\r\n */\r\n private getValidDateOrNull(obj: any): D | null {\r\n return (this.dateAdapter.isDateInstance(obj) && this.dateAdapter.isValid(obj)) ? obj : null;\r\n }\r\n\r\n private setControl(control: AbstractControl) {\r\n if (this.control) { return; }\r\n\r\n this.control = control;\r\n\r\n this.control.valueChanges\r\n .subscribe((value) => this._value = value);\r\n\r\n if (this.mcValidation.useValidation) {\r\n setMosaicValidationForCustomFormControl(this, this.changeDetectorRef);\r\n }\r\n }\r\n\r\n private getDigitPositions(format: string) {\r\n const formatInLowerCase = format.toLowerCase();\r\n\r\n formatInLowerCase\r\n .split('')\r\n .reduce(\r\n ({ prev, length, start }: any, value: string, index: number, arr) => {\r\n if (value === this.separator || (arr.length - 1) === index) {\r\n if (!this.firstDigit) {\r\n this.firstDigit = new DateDigit(prev, start, length);\r\n } else if (!this.secondDigit) {\r\n this.secondDigit = new DateDigit(prev, start, length);\r\n } else if (!this.thirdDigit) {\r\n this.thirdDigit = new DateDigit(prev, start, arr.length - start);\r\n }\r\n\r\n // tslint:disable:no-parameter-reassignment\r\n length = 0;\r\n start = index + 1;\r\n } else {\r\n length++;\r\n }\r\n\r\n return { prev: value, length, start };\r\n },\r\n { length: 0, start: 0 }\r\n );\r\n\r\n if (!this.firstDigit || !this.secondDigit || !this.thirdDigit) {\r\n Error(`Can' t use this format: ${format}`);\r\n }\r\n }\r\n\r\n private createDate(year: number, month: number, day: number): D {\r\n return this.dateAdapter.createDateTime(\r\n year,\r\n month,\r\n day,\r\n this.dateAdapter.getHours(this.value as D),\r\n this.dateAdapter.getMinutes(this.value as D),\r\n this.dateAdapter.getSeconds(this.value as D),\r\n this.dateAdapter.getMilliseconds(this.value as D)\r\n );\r\n }\r\n\r\n private correctCursorPosition() {\r\n if (this.selectionStart && this.separatorPositions.includes(this.selectionStart)) {\r\n this.selectionStart = this.selectionStart - 1;\r\n }\r\n }\r\n}\r\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChild,\r\n Directive,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n SimpleChanges,\r\n ViewEncapsulation,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { McButton } from '@ptsecurity/mosaic/button';\r\nimport { merge, of as observableOf, Subscription } from 'rxjs';\r\n\r\nimport { McDatepickerIntl } from './datepicker-intl';\r\nimport { McDatepicker } from './datepicker.component';\r\n\r\n\r\n/** Can be used to override the icon of a `mcDatepickerToggle`. */\r\n@Directive({\r\n selector: '[mcDatepickerToggleIcon]'\r\n})\r\nexport class McDatepickerToggleIcon {}\r\n\r\n\r\n@Component({\r\n selector: 'mc-datepicker-toggle',\r\n templateUrl: 'datepicker-toggle.html',\r\n styleUrls: ['datepicker-toggle.scss'],\r\n host: {\r\n class: 'mc-datepicker-toggle',\r\n '[class.mc-active]': 'datepicker && datepicker.opened'\r\n },\r\n exportAs: 'mcDatepickerToggle',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class McDatepickerToggle<D> implements AfterContentInit, OnChanges, OnDestroy {\r\n /** Whether the toggle button is disabled. */\r\n @Input()\r\n get disabled(): boolean {\r\n return this._disabled === undefined ? this.datepicker.disabled : this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = coerceBooleanProperty(value);\r\n }\r\n\r\n /** Datepicker instance that the button will toggle. */\r\n @Input('for') datepicker: McDatepicker<D>;\r\n\r\n /** Tabindex for the toggle. */\r\n @Input() tabIndex: number | null;\r\n\r\n /** Custom icon set by the consumer. */\r\n @ContentChild(McDatepickerToggleIcon, { static: false }) customIcon: McDatepickerToggleIcon;\r\n\r\n /** Underlying button element. */\r\n @ViewChild('button', { static: false }) button: McButton;\r\n private stateChanges = Subscription.EMPTY;\r\n\r\n private _disabled: boolean;\r\n\r\n constructor(public intl: McDatepickerIntl, private changeDetectorRef: ChangeDetectorRef) {}\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.datepicker) {\r\n this.watchStateChanges();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.stateChanges.unsubscribe();\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.watchStateChanges();\r\n }\r\n\r\n open(event: Event): void {\r\n if (this.datepicker && !this.disabled) {\r\n this.datepicker.open();\r\n event.stopPropagation();\r\n }\r\n }\r\n\r\n private watchStateChanges() {\r\n const datepickerDisabled = this.datepicker ? this.datepicker.disabledChange : observableOf();\r\n\r\n const inputDisabled = this.datepicker && this.datepicker.datepickerInput ?\r\n this.datepicker.datepickerInput.disabledChange : observableOf();\r\n\r\n const datepickerToggled = this.datepicker ?\r\n merge(this.datepicker.openedStream, this.datepicker.closedStream) :\r\n observableOf();\r\n\r\n this.stateChanges.unsubscribe();\r\n\r\n this.stateChanges = merge(\r\n this.intl.changes,\r\n datepickerDisabled,\r\n inputDisabled,\r\n datepickerToggled\r\n ).subscribe(() => this.changeDetectorRef.markForCheck());\r\n }\r\n}\r\n","<!--todo need simplify this-->\r\n<button\r\n #button\r\n mc-button\r\n type=\"button\"\r\n class=\"mc-datepicker-toggle__button\"\r\n aria-haspopup=\"true\"\r\n [attr.aria-label]=\"intl.openCalendarLabel\"\r\n [tabIndex]=\"tabIndex\"\r\n [disabled]=\"disabled\"\r\n (click)=\"open($event)\">\r\n\r\n <i *ngIf=\"!customIcon\" mc-icon=\"mc-calendar_16\" class=\"mc-datepicker-toggle__default-icon\"></i>\r\n\r\n <ng-content select=\"[mcDatepickerToggleIcon]\"></ng-content>\r\n</button>\r\n","import {\r\n animate,\r\n state,\r\n style,\r\n transition,\r\n trigger,\r\n AnimationTriggerMetadata\r\n} from '@angular/animations';\r\n\r\n\r\n/**\r\n * Animations used by the mosaic datepicker.\r\n * @docs-private\r\n */\r\nexport const mcDatepickerAnimations: {\r\n readonly transformPanel: AnimationTriggerMetadata;\r\n readonly fadeInCalendar: AnimationTriggerMetadata;\r\n} = {\r\n /** Transforms the height of the datepicker's calendar. */\r\n transformPanel: trigger('transformPanel', [\r\n state('void', style({\r\n opacity: 0,\r\n transform: 'scale(1, 0.8)'\r\n })),\r\n transition('void => enter', animate('120ms cubic-bezier(0, 0, 0.2, 1)', style({\r\n opacity: 1,\r\n transform: 'scale(1, 1)'\r\n }))),\r\n transition('* => void', animate('100ms linear', style({ opacity: 0 })))\r\n ]),\r\n\r\n /** Fades in the content of the calendar. */\r\n fadeInCalendar: trigger('fadeInCalendar', [\r\n state('void', style({ opacity: 0 })),\r\n state('enter', style({ opacity: 1 })),\r\n\r\n // need to keep it until #12440 gets in, otherwise the exit animation will look glitchy.\r\n transition('void => *', animate('120ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)'))\r\n ])\r\n};\r\n\r\n// todo should be put into polyfils\r\n// https://github.com/angular/angular/issues/24769\r\nif (!Element.prototype.matches) {\r\n Element.prototype.matches = (Element.prototype as any).msMatchesSelector;\r\n}\r\n","// tslint:disable:no-unbound-method\r\n// tslint:disable:no-magic-numbers\r\nimport { Directionality } from '@angular/cdk/bidi';\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport {\r\n Overlay,\r\n OverlayConfig,\r\n OverlayRef,\r\n PositionStrategy,\r\n ScrollStrategy\r\n} from '@angular/cdk/overlay';\r\nimport { ComponentPortal, ComponentType } from '@angular/cdk/portal';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ComponentRef,\r\n EventEmitter,\r\n Inject,\r\n InjectionToken,\r\n Input,\r\n NgZone,\r\n OnDestroy,\r\n Optional,\r\n Output,\r\n ViewChild,\r\n ViewContainerRef,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { DateAdapter } from '@ptsecurity/cdk/datetime';\r\nimport { McFormFieldControl } from '@ptsecurity/mosaic/form-field';\r\nimport { merge, Subject, Subscription } from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\n\r\nimport { McCalendarCellCssClasses } from './calendar-body.component';\r\nimport { McCalendar, McCalendarView } from './calendar.component';\r\nimport { mcDatepickerAnimations } from './datepicker-animations';\r\nimport { createMissingDateImplError } from './datepicker-errors';\r\nimport { McDatepickerInput } from './datepicker-input.directive';\r\n\r\n\r\n/** Used to generate a unique ID for each datepicker instance. */\r\nlet datepickerUid = 0;\r\n\r\n/** Injection token that determines the scroll handling while the calendar is open. */\r\nexport const MC_DATEPICKER_SCROLL_STRATEGY =\r\n new InjectionToken<() => ScrollStrategy>('mc-datepicker-scroll-strategy');\r\n\r\n/** @docs-private */\r\n// tslint:disable-next-line:naming-convention\r\nexport function MC_DATEPICKER_SCROLL_STRATEGY_FACTORY(overlay: Overlay): () => ScrollStrategy {\r\n return () => overlay.scrollStrategies.reposition();\r\n}\r\n\r\n/** @docs-private */\r\nexport const MC_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER = {\r\n provide: MC_DATEPICKER_SCROLL_STRATEGY,\r\n deps: [Overlay],\r\n useFactory: MC_DATEPICKER_SCROLL_STRATEGY_FACTORY\r\n};\r\n\r\n/**\r\n * Component used as the content for the datepicker dialog and popup. We use this instead of using\r\n * McCalendar directly as the content so we can control the initial focus. This also gives us a\r\n * place to put additional features of the popup that are not part of the calendar itself in the\r\n * future. (e.g. confirmation buttons).\r\n * @docs-private\r\n */\r\n@Component({\r\n selector: 'mc-datepicker__content',\r\n exportAs: 'mcDatepickerContent',\r\n templateUrl: 'datepicker-content.html',\r\n styleUrls: ['datepicker-content.scss'],\r\n host: {\r\n class: 'mc-datepicker__content',\r\n\r\n '[@transformPanel]': 'animationState',\r\n '(@transformPanel.done)': 'animationDone.next()'\r\n },\r\n animations: [\r\n mcDatepickerAnimations.transformPanel,\r\n mcDatepickerAnimations.fadeInCalendar\r\n ],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class McDatepickerContent<D> implements OnDestroy {\r\n /** Emits when an animation has finished. */\r\n readonly animationDone = new Subject<void>();\r\n\r\n /** Reference to the datepicker that created the overlay. */\r\n datepicker: McDatepicker<D>;\r\n\r\n /** Current state of the animation. */\r\n animationState: 'enter' | 'void';\r\n\r\n /** Reference to the internal calendar component. */\r\n @ViewChild(McCalendar) calendar: McCalendar<D>;\r\n\r\n private subscriptions = new Subscription();\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {}\r\n\r\n ngAfterViewInit() {\r\n this.subscriptions.add(this.datepicker.stateChanges.subscribe(() => {\r\n this.changeDetectorRef.markForCheck();\r\n }));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.unsubscribe();\r\n this.animationDone.complete();\r\n }\r\n\r\n startExitAnimation() {\r\n this.animationState = 'void';\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n}\r\n\r\n\r\n// TODO: We use a component instead of a directive here so the user can use implicit\r\n// template reference variables (e.g. #d vs #d=\"mcDatepicker\"). We can change this to a directive\r\n// if angular adds support for `exportAs: '$implicit'` on directives.\r\n/** Component responsible for managing the datepicker popup/dialog. */\r\n@Component({\r\n selector: 'mc-datepicker',\r\n template: '',\r\n exportAs: 'mcDatepicker',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [{ provide: McFormFieldControl, useExisting: McDatepicker }]\r\n})\r\nexport class McDatepicker<D> implements OnDestroy {\r\n @Input()\r\n get hasBackdrop(): boolean {\r\n return this._hasBackdrop;\r\n }\r\n\r\n set hasBackdrop(value: boolean) {\r\n this._hasBackdrop = coerceBooleanProperty(value);\r\n }\r\n\r\n private _hasBackdrop: boolean = false;\r\n\r\n /** The date to open the calendar to initially. */\r\n @Input()\r\n get startAt(): D | null {\r\n // If an explicit startAt is set we start there, otherwise we start at whatever the currently\r\n // selected value is.\r\n return this._startAt || (this.datepickerInput ? this.datepickerInput.value : null);\r\n }\r\n\r\n set startAt(value: D | null) {\r\n this._startAt = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\r\n }\r\n\r\n private _startAt: D | null;\r\n\r\n /** Whether the datepicker pop-up should be disabled. */\r\n @Input()\r\n get disabled(): boolean {\r\n return this._disabled === undefined && this.datepickerInput ? this.datepickerInput.disabled : this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n const newValue = coerceBooleanProperty(value);\r\n\r\n if (newValue !== this._disabled) {\r\n this._disabled = newValue;\r\n this.disabledChange.next(newValue);\r\n }\r\n }\r\n\r\n private _disabled: boolean;\r\n\r\n /** Whether the calendar is open. */\r\n @Input()\r\n get opened(): boolean {\r\n return this._opened;\r\n }\r\n\r\n set opened(value: boolean) {\r\n coerceBooleanProperty(value) ? this.open() : this.close();\r\n }\r\n\r\n private _opened = false;\r\n\r\n /** The currently selected date. */\r\n get selected(): D | null {\r\n return this.validSelected;\r\n }\r\n\r\n set selected(value: D | null) {\r\n this.validSelected = value;\r\n }\r\n\r\n get dateFilter(): (date: D | null) => boolean {\r\n return this.datepickerInput && this.datepickerInput.dateFilter;\r\n }\r\n\r\n get value(): D | null {\r\n return this.selected;\r\n }\r\n\r\n /** The minimum selectable date. */\r\n @Input() minDate: D | null;\r\n\r\n /** The maximum selectable date. */\r\n @Input() maxDate: D | null;\r\n\r\n /** An input indicating the type of the custom header component for the calendar, if set. */\r\n @Input() calendarHeaderComponent: ComponentType<any>;\r\n\r\n /** The view that the calendar should start in. */\r\n @Input() startView: McCalendarView = McCalendarView.Month;\r\n\r\n /**\r\n * Emits selected year in multiyear view.\r\n * This doesn't imply a change on the selected date.\r\n */\r\n @Output() readonly yearSelected: EventEmitter<D> = new EventEmitter<D>();\r\n\r\n /**\r\n * Emits selected month in year view.\r\n * This doesn't imply a change on the selected date.\r\n */\r\n @Output() readonly monthSelected: EventEmitter<D> = new EventEmitter<D>();\r\n\r\n /** Classes to be passed to the date picker panel. Supports the same syntax as `ngClass`. */\r\n @Input() panelClass: string | string[];\r\n\r\n /** Function that can be used to add custom CSS classes to dates. */\r\n @Input() dateClass: (date: D) => McCalendarCellCssClasses;\r\n\r\n @Input() backdropClass: string = 'cdk-overlay-transparent-backdrop';\r\n\r\n /** Emits when the datepicker has been opened. */\r\n @Output('opened') openedStream: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n /** Emits when the datepicker has been closed. */\r\n @Output('closed') closedStream: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n readonly stateChanges: Subject<void> = new Subject<void>();\r\n\r\n /** Emits when the datepicker is disabled. */\r\n readonly disabledChange = new Subject<boolean>();\r\n\r\n /** Emits new selected date when selected date changes. */\r\n readonly selectedChanged = new Subject<D>();\r\n\r\n /** The id for the datepicker calendar. */\r\n id: string = `mc-datepicker-${datepickerUid++}`;\r\n\r\n /** A reference to the overlay when the calendar is opened as a popup. */\r\n popupRef: OverlayRef | null;\r\n\r\n /** The input element this datepicker is associated with. */\r\n datepickerInput: McDatepickerInput<D>;\r\n\r\n private scrollStrategy: () => ScrollStrategy;\r\n private validSelected: D | null = null;\r\n\r\n /** A portal containing the calendar for this datepicker. */\r\n private calendarPortal: ComponentPortal<McDatepickerContent<D>>;\r\n\r\n /** Reference to the component instantiated in popup mode. */\r\n private popupComponentRef: ComponentRef<McDatepickerContent<D>> | null;\r\n\r\n /** The element that was focused before the datepicker was opened. */\r\n private focusedElementBeforeOpen: HTMLElement | null = null;\r\n\r\n /** Subscription to value changes in the associated input element. */\r\n private inputSubscription = Subscription.EMPTY;\r\n\r\n private closeSubscription = Subscription.EMPTY;\r\n\r\n constructor(\r\n private overlay: Overlay,\r\n private ngZone: NgZone,\r\n private viewContainerRef: ViewContainerRef,\r\n @Inject(MC_DATEPICKER_SCROLL_STRATEGY) scrollStrategy: any,\r\n @Optional() private readonly dateAdapter: DateAdapter<D>,\r\n @Optional() private dir: Directionality,\r\n @Optional() @Inject(DOCUMENT) private document: any\r\n ) {\r\n if (!this.dateAdapter) {\r\n throw createMissingDateImplError('DateAdapter');\r\n }\r\n\r\n this.scrollStrategy = scrollStrategy;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.close();\r\n this.inputSubscription.unsubscribe();\r\n this.closeSubscription.unsubscribe();\r\n this.disabledChange.complete();\r\n\r\n this.destroyOverlay();\r\n }\r\n\r\n /** Selects the given date */\r\n select(date: D): void {\r\n const oldValue = this.selected;\r\n this.selected = date;\r\n\r\n if (!this.dateAdapter.sameDate(oldValue, this.selected)) {\r\n this.selectedChanged.next(date);\r\n }\r\n }\r\n\r\n /** Emits the selected year in multiyear view */\r\n selectYear(normalizedYear: D): void {\r\n this.yearSelected.emit(normalizedYear);\r\n }\r\n\r\n /** Emits selected month in year view */\r\n selectMonth(normalizedMonth: D): void {\r\n this.monthSelected.emit(normalizedMonth);\r\n }\r\n\r\n /**\r\n * Register an input with this datepicker.\r\n * @param input The datepicker input to register with this datepicker.\r\n */\r\n registerInput(input: McDatepickerInput<D>): void {\r\n if (this.datepickerInput) {\r\n throw Error('A McDatepicker can only be associated with a single input.');\r\n }\r\n\r\n this.datepickerInput = input;\r\n this.inputSubscription = this.datepickerInput.valueChange\r\n .subscribe((value: D | null) => {\r\n this.selected = value;\r\n\r\n if (this.popupComponentRef) {\r\n this.popupComponentRef.instance.calendar.monthView?.init();\r\n this.popupComponentRef.instance.calendar.activeDate = value as D;\r\n }\r\n });\r\n }\r\n\r\n /** Open the calendar. */\r\n open(): void {\r\n if (this._opened || this.disabled) { return; }\r\n\r\n if (!this.datepickerInput) {\r\n throw Error('Attempted to open an McDatepicker with no associated input.');\r\n }\r\n\r\n if (this.document) {\r\n this.focusedElementBeforeOpen = this.document.activeElement;\r\n }\r\n\r\n this.openAsPopup();\r\n\r\n this._opened = true;\r\n this.openedStream.emit();\r\n }\r\n\r\n /** Close the calendar. */\r\n close(restoreFocus: boolean = true): void {\r\n if (!this._opened) { return; }\r\n\r\n if (this.popupComponentRef) {\r\n const instance = this.popupComponentRef.instance;\r\n instance.startExitAnimation();\r\n instance.animationDone\r\n .pipe(take(1))\r\n .subscribe(() => this.destroyOverlay());\r\n }\r\n\r\n if (restoreFocus) {\r\n this.focusedElementBeforeOpen!.focus();\r\n }\r\n\r\n this._opened = false;\r\n this.closedStream.emit();\r\n this.focusedElementBeforeOpen = null;\r\n }\r\n\r\n toggle(): void {\r\n if (this.datepickerInput.isReadOnly) { return; }\r\n\r\n this._opened ? this.close() : this.open();\r\n }\r\n\r\n /** Destroys the current overlay. */\r\n private destroyOverlay() {\r\n if (this.popupRef) {\r\n this.popupRef.dispose();\r\n this.popupRef = this.popupComponentRef = null;\r\n }\r\n }\r\n\r\n /** Open the calendar as a popup. */\r\n private openAsPopup(): void {\r\n if (!this.calendarPortal) {\r\n this.calendarPortal = new ComponentPortal<McDatepickerContent<D>>(\r\n McDatepickerContent, this.viewContainerRef\r\n );\r\n }\r\n\r\n if (!this.popupRef) {\r\n this.createPopup();\r\n }\r\n\r\n if (!this.popupRef!.hasAttached()) {\r\n this.popupComponentRef = this.popupRef!.attach(this.calendarPortal);\r\n this.popupComponentRef.instance.datepicker = this;\r\n\r\n // Update the position once the calendar has rendered.\r\n this.ngZone.onStable.asObservable()\r\n .pipe(take(1))\r\n .subscribe(() => this.popupRef!.updatePosition());\r\n }\r\n }\r\n\r\n /** Create the popup. */\r\n private createPopup(): void {\r\n const overlayConfig = new OverlayConfig({\r\n positionStrategy: this.createPopupPositionStrategy(),\r\n hasBackdrop: this.hasBackdrop,\r\n backdropClass: this.backdropClass,\r\n direction: this.dir,\r\n scrollStrategy: this.scrollStrategy(),\r\n panelClass: 'mc-datepicker__popup'\r\n });\r\n\r\n this.popupRef = this.overlay.create(overlayConfig);\r\n\r\n this.closeSubscription = this.closingActions()\r\n .subscribe(() => this.close(this.restoreFocus()));\r\n }\r\n\r\n private restoreFocus(): boolean {\r\n return this.document.activeElement === this.document.body;\r\n }\r\n\r\n private closingActions() {\r\n return merge(\r\n this.popupRef!.backdropClick(),\r\n this.popupRef!.outsidePointerEvents(),\r\n this.popupRef!.detachments()\r\n );\r\n }\r\n\r\n /** Create the popup PositionStrategy. */\r\n private createPopupPositionStrategy(): PositionStrategy {\r\n return this.overlay.position()\r\n .flexibleConnectedTo(this.datepickerInput.elementRef)\r\n .withTransformOriginOn('.mc-datepicker__content')\r\n .withFlexibleDimensions(false)\r\n .withViewportMargin(8)\r\n .withLockedPosition()\r\n .withPositions([\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top'\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'bottom'\r\n },\r\n {\r\n originX: 'end',\r\n originY: 'bottom',\r\n overlayX: 'end',\r\n overlayY: 'top'\r\n },\r\n {\r\n originX: 'end',\r\n originY: 'top',\r\n overlayX: 'end',\r\n overlayY: 'bottom'\r\n }\r\n ]);\r\n }\r\n\r\n /**\r\n * @param obj The object to check.\r\n * @returns The given object if it is both a date instance and valid, otherwise null.\r\n */\r\n private getValidDateOrNull(obj: any): D | null {\r\n return (this.dateAdapter.isDateInstance(obj) && this.dateAdapter.isValid(obj)) ? obj : null;\r\n }\r\n}\r\n","<mc-calendar [id]=\"datepicker.id\"\r\n [ngClass]=\"datepicker.panelClass\"\r\n [startAt]=\"datepicker.startAt\"\r\n [startView]=\"datepicker.startView\"\r\n [minDate]=\"datepicker.minDate\"\r\n [maxDate]=\"datepicker.maxDate\"\r\n [dateFilter]=\"datepicker.dateFilter\"\r\n [headerComponent]=\"datepicker.calendarHeaderComponent\"\r\n [selected]=\"datepicker.selected\"\r\n [dateClass]=\"datepicker.dateClass\"\r\n [@fadeInCalendar]=\"'enter'\"\r\n (selectedChange)=\"datepicker.select($event)\"\r\n (yearSelected)=\"datepicker.selectYear($event)\"\r\n (monthSelected)=\"datepicker.selectMonth($event)\"\r\n (userSelection)=\"datepicker.close()\">\r\n</mc-calendar>\r\n","import { A11yModule } from '@angular/cdk/a11y';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\nimport { PortalModule } from '@angular/cdk/portal';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { McButtonModule } from '@ptsecurity/mosaic/button';\r\nimport { McIconModule } from '@ptsecurity/mosaic/icon';\r\n\r\nimport { McCalendarBody } from './calendar-body.component';\r\nimport { McCalendar, McCalendarHeader } from './calendar.component';\r\nimport { McDatepickerInput } from './datepicker-input.directive';\r\nimport { McDatepickerIntl } from './datepicker-intl';\r\nimport { McDatepickerToggle, McDatepickerToggleIcon } from './datepicker-toggle.component';\r\nimport {\r\n McDatepicker,\r\n McDatepickerContent,\r\n MC_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER\r\n} from './datepicker.component';\r\nimport { McMonthView } from './month-view.component';\r\nimport { McMultiYearView } from './multi-year-view.component';\r\nimport { McYearView } from './year-view.component';\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n McButtonModule,\r\n OverlayModule,\r\n A11yModule,\r\n PortalModule,\r\n McIconModule\r\n ],\r\n exports: [\r\n McCalendar,\r\n McCalendarBody,\r\n McDatepicker,\r\n McDatepickerContent,\r\n McDatepickerInput,\r\n McDatepickerToggle,\r\n McDatepickerToggleIcon,\r\n McMonthView,\r\n McYearView,\r\n McMultiYearView,\r\n McCalendarHeader,\r\n McButtonModule\r\n ],\r\n declarations: [\r\n McCalendar,\r\n McCalendarBody,\r\n McDatepicker,\r\n McDatepickerContent,\r\n McDatepickerInput,\r\n McDatepickerToggle,\r\n McDatepickerToggleIcon,\r\n McMonthView,\r\n McYearView,\r\n McMultiYearView,\r\n McCalendarHeader\r\n ],\r\n providers: [\r\n McDatepickerIntl,\r\n MC_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER\r\n ],\r\n entryComponents: [\r\n McDatepickerContent,\r\n McCalendarHeader\r\n ]\r\n})\r\nexport class McDatepickerModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i3.McCalendarBody","i4","i1.McDatepickerIntl","i2","i5.McMonthView","i6.McYearView","i7.McMultiYearView","i9","observableOf","i3","i1.McCalendar","i5"],"mappings":"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"}
1
+ {"version":3,"file":"ptsecurity-mosaic-datepicker.mjs","sources":["../../../packages/mosaic/datepicker/calendar-body.component.ts","../../../packages/mosaic/datepicker/calendar-body.html","../../../packages/mosaic/datepicker/datepicker-errors.ts","../../../packages/mosaic/datepicker/month-view.component.ts","../../../packages/mosaic/datepicker/month-view.html","../../../packages/mosaic/datepicker/multi-year-view.component.ts","../../../packages/mosaic/datepicker/multi-year-view.html","../../../packages/mosaic/datepicker/year-view.component.ts","../../../packages/mosaic/datepicker/year-view.html","../../../packages/mosaic/datepicker/datepicker-intl.ts","../../../packages/mosaic/datepicker/calendar.component.ts","../../../packages/mosaic/datepicker/calendar-header.html","../../../packages/mosaic/datepicker/calendar.html","../../../packages/mosaic/datepicker/datepicker-input.directive.ts","../../../packages/mosaic/datepicker/datepicker-toggle.component.ts","../../../packages/mosaic/datepicker/datepicker-toggle.html","../../../packages/mosaic/datepicker/datepicker-animations.ts","../../../packages/mosaic/datepicker/datepicker.component.ts","../../../packages/mosaic/datepicker/datepicker-content.html","../../../packages/mosaic/datepicker/datepicker-module.ts","../../../packages/mosaic/datepicker/ptsecurity-mosaic-datepicker.ts"],"sourcesContent":["// tslint:disable:no-magic-numbers\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n NgZone,\n OnChanges,\n SimpleChanges\n} from '@angular/core';\nimport { take } from 'rxjs/operators';\n\n\n/**\n * Extra CSS classes that can be associated with a calendar cell.\n */\nexport type McCalendarCellCssClasses = string | string[] | Set<string> | { [key: string]: any };\n\n/**\n * An internal class that represents the data corresponding to a single calendar cell.\n * @docs-private\n */\nexport class McCalendarCell {\n constructor(\n public value: number,\n public displayValue: string,\n public ariaLabel: string,\n public enabled: boolean,\n public cssClasses?: McCalendarCellCssClasses\n ) {}\n}\n\n\n/**\n * An internal component used to display calendar data in a table.\n * @docs-private\n */\n@Component({\n selector: '[mc-calendar-body]',\n exportAs: 'mcCalendarBody',\n templateUrl: 'calendar-body.html',\n styleUrls: ['calendar-body.scss'],\n host: {\n class: 'mc-calendar__body',\n role: 'grid',\n 'aria-readonly': 'true'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class McCalendarBody implements OnChanges {\n /** The label for the table. (e.g. \"Jan 2017\"). */\n @Input() label: string;\n\n /** The cells to display in the table. */\n @Input() rows: McCalendarCell[][];\n\n /** The value in the table that corresponds to today. */\n @Input() todayValue: number;\n\n /** The value in the table that is currently selected. */\n @Input() selectedValue: number;\n\n /** The minimum number of free cells needed to fit the label in the first row. */\n @Input() labelMinRequiredCells: number;\n\n /** The number of columns in the table. */\n @Input() numCols = 7;\n\n /** The cell number of the active cell in the table. */\n @Input() activeCell = 0;\n\n /**\n * The aspect ratio (width / height) to use for the cells in the table. This aspect ratio will be\n * maintained even as the table resizes.\n */\n @Input() cellAspectRatio = 1;\n\n /** Emits when a new value is selected. */\n @Output() readonly selectedValueChange: EventEmitter<number> = new EventEmitter<number>();\n\n /** The number of blank cells to put at the beginning for the first row. */\n firstRowOffset: number;\n\n /** Padding for the individual date cells. */\n cellPadding: string;\n\n /** Width of an individual cell. */\n cellWidth: string;\n\n constructor(private readonly elementRef: ElementRef<HTMLElement>, private readonly ngZone: NgZone) {}\n\n cellClicked(cell: McCalendarCell): void {\n if (cell.enabled) {\n this.selectedValueChange.emit(cell.value);\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const columnChanges = changes.numCols;\n // tslint:disable-next-line:no-this-assignment\n const { rows, numCols } = this;\n\n if (changes.rows || columnChanges) {\n this.firstRowOffset = rows && rows.length && rows[0].length ? numCols - rows[0].length : 0;\n }\n\n if (changes.cellAspectRatio || columnChanges || !this.cellPadding) {\n this.cellPadding = `${this.cellAspectRatio * 50 / numCols}%`;\n }\n\n if (columnChanges || !this.cellWidth) {\n this.cellWidth = `${100 / numCols}%`;\n }\n }\n\n isActiveCell(rowIndex: number, colIndex: number): boolean {\n let cellNumber = rowIndex * this.numCols + colIndex;\n\n // Account for the fact that the first row may not have as many cells.\n if (rowIndex) {\n cellNumber -= this.firstRowOffset;\n }\n\n return cellNumber === this.activeCell;\n }\n\n /** Focuses the active cell after the microtask queue is empty. */\n focusActiveCell() {\n this.ngZone.runOutsideAngular(() => {\n this.ngZone.onStable.asObservable().pipe(take(1)).subscribe(() => {\n const activeCell: HTMLElement | null =\n this.elementRef.nativeElement.querySelector('.mc-calendar__body_active');\n\n if (activeCell) {\n activeCell.focus();\n }\n });\n });\n }\n}\n","<!--\n If there's not enough space in the first row, create a separate label row. We mark this row as\n aria-hidden because we don't want it to be read out as one of the weeks in the month.\n-->\n<tr *ngIf=\"firstRowOffset < labelMinRequiredCells\">\n <td class=\"mc-calendar__body-label\" [attr.colspan]=\"numCols\">\n {{ label }}\n </td>\n</tr>\n\n<!-- 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=\"mc-calendar__body-label\"\n [attr.colspan]=\"firstRowOffset\">\n {{ firstRowOffset >= labelMinRequiredCells ? label : '' }}\n </td>\n <td *ngFor=\"let item of row; let colIndex = index\"\n class=\"mc-calendar__body-cell\"\n [ngClass]=\"item.cssClasses!\"\n [tabindex]=\"isActiveCell(rowIndex, colIndex) ? 0 : -1\"\n [class.mc-calendar__body_disabled]=\"!item.enabled\"\n [class.mc-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=\"mc-calendar__body-cell-content\"\n [class.mc-selected]=\"selectedValue === item.value\"\n [class.mc-calendar__body-today]=\"todayValue === item.value\">\n {{ item.displayValue }}\n </div>\n </td>\n</tr>\n","/** @docs-private */\nexport function createMissingDateImplError(provider: string) {\n return Error(\n `McDatepicker: No provider found for ${provider}. You must import one of the existing ` +\n `modules at your application root or provide a custom implementation or use exists ones.`);\n}\n","// tslint:disable:no-magic-numbers\nimport { Directionality } from '@angular/cdk/bidi';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Inject,\n Input,\n Optional,\n Output,\n ViewEncapsulation,\n ViewChild\n} from '@angular/core';\nimport { DateAdapter, MC_DATE_FORMATS, McDateFormats } from '@ptsecurity/cdk/datetime';\nimport {\n DOWN_ARROW,\n END,\n ENTER,\n HOME,\n LEFT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n UP_ARROW,\n SPACE\n} from '@ptsecurity/cdk/keycodes';\n\nimport { McCalendarBody, McCalendarCell, McCalendarCellCssClasses } from './calendar-body.component';\nimport { createMissingDateImplError } from './datepicker-errors';\n\n\nconst DAYS_PER_WEEK = 7;\n\n\n/**\n * An internal component used to display a single month in the datepicker.\n * @docs-private\n */\n@Component({\n selector: 'mc-month-view',\n exportAs: 'mcMonthView',\n templateUrl: 'month-view.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class McMonthView<D> implements AfterContentInit {\n /**\n * The date to display in this month view (everything other than the month and year is ignored).\n */\n @Input()\n get activeDate(): D {\n return this._activeDate;\n }\n\n set activeDate(value: D) {\n const oldActiveDate = this._activeDate;\n const validDate = this.getValidDateOrNull(this.dateAdapter.deserialize(value)) || this.dateAdapter.today();\n this._activeDate = this.dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\n\n if (!this.hasSameMonthAndYear(oldActiveDate, this._activeDate)) {\n this.init();\n }\n }\n\n /** The currently selected date. */\n @Input()\n get selected(): D | null {\n return this._selected;\n }\n\n set selected(value: D | null) {\n this._selected = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\n this.selectedDate = this.getDateInCurrentMonth(this._selected);\n }\n\n /** The minimum selectable date. */\n @Input()\n get minDate(): D | null {\n return this._minDate;\n }\n\n set minDate(value: D | null) {\n this._minDate = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\n }\n\n /** The maximum selectable date. */\n @Input()\n get maxDate(): D | null {\n return this._maxDate;\n }\n\n set maxDate(value: D | null) {\n this._maxDate = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\n }\n\n /** Function used to filter which dates are selectable. */\n @Input() dateFilter: (date: D) => boolean;\n\n /** Function that can be used to add custom CSS classes to dates. */\n @Input() dateClass: (date: D) => McCalendarCellCssClasses;\n\n /** Emits when a new date is selected. */\n @Output() readonly selectedChange: EventEmitter<D | null> = new EventEmitter<D | null>();\n\n /** Emits when any date is selected. */\n @Output() readonly userSelection: EventEmitter<void> = new EventEmitter<void>();\n\n /** Emits when any date is activated. */\n @Output() readonly activeDateChange: EventEmitter<D> = new EventEmitter<D>();\n\n /** The body of calendar table */\n @ViewChild(McCalendarBody, {static: false}) mcCalendarBody: McCalendarBody;\n\n /** The label for this month (e.g. \"January 2017\"). */\n monthLabel: string;\n\n /** Grid of calendar cells representing the dates of the month. */\n weeks: McCalendarCell[][];\n\n /** The number of blank cells in the first row before the 1st of the month. */\n firstWeekOffset: number;\n\n /**\n * The date of the month that the currently selected Date falls on.\n * Null if the currently selected Date is in another month.\n */\n selectedDate: number | null;\n\n /** The date of the month that today falls on. Null if today is in another month. */\n todayDate: number | null;\n\n /** The names of the weekdays. */\n weekdays: { long: string; narrow: string }[];\n private _activeDate: D;\n private _selected: D | null;\n private _minDate: D | null;\n private _maxDate: D | null;\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n @Optional() @Inject(MC_DATE_FORMATS) private readonly dateFormats: McDateFormats,\n @Optional() public dateAdapter: DateAdapter<D>,\n @Optional() private dir?: Directionality\n ) {\n\n if (!this.dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n\n if (!this.dateFormats) {\n throw createMissingDateImplError('MC_DATE_FORMATS');\n }\n\n const firstDayOfWeek = this.dateAdapter.getFirstDayOfWeek();\n const narrowWeekdays = this.dateAdapter.getDayOfWeekNames('short');\n const longWeekdays = this.dateAdapter.getDayOfWeekNames('long');\n\n // Rotate the labels for days of the week based on the configured first day of the week.\n const weekdays = longWeekdays.map((long, i) => {\n return { long, narrow: narrowWeekdays[i] };\n });\n this.weekdays = weekdays\n .slice(firstDayOfWeek)\n .concat(weekdays.slice(0, firstDayOfWeek));\n\n this._activeDate = this.dateAdapter.today();\n }\n\n ngAfterContentInit() {\n this.init();\n }\n\n /** Handles when a new date is selected. */\n dateSelected(date: number) {\n if (this.selectedDate !== date) {\n const selectedYear = this.dateAdapter.getYear(this.activeDate);\n const selectedMonth = this.dateAdapter.getMonth(this.activeDate);\n const selectedDate = this.dateAdapter.createDate(selectedYear, selectedMonth, date);\n\n this.selectedChange.emit(selectedDate);\n }\n\n this.userSelection.emit();\n }\n\n /** Handles keydown events on the calendar body when calendar is in month view. */\n handleCalendarBodyKeydown(event: KeyboardEvent): void {\n // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent\n // disabled ones from being selected. This may not be ideal, we should look into whether\n // navigation should skip over disabled dates, and if so, how to implement that efficiently.\n\n const oldActiveDate = this._activeDate;\n const isRtl = this.isRtl();\n\n // tslint:disable-next-line:deprecation\n switch (event.keyCode) {\n case LEFT_ARROW:\n this.activeDate = this.dateAdapter.addCalendarDays(this._activeDate, isRtl ? 1 : -1);\n break;\n case RIGHT_ARROW:\n this.activeDate = this.dateAdapter.addCalendarDays(this._activeDate, isRtl ? -1 : 1);\n break;\n case UP_ARROW:\n this.activeDate = this.dateAdapter.addCalendarDays(this._activeDate, -7);\n break;\n case DOWN_ARROW:\n this.activeDate = this.dateAdapter.addCalendarDays(this._activeDate, 7);\n break;\n case HOME:\n this.activeDate = this.dateAdapter.addCalendarDays(\n this._activeDate,\n 1 - this.dateAdapter.getDate(this._activeDate)\n );\n break;\n case END:\n this.activeDate = this.dateAdapter.addCalendarDays(\n this._activeDate,\n (this.dateAdapter.getNumDaysInMonth(this._activeDate) - this.dateAdapter.getDate(this._activeDate))\n );\n break;\n case PAGE_UP:\n this.activeDate = event.altKey ?\n this.dateAdapter.addCalendarYears(this._activeDate, -1) :\n this.dateAdapter.addCalendarMonths(this._activeDate, -1);\n break;\n case PAGE_DOWN:\n this.activeDate = event.altKey ?\n this.dateAdapter.addCalendarYears(this._activeDate, 1) :\n this.dateAdapter.addCalendarMonths(this._activeDate, 1);\n break;\n case ENTER:\n case SPACE:\n if (!this.dateFilter || this.dateFilter(this._activeDate)) {\n this.dateSelected(this.dateAdapter.getDate(this._activeDate));\n this.userSelection.emit();\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n\n return;\n default:\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n return;\n }\n\n if (this.dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n this.activeDateChange.emit(this.activeDate);\n }\n\n this.focusActiveCell();\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n\n /** Initializes this month view. */\n init() {\n this.selectedDate = this.getDateInCurrentMonth(this.selected);\n this.todayDate = this.getDateInCurrentMonth(this.dateAdapter.today());\n this.monthLabel = this.dateAdapter.getMonthNames('short')[this.dateAdapter.getMonth(this.activeDate)];\n\n this.monthLabel = this.monthLabel[0].toLocaleUpperCase() + this.monthLabel.substr(1);\n\n const firstOfMonth = this.dateAdapter.createDate(\n this.dateAdapter.getYear(this.activeDate),\n this.dateAdapter.getMonth(this.activeDate)\n );\n\n this.firstWeekOffset =\n (DAYS_PER_WEEK + this.dateAdapter.getDayOfWeek(firstOfMonth) -\n this.dateAdapter.getFirstDayOfWeek()) % DAYS_PER_WEEK;\n\n this.createWeekCells();\n this.changeDetectorRef.markForCheck();\n }\n\n /** Focuses the active cell after the microtask queue is empty. */\n focusActiveCell() {\n this.mcCalendarBody.focusActiveCell();\n }\n\n /** Creates McCalendarCells for the dates in this month. */\n private createWeekCells() {\n const daysInMonth = this.dateAdapter.getNumDaysInMonth(this.activeDate);\n const dateNames = this.dateAdapter.getDateNames();\n\n this.weeks = [[]];\n\n for (let i = 0, cell = this.firstWeekOffset; i < daysInMonth; i++, cell++) {\n if (cell === DAYS_PER_WEEK) {\n this.weeks.push([]);\n cell = 0;\n }\n\n const date = this.dateAdapter.createDate(\n this.dateAdapter.getYear(this.activeDate),\n this.dateAdapter.getMonth(this.activeDate),\n i + 1\n );\n const enabled = this.shouldEnableDate(date);\n const ariaLabel = this.dateAdapter.format(date, this.dateFormats.dateA11yLabel);\n const cellClasses = this.dateClass ? this.dateClass(date) : undefined;\n\n this.weeks[this.weeks.length - 1]\n .push(new McCalendarCell(i + 1, dateNames[i], ariaLabel, enabled, cellClasses));\n }\n }\n\n /** Date filter for the month */\n private shouldEnableDate(date: D): boolean {\n return !!date &&\n (!this.dateFilter || this.dateFilter(date)) &&\n (!this.minDate || this.dateAdapter.compareDate(date, this.minDate) >= 0) &&\n (!this.maxDate || this.dateAdapter.compareDate(date, this.maxDate) <= 0);\n }\n\n /**\n * Gets the date in this month that the given Date falls on.\n * Returns null if the given Date is in another month.\n */\n private getDateInCurrentMonth(date: D | null): number | null {\n return date && this.hasSameMonthAndYear(date, this.activeDate) ?\n this.dateAdapter.getDate(date) : null;\n }\n\n /** Checks whether the 2 dates are non-null and fall within the same month of the same year. */\n private hasSameMonthAndYear(d1: D | null, d2: D | null): boolean {\n return !!(d1 && d2 && this.dateAdapter.getMonth(d1) === this.dateAdapter.getMonth(d2) &&\n this.dateAdapter.getYear(d1) === this.dateAdapter.getYear(d2));\n }\n\n /**\n * @param obj The object to check.\n * @returns The given object if it is both a date instance and valid, otherwise null.\n */\n private getValidDateOrNull(obj: any): D | null {\n return (this.dateAdapter.isDateInstance(obj) && this.dateAdapter.isValid(obj)) ? obj : null;\n }\n\n /** Determines whether the user has the RTL layout direction. */\n private isRtl() {\n return this.dir && this.dir.value === 'rtl';\n }\n}\n","<table class=\"mc-calendar__table\">\n <thead class=\"mc-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=\"mc-calendar__table-header-divider\" colspan=\"7\"></th>\n </tr>\n </thead>\n <tbody mc-calendar-body\n [label]=\"monthLabel\"\n [rows]=\"weeks\"\n [todayValue]=\"todayDate!\"\n [selectedValue]=\"selectedDate!\"\n [labelMinRequiredCells]=\"3\"\n [activeCell]=\"dateAdapter.getDate(activeDate) - 1\"\n (selectedValueChange)=\"dateSelected($event)\"\n (keydown)=\"handleCalendarBodyKeydown($event)\">\n </tbody>\n</table>\n","// tslint:disable:no-magic-numbers\nimport { Directionality } from '@angular/cdk/bidi';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n Optional,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { DateAdapter } from '@ptsecurity/cdk/datetime';\nimport {\n DOWN_ARROW,\n END,\n ENTER,\n HOME,\n LEFT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n UP_ARROW,\n SPACE\n} from '@ptsecurity/cdk/keycodes';\n\nimport { McCalendarBody, McCalendarCell } from './calendar-body.component';\nimport { createMissingDateImplError } from './datepicker-errors';\n\n\nexport const yearsPerPage = 24;\n\nexport const yearsPerRow = 4;\n\n\n/**\n * An internal component used to display a year selector in the datepicker.\n * @docs-private\n */\n@Component({\n selector: 'mc-multi-year-view',\n exportAs: 'mcMultiYearView',\n templateUrl: 'multi-year-view.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class McMultiYearView<D> implements AfterContentInit {\n /** The date to display in this multi-year view (everything other than the year is ignored). */\n @Input()\n get activeDate(): D {\n return this._activeDate;\n }\n\n set activeDate(value: D) {\n const oldActiveDate = this._activeDate;\n const validDate =\n this.getValidDateOrNull(this.dateAdapter.deserialize(value)) || this.dateAdapter.today();\n this._activeDate = this.dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\n\n if (Math.floor(this.dateAdapter.getYear(oldActiveDate) / yearsPerPage) !==\n Math.floor(this.dateAdapter.getYear(this._activeDate) / yearsPerPage)) {\n this.init();\n }\n }\n\n /** The currently selected date. */\n @Input()\n get selected(): D | null {\n return this._selected;\n }\n\n set selected(value: D | null) {\n this._selected = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\n this.selectedYear = this._selected && this.dateAdapter.getYear(this._selected);\n }\n\n /** The minimum selectable date. */\n @Input()\n get minDate(): D | null {\n return this._minDate;\n }\n\n set minDate(value: D | null) {\n this._minDate = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\n }\n\n /** The maximum selectable date. */\n @Input()\n get maxDate(): D | null {\n return this._maxDate;\n }\n\n set maxDate(value: D | null) {\n this._maxDate = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\n }\n\n /** A function used to filter which dates are selectable. */\n @Input() dateFilter: (date: D) => boolean;\n\n /** Emits when a new year is selected. */\n @Output() readonly selectedChange: EventEmitter<D> = new EventEmitter<D>();\n\n /** Emits the selected year. This doesn't imply a change on the selected date */\n @Output() readonly yearSelected: EventEmitter<D> = new EventEmitter<D>();\n\n /** Emits when any date is activated. */\n @Output() readonly activeDateChange: EventEmitter<D> = new EventEmitter<D>();\n\n /** The body of calendar table */\n @ViewChild(McCalendarBody, {static: false}) mcCalendarBody: McCalendarBody;\n\n /** Grid of calendar cells representing the currently displayed years. */\n years: McCalendarCell[][];\n\n /** The year that today falls on. */\n todayYear: number;\n\n /** The year of the selected date. Null if the selected date is null. */\n selectedYear: number | null;\n private _activeDate: D;\n private _selected: D | null;\n private _minDate: D | null;\n private _maxDate: D | null;\n\n constructor(\n private readonly changeDetectorRef: ChangeDetectorRef,\n @Optional() public dateAdapter: DateAdapter<D>,\n @Optional() private dir?: Directionality\n ) {\n if (!this.dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n\n this._activeDate = this.dateAdapter.today();\n }\n\n ngAfterContentInit() {\n this.init();\n }\n\n /** Initializes this multi-year view. */\n init() {\n this.todayYear = this.dateAdapter.getYear(this.dateAdapter.today());\n const activeYear = this.dateAdapter.getYear(this._activeDate);\n const activeOffset = activeYear % yearsPerPage;\n this.years = [];\n for (let i = 0, row: number[] = []; i < yearsPerPage; i++) {\n row.push(activeYear - activeOffset + i);\n if (row.length === yearsPerRow) {\n this.years.push(row.map((year) => this.createCellForYear(year)));\n row = [];\n }\n }\n this.changeDetectorRef.markForCheck();\n }\n\n /** Handles when a new year is selected. */\n onYearSelected(year: number) {\n this.yearSelected.emit(this.dateAdapter.createDate(year));\n const month = this.dateAdapter.getMonth(this.activeDate);\n const daysInMonth =\n this.dateAdapter.getNumDaysInMonth(this.dateAdapter.createDate(year, month));\n this.selectedChange.emit(\n this.dateAdapter.createDate(year, month, Math.min(this.dateAdapter.getDate(this.activeDate), daysInMonth))\n );\n }\n\n /** Handles keydown events on the calendar body when calendar is in multi-year view. */\n handleCalendarBodyKeydown(event: KeyboardEvent): void {\n // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent\n // disabled ones from being selected. This may not be ideal, we should look into whether\n // navigation should skip over disabled dates, and if so, how to implement that efficiently.\n\n const oldActiveDate = this._activeDate;\n const isRtl = this.isRtl();\n\n // tslint:disable-next-line:deprecation\n switch (event.keyCode) {\n case LEFT_ARROW:\n this.activeDate = this.dateAdapter.addCalendarYears(this._activeDate, isRtl ? 1 : -1);\n break;\n case RIGHT_ARROW:\n this.activeDate = this.dateAdapter.addCalendarYears(this._activeDate, isRtl ? -1 : 1);\n break;\n case UP_ARROW:\n this.activeDate = this.dateAdapter.addCalendarYears(this._activeDate, -yearsPerRow);\n break;\n case DOWN_ARROW:\n this.activeDate = this.dateAdapter.addCalendarYears(this._activeDate, yearsPerRow);\n break;\n case HOME:\n this.activeDate = this.dateAdapter.addCalendarYears(\n this._activeDate,\n -this.dateAdapter.getYear(this._activeDate) % yearsPerPage\n );\n break;\n case END:\n this.activeDate = this.dateAdapter.addCalendarYears(\n this._activeDate,\n yearsPerPage - this.dateAdapter.getYear(this._activeDate) % yearsPerPage - 1\n );\n break;\n case PAGE_UP:\n this.activeDate =\n this.dateAdapter.addCalendarYears(\n this._activeDate, event.altKey ? -yearsPerPage * 10 : -yearsPerPage);\n break;\n case PAGE_DOWN:\n this.activeDate =\n this.dateAdapter.addCalendarYears(\n this._activeDate, event.altKey ? yearsPerPage * 10 : yearsPerPage);\n break;\n case ENTER:\n case SPACE:\n this.onYearSelected(this.dateAdapter.getYear(this._activeDate));\n break;\n default:\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n return;\n }\n\n if (this.dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n this.activeDateChange.emit(this.activeDate);\n }\n\n this.focusActiveCell();\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n\n getActiveCell(): number {\n return this.dateAdapter.getYear(this.activeDate) % yearsPerPage;\n }\n\n /** Focuses the active cell after the microtask queue is empty. */\n focusActiveCell() {\n this.mcCalendarBody.focusActiveCell();\n }\n\n /** Creates an McCalendarCell for the given year. */\n private createCellForYear(year: number) {\n const yearName = this.dateAdapter.getYearName(this.dateAdapter.createDate(year));\n\n return new McCalendarCell(year, yearName, yearName, this.shouldEnableYear(year));\n }\n\n /** Whether the given year is enabled. */\n private shouldEnableYear(year: number) {\n // disable if the year is greater than maxDate lower than minDate\n if (year === undefined || year === null ||\n (this.maxDate && year > this.dateAdapter.getYear(this.maxDate)) ||\n (this.minDate && year < this.dateAdapter.getYear(this.minDate))) {\n return false;\n }\n\n // enable if it reaches here and there's no filter defined\n if (!this.dateFilter) {\n return true;\n }\n\n const firstOfYear = this.dateAdapter.createDate(year);\n\n // If any date in the year is enabled count the year as enabled.\n for (let date = firstOfYear; this.dateAdapter.getYear(date) === year;\n date = this.dateAdapter.addCalendarDays(date, 1)) {\n if (this.dateFilter(date)) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * @param obj The object to check.\n * @returns The given object if it is both a date instance and valid, otherwise null.\n */\n private getValidDateOrNull(obj: any): D | null {\n return (this.dateAdapter.isDateInstance(obj) && this.dateAdapter.isValid(obj)) ? obj : null;\n }\n\n /** Determines whether the user has the RTL layout direction. */\n private isRtl() {\n return this.dir && this.dir.value === 'rtl';\n }\n}\n","<table class=\"mc-calendar__table\">\n <thead class=\"mc-calendar__table-header\">\n <tr>\n <th class=\"mc-calendar__table-header-divider\" colspan=\"4\"></th>\n </tr>\n </thead>\n <tbody mc-calendar-body\n [rows]=\"years\"\n [todayValue]=\"todayYear\"\n [selectedValue]=\"selectedYear!\"\n [numCols]=\"4\"\n [cellAspectRatio]=\"4 / 7\"\n [activeCell]=\"getActiveCell()\"\n (selectedValueChange)=\"onYearSelected($event)\"\n (keydown)=\"handleCalendarBodyKeydown($event)\">\n </tbody>\n</table>\n","import { Directionality } from '@angular/cdk/bidi';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Inject,\n Input,\n Optional,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { DateAdapter, MC_DATE_FORMATS, McDateFormats } from '@ptsecurity/cdk/datetime';\nimport {\n DOWN_ARROW,\n END,\n ENTER,\n HOME,\n LEFT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n UP_ARROW,\n SPACE\n} from '@ptsecurity/cdk/keycodes';\n\nimport { McCalendarBody, McCalendarCell } from './calendar-body.component';\nimport { createMissingDateImplError } from './datepicker-errors';\n\n\n/**\n * An internal component used to display a single year in the datepicker.\n * @docs-private\n */\n@Component({\n selector: 'mc-year-view',\n exportAs: 'mcYearView',\n templateUrl: 'year-view.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class McYearView<D> implements AfterContentInit {\n /** The date to display in this year view (everything other than the year is ignored). */\n @Input()\n get activeDate(): D {\n return this._activeDate;\n }\n\n set activeDate(value: D) {\n const oldActiveDate = this._activeDate;\n const validDate =\n this.getValidDateOrNull(this.dateAdapter.deserialize(value)) || this.dateAdapter.today();\n this._activeDate = this.dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\n\n if (this.dateAdapter.getYear(oldActiveDate) !== this.dateAdapter.getYear(this._activeDate)) {\n this.init();\n }\n }\n\n /** The currently selected date. */\n @Input()\n get selected(): D | null {\n return this._selected;\n }\n\n set selected(value: D | null) {\n this._selected = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\n this.selectedMonth = this.getMonthInCurrentYear(this._selected);\n }\n\n /** The minimum selectable date. */\n @Input()\n get minDate(): D | null {\n return this._minDate;\n }\n\n set minDate(value: D | null) {\n this._minDate = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\n }\n\n /** The maximum selectable date. */\n @Input()\n get maxDate(): D | null {\n return this._maxDate;\n }\n\n set maxDate(value: D | null) {\n this._maxDate = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\n }\n\n /** A function used to filter which dates are selectable. */\n @Input() dateFilter: (date: D) => boolean;\n\n /** Emits when a new month is selected. */\n @Output() readonly selectedChange: EventEmitter<D> = new EventEmitter<D>();\n\n /** Emits the selected month. This doesn't imply a change on the selected date */\n @Output() readonly monthSelected: EventEmitter<D> = new EventEmitter<D>();\n\n /** Emits when any date is activated. */\n @Output() readonly activeDateChange: EventEmitter<D> = new EventEmitter<D>();\n\n /** The body of calendar table */\n @ViewChild(McCalendarBody, {static: false}) mcCalendarBody: McCalendarBody;\n\n /** Grid of calendar cells representing the months of the year. */\n months: McCalendarCell[][];\n\n /** The label for this year (e.g. \"2017\"). */\n yearLabel: string;\n\n /** The month in this year that today falls on. Null if today is in a different year. */\n todayMonth: number | null;\n\n /**\n * The month in this year that the selected Date falls on.\n * Null if the selected Date is in a different year.\n */\n selectedMonth: number | null;\n private _activeDate: D;\n private _selected: D | null;\n private _minDate: D | null;\n private _maxDate: D | null;\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n @Optional() @Inject(MC_DATE_FORMATS) private readonly dateFormats: McDateFormats,\n @Optional() public dateAdapter: DateAdapter<D>,\n @Optional() private dir?: Directionality\n ) {\n if (!this.dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n\n if (!this.dateFormats) {\n throw createMissingDateImplError('MC_DATE_FORMATS');\n }\n\n this._activeDate = this.dateAdapter.today();\n }\n\n ngAfterContentInit() {\n this.init();\n }\n\n /** Handles when a new month is selected. */\n onMonthSelected(month: number) {\n const year = this.dateAdapter.getYear(this.activeDate);\n\n const normalizedDate = this.dateAdapter.createDate(year, month);\n\n this.monthSelected.emit(normalizedDate);\n\n const daysInMonth = this.dateAdapter.getNumDaysInMonth(normalizedDate);\n\n this.selectedChange.emit(\n this.dateAdapter.createDate(\n year,\n month,\n Math.min(this.dateAdapter.getDate(this.activeDate), daysInMonth)\n )\n );\n }\n\n /** Handles keydown events on the calendar body when calendar is in year view. */\n handleCalendarBodyKeydown(event: KeyboardEvent): void {\n // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent\n // disabled ones from being selected. This may not be ideal, we should look into whether\n // navigation should skip over disabled dates, and if so, how to implement that efficiently.\n\n const oldActiveDate = this._activeDate;\n const isRtl = this.isRtl();\n\n const VERTICAL_SHIFT = 4;\n const PAGE_SHIFT = 10;\n const MAX_MONTH_INDEX = 11;\n\n // tslint:disable-next-line:deprecation\n switch (event.keyCode) {\n case LEFT_ARROW:\n this.activeDate = this.dateAdapter.addCalendarMonths(this._activeDate, isRtl ? 1 : -1);\n break;\n case RIGHT_ARROW:\n this.activeDate = this.dateAdapter.addCalendarMonths(this._activeDate, isRtl ? -1 : 1);\n break;\n case UP_ARROW:\n this.activeDate = this.dateAdapter.addCalendarMonths(this._activeDate, -VERTICAL_SHIFT);\n break;\n case DOWN_ARROW:\n this.activeDate = this.dateAdapter.addCalendarMonths(this._activeDate, VERTICAL_SHIFT);\n break;\n case HOME:\n this.activeDate = this.dateAdapter.addCalendarMonths(\n this._activeDate,\n -this.dateAdapter.getMonth(this._activeDate)\n );\n break;\n case END:\n this.activeDate = this.dateAdapter.addCalendarMonths(\n this._activeDate,\n MAX_MONTH_INDEX - this.dateAdapter.getMonth(this._activeDate)\n );\n break;\n case PAGE_UP:\n this.activeDate =\n this.dateAdapter.addCalendarYears(this._activeDate, event.altKey ? -PAGE_SHIFT : -1);\n break;\n case PAGE_DOWN:\n this.activeDate =\n this.dateAdapter.addCalendarYears(this._activeDate, event.altKey ? PAGE_SHIFT : 1);\n break;\n case ENTER:\n case SPACE:\n this.onMonthSelected(this.dateAdapter.getMonth(this._activeDate));\n break;\n default:\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n return;\n }\n\n if (this.dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n this.activeDateChange.emit(this.activeDate);\n }\n\n this.focusActiveCell();\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n\n /** Initializes this year view. */\n init() {\n this.selectedMonth = this.getMonthInCurrentYear(this.selected);\n this.todayMonth = this.getMonthInCurrentYear(this.dateAdapter.today());\n this.yearLabel = this.dateAdapter.getYearName(this.activeDate);\n\n const monthNames = this.dateAdapter.getMonthNames('short');\n\n // First row of months only contains 5 elements so we can fit the year label on the same row.\n // tslint:disable-next-line:no-magic-numbers\n this.months = [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]\n .map((row) => row.map((month) => this.createCellForMonth(month, monthNames[month])));\n\n this.changeDetectorRef.markForCheck();\n }\n\n /** Focuses the active cell after the microtask queue is empty. */\n focusActiveCell() {\n this.mcCalendarBody.focusActiveCell();\n }\n\n /**\n * Gets the month in this year that the given Date falls on.\n * Returns null if the given Date is in another year.\n */\n private getMonthInCurrentYear(date: D | null) {\n return date && this.dateAdapter.getYear(date) === this.dateAdapter.getYear(this.activeDate) ?\n this.dateAdapter.getMonth(date) : null;\n }\n\n /** Creates an McCalendarCell for the given month. */\n private createCellForMonth(month: number, monthName: string) {\n const ariaLabel = this.dateAdapter.format(\n this.dateAdapter.createDate(this.dateAdapter.getYear(this.activeDate), month),\n this.dateFormats.monthYearA11yLabel\n );\n\n const newMonthName = monthName[0].toLocaleUpperCase() + monthName.substr(1);\n\n return new McCalendarCell(\n month, newMonthName, ariaLabel, this.shouldEnableMonth(month));\n }\n\n /** Whether the given month is enabled. */\n private shouldEnableMonth(month: number) {\n\n const activeYear = this.dateAdapter.getYear(this.activeDate);\n\n if (month === undefined || month === null ||\n this.isYearAndMonthAfterMaxDate(activeYear, month) ||\n this.isYearAndMonthBeforeMinDate(activeYear, month)) {\n return false;\n }\n\n if (!this.dateFilter) {\n return true;\n }\n\n const firstOfMonth = this.dateAdapter.createDate(activeYear, month);\n\n // If any date in the month is enabled count the month as enabled.\n for (let date = firstOfMonth; this.dateAdapter.getMonth(date) === month;\n date = this.dateAdapter.addCalendarDays(date, 1)) {\n if (this.dateFilter(date)) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Tests whether the combination month/year is after this.maxDate, considering\n * just the month and year of this.maxDate\n */\n private isYearAndMonthAfterMaxDate(year: number, month: number) {\n if (this.maxDate) {\n const maxYear = this.dateAdapter.getYear(this.maxDate);\n const maxMonth = this.dateAdapter.getMonth(this.maxDate);\n\n return year > maxYear || (year === maxYear && month > maxMonth);\n }\n\n return false;\n }\n\n /**\n * Tests whether the combination month/year is before this.minDate, considering\n * just the month and year of this.minDate\n */\n private isYearAndMonthBeforeMinDate(year: number, month: number) {\n if (this.minDate) {\n const minYear = this.dateAdapter.getYear(this.minDate);\n const minMonth = this.dateAdapter.getMonth(this.minDate);\n\n return year < minYear || (year === minYear && month < minMonth);\n }\n\n return false;\n }\n\n /**\n * @param obj The object to check.\n * @returns The given object if it is both a date instance and valid, otherwise null.\n */\n private getValidDateOrNull(obj: any): D | null {\n return (this.dateAdapter.isDateInstance(obj) && this.dateAdapter.isValid(obj)) ? obj : null;\n }\n\n /** Determines whether the user has the RTL layout direction. */\n private isRtl() {\n return this.dir && this.dir.value === 'rtl';\n }\n}\n","<table class=\"mc-calendar__table\">\n <thead class=\"mc-calendar__table-header\">\n <tr>\n <th class=\"mc-calendar__table-header-divider\" colspan=\"4\"></th>\n </tr>\n </thead>\n <tbody mc-calendar-body\n [label]=\"yearLabel\"\n [rows]=\"months\"\n [todayValue]=\"todayMonth!\"\n [selectedValue]=\"selectedMonth!\"\n [labelMinRequiredCells]=\"2\"\n [numCols]=\"4\"\n [cellAspectRatio]=\"4 / 7\"\n [activeCell]=\"dateAdapter.getMonth(activeDate)\"\n (selectedValueChange)=\"onMonthSelected($event)\"\n (keydown)=\"handleCalendarBodyKeydown($event)\">\n </tbody>\n</table>\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n\n/** Datepicker data that requires internationalization. */\n@Injectable({ providedIn: 'root' })\nexport class McDatepickerIntl {\n /**\n * Stream that emits whenever the labels here are changed. Use this to notify\n * components if the labels have changed after initialization.\n */\n readonly changes: Subject<void> = new Subject<void>();\n\n /** A label for the calendar popup (used by screen readers). */\n calendarLabel: string = 'Calendar';\n\n /** A label for the button used to open the calendar popup (used by screen readers). */\n openCalendarLabel: string = 'Open calendar';\n\n /** A label for the previous month button (used by screen readers). */\n prevMonthLabel: string = 'Previous month';\n\n /** A label for the next month button (used by screen readers). */\n nextMonthLabel: string = 'Next month';\n\n /** A label for the previous year button (used by screen readers). */\n prevYearLabel: string = 'Previous year';\n\n /** A label for the next year button (used by screen readers). */\n nextYearLabel: string = 'Next year';\n\n /** A label for the previous multi-year button (used by screen readers). */\n prevMultiYearLabel: string = 'Previous 20 years';\n\n /** A label for the next multi-year button (used by screen readers). */\n nextMultiYearLabel: string = 'Next 20 years';\n\n /** A label for the 'switch to month view' button (used by screen readers). */\n switchToMonthViewLabel: string = 'Choose date';\n\n /** A label for the 'switch to year view' button (used by screen readers). */\n switchToMultiYearViewLabel: string = 'Choose month and year';\n}\n","import { ComponentPortal, ComponentType, Portal } from '@angular/cdk/portal';\nimport {\n AfterContentInit,\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { DateAdapter, MC_DATE_FORMATS, McDateFormats } from '@ptsecurity/cdk/datetime';\nimport { Subject, Subscription } from 'rxjs';\n\nimport { McCalendarCellCssClasses } from './calendar-body.component';\nimport { createMissingDateImplError } from './datepicker-errors';\nimport { McDatepickerIntl } from './datepicker-intl';\nimport { McMonthView } from './month-view.component';\nimport { McMultiYearView, yearsPerPage } from './multi-year-view.component';\nimport { McYearView } from './year-view.component';\n\n\n/**\n * Possible views for the calendar.\n * @docs-private\n */\nexport enum McCalendarView {\n Month = 'month',\n Year = 'year',\n MultiYear = 'multi-year'\n}\n\n/** Default header for McCalendar */\n@Component({\n selector: 'mc-calendar-header',\n templateUrl: 'calendar-header.html',\n exportAs: 'mcCalendarHeader',\n host: {\n class: 'mc-calendar-header'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class McCalendarHeader<D> {\n constructor(\n private readonly intl: McDatepickerIntl,\n @Inject(forwardRef(() => McCalendar)) public calendar: McCalendar<D>,\n @Optional() private readonly dateAdapter: DateAdapter<D>,\n @Optional() @Inject(MC_DATE_FORMATS) private readonly dateFormats: McDateFormats,\n changeDetectorRef: ChangeDetectorRef\n ) {\n this.calendar.stateChanges.subscribe(() => changeDetectorRef.markForCheck());\n }\n\n /** The label for the current calendar view. */\n get periodButtonText(): string {\n if (this.calendar.currentView === McCalendarView.Month) {\n const label = this.dateAdapter.format(this.calendar.activeDate, this.dateFormats.monthYearLabel);\n\n return (label[0].toLocaleUpperCase() + label.substr(1)).replace('.', '');\n }\n\n if (this.calendar.currentView === McCalendarView.Year) {\n return this.dateAdapter.getYearName(this.calendar.activeDate);\n }\n\n const activeYear = this.dateAdapter.getYear(this.calendar.activeDate);\n const firstYearInView = this.dateAdapter.getYearName(\n // tslint:disable-next-line:no-magic-numbers\n this.dateAdapter.createDate(activeYear - activeYear % 24)\n );\n const lastYearInView = this.dateAdapter.getYearName(\n // tslint:disable-next-line:no-magic-numbers\n this.dateAdapter.createDate(activeYear + yearsPerPage - 1 - activeYear % 24)\n );\n\n return `${firstYearInView} \\u2013 ${lastYearInView}`;\n }\n\n get periodButtonLabel(): string {\n return this.calendar.currentView === McCalendarView.Month ?\n this.intl.switchToMultiYearViewLabel : this.intl.switchToMonthViewLabel;\n }\n\n /** The label for the previous button. */\n get prevButtonLabel(): string {\n return {\n [McCalendarView.Month]: this.intl.prevMonthLabel,\n [McCalendarView.Year]: this.intl.prevYearLabel,\n [McCalendarView.MultiYear]: this.intl.prevMultiYearLabel\n }[this.calendar.currentView];\n }\n\n /** The label for the next button. */\n get nextButtonLabel(): string {\n return {\n [McCalendarView.Month]: this.intl.nextMonthLabel,\n [McCalendarView.Year]: this.intl.nextYearLabel,\n [McCalendarView.MultiYear]: this.intl.nextMultiYearLabel\n }[this.calendar.currentView];\n }\n\n /** Handles user clicks on the period label. */\n currentPeriodClicked(): void {\n if (([McCalendarView.Month, McCalendarView.MultiYear] as McCalendarView[]).includes(this.calendar.currentView)) {\n this.calendar.currentView = McCalendarView.Year;\n } else if (this.calendar.currentView === McCalendarView.Year) {\n this.calendar.currentView = McCalendarView.Month;\n }\n }\n\n /** Handles user clicks on the previous button. */\n previousClicked(): void {\n if (this.calendar.currentView === McCalendarView.Month) {\n this.calendar.activeDate = this.dateAdapter.addCalendarMonths(this.calendar.activeDate, -1);\n } else {\n this.calendar.activeDate = this.dateAdapter.addCalendarYears(\n this.calendar.activeDate,\n this.calendar.currentView === McCalendarView.Year ? -1 : -yearsPerPage\n );\n }\n }\n\n /** Handles user clicks on the next button. */\n nextClicked(): void {\n if (this.calendar.currentView === McCalendarView.Month) {\n this.calendar.activeDate = this.dateAdapter.addCalendarMonths(this.calendar.activeDate, 1);\n } else {\n this.calendar.activeDate = this.dateAdapter.addCalendarYears(\n this.calendar.activeDate,\n this.calendar.currentView === McCalendarView.Year ? 1 : yearsPerPage\n );\n }\n }\n\n /** Whether the previous period button is enabled. */\n previousEnabled(): boolean {\n if (!this.calendar.minDate) { return true; }\n\n return !this.calendar.minDate || !this.isSameView(this.calendar.activeDate, this.calendar.minDate);\n }\n\n /** Whether the next period button is enabled. */\n nextEnabled(): boolean {\n return !this.calendar.maxDate || !this.isSameView(this.calendar.activeDate, this.calendar.maxDate);\n }\n\n /** Whether the two dates represent the same view in the current view mode (month or year). */\n private isSameView(firstDate: D, secondDate: D): boolean {\n const firstYear = this.dateAdapter.getYear(firstDate);\n const secondYear = this.dateAdapter.getYear(secondDate);\n\n const firstMonth = this.dateAdapter.getMonth(firstDate);\n const secondMonth = this.dateAdapter.getMonth(secondDate);\n\n if (this.calendar.currentView === McCalendarView.Month) {\n return firstYear === secondYear && firstMonth === secondMonth;\n }\n\n if (this.calendar.currentView === McCalendarView.Year) { return firstYear === secondYear; }\n\n // Otherwise we are in 'multi-year' view.\n return Math.floor(firstYear / yearsPerPage) === Math.floor(secondYear / yearsPerPage);\n }\n}\n\n/**\n * A calendar that is used as part of the datepicker.\n * @docs-private\n */\n@Component({\n selector: 'mc-calendar',\n exportAs: 'mcCalendar',\n templateUrl: 'calendar.html',\n styleUrls: ['calendar.scss'],\n host: {\n class: 'mc-calendar'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class McCalendar<D> implements AfterContentInit, AfterViewChecked, OnDestroy, OnChanges {\n\n /** A date representing the period (month or year) to start the calendar in. */\n @Input()\n get startAt(): D | null {\n return this._startAt;\n }\n\n set startAt(value: D | null) {\n this._startAt = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\n }\n\n /** The currently selected date. */\n @Input()\n get selected(): D | null {\n return this._selected;\n }\n\n set selected(value: D | null) {\n this._selected = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\n }\n\n /** The minimum selectable date. */\n @Input()\n get minDate(): D | null {\n return this._minDate;\n }\n\n set minDate(value: D | null) {\n this._minDate = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\n }\n\n /** The maximum selectable date. */\n @Input()\n get maxDate(): D | null {\n return this._maxDate;\n }\n\n set maxDate(value: D | null) {\n this._maxDate = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\n }\n\n /**\n * The current active date. This determines which time period is shown and which date is\n * highlighted when using keyboard navigation.\n */\n get activeDate(): D {\n return this.clampedActiveDate;\n }\n\n set activeDate(value: D) {\n this.clampedActiveDate = this.dateAdapter.clampDate(value, this.minDate, this.maxDate);\n this.stateChanges.next();\n }\n\n /** Whether the calendar is in month view. */\n get currentView(): McCalendarView {\n return this._currentView;\n }\n\n set currentView(value: McCalendarView) {\n this._currentView = value;\n this.moveFocusOnNextTick = true;\n }\n\n /** An input indicating the type of the header component, if set. */\n @Input() headerComponent: ComponentType<any>;\n\n /** A portal containing the header component type for this calendar. */\n calendarHeaderPortal: Portal<any>;\n\n /** Whether the calendar should be started in month or year view. */\n @Input() startView: McCalendarView = McCalendarView.Month;\n\n /** Function used to filter which dates are selectable. */\n @Input() dateFilter: (date: D) => boolean;\n\n /** Function that can be used to add custom CSS classes to dates. */\n @Input() dateClass: (date: D) => McCalendarCellCssClasses;\n\n /** Emits when the currently selected date changes. */\n @Output() readonly selectedChange: EventEmitter<D> = new EventEmitter<D>();\n\n /**\n * Emits the year chosen in multiyear view.\n * This doesn't imply a change on the selected date.\n */\n @Output() readonly yearSelected: EventEmitter<D> = new EventEmitter<D>();\n\n /**\n * Emits the month chosen in year view.\n * This doesn't imply a change on the selected date.\n */\n @Output() readonly monthSelected: EventEmitter<D> = new EventEmitter<D>();\n\n /** Emits when any date is selected. */\n @Output() readonly userSelection: EventEmitter<void> = new EventEmitter<void>();\n\n /** Reference to the current month view component. */\n @ViewChild(McMonthView, {static: false}) monthView: McMonthView<D>;\n\n /** Reference to the current year view component. */\n @ViewChild(McYearView, {static: false}) yearView: McYearView<D>;\n\n /** Reference to the current multi-year view component. */\n @ViewChild(McMultiYearView, {static: false}) multiYearView: McMultiYearView<D>;\n\n /**\n * Emits whenever there is a state change that the header may need to respond to.\n */\n stateChanges = new Subject<void>();\n\n private readonly intlChanges: Subscription;\n\n /**\n * Used for scheduling that focus should be moved to the active cell on the next tick.\n * We need to schedule it, rather than do it immediately, because we have to wait\n * for Angular to re-evaluate the view children.\n */\n private moveFocusOnNextTick = false;\n private _startAt: D | null;\n private _selected: D | null;\n private _minDate: D | null;\n private _maxDate: D | null;\n private clampedActiveDate: D;\n private _currentView: McCalendarView;\n\n constructor(\n intl: McDatepickerIntl,\n @Optional() private readonly dateAdapter: DateAdapter<D>,\n @Optional() @Inject(MC_DATE_FORMATS) private readonly dateFormats: McDateFormats,\n private changeDetectorRef: ChangeDetectorRef\n ) {\n if (!this.dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n\n if (!this.dateFormats) {\n throw createMissingDateImplError('MC_DATE_FORMATS');\n }\n\n this.intlChanges = intl.changes.subscribe(() => {\n changeDetectorRef.markForCheck();\n this.stateChanges.next();\n });\n }\n\n ngAfterContentInit() {\n this.calendarHeaderPortal = new ComponentPortal(this.headerComponent || McCalendarHeader);\n this.activeDate = this.startAt || this.dateAdapter.today();\n\n // Assign to the private property since we don't want to move focus on init.\n this._currentView = this.startView;\n }\n\n ngAfterViewChecked() {\n if (this.moveFocusOnNextTick) {\n this.moveFocusOnNextTick = false;\n this.focusActiveCell();\n }\n }\n\n ngOnDestroy() {\n this.intlChanges.unsubscribe();\n this.stateChanges.complete();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const change = changes.minDate || changes.maxDate || changes.dateFilter;\n\n if (change && !change.firstChange) {\n const view = this.getCurrentViewComponent();\n\n if (view) {\n // We need to `detectChanges` manually here, because the `minDate`, `maxDate` etc. are\n // passed down to the view via data bindings which won't be up-to-date when we call `init`.\n this.changeDetectorRef.detectChanges();\n view.init();\n }\n }\n\n this.stateChanges.next();\n }\n\n focusActiveCell() {\n this.getCurrentViewComponent().focusActiveCell();\n }\n\n /** Updates today's date after an update of the active date */\n updateTodaysDate() {\n const view = this.currentView === McCalendarView.Month ? this.monthView :\n (this.currentView === McCalendarView.Year ? this.yearView : this.multiYearView);\n\n view.ngAfterContentInit();\n }\n\n /** Handles date selection in the month view. */\n dateSelected(date: D): void {\n if (!this.dateAdapter.sameDate(date, this.selected)) {\n this.selectedChange.emit(date);\n }\n }\n\n /** Handles year selection in the multiyear view. */\n yearSelectedInMultiYearView(normalizedYear: D) {\n this.yearSelected.emit(normalizedYear);\n }\n\n /** Handles month selection in the year view. */\n monthSelectedInYearView(normalizedMonth: D) {\n this.monthSelected.emit(normalizedMonth);\n }\n\n userSelected(): void {\n this.userSelection.emit();\n }\n\n /** Handles year/month selection in the multi-year/year views. */\n goToDateInView(date: D, view: McCalendarView | string): void {\n this.activeDate = date;\n this.currentView = view as McCalendarView;\n }\n\n /**\n * @param obj The object to check.\n * @returns The given object if it is both a date instance and valid, otherwise null.\n */\n private getValidDateOrNull(obj: any): D | null {\n return (this.dateAdapter.isDateInstance(obj) && this.dateAdapter.isValid(obj)) ? obj : null;\n }\n\n /** Returns the component instance that corresponds to the current calendar view. */\n private getCurrentViewComponent() {\n return this.monthView || this.yearView || this.multiYearView;\n }\n}\n","<button mc-button\n [tabindex]=\"'-1'\"\n class=\"mc-button_transparent mc-calendar__period-button\"\n (click)=\"currentPeriodClicked()\">\n {{ periodButtonText }}\n\n <i class=\"mc mc-icon\"\n [class.mc-angle-up-M_16]=\"calendar.currentView !== 'month'\"\n [class.mc-angle-down-M_16]=\"calendar.currentView === 'month'\">\n </i>\n</button>\n\n<div class=\"mc-calendar-spacer\"></div>\n\n<button mc-button\n [tabindex]=\"'-1'\"\n class=\"mc-button_transparent mc-calendar__previous-button\"\n [disabled]=\"!previousEnabled()\"\n (click)=\"previousClicked()\">\n\n <i mc-icon=\"mc-angle-left-L_16\"></i>\n</button>\n\n<button mc-button\n [tabindex]=\"'-1'\"\n class=\"mc-button_transparent mc-calendar__next-button\"\n [disabled]=\"!nextEnabled()\"\n (click)=\"nextClicked()\">\n\n <i mc-icon=\"mc-angle-right-L_16\"></i>\n</button>\n","<ng-template [cdkPortalOutlet]=\"calendarHeaderPortal\"></ng-template>\n\n<div class=\"mc-calendar__content\" [ngSwitch]=\"currentView\">\n <mc-month-view\n *ngSwitchCase=\"'month'\"\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 </mc-month-view>\n\n <mc-year-view\n *ngSwitchCase=\"'year'\"\n [(activeDate)]=\"activeDate\"\n [selected]=\"selected\"\n [dateFilter]=\"dateFilter\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n (monthSelected)=\"monthSelectedInYearView($event)\"\n (selectedChange)=\"goToDateInView($event, 'multi-year')\">\n </mc-year-view>\n\n <mc-multi-year-view\n *ngSwitchCase=\"'multi-year'\"\n [(activeDate)]=\"activeDate\"\n [selected]=\"selected\"\n [dateFilter]=\"dateFilter\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n (yearSelected)=\"yearSelectedInMultiYearView($event)\"\n (selectedChange)=\"goToDateInView($event, 'month')\">\n </mc-multi-year-view>\n</div>\n","// tslint:disable:no-empty\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Output,\n Renderer2\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormGroupDirective,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgForm,\n ValidationErrors,\n Validator,\n ValidatorFn,\n Validators\n} from '@angular/forms';\nimport { DateAdapter, MC_DATE_FORMATS, McDateFormats } from '@ptsecurity/cdk/datetime';\nimport {\n UP_ARROW,\n RIGHT_ARROW,\n DOWN_ARROW,\n LEFT_ARROW,\n END,\n PAGE_DOWN,\n HOME,\n PAGE_UP,\n SPACE,\n TAB,\n ESCAPE,\n DELETE,\n BACKSPACE,\n hasModifierKey,\n isHorizontalMovement,\n isLetterKey,\n isVerticalMovement\n} from '@ptsecurity/cdk/keycodes';\nimport {\n MC_VALIDATION,\n McValidationOptions,\n setMosaicValidationForCustomFormControl,\n validationTooltipHideDelay,\n validationTooltipShowDelay\n} from '@ptsecurity/mosaic/core';\nimport { McFormFieldControl } from '@ptsecurity/mosaic/form-field';\nimport { McWarningTooltipTrigger } from '@ptsecurity/mosaic/tooltip';\nimport { Subject, Subscription } from 'rxjs';\n\nimport { createMissingDateImplError } from './datepicker-errors';\nimport { McDatepicker } from './datepicker.component';\n\n\n// tslint:disable:naming-convention\nenum DateParts {\n year = 'y',\n month = 'm',\n day = 'd'\n}\n\nexport const MAX_YEAR = 9999;\nconst YEAR_LENGTH = 4;\n\nclass DateDigit {\n maxDays = 31;\n maxMonth = 12;\n\n parse: (value: string) => number;\n\n constructor(public value: DateParts, public start: number, public length: number) {\n if (value === DateParts.day) {\n this.parse = this.parseDay;\n } else if (value === DateParts.month) {\n this.parse = this.parseMonth;\n } else if (value === DateParts.year) {\n this.parse = this.parseYear;\n }\n }\n\n get end(): number {\n return this.start + this.length;\n }\n\n get isDay(): boolean {\n return this.value === DateParts.day;\n }\n\n get isMonth(): boolean {\n return this.value === DateParts.month;\n }\n\n get isYear(): boolean {\n return this.value === DateParts.year;\n }\n\n get fullName(): string {\n if (this.isDay) { return 'date'; }\n\n if (this.isMonth) { return 'month'; }\n\n if (this.isYear) { return 'year'; }\n\n return '';\n }\n\n private parseDay(value: string): number {\n const parsedValue: number = parseInt(value);\n\n if (parsedValue === 0) { return 1; }\n\n if (parsedValue > this.maxDays) { return this.maxDays; }\n\n return parsedValue;\n }\n\n private parseMonth(value: string): number {\n const parsedValue: number = parseInt(value);\n\n if (parsedValue === 0) { return 1; }\n\n if (parsedValue > this.maxMonth) { return this.maxMonth; }\n\n return parsedValue;\n }\n\n private parseYear(value: string): number {\n const parsedValue: number = parseInt(value);\n\n if (parsedValue === 0) { return 1; }\n\n if (parsedValue > MAX_YEAR) { return parseInt(value.substring(0, YEAR_LENGTH)); }\n\n return parsedValue;\n }\n}\n\n/** @docs-private */\nexport const MC_DATEPICKER_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => McDatepickerInput),\n multi: true\n};\n\n/** @docs-private */\nexport const MC_DATEPICKER_VALIDATORS: any = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => McDatepickerInput),\n multi: true\n};\n\n\n/**\n * An event used for datepicker input and change events. We don't always have access to a native\n * input or change event because the event may have been triggered by the user clicking on the\n * calendar popup. For consistency, we always use McDatepickerInputEvent instead.\n */\nexport class McDatepickerInputEvent<D> {\n /** The new value for the target datepicker input. */\n value: D | null;\n\n constructor(\n /** Reference to the datepicker input component that emitted the event. */\n public target: McDatepickerInput<D>,\n /** Reference to the native input element associated with the datepicker input. */\n public targetElement: HTMLElement\n ) {\n this.value = this.target.value;\n }\n}\n\nlet uniqueComponentIdSuffix = 0;\n\n\n/** Directive used to connect an input to a McDatepicker. */\n@Directive({\n selector: 'input[mcDatepicker]',\n exportAs: 'mcDatepickerInput',\n providers: [\n MC_DATEPICKER_VALUE_ACCESSOR,\n MC_DATEPICKER_VALIDATORS,\n { provide: McFormFieldControl, useExisting: McDatepickerInput }\n ],\n host: {\n class: 'mc-input mc-datepicker',\n '[attr.placeholder]': 'placeholder',\n '[attr.required]': 'required',\n '[attr.disabled]': 'disabled || null',\n '[attr.min]': 'min ? toISO8601(min) : null',\n '[attr.max]': 'max ? toISO8601(max) : null',\n '[attr.autocomplete]': '\"off\"',\n\n '(paste)': 'onPaste($event)',\n '(change)': 'onChange()',\n\n '(focus)': 'focusChanged(true)',\n '(blur)': 'onBlur()',\n\n '(keydown)': 'onKeyDown($event)'\n }\n})\nexport class McDatepickerInput<D> implements McFormFieldControl<D>, ControlValueAccessor, Validator, OnDestroy {\n readonly stateChanges: Subject<void> = new Subject<void>();\n\n readonly errorState: boolean;\n\n controlType: string = 'datepicker';\n\n focused: boolean = false;\n\n datepicker: McDatepicker<D>;\n\n dateFilter: (date: D | null) => boolean;\n\n /** Emits when the value changes (either due to user input or programmatic change). */\n valueChange = new EventEmitter<D | null>();\n\n /** Emits when the disabled state has changed */\n disabledChange = new EventEmitter<boolean>();\n\n @Input() placeholder: string;\n\n @Input()\n get required(): boolean {\n return this._required;\n }\n\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n }\n\n private _required: boolean;\n\n /** The datepicker that this input is associated with. */\n @Input()\n set mcDatepicker(value: McDatepicker<D>) {\n if (!value) { return; }\n\n this.datepicker = value;\n this.datepicker.registerInput(this);\n this.datepickerSubscription.unsubscribe();\n\n this.datepickerSubscription = this.datepicker.selectedChanged\n .subscribe((selected: D) => {\n const newValue = this.saveTimePart(selected);\n\n this.value = newValue;\n this.cvaOnChange(newValue);\n this.onTouched();\n this.dateChange.emit(new McDatepickerInputEvent(this, this.elementRef.nativeElement));\n });\n }\n\n /** Function that can be used to filter out dates within the datepicker. */\n @Input()\n set mcDatepickerFilter(value: (date: D | null) => boolean) {\n this.dateFilter = value;\n this.validatorOnChange();\n }\n\n /** The value of the input. */\n @Input()\n get value(): D | null {\n return this._value;\n }\n\n set value(value: D | null) {\n let newValue = this.dateAdapter.deserialize(value);\n\n this.lastValueValid = !newValue || this.dateAdapter.isValid(newValue);\n\n newValue = this.getValidDateOrNull(newValue);\n\n const oldDate = this.value;\n this._value = newValue;\n this.formatValue(newValue);\n\n if (!this.dateAdapter.sameDate(oldDate, newValue)) {\n this.valueChange.emit(newValue);\n }\n }\n\n private _value: D | null;\n\n /** The minimum valid date. */\n @Input()\n get min(): D | null {\n return this._min;\n }\n\n set min(value: D | null) {\n this._min = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\n this.validatorOnChange();\n }\n\n private _min: D | null;\n\n /** The maximum valid date. */\n @Input()\n get max(): D | null {\n return this._max;\n }\n\n set max(value: D | null) {\n this._max = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\n this.validatorOnChange();\n }\n\n private _max: D | null;\n\n /** Whether the datepicker-input is disabled. */\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n\n set disabled(value: boolean) {\n const newValue = coerceBooleanProperty(value);\n const element = this.elementRef.nativeElement;\n\n if (this._disabled !== newValue) {\n this._disabled = newValue;\n this.disabledChange.emit(newValue);\n }\n\n // We need to null check the `blur` method, because it's undefined during SSR.\n if (newValue && element.blur) {\n // Normally, native input elements automatically blur if they turn disabled. This behavior\n // is problematic, because it would mean that it triggers another change detection cycle,\n // which then causes a changed after checked error if the input element was focused before.\n element.blur();\n }\n }\n\n private _disabled: boolean = false;\n\n @Input()\n get id(): string {\n return this._id;\n }\n\n set id(value: string) {\n this._id = value || this.uid;\n }\n\n private _id: string;\n\n @Input()\n set mcValidationTooltip(tooltip: McWarningTooltipTrigger) {\n if (!tooltip) { return; }\n\n tooltip.enterDelay = validationTooltipShowDelay;\n tooltip.trigger = 'manual';\n\n tooltip.initListeners();\n\n this.incorrectInput.subscribe(() => {\n if (tooltip.isOpen) { return; }\n\n tooltip.show();\n\n setTimeout(() => tooltip.hide(), validationTooltipHideDelay);\n });\n }\n\n @Output() incorrectInput = new EventEmitter<void>();\n\n /** Emits when a `change` event is fired on this `<input>`. */\n @Output() readonly dateChange = new EventEmitter<McDatepickerInputEvent<D>>();\n\n /** Emits when an `input` event is fired on this `<input>`. */\n @Output() readonly dateInput = new EventEmitter<McDatepickerInputEvent<D>>();\n\n get empty(): boolean {\n return !this.viewValue && !this.isBadInput();\n }\n\n get viewValue(): string {\n return this.elementRef.nativeElement.value;\n }\n\n get ngControl(): any {\n return this.control;\n }\n\n get isReadOnly(): boolean {\n return this.elementRef.nativeElement.readOnly;\n }\n\n private get selectionStart(): number | null {\n return this.elementRef.nativeElement.selectionStart;\n }\n\n private set selectionStart(value: number | null) {\n this.elementRef.nativeElement.selectionStart = value;\n }\n\n private get selectionEnd(): number | null {\n return this.elementRef.nativeElement.selectionEnd;\n }\n\n private set selectionEnd(value: number | null) {\n this.elementRef.nativeElement.selectionEnd = value;\n }\n\n private control: AbstractControl;\n private readonly uid = `mc-datepicker-${uniqueComponentIdSuffix++}`;\n\n private datepickerSubscription = Subscription.EMPTY;\n\n private localeSubscription = Subscription.EMPTY;\n\n /** Whether the last value set on the input was valid. */\n private lastValueValid = false;\n\n /** The combined form control validator for this input. */\n private readonly validator: ValidatorFn | null;\n\n private separator: string;\n\n private firstDigit: DateDigit;\n private secondDigit: DateDigit;\n private thirdDigit: DateDigit;\n\n private separatorPositions: number[];\n\n constructor(\n public elementRef: ElementRef<HTMLInputElement>,\n private changeDetectorRef: ChangeDetectorRef,\n private readonly renderer: Renderer2,\n @Optional() @Inject(MC_VALIDATION) private mcValidation: McValidationOptions,\n @Optional() public parentForm: NgForm,\n @Optional() public parentFormGroup: FormGroupDirective,\n @Optional() readonly dateAdapter: DateAdapter<D>,\n @Optional() @Inject(MC_DATE_FORMATS) private readonly dateFormats: McDateFormats\n ) {\n this.validator = Validators.compose([\n this.parseValidator,\n this.minValidator,\n this.maxValidator,\n this.filterValidator\n ]);\n\n if (!this.dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n\n if (!this.dateFormats) {\n throw createMissingDateImplError('MC_DATE_FORMATS');\n }\n\n this.setFormat(dateFormats.dateInput);\n\n this.localeSubscription = dateAdapter.localeChanges\n .subscribe(this.updateLocaleParams);\n }\n\n onContainerClick() {\n this.focus();\n }\n\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n\n focusChanged(isFocused: boolean): void {\n if (isFocused !== this.focused) {\n this.focused = isFocused;\n this.onTouched();\n this.stateChanges.next();\n }\n }\n\n onTouched = () => {};\n\n ngOnDestroy() {\n this.datepickerSubscription.unsubscribe();\n this.localeSubscription.unsubscribe();\n this.valueChange.complete();\n this.disabledChange.complete();\n }\n\n /** @docs-private */\n registerOnValidatorChange(fn: () => void): void {\n this.validatorOnChange = fn;\n }\n\n /** @docs-private */\n validate(control: AbstractControl): ValidationErrors | null {\n this.setControl(control);\n\n return this.validator ? this.validator(control) : null;\n }\n\n // Implemented as part of ControlValueAccessor.\n writeValue(value: D): void {\n this.value = value;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn: (value: any) => void): void {\n this.cvaOnChange = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onKeyDown(event: KeyboardEvent): void {\n if (this.isReadOnly) { return; }\n\n // tslint:disable-next-line: deprecation\n const keyCode = event.keyCode;\n\n if (this.isLetterKey(event)) {\n event.preventDefault();\n\n this.incorrectInput.emit();\n } else if (this.isKeyForOpen(event)) {\n event.preventDefault();\n\n this.datepicker?.open();\n } else if (this.isKeyForClose(event)) {\n event.preventDefault();\n\n this.datepicker.close();\n } else if (keyCode === TAB) {\n this.datepicker.close(false);\n } else if (this.isKeyForByPass(event)) {\n return;\n } else if (keyCode === SPACE) {\n this.spaceKeyHandler(event);\n } else if ([UP_ARROW, DOWN_ARROW].includes(keyCode)) {\n event.preventDefault();\n\n this.verticalArrowKeyHandler(keyCode);\n } else if ([LEFT_ARROW, RIGHT_ARROW, HOME, PAGE_UP, END, PAGE_DOWN].includes(keyCode)) {\n event.preventDefault();\n\n this.changeCaretPosition(keyCode);\n } else if (/^\\D$/.test(event.key)) {\n event.preventDefault();\n\n const newValue = this.getNewValue(event.key, this.selectionStart as number);\n const formattedValue = this.replaceSymbols(newValue);\n\n if (newValue !== formattedValue) {\n this.setViewValue(formattedValue, true);\n\n setTimeout(this.onInput);\n } else {\n this.incorrectInput.emit();\n }\n } else {\n setTimeout(this.onInput);\n }\n }\n\n onInput = () => {\n this.correctCursorPosition();\n const formattedValue = this.replaceSymbols(this.viewValue);\n\n const newTimeObj = this.getDateFromString(formattedValue);\n this.lastValueValid = !!newTimeObj;\n\n if (!newTimeObj) {\n if (!this.viewValue) {\n this._value = null;\n this.cvaOnChange(null);\n } else {\n this.control.updateValueAndValidity();\n }\n\n return;\n }\n\n this.setViewValue(this.getTimeStringFromDate(newTimeObj, this.dateFormats.dateInput), true);\n\n this.selectNextDigitByCursor((this.selectionStart as number));\n\n this.updateValue(newTimeObj);\n }\n\n parseOnBlur = () => {\n if (!this.viewValue) { return null; }\n\n const date = this.getDefaultValue();\n\n const viewDigits: string[] = this.viewValue\n .split(this.separator)\n .map((value: string) => value)\n .filter((value) => value);\n\n const [firsViewDigit, secondViewDigit, thirdViewDigit] = viewDigits;\n\n // tslint:disable-next-line:no-magic-numbers\n if (viewDigits.length !== 3) {\n this.lastValueValid = false;\n this._value = null;\n\n return setTimeout(() => this.control.updateValueAndValidity());\n }\n\n date[this.firstDigit.fullName] = this.firstDigit.parse(firsViewDigit);\n date[this.secondDigit.fullName] = this.secondDigit.parse(secondViewDigit);\n date[this.thirdDigit.fullName] = this.thirdDigit.parse(thirdViewDigit);\n\n const [digitWithYear, viewDigitWithYear] = [this.firstDigit, this.secondDigit, this.thirdDigit]\n .reduce((acc: any, digit, index) => digit.value === DateParts.year ? [digit, viewDigits[index]] : acc, []);\n\n // tslint:disable-next-line:no-magic-numbers\n if (viewDigitWithYear.length < 3) {\n // tslint:disable-next-line:no-magic-numbers\n date.year += date.year < 30 ? 2000 : 1900;\n } else if (viewDigitWithYear.length < digitWithYear.length) {\n this.lastValueValid = false;\n this._value = null;\n\n return setTimeout(() => this.control.updateValueAndValidity());\n }\n\n if (Object.values(date).some(isNaN)) { return; }\n\n const newTimeObj = this.getValidDateOrNull(this.dateAdapter.createDateTime(\n date.year, date.month - 1, date.date, date.hours, date.minutes, date.seconds, date.milliseconds\n ));\n\n if (!newTimeObj) {\n this.lastValueValid = false;\n this._value = null;\n this.cvaOnChange(null);\n\n return setTimeout(() => this.control.updateValueAndValidity());\n }\n\n this.lastValueValid = !!newTimeObj;\n\n this.setViewValue(this.getTimeStringFromDate(newTimeObj, this.dateFormats.dateInput), true);\n\n this.updateValue(newTimeObj);\n }\n\n onChange() {\n this.dateChange.emit(new McDatepickerInputEvent(this, this.elementRef.nativeElement));\n }\n\n /** Handles blur events on the input. */\n onBlur() {\n // Reformat the input only if we have a valid value.\n this.parseOnBlur();\n\n this.focusChanged(false);\n\n this.onInput();\n }\n\n onPaste($event) {\n $event.preventDefault();\n\n let rawValue = $event.clipboardData.getData('text');\n\n if (rawValue.match(/^\\d\\D/)) {\n rawValue = `0${rawValue}`;\n }\n rawValue.replace(/[^A-Za-z0-9]+/g, this.separator);\n\n if (/[a-z]/gi.test(rawValue)) {\n this.incorrectInput.emit();\n }\n\n const match: RegExpMatchArray | null = rawValue.match(/^(?<first>\\d+)\\W(?<second>\\d+)\\W(?<third>\\d+)$/);\n\n if (!match?.groups?.first || !match?.groups?.second || !match?.groups?.third) {\n this.setViewValue(rawValue);\n\n return rawValue;\n }\n\n const value = [match.groups.first, match.groups.second, match.groups.third].join(this.separator);\n\n const newTimeObj = this.getDateFromString(value);\n\n if (!newTimeObj) {\n this.setViewValue(value);\n\n return value;\n }\n\n this.setViewValue(this.getTimeStringFromDate(newTimeObj, this.dateFormats.dateInput));\n\n this.updateValue(newTimeObj);\n }\n\n toISO8601(value: D): string {\n return this.dateAdapter.toIso8601(value);\n }\n\n private saveTimePart(selected: D) {\n if (!this.value) { return selected; }\n\n const years = this.dateAdapter.getYear(selected);\n const month = this.dateAdapter.getMonth(selected);\n const day = this.dateAdapter.getDate(selected);\n\n const hours = this.dateAdapter.getHours(this.value);\n const minutes = this.dateAdapter.getMinutes(this.value);\n const seconds = this.dateAdapter.getSeconds(this.value);\n const milliseconds = this.dateAdapter.getMilliseconds(this.value);\n\n return this.dateAdapter.createDateTime(years, month, day, hours, minutes, seconds, milliseconds);\n }\n\n private updateLocaleParams = () => {\n this.setFormat(this.dateFormats.dateInput);\n\n this.value = this.value;\n }\n\n private setFormat(format: string): void {\n // @ts-ignore\n this.separator = format.match(/[aA-zZ]+(?<separator>\\W|\\D)[aA-zZ]+/).groups.separator;\n\n this.separatorPositions = format\n .split('')\n .reduce((acc: any, item, index: number) => this.separator === item ? [...acc, index + 1] : acc, []);\n\n this.getDigitPositions(format);\n }\n\n private updateValue(newValue: D) {\n if (!this.dateAdapter.sameDate(newValue, this.value)) {\n this._value = newValue;\n this.cvaOnChange(newValue);\n this.valueChange.emit(newValue);\n this.dateInput.emit(new McDatepickerInputEvent(this, this.elementRef.nativeElement));\n }\n\n this.control?.updateValueAndValidity({ emitEvent: false });\n }\n\n private isKeyForClose(event: KeyboardEvent): boolean {\n // tslint:disable-next-line: deprecation\n return (event.altKey && event.keyCode === UP_ARROW) || event.keyCode === ESCAPE;\n }\n\n private isKeyForOpen(event: KeyboardEvent): boolean {\n // tslint:disable-next-line: deprecation\n return event.altKey && event.keyCode === DOWN_ARROW;\n }\n\n private isLetterKey(event: KeyboardEvent): boolean {\n return isLetterKey(event) && !event.ctrlKey && !event.metaKey;\n }\n\n private isKeyForByPass(event: KeyboardEvent): boolean {\n return (hasModifierKey(event) && (isVerticalMovement(event) || isHorizontalMovement(event))) ||\n event.ctrlKey || event.metaKey ||\n // tslint:disable-next-line: deprecation\n [DELETE, BACKSPACE, TAB].includes(event.keyCode);\n }\n\n private spaceKeyHandler(event: KeyboardEvent) {\n event.preventDefault();\n\n if (this.selectionStart === this.selectionEnd) {\n const value = this.getNewValue(event.key, this.selectionStart as number);\n this.setViewValue(value);\n\n setTimeout(this.onInput);\n } else if (this.selectionStart !== this.selectionEnd) {\n this.selectNextDigit(this.selectionStart as number, true);\n }\n }\n\n private getNewValue(key: string, position: number) {\n return [this.viewValue.slice(0, position), key, this.viewValue.slice(position)].join('');\n }\n\n private setViewValue(value: string, savePosition: boolean = false) {\n if (savePosition) {\n const selectionStart = this.selectionStart;\n const selectionEnd = this.selectionEnd;\n\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', value);\n\n this.selectionStart = selectionStart;\n this.selectionEnd = selectionEnd;\n } else {\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', value);\n }\n }\n\n private replaceSymbols(value: string): string {\n return value\n .split(this.separator)\n .map((part: string) => part.replace(/^([0-9]+)\\W$/, '0$1'))\n .join(this.separator);\n }\n\n private getDateFromString(timeString: string): D | null {\n if (!timeString || timeString.length < this.firstDigit.length) { return null; }\n\n const date = this.getDefaultValue();\n\n const viewDigits: string[] = timeString\n .split(this.separator)\n .map((value: string) => value);\n\n const [firsViewDigit, secondViewDigit, thirdViewDigit] = viewDigits;\n\n\n if (viewDigits.length === 1) {\n if (/\\D/.test(firsViewDigit) || firsViewDigit.length < this.firstDigit.length) { return null; }\n\n date[this.firstDigit.fullName] = this.firstDigit.parse(firsViewDigit);\n date.month = 1;\n // tslint:disable-next-line:no-magic-numbers\n } else if (viewDigits.length === 2) {\n if (firsViewDigit.length < this.firstDigit.length || secondViewDigit.length < this.secondDigit.length) {\n return null;\n }\n\n date[this.firstDigit.fullName] = this.firstDigit.parse(firsViewDigit);\n date[this.secondDigit.fullName] = this.secondDigit.parse(secondViewDigit);\n // tslint:disable-next-line:no-magic-numbers\n } else if (viewDigits.length === 3) {\n if (\n firsViewDigit.length < this.firstDigit.length ||\n secondViewDigit.length < this.secondDigit.length ||\n thirdViewDigit.length < this.thirdDigit.length\n ) { return null; }\n\n date[this.firstDigit.fullName] = this.firstDigit.parse(firsViewDigit);\n date[this.secondDigit.fullName] = this.secondDigit.parse(secondViewDigit);\n date[this.thirdDigit.fullName] = this.thirdDigit.parse(thirdViewDigit);\n } else {\n return null;\n }\n\n return this.getValidDateOrNull(this.dateAdapter.createDateTime(\n date.year, date.month - 1, date.date, date.hours, date.minutes, date.seconds, date.milliseconds\n ));\n }\n\n private getDefaultValue() {\n const defaultValue = this.value || this.dateAdapter.today();\n\n return {\n year: this.dateAdapter.getYear(defaultValue),\n month: this.dateAdapter.getMonth(defaultValue),\n date: this.dateAdapter.getDate(defaultValue),\n hours: this.dateAdapter.getHours(defaultValue),\n minutes: this.dateAdapter.getMinutes(defaultValue),\n seconds: this.dateAdapter.getSeconds(defaultValue),\n milliseconds: this.dateAdapter.getMilliseconds(defaultValue)\n };\n }\n\n private getTimeStringFromDate(value: D | null, timeFormat: string): string {\n if (!value || !this.dateAdapter.isValid(value)) { return ''; }\n\n return this.dateAdapter.format(value, timeFormat);\n }\n\n private getDateEditMetrics(cursorPosition: number): [\n modifiedTimePart: DateParts,\n cursorStartPosition: number,\n cursorEndPosition: number\n ] {\n for (const digit of [this.firstDigit, this.secondDigit, this.thirdDigit]) {\n if (cursorPosition >= digit.start && cursorPosition <= digit.end) {\n return [digit.value, digit.start, digit.end];\n }\n }\n\n return [this.thirdDigit.value, this.thirdDigit.start, this.thirdDigit.end];\n }\n\n private incrementDate(dateVal: D, whatToIncrement: DateParts): D {\n let year = this.dateAdapter.getYear(dateVal);\n let month = this.dateAdapter.getMonth(dateVal);\n let day = this.dateAdapter.getDate(dateVal);\n\n switch (whatToIncrement) {\n case DateParts.day:\n day++;\n\n if (day > this.dateAdapter.getNumDaysInMonth(dateVal)) {\n day = 1;\n }\n\n break;\n case DateParts.month:\n month++;\n\n // tslint:disable-next-line:no-magic-numbers\n if (month > 11) {\n month = 0;\n }\n\n const lastDay = this.getLastDayFor(year, month);\n\n if (day > lastDay) {\n day = lastDay;\n }\n\n break;\n case DateParts.year:\n year++;\n\n if (year > MAX_YEAR) {\n year = 1;\n }\n\n break;\n default:\n }\n\n return this.createDate(year, month, day);\n }\n\n private getLastDayFor(year: number, month: number): number {\n return this.dateAdapter.getNumDaysInMonth(this.createDate(year, month, 1));\n }\n\n private decrementDate(dateVal: D, whatToDecrement: DateParts): D {\n let year = this.dateAdapter.getYear(dateVal);\n let month = this.dateAdapter.getMonth(dateVal);\n let day = this.dateAdapter.getDate(dateVal);\n\n switch (whatToDecrement) {\n case DateParts.day:\n day--;\n\n if (day < 1) {\n day = this.dateAdapter.getNumDaysInMonth(dateVal);\n }\n\n break;\n case DateParts.month:\n month--;\n\n if (month < 0) {\n // tslint:disable-next-line:no-magic-numbers\n month = 11;\n }\n\n const lastDay = this.getLastDayFor(year, month);\n\n if (day > lastDay) {\n day = lastDay;\n }\n\n break;\n case DateParts.year:\n year--;\n\n if (year < 1) {\n year = MAX_YEAR;\n }\n\n break;\n default:\n }\n\n return this.createDate(year, month, day);\n }\n\n private verticalArrowKeyHandler(keyCode: number): void {\n if (!this.value) { return; }\n\n let changedTime;\n\n const [modifiedTimePart, selectionStart, selectionEnd] = this.getDateEditMetrics(this.selectionStart as number);\n\n if (keyCode === UP_ARROW) {\n changedTime = this.incrementDate(this.value, modifiedTimePart);\n }\n\n if (keyCode === DOWN_ARROW) {\n changedTime = this.decrementDate(this.value, modifiedTimePart);\n }\n\n this.value = changedTime;\n\n this.selectionStart = selectionStart;\n this.selectionEnd = selectionEnd;\n\n this.cvaOnChange(changedTime);\n\n this.onChange();\n this.stateChanges.next();\n }\n\n private changeCaretPosition(keyCode: number): void {\n if (!this.value) { return; }\n\n let cursorPos = this.selectionStart as number;\n\n if ([HOME, PAGE_UP].includes(keyCode)) {\n cursorPos = 0;\n } else if ([END, PAGE_DOWN].includes(keyCode)) {\n cursorPos = this.viewValue.length;\n } else if (keyCode === LEFT_ARROW) {\n cursorPos = cursorPos === 0 ? this.viewValue.length : cursorPos - 1;\n } else if (keyCode === RIGHT_ARROW) {\n const nextSeparatorPos: number = this.viewValue.indexOf(this.separator, cursorPos);\n\n cursorPos = nextSeparatorPos ? nextSeparatorPos + 1 : 0;\n }\n\n this.selectDigitByCursor(cursorPos);\n }\n\n private selectDigitByCursor(cursorPos: number): void {\n setTimeout(() => {\n const [, selectionStart, selectionEnd] = this.getDateEditMetrics(cursorPos);\n\n this.selectionStart = selectionStart;\n this.selectionEnd = selectionEnd;\n });\n }\n\n private selectNextDigitByCursor(cursorPos: number): void {\n setTimeout(() => {\n const [, , endPositionOfCurrentDigit] = this.getDateEditMetrics(cursorPos);\n const [, selectionStart, selectionEnd] = this.getDateEditMetrics(endPositionOfCurrentDigit + 1);\n\n this.selectionStart = selectionStart;\n this.selectionEnd = selectionEnd;\n });\n }\n\n private selectNextDigit(cursorPos: number, cycle: boolean = false): void {\n setTimeout(() => {\n const lastValue = cycle ? 0 : cursorPos;\n const nextSeparatorPos: number = this.viewValue.indexOf(this.separator, cursorPos);\n\n const newCursorPos = nextSeparatorPos > 0 ? nextSeparatorPos + 1 : lastValue;\n\n const [, selectionStart, selectionEnd] = this.getDateEditMetrics(newCursorPos);\n\n this.selectionStart = selectionStart;\n this.selectionEnd = selectionEnd;\n });\n }\n\n /** Checks whether the input is invalid based on the native validation. */\n private isBadInput(): boolean {\n const validity = (<HTMLInputElement> this.elementRef.nativeElement).validity;\n\n return validity && validity.badInput;\n }\n\n private cvaOnChange: (value: any) => void = () => {};\n\n private validatorOnChange = () => {};\n\n /** The form control validator for whether the input parses. */\n private parseValidator: ValidatorFn = (): ValidationErrors | null => {\n return this.focused ||\n this.empty ||\n this.lastValueValid ? null : { mcDatepickerParse: { text: this.elementRef.nativeElement.value } };\n }\n\n /** The form control validator for the min date. */\n private minValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n const controlValue = this.getValidDateOrNull(this.dateAdapter.deserialize(control.value));\n\n return !this.min || !controlValue || this.dateAdapter.compareDateTime(this.min, controlValue) <= 0 ?\n null :\n { mcDatepickerMin: { min: this.min, actual: controlValue } };\n }\n\n /** The form control validator for the max date. */\n private maxValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n const controlValue = this.getValidDateOrNull(this.dateAdapter.deserialize(control.value));\n\n return !this.max || !controlValue || this.dateAdapter.compareDateTime(this.max, controlValue) >= 0 ?\n null :\n { mcDatepickerMax: { max: this.max, actual: controlValue } };\n }\n\n /** The form control validator for the date filter. */\n private filterValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n const controlValue = this.getValidDateOrNull(this.dateAdapter.deserialize(control.value));\n\n return !this.dateFilter || !controlValue || this.dateFilter(controlValue) ?\n null : { mcDatepickerFilter: true };\n }\n\n /** Formats a value and sets it on the input element. */\n private formatValue(value: D | null) {\n const formattedValue = value ? this.dateAdapter.format(value, this.dateFormats.dateInput) : '';\n\n this.setViewValue(formattedValue);\n }\n\n /**\n * @param obj The object to check.\n * @returns The given object if it is both a date instance and valid, otherwise null.\n */\n private getValidDateOrNull(obj: any): D | null {\n return (this.dateAdapter.isDateInstance(obj) && this.dateAdapter.isValid(obj)) ? obj : null;\n }\n\n private setControl(control: AbstractControl) {\n if (this.control) { return; }\n\n this.control = control;\n\n this.control.valueChanges\n .subscribe((value) => this._value = value);\n\n if (this.mcValidation.useValidation) {\n setMosaicValidationForCustomFormControl(this, this.changeDetectorRef);\n }\n }\n\n private getDigitPositions(format: string) {\n const formatInLowerCase = format.toLowerCase();\n\n formatInLowerCase\n .split('')\n .reduce(\n ({ prev, length, start }: any, value: string, index: number, arr) => {\n if (value === this.separator || (arr.length - 1) === index) {\n if (!this.firstDigit) {\n this.firstDigit = new DateDigit(prev, start, length);\n } else if (!this.secondDigit) {\n this.secondDigit = new DateDigit(prev, start, length);\n } else if (!this.thirdDigit) {\n this.thirdDigit = new DateDigit(prev, start, arr.length - start);\n }\n\n // tslint:disable:no-parameter-reassignment\n length = 0;\n start = index + 1;\n } else {\n length++;\n }\n\n return { prev: value, length, start };\n },\n { length: 0, start: 0 }\n );\n\n if (!this.firstDigit || !this.secondDigit || !this.thirdDigit) {\n Error(`Can' t use this format: ${format}`);\n }\n }\n\n private createDate(year: number, month: number, day: number): D {\n return this.dateAdapter.createDateTime(\n year,\n month,\n day,\n this.dateAdapter.getHours(this.value as D),\n this.dateAdapter.getMinutes(this.value as D),\n this.dateAdapter.getSeconds(this.value as D),\n this.dateAdapter.getMilliseconds(this.value as D)\n );\n }\n\n private correctCursorPosition() {\n if (this.selectionStart && this.separatorPositions.includes(this.selectionStart)) {\n this.selectionStart = this.selectionStart - 1;\n }\n }\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n Directive,\n Input,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n ViewEncapsulation,\n ViewChild\n} from '@angular/core';\nimport { McButton } from '@ptsecurity/mosaic/button';\nimport { merge, of as observableOf, Subscription } from 'rxjs';\n\nimport { McDatepickerIntl } from './datepicker-intl';\nimport { McDatepicker } from './datepicker.component';\n\n\n/** Can be used to override the icon of a `mcDatepickerToggle`. */\n@Directive({\n selector: '[mcDatepickerToggleIcon]'\n})\nexport class McDatepickerToggleIcon {}\n\n\n@Component({\n selector: 'mc-datepicker-toggle',\n templateUrl: 'datepicker-toggle.html',\n styleUrls: ['datepicker-toggle.scss'],\n host: {\n class: 'mc-datepicker-toggle',\n '[class.mc-active]': 'datepicker && datepicker.opened'\n },\n exportAs: 'mcDatepickerToggle',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class McDatepickerToggle<D> implements AfterContentInit, OnChanges, OnDestroy {\n /** Whether the toggle button is disabled. */\n @Input()\n get disabled(): boolean {\n return this._disabled === undefined ? this.datepicker.disabled : this._disabled;\n }\n\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n }\n\n /** Datepicker instance that the button will toggle. */\n @Input('for') datepicker: McDatepicker<D>;\n\n /** Tabindex for the toggle. */\n @Input() tabIndex: number | null;\n\n /** Custom icon set by the consumer. */\n @ContentChild(McDatepickerToggleIcon, { static: false }) customIcon: McDatepickerToggleIcon;\n\n /** Underlying button element. */\n @ViewChild('button', { static: false }) button: McButton;\n private stateChanges = Subscription.EMPTY;\n\n private _disabled: boolean;\n\n constructor(public intl: McDatepickerIntl, private changeDetectorRef: ChangeDetectorRef) {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.datepicker) {\n this.watchStateChanges();\n }\n }\n\n ngOnDestroy() {\n this.stateChanges.unsubscribe();\n }\n\n ngAfterContentInit() {\n this.watchStateChanges();\n }\n\n open(event: Event): void {\n if (this.datepicker && !this.disabled) {\n this.datepicker.open();\n event.stopPropagation();\n }\n }\n\n private watchStateChanges() {\n const datepickerDisabled = this.datepicker ? this.datepicker.disabledChange : observableOf();\n\n const inputDisabled = this.datepicker && this.datepicker.datepickerInput ?\n this.datepicker.datepickerInput.disabledChange : observableOf();\n\n const datepickerToggled = this.datepicker ?\n merge(this.datepicker.openedStream, this.datepicker.closedStream) :\n observableOf();\n\n this.stateChanges.unsubscribe();\n\n this.stateChanges = merge(\n this.intl.changes,\n datepickerDisabled,\n inputDisabled,\n datepickerToggled\n ).subscribe(() => this.changeDetectorRef.markForCheck());\n }\n}\n","<!--todo need simplify this-->\n<button\n #button\n mc-button\n type=\"button\"\n class=\"mc-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\" mc-icon=\"mc-calendar_16\" class=\"mc-datepicker-toggle__default-icon\"></i>\n\n <ng-content select=\"[mcDatepickerToggleIcon]\"></ng-content>\n</button>\n","import {\n animate,\n state,\n style,\n transition,\n trigger,\n AnimationTriggerMetadata\n} from '@angular/animations';\n\n\n/**\n * Animations used by the mosaic datepicker.\n * @docs-private\n */\nexport const mcDatepickerAnimations: {\n readonly transformPanel: AnimationTriggerMetadata;\n readonly fadeInCalendar: AnimationTriggerMetadata;\n} = {\n /** Transforms the height of the datepicker's calendar. */\n transformPanel: trigger('transformPanel', [\n state('void', style({\n opacity: 0,\n transform: 'scale(1, 0.8)'\n })),\n transition('void => enter', animate('120ms cubic-bezier(0, 0, 0.2, 1)', style({\n opacity: 1,\n transform: 'scale(1, 1)'\n }))),\n transition('* => void', animate('100ms linear', style({ opacity: 0 })))\n ]),\n\n /** Fades in the content of the calendar. */\n fadeInCalendar: trigger('fadeInCalendar', [\n state('void', style({ opacity: 0 })),\n state('enter', style({ opacity: 1 })),\n\n // need to keep it until #12440 gets in, otherwise the exit animation will look glitchy.\n transition('void => *', animate('120ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)'))\n ])\n};\n\n// todo should be put into polyfils\n// https://github.com/angular/angular/issues/24769\nif (!Element.prototype.matches) {\n Element.prototype.matches = (Element.prototype as any).msMatchesSelector;\n}\n","// tslint:disable:no-unbound-method\n// tslint:disable:no-magic-numbers\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n Overlay,\n OverlayConfig,\n OverlayRef,\n PositionStrategy,\n ScrollStrategy\n} from '@angular/cdk/overlay';\nimport { ComponentPortal, ComponentType } from '@angular/cdk/portal';\nimport { DOCUMENT } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n EventEmitter,\n Inject,\n InjectionToken,\n Input,\n NgZone,\n OnDestroy,\n Optional,\n Output,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { DateAdapter } from '@ptsecurity/cdk/datetime';\nimport { McFormFieldControl } from '@ptsecurity/mosaic/form-field';\nimport { merge, Subject, Subscription } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\nimport { McCalendarCellCssClasses } from './calendar-body.component';\nimport { McCalendar, McCalendarView } from './calendar.component';\nimport { mcDatepickerAnimations } from './datepicker-animations';\nimport { createMissingDateImplError } from './datepicker-errors';\nimport { McDatepickerInput } from './datepicker-input.directive';\n\n\n/** Used to generate a unique ID for each datepicker instance. */\nlet datepickerUid = 0;\n\n/** Injection token that determines the scroll handling while the calendar is open. */\nexport const MC_DATEPICKER_SCROLL_STRATEGY =\n new InjectionToken<() => ScrollStrategy>('mc-datepicker-scroll-strategy');\n\n/** @docs-private */\n// tslint:disable-next-line:naming-convention\nexport function MC_DATEPICKER_SCROLL_STRATEGY_FACTORY(overlay: Overlay): () => ScrollStrategy {\n return () => overlay.scrollStrategies.reposition();\n}\n\n/** @docs-private */\nexport const MC_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: MC_DATEPICKER_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MC_DATEPICKER_SCROLL_STRATEGY_FACTORY\n};\n\n/**\n * Component used as the content for the datepicker dialog and popup. We use this instead of using\n * McCalendar directly as the content so we can control the initial focus. This also gives us a\n * place to put additional features of the popup that are not part of the calendar itself in the\n * future. (e.g. confirmation buttons).\n * @docs-private\n */\n@Component({\n selector: 'mc-datepicker__content',\n exportAs: 'mcDatepickerContent',\n templateUrl: 'datepicker-content.html',\n styleUrls: ['datepicker-content.scss'],\n host: {\n class: 'mc-datepicker__content',\n\n '[@transformPanel]': 'animationState',\n '(@transformPanel.done)': 'animationDone.next()'\n },\n animations: [\n mcDatepickerAnimations.transformPanel,\n mcDatepickerAnimations.fadeInCalendar\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class McDatepickerContent<D> implements OnDestroy {\n /** Emits when an animation has finished. */\n readonly animationDone = new Subject<void>();\n\n /** Reference to the datepicker that created the overlay. */\n datepicker: McDatepicker<D>;\n\n /** Current state of the animation. */\n animationState: 'enter' | 'void';\n\n /** Reference to the internal calendar component. */\n @ViewChild(McCalendar) calendar: McCalendar<D>;\n\n private subscriptions = new Subscription();\n\n constructor(private changeDetectorRef: ChangeDetectorRef) {}\n\n ngAfterViewInit() {\n this.subscriptions.add(this.datepicker.stateChanges.subscribe(() => {\n this.changeDetectorRef.markForCheck();\n }));\n }\n\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n this.animationDone.complete();\n }\n\n startExitAnimation() {\n this.animationState = 'void';\n this.changeDetectorRef.markForCheck();\n }\n}\n\n\n// TODO: We use a component instead of a directive here so the user can use implicit\n// template reference variables (e.g. #d vs #d=\"mcDatepicker\"). We can change this to a directive\n// if angular adds support for `exportAs: '$implicit'` on directives.\n/** Component responsible for managing the datepicker popup/dialog. */\n@Component({\n selector: 'mc-datepicker',\n template: '',\n exportAs: 'mcDatepicker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: McFormFieldControl, useExisting: McDatepicker }]\n})\nexport class McDatepicker<D> implements OnDestroy {\n @Input()\n get hasBackdrop(): boolean {\n return this._hasBackdrop;\n }\n\n set hasBackdrop(value: boolean) {\n this._hasBackdrop = coerceBooleanProperty(value);\n }\n\n private _hasBackdrop: boolean = false;\n\n /** The date to open the calendar to initially. */\n @Input()\n get startAt(): D | null {\n // If an explicit startAt is set we start there, otherwise we start at whatever the currently\n // selected value is.\n return this._startAt || (this.datepickerInput ? this.datepickerInput.value : null);\n }\n\n set startAt(value: D | null) {\n this._startAt = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\n }\n\n private _startAt: D | null;\n\n /** Whether the datepicker pop-up should be disabled. */\n @Input()\n get disabled(): boolean {\n return this._disabled === undefined && this.datepickerInput ? this.datepickerInput.disabled : this._disabled;\n }\n\n set disabled(value: boolean) {\n const newValue = coerceBooleanProperty(value);\n\n if (newValue !== this._disabled) {\n this._disabled = newValue;\n this.disabledChange.next(newValue);\n }\n }\n\n private _disabled: boolean;\n\n /** Whether the calendar is open. */\n @Input()\n get opened(): boolean {\n return this._opened;\n }\n\n set opened(value: boolean) {\n coerceBooleanProperty(value) ? this.open() : this.close();\n }\n\n private _opened = false;\n\n /** The currently selected date. */\n get selected(): D | null {\n return this.validSelected;\n }\n\n set selected(value: D | null) {\n this.validSelected = value;\n }\n\n get dateFilter(): (date: D | null) => boolean {\n return this.datepickerInput && this.datepickerInput.dateFilter;\n }\n\n get value(): D | null {\n return this.selected;\n }\n\n /** The minimum selectable date. */\n @Input() minDate: D | null;\n\n /** The maximum selectable date. */\n @Input() maxDate: D | null;\n\n /** An input indicating the type of the custom header component for the calendar, if set. */\n @Input() calendarHeaderComponent: ComponentType<any>;\n\n /** The view that the calendar should start in. */\n @Input() startView: McCalendarView = McCalendarView.Month;\n\n /**\n * Emits selected year in multiyear view.\n * This doesn't imply a change on the selected date.\n */\n @Output() readonly yearSelected: EventEmitter<D> = new EventEmitter<D>();\n\n /**\n * Emits selected month in year view.\n * This doesn't imply a change on the selected date.\n */\n @Output() readonly monthSelected: EventEmitter<D> = new EventEmitter<D>();\n\n /** Classes to be passed to the date picker panel. Supports the same syntax as `ngClass`. */\n @Input() panelClass: string | string[];\n\n /** Function that can be used to add custom CSS classes to dates. */\n @Input() dateClass: (date: D) => McCalendarCellCssClasses;\n\n @Input() backdropClass: string = 'cdk-overlay-transparent-backdrop';\n\n /** Emits when the datepicker has been opened. */\n @Output('opened') openedStream: EventEmitter<void> = new EventEmitter<void>();\n\n /** Emits when the datepicker has been closed. */\n @Output('closed') closedStream: EventEmitter<void> = new EventEmitter<void>();\n\n readonly stateChanges: Subject<void> = new Subject<void>();\n\n /** Emits when the datepicker is disabled. */\n readonly disabledChange = new Subject<boolean>();\n\n /** Emits new selected date when selected date changes. */\n readonly selectedChanged = new Subject<D>();\n\n /** The id for the datepicker calendar. */\n id: string = `mc-datepicker-${datepickerUid++}`;\n\n /** A reference to the overlay when the calendar is opened as a popup. */\n popupRef: OverlayRef | null;\n\n /** The input element this datepicker is associated with. */\n datepickerInput: McDatepickerInput<D>;\n\n private scrollStrategy: () => ScrollStrategy;\n private validSelected: D | null = null;\n\n /** A portal containing the calendar for this datepicker. */\n private calendarPortal: ComponentPortal<McDatepickerContent<D>>;\n\n /** Reference to the component instantiated in popup mode. */\n private popupComponentRef: ComponentRef<McDatepickerContent<D>> | null;\n\n /** The element that was focused before the datepicker was opened. */\n private focusedElementBeforeOpen: HTMLElement | null = null;\n\n /** Subscription to value changes in the associated input element. */\n private inputSubscription = Subscription.EMPTY;\n\n private closeSubscription = Subscription.EMPTY;\n\n constructor(\n private overlay: Overlay,\n private ngZone: NgZone,\n private viewContainerRef: ViewContainerRef,\n @Inject(MC_DATEPICKER_SCROLL_STRATEGY) scrollStrategy: any,\n @Optional() private readonly dateAdapter: DateAdapter<D>,\n @Optional() private dir: Directionality,\n @Optional() @Inject(DOCUMENT) private document: any\n ) {\n if (!this.dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n\n this.scrollStrategy = scrollStrategy;\n }\n\n ngOnDestroy() {\n this.close();\n this.inputSubscription.unsubscribe();\n this.closeSubscription.unsubscribe();\n this.disabledChange.complete();\n\n this.destroyOverlay();\n }\n\n /** Selects the given date */\n select(date: D): void {\n const oldValue = this.selected;\n this.selected = date;\n\n if (!this.dateAdapter.sameDate(oldValue, this.selected)) {\n this.selectedChanged.next(date);\n }\n }\n\n /** Emits the selected year in multiyear view */\n selectYear(normalizedYear: D): void {\n this.yearSelected.emit(normalizedYear);\n }\n\n /** Emits selected month in year view */\n selectMonth(normalizedMonth: D): void {\n this.monthSelected.emit(normalizedMonth);\n }\n\n /**\n * Register an input with this datepicker.\n * @param input The datepicker input to register with this datepicker.\n */\n registerInput(input: McDatepickerInput<D>): void {\n if (this.datepickerInput) {\n throw Error('A McDatepicker can only be associated with a single input.');\n }\n\n this.datepickerInput = input;\n this.inputSubscription = this.datepickerInput.valueChange\n .subscribe((value: D | null) => {\n this.selected = value;\n\n if (this.popupComponentRef) {\n this.popupComponentRef.instance.calendar.monthView?.init();\n this.popupComponentRef.instance.calendar.activeDate = value as D;\n }\n });\n }\n\n /** Open the calendar. */\n open(): void {\n if (this._opened || this.disabled) { return; }\n\n if (!this.datepickerInput) {\n throw Error('Attempted to open an McDatepicker with no associated input.');\n }\n\n if (this.document) {\n this.focusedElementBeforeOpen = this.document.activeElement;\n }\n\n this.openAsPopup();\n\n this._opened = true;\n this.openedStream.emit();\n }\n\n /** Close the calendar. */\n close(restoreFocus: boolean = true): void {\n if (!this._opened) { return; }\n\n if (this.popupComponentRef) {\n const instance = this.popupComponentRef.instance;\n instance.startExitAnimation();\n instance.animationDone\n .pipe(take(1))\n .subscribe(() => this.destroyOverlay());\n }\n\n if (restoreFocus) {\n this.focusedElementBeforeOpen!.focus();\n }\n\n this._opened = false;\n this.closedStream.emit();\n this.focusedElementBeforeOpen = null;\n }\n\n toggle(): void {\n if (this.datepickerInput.isReadOnly) { return; }\n\n this._opened ? this.close() : this.open();\n }\n\n /** Destroys the current overlay. */\n private destroyOverlay() {\n if (this.popupRef) {\n this.popupRef.dispose();\n this.popupRef = this.popupComponentRef = null;\n }\n }\n\n /** Open the calendar as a popup. */\n private openAsPopup(): void {\n if (!this.calendarPortal) {\n this.calendarPortal = new ComponentPortal<McDatepickerContent<D>>(\n McDatepickerContent, this.viewContainerRef\n );\n }\n\n if (!this.popupRef) {\n this.createPopup();\n }\n\n if (!this.popupRef!.hasAttached()) {\n this.popupComponentRef = this.popupRef!.attach(this.calendarPortal);\n this.popupComponentRef.instance.datepicker = this;\n\n // Update the position once the calendar has rendered.\n this.ngZone.onStable.asObservable()\n .pipe(take(1))\n .subscribe(() => this.popupRef!.updatePosition());\n }\n }\n\n /** Create the popup. */\n private createPopup(): void {\n const overlayConfig = new OverlayConfig({\n positionStrategy: this.createPopupPositionStrategy(),\n hasBackdrop: this.hasBackdrop,\n backdropClass: this.backdropClass,\n direction: this.dir,\n scrollStrategy: this.scrollStrategy(),\n panelClass: 'mc-datepicker__popup'\n });\n\n this.popupRef = this.overlay.create(overlayConfig);\n\n this.closeSubscription = this.closingActions()\n .subscribe(() => this.close(this.restoreFocus()));\n }\n\n private restoreFocus(): boolean {\n return this.document.activeElement === this.document.body;\n }\n\n private closingActions() {\n return merge(\n this.popupRef!.backdropClick(),\n this.popupRef!.outsidePointerEvents(),\n this.popupRef!.detachments()\n );\n }\n\n /** Create the popup PositionStrategy. */\n private createPopupPositionStrategy(): PositionStrategy {\n return this.overlay.position()\n .flexibleConnectedTo(this.datepickerInput.elementRef)\n .withTransformOriginOn('.mc-datepicker__content')\n .withFlexibleDimensions(false)\n .withViewportMargin(8)\n .withLockedPosition()\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom'\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top'\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom'\n }\n ]);\n }\n\n /**\n * @param obj The object to check.\n * @returns The given object if it is both a date instance and valid, otherwise null.\n */\n private getValidDateOrNull(obj: any): D | null {\n return (this.dateAdapter.isDateInstance(obj) && this.dateAdapter.isValid(obj)) ? obj : null;\n }\n}\n","<mc-calendar [id]=\"datepicker.id\"\n [ngClass]=\"datepicker.panelClass\"\n [startAt]=\"datepicker.startAt\"\n [startView]=\"datepicker.startView\"\n [minDate]=\"datepicker.minDate\"\n [maxDate]=\"datepicker.maxDate\"\n [dateFilter]=\"datepicker.dateFilter\"\n [headerComponent]=\"datepicker.calendarHeaderComponent\"\n [selected]=\"datepicker.selected\"\n [dateClass]=\"datepicker.dateClass\"\n [@fadeInCalendar]=\"'enter'\"\n (selectedChange)=\"datepicker.select($event)\"\n (yearSelected)=\"datepicker.selectYear($event)\"\n (monthSelected)=\"datepicker.selectMonth($event)\"\n (userSelection)=\"datepicker.close()\">\n</mc-calendar>\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { McButtonModule } from '@ptsecurity/mosaic/button';\nimport { McIconModule } from '@ptsecurity/mosaic/icon';\n\nimport { McCalendarBody } from './calendar-body.component';\nimport { McCalendar, McCalendarHeader } from './calendar.component';\nimport { McDatepickerInput } from './datepicker-input.directive';\nimport { McDatepickerIntl } from './datepicker-intl';\nimport { McDatepickerToggle, McDatepickerToggleIcon } from './datepicker-toggle.component';\nimport {\n McDatepicker,\n McDatepickerContent,\n MC_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER\n} from './datepicker.component';\nimport { McMonthView } from './month-view.component';\nimport { McMultiYearView } from './multi-year-view.component';\nimport { McYearView } from './year-view.component';\n\n\n@NgModule({\n imports: [\n CommonModule,\n McButtonModule,\n OverlayModule,\n A11yModule,\n PortalModule,\n McIconModule\n ],\n exports: [\n McCalendar,\n McCalendarBody,\n McDatepicker,\n McDatepickerContent,\n McDatepickerInput,\n McDatepickerToggle,\n McDatepickerToggleIcon,\n McMonthView,\n McYearView,\n McMultiYearView,\n McCalendarHeader,\n McButtonModule\n ],\n declarations: [\n McCalendar,\n McCalendarBody,\n McDatepicker,\n McDatepickerContent,\n McDatepickerInput,\n McDatepickerToggle,\n McDatepickerToggleIcon,\n McMonthView,\n McYearView,\n McMultiYearView,\n McCalendarHeader\n ],\n providers: [\n McDatepickerIntl,\n MC_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER\n ],\n entryComponents: [\n McDatepickerContent,\n McCalendarHeader\n ]\n})\nexport class McDatepickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i3.McCalendarBody","i4","i1.McDatepickerIntl","i2","i5.McMonthView","i6.McYearView","i7.McMultiYearView","i9","observableOf","i3","i1.McCalendar","i5"],"mappings":"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"}