@ptsecurity/mosaic 13.3.1 → 13.6.0

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 (922) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +6 -6
  3. package/_theming.scss +7128 -6885
  4. package/_visual.scss +2694 -2580
  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 -21
  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 -16
  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 -172
  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 -39
  110. package/design-tokens/legacy-2017/tokens/components/datepicker.json5 +64 -64
  111. package/design-tokens/legacy-2017/tokens/components/divider.json5 +14 -8
  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 -0
  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/modal.json5 +81 -81
  121. package/design-tokens/legacy-2017/tokens/components/navbar.json5 +70 -70
  122. package/design-tokens/legacy-2017/tokens/components/optgroup.json5 +10 -10
  123. package/design-tokens/legacy-2017/tokens/components/option.json5 +12 -12
  124. package/design-tokens/legacy-2017/tokens/components/popover.json5 +68 -68
  125. package/design-tokens/legacy-2017/tokens/components/popup.json5 +16 -18
  126. package/design-tokens/legacy-2017/tokens/components/progress-bar.json5 +13 -13
  127. package/design-tokens/legacy-2017/tokens/components/progress-spinner.json5 +7 -7
  128. package/design-tokens/legacy-2017/tokens/components/radio.json5 +44 -44
  129. package/design-tokens/legacy-2017/tokens/components/select.json5 +24 -24
  130. package/design-tokens/legacy-2017/tokens/components/sidepanel.json5 +44 -32
  131. package/design-tokens/legacy-2017/tokens/components/table.json5 +15 -15
  132. package/design-tokens/legacy-2017/tokens/components/tabs.json5 +101 -101
  133. package/design-tokens/legacy-2017/tokens/components/tags.json5 +134 -131
  134. package/design-tokens/legacy-2017/tokens/components/textarea.json5 +12 -12
  135. package/design-tokens/legacy-2017/tokens/components/timepicker.json5 +7 -7
  136. package/design-tokens/legacy-2017/tokens/components/toggle.json5 +79 -79
  137. package/design-tokens/legacy-2017/tokens/components/tooltip.json5 +83 -83
  138. package/design-tokens/legacy-2017/tokens/components/tree.json5 +15 -15
  139. package/design-tokens/legacy-2017/tokens/properties/aliases.json5 +3 -3
  140. package/design-tokens/legacy-2017/tokens/properties/colors.json5 +118 -114
  141. package/design-tokens/legacy-2017/tokens/properties/font.json5 +12 -12
  142. package/design-tokens/legacy-2017/tokens/properties/globals.json5 +49 -49
  143. package/design-tokens/legacy-2017/tokens/properties/padding.json5 +3 -3
  144. package/design-tokens/legacy-2017/tokens/properties/palette.json5 +163 -163
  145. package/design-tokens/legacy-2017/tokens/properties/typography.json5 +175 -175
  146. package/design-tokens/legacy-2017/tokens.d.ts +7843 -7758
  147. package/design-tokens/pt-2022/tokens/components/alert.json5 +83 -83
  148. package/design-tokens/pt-2022/tokens/components/autocomplete.json5 +11 -11
  149. package/design-tokens/pt-2022/tokens/components/badge.json5 +174 -174
  150. package/design-tokens/pt-2022/tokens/components/button-toggle.json5 +10 -10
  151. package/design-tokens/pt-2022/tokens/components/button.json5 +142 -142
  152. package/design-tokens/pt-2022/tokens/components/card.json5 +51 -51
  153. package/design-tokens/pt-2022/tokens/components/checkbox.json5 +97 -39
  154. package/design-tokens/pt-2022/tokens/components/datepicker.json5 +64 -64
  155. package/design-tokens/pt-2022/tokens/components/divider.json5 +14 -8
  156. package/design-tokens/pt-2022/tokens/components/dl.json5 +38 -38
  157. package/design-tokens/pt-2022/tokens/components/dropdown.json5 +48 -48
  158. package/design-tokens/pt-2022/tokens/components/form-field.json5 +92 -92
  159. package/design-tokens/pt-2022/tokens/components/forms.json5 +52 -52
  160. package/design-tokens/pt-2022/tokens/components/icon.json5 +104 -0
  161. package/design-tokens/pt-2022/tokens/components/input.json5 +12 -12
  162. package/design-tokens/pt-2022/tokens/components/link.json5 +50 -50
  163. package/design-tokens/pt-2022/tokens/components/list.json5 +13 -13
  164. package/design-tokens/pt-2022/tokens/components/modal.json5 +81 -81
  165. package/design-tokens/pt-2022/tokens/components/navbar.json5 +70 -70
  166. package/design-tokens/pt-2022/tokens/components/optgroup.json5 +10 -10
  167. package/design-tokens/pt-2022/tokens/components/option.json5 +12 -12
  168. package/design-tokens/pt-2022/tokens/components/popover.json5 +68 -68
  169. package/design-tokens/pt-2022/tokens/components/popup.json5 +16 -18
  170. package/design-tokens/pt-2022/tokens/components/progress-bar.json5 +13 -13
  171. package/design-tokens/pt-2022/tokens/components/progress-spinner.json5 +7 -7
  172. package/design-tokens/pt-2022/tokens/components/radio.json5 +44 -44
  173. package/design-tokens/pt-2022/tokens/components/select.json5 +24 -24
  174. package/design-tokens/pt-2022/tokens/components/sidepanel.json5 +44 -32
  175. package/design-tokens/pt-2022/tokens/components/table.json5 +15 -15
  176. package/design-tokens/pt-2022/tokens/components/tabs.json5 +101 -101
  177. package/design-tokens/pt-2022/tokens/components/tags.json5 +137 -131
  178. package/design-tokens/pt-2022/tokens/components/textarea.json5 +12 -12
  179. package/design-tokens/pt-2022/tokens/components/timepicker.json5 +7 -7
  180. package/design-tokens/pt-2022/tokens/components/toggle.json5 +79 -79
  181. package/design-tokens/pt-2022/tokens/components/tooltip.json5 +83 -83
  182. package/design-tokens/pt-2022/tokens/components/tree.json5 +15 -15
  183. package/design-tokens/pt-2022/tokens/properties/aliases.json5 +3 -3
  184. package/design-tokens/pt-2022/tokens/properties/colors.json5 +120 -116
  185. package/design-tokens/pt-2022/tokens/properties/font.json5 +15 -15
  186. package/design-tokens/pt-2022/tokens/properties/globals.json5 +49 -49
  187. package/design-tokens/pt-2022/tokens/properties/padding.json5 +3 -3
  188. package/design-tokens/pt-2022/tokens/properties/palette.json5 +232 -225
  189. package/design-tokens/pt-2022/tokens/properties/typography.json5 +175 -175
  190. package/design-tokens/pt-2022/tokens.d.ts +9175 -8795
  191. package/design-tokens/ptsecurity-mosaic-design-tokens.d.ts +5 -5
  192. package/design-tokens/public-api.d.ts +3 -3
  193. package/design-tokens/style-dictionary/build.js +63 -62
  194. package/design-tokens/style-dictionary/configs/css.js +13 -13
  195. package/design-tokens/style-dictionary/configs/index.js +48 -48
  196. package/design-tokens/style-dictionary/configs/js.js +9 -9
  197. package/design-tokens/style-dictionary/configs/scss.js +23 -23
  198. package/design-tokens/style-dictionary/filters/color.js +7 -7
  199. package/design-tokens/style-dictionary/filters/palette.js +7 -7
  200. package/design-tokens/style-dictionary/filters/size.js +7 -7
  201. package/design-tokens/style-dictionary/filters/typography.js +7 -7
  202. package/design-tokens/style-dictionary/formats/palette.js +25 -25
  203. package/design-tokens/style-dictionary/formats/typography.js +52 -52
  204. package/design-tokens/style-dictionary/transformGroups/css.js +13 -13
  205. package/design-tokens/style-dictionary/transformGroups/scss.js +12 -12
  206. package/design-tokens/style-dictionary/transformGroups/ts.js +11 -0
  207. package/design-tokens/style-dictionary/transforms/attribute/palette.js +9 -9
  208. package/design-tokens/style-dictionary/transforms/attribute/prefix.js +11 -11
  209. package/design-tokens/style-dictionary/transforms/attribute/size.js +8 -8
  210. package/design-tokens/style-dictionary/transforms/attribute/typography.js +9 -9
  211. package/divider/divider.component.d.ts +11 -11
  212. package/divider/divider.module.d.ts +8 -8
  213. package/divider/index.d.ts +1 -1
  214. package/divider/ptsecurity-mosaic-divider.d.ts +5 -5
  215. package/divider/public-api.d.ts +2 -2
  216. package/dl/dl.component.d.ts +26 -26
  217. package/dl/dl.module.d.ts +10 -10
  218. package/dl/index.d.ts +1 -1
  219. package/dl/ptsecurity-mosaic-dl.d.ts +5 -5
  220. package/dl/public-api.d.ts +2 -2
  221. package/dropdown/dropdown-animations.d.ts +11 -11
  222. package/dropdown/dropdown-content.directive.d.ts +32 -32
  223. package/dropdown/dropdown-errors.d.ts +17 -17
  224. package/dropdown/dropdown-item.component.d.ts +50 -50
  225. package/dropdown/dropdown-trigger.directive.d.ts +136 -135
  226. package/dropdown/dropdown.component.d.ts +121 -121
  227. package/dropdown/dropdown.module.d.ts +13 -13
  228. package/dropdown/dropdown.types.d.ts +53 -53
  229. package/dropdown/index.d.ts +1 -1
  230. package/dropdown/ptsecurity-mosaic-dropdown.d.ts +5 -5
  231. package/dropdown/public-api.d.ts +8 -8
  232. package/esm2020/autocomplete/autocomplete-origin.directive.mjs +21 -21
  233. package/esm2020/autocomplete/autocomplete-trigger.directive.mjs +555 -555
  234. package/esm2020/autocomplete/autocomplete.component.mjs +154 -154
  235. package/esm2020/autocomplete/autocomplete.module.mjs +34 -34
  236. package/esm2020/autocomplete/index.mjs +2 -2
  237. package/esm2020/autocomplete/ptsecurity-mosaic-autocomplete.mjs +4 -4
  238. package/esm2020/autocomplete/public-api.mjs +5 -5
  239. package/esm2020/button/button.component.mjs +137 -137
  240. package/esm2020/button/button.module.mjs +38 -38
  241. package/esm2020/button/index.mjs +2 -2
  242. package/esm2020/button/ptsecurity-mosaic-button.mjs +4 -4
  243. package/esm2020/button/public-api.mjs +3 -3
  244. package/esm2020/button-toggle/button-toggle.component.mjs +362 -362
  245. package/esm2020/button-toggle/button-toggle.module.mjs +19 -19
  246. package/esm2020/button-toggle/index.mjs +2 -2
  247. package/esm2020/button-toggle/ptsecurity-mosaic-button-toggle.mjs +4 -4
  248. package/esm2020/button-toggle/public-api.mjs +3 -3
  249. package/esm2020/card/card.component.mjs +80 -80
  250. package/esm2020/card/card.module.mjs +30 -30
  251. package/esm2020/card/index.mjs +2 -2
  252. package/esm2020/card/ptsecurity-mosaic-card.mjs +4 -4
  253. package/esm2020/card/public-api.mjs +3 -3
  254. package/esm2020/checkbox/checkbox-config.mjs +6 -6
  255. package/esm2020/checkbox/checkbox-module.mjs +19 -19
  256. package/esm2020/checkbox/checkbox-required-validator.mjs +27 -27
  257. package/esm2020/checkbox/checkbox.mjs +316 -315
  258. package/esm2020/checkbox/index.mjs +2 -2
  259. package/esm2020/checkbox/ptsecurity-mosaic-checkbox.mjs +4 -4
  260. package/esm2020/checkbox/public-api.mjs +5 -5
  261. package/esm2020/core/animation/animation.mjs +8 -8
  262. package/esm2020/core/animation/fade-animations.mjs +9 -9
  263. package/esm2020/core/animation/index.mjs +4 -4
  264. package/esm2020/core/animation/select-animations.mjs +45 -45
  265. package/esm2020/core/common-behaviors/color.mjs +30 -30
  266. package/esm2020/core/common-behaviors/common-module.mjs +83 -83
  267. package/esm2020/core/common-behaviors/constructor.mjs +2 -2
  268. package/esm2020/core/common-behaviors/disabled.mjs +17 -17
  269. package/esm2020/core/common-behaviors/error-state.mjs +31 -31
  270. package/esm2020/core/common-behaviors/index.mjs +6 -6
  271. package/esm2020/core/common-behaviors/tabindex.mjs +18 -18
  272. package/esm2020/core/error/error-options.mjs +26 -26
  273. package/esm2020/core/formatters/date/formatter.mjs +359 -359
  274. package/esm2020/core/formatters/date/templates/en-US.mjs +281 -281
  275. package/esm2020/core/formatters/date/templates/ru-RU.mjs +281 -281
  276. package/esm2020/core/formatters/index.mjs +20 -20
  277. package/esm2020/core/formatters/number/formatter.mjs +105 -105
  278. package/esm2020/core/forms/forms-module.mjs +24 -24
  279. package/esm2020/core/forms/forms.directive.mjs +66 -66
  280. package/esm2020/core/forms/index.mjs +3 -3
  281. package/esm2020/core/highlight/highlight.pipe.mjs +17 -17
  282. package/esm2020/core/highlight/index.mjs +19 -19
  283. package/esm2020/core/index.mjs +2 -2
  284. package/esm2020/core/label/label-options.mjs +4 -4
  285. package/esm2020/core/line/line.mjs +70 -70
  286. package/esm2020/core/option/action.mjs +121 -121
  287. package/esm2020/core/option/index.mjs +5 -5
  288. package/esm2020/core/option/optgroup.mjs +31 -31
  289. package/esm2020/core/option/option-module.mjs +21 -21
  290. package/esm2020/core/option/option.mjs +257 -257
  291. package/esm2020/core/overlay/overlay-position-map.mjs +244 -244
  292. package/esm2020/core/pop-up/constants.mjs +34 -34
  293. package/esm2020/core/pop-up/index.mjs +4 -4
  294. package/esm2020/core/pop-up/pop-up-trigger.mjs +239 -239
  295. package/esm2020/core/pop-up/pop-up.mjs +94 -94
  296. package/esm2020/core/ptsecurity-mosaic-core.mjs +4 -4
  297. package/esm2020/core/public-api.mjs +18 -18
  298. package/esm2020/core/select/constants.mjs +27 -27
  299. package/esm2020/core/select/errors.mjs +26 -26
  300. package/esm2020/core/select/events.mjs +2 -2
  301. package/esm2020/core/select/index.mjs +4 -4
  302. package/esm2020/core/selection/constants.mjs +6 -6
  303. package/esm2020/core/selection/index.mjs +4 -4
  304. package/esm2020/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +49 -37
  305. package/esm2020/core/selection/pseudo-checkbox/pseudo-checkbox.module.mjs +18 -18
  306. package/esm2020/core/services/measure-scrollbar.service.mjs +48 -48
  307. package/esm2020/core/utils/index.mjs +2 -2
  308. package/esm2020/core/utils/public-api.mjs +2 -2
  309. package/esm2020/core/utils/utils.mjs +5 -5
  310. package/esm2020/core/validation/index.mjs +2 -2
  311. package/esm2020/core/validation/validation.mjs +118 -89
  312. package/esm2020/core/version.mjs +3 -3
  313. package/esm2020/datepicker/calendar-body.component.mjs +106 -106
  314. package/esm2020/datepicker/calendar.component.mjs +362 -362
  315. package/esm2020/datepicker/datepicker-animations.mjs +32 -32
  316. package/esm2020/datepicker/datepicker-errors.mjs +6 -6
  317. package/esm2020/datepicker/datepicker-input.directive.mjs +936 -900
  318. package/esm2020/datepicker/datepicker-intl.mjs +40 -40
  319. package/esm2020/datepicker/datepicker-module.mjs +107 -107
  320. package/esm2020/datepicker/datepicker-toggle.component.mjs +86 -86
  321. package/esm2020/datepicker/datepicker.component.mjs +408 -408
  322. package/esm2020/datepicker/index.mjs +2 -2
  323. package/esm2020/datepicker/month-view.component.mjs +257 -257
  324. package/esm2020/datepicker/multi-year-view.component.mjs +218 -218
  325. package/esm2020/datepicker/ptsecurity-mosaic-datepicker.mjs +4 -4
  326. package/esm2020/datepicker/public-api.mjs +12 -12
  327. package/esm2020/datepicker/year-view.component.mjs +253 -253
  328. package/esm2020/design-tokens/index.mjs +2 -2
  329. package/esm2020/design-tokens/legacy-2017/tokens.mjs +1137 -1052
  330. package/esm2020/design-tokens/pt-2022/tokens.mjs +1207 -1112
  331. package/esm2020/design-tokens/ptsecurity-mosaic-design-tokens.mjs +4 -4
  332. package/esm2020/design-tokens/public-api.mjs +4 -4
  333. package/esm2020/divider/divider.component.mjs +39 -39
  334. package/esm2020/divider/divider.module.mjs +18 -18
  335. package/esm2020/divider/index.mjs +2 -2
  336. package/esm2020/divider/ptsecurity-mosaic-divider.mjs +4 -4
  337. package/esm2020/divider/public-api.mjs +3 -3
  338. package/esm2020/dl/dl.component.mjs +78 -78
  339. package/esm2020/dl/dl.module.mjs +42 -42
  340. package/esm2020/dl/index.mjs +2 -2
  341. package/esm2020/dl/ptsecurity-mosaic-dl.mjs +4 -4
  342. package/esm2020/dl/public-api.mjs +3 -3
  343. package/esm2020/dropdown/dropdown-animations.mjs +41 -41
  344. package/esm2020/dropdown/dropdown-content.directive.mjs +64 -64
  345. package/esm2020/dropdown/dropdown-errors.mjs +29 -29
  346. package/esm2020/dropdown/dropdown-item.component.mjs +139 -139
  347. package/esm2020/dropdown/dropdown-trigger.directive.mjs +489 -485
  348. package/esm2020/dropdown/dropdown.component.mjs +292 -292
  349. package/esm2020/dropdown/dropdown.module.mjs +50 -50
  350. package/esm2020/dropdown/dropdown.types.mjs +24 -24
  351. package/esm2020/dropdown/index.mjs +2 -2
  352. package/esm2020/dropdown/ptsecurity-mosaic-dropdown.mjs +4 -4
  353. package/esm2020/dropdown/public-api.mjs +9 -9
  354. package/esm2020/form-field/cleaner.mjs +23 -23
  355. package/esm2020/form-field/form-field-control.mjs +5 -5
  356. package/esm2020/form-field/form-field-errors.mjs +7 -7
  357. package/esm2020/form-field/form-field.mjs +225 -225
  358. package/esm2020/form-field/form-field.module.mjs +57 -57
  359. package/esm2020/form-field/hint.mjs +23 -23
  360. package/esm2020/form-field/index.mjs +2 -2
  361. package/esm2020/form-field/password-hint.mjs +139 -134
  362. package/esm2020/form-field/prefix.mjs +13 -13
  363. package/esm2020/form-field/ptsecurity-mosaic-form-field.mjs +4 -4
  364. package/esm2020/form-field/public-api.mjs +11 -11
  365. package/esm2020/form-field/stepper.mjs +55 -55
  366. package/esm2020/form-field/suffix.mjs +13 -13
  367. package/esm2020/icon/icon.component.mjs +44 -44
  368. package/esm2020/icon/icon.module.mjs +38 -38
  369. package/esm2020/icon/index.mjs +2 -2
  370. package/esm2020/icon/ptsecurity-mosaic-icon.mjs +4 -4
  371. package/esm2020/icon/public-api.mjs +3 -3
  372. package/esm2020/index.mjs +2 -2
  373. package/esm2020/input/index.mjs +2 -2
  374. package/esm2020/input/input-errors.mjs +4 -4
  375. package/esm2020/input/input-number-validators.mjs +92 -92
  376. package/esm2020/input/input-number.mjs +163 -163
  377. package/esm2020/input/input-password.mjs +372 -368
  378. package/esm2020/input/input-value-accessor.mjs +3 -3
  379. package/esm2020/input/input.mjs +334 -334
  380. package/esm2020/input/input.module.mjs +65 -65
  381. package/esm2020/input/ptsecurity-mosaic-input.mjs +4 -4
  382. package/esm2020/input/public-api.mjs +7 -7
  383. package/esm2020/link/index.mjs +2 -2
  384. package/esm2020/link/link.component.mjs +107 -107
  385. package/esm2020/link/link.module.mjs +26 -26
  386. package/esm2020/link/ptsecurity-mosaic-link.mjs +4 -4
  387. package/esm2020/link/public-api.mjs +3 -3
  388. package/esm2020/list/index.mjs +2 -2
  389. package/esm2020/list/list-selection.component.mjs +686 -687
  390. package/esm2020/list/list.component.mjs +44 -44
  391. package/esm2020/list/list.module.mjs +55 -55
  392. package/esm2020/list/ptsecurity-mosaic-list.mjs +4 -4
  393. package/esm2020/list/public-api.mjs +4 -4
  394. package/esm2020/modal/css-unit.pipe.mjs +17 -17
  395. package/esm2020/modal/index.mjs +2 -2
  396. package/esm2020/modal/modal-control.service.mjs +85 -85
  397. package/esm2020/modal/modal-ref.class.mjs +8 -8
  398. package/esm2020/modal/modal-util.mjs +17 -17
  399. package/esm2020/modal/modal.component.mjs +501 -501
  400. package/esm2020/modal/modal.directive.mjs +52 -52
  401. package/esm2020/modal/modal.module.mjs +72 -72
  402. package/esm2020/modal/modal.service.mjs +124 -124
  403. package/esm2020/modal/modal.type.mjs +7 -7
  404. package/esm2020/modal/ptsecurity-mosaic-modal.mjs +4 -4
  405. package/esm2020/modal/public-api.mjs +7 -7
  406. package/esm2020/navbar/index.mjs +2 -2
  407. package/esm2020/navbar/navbar-item.component.mjs +582 -584
  408. package/esm2020/navbar/navbar.component.mjs +237 -237
  409. package/esm2020/navbar/navbar.module.mjs +92 -92
  410. package/esm2020/navbar/ptsecurity-mosaic-navbar.mjs +4 -4
  411. package/esm2020/navbar/public-api.mjs +5 -5
  412. package/esm2020/navbar/vertical-navbar.animation.mjs +10 -10
  413. package/esm2020/navbar/vertical-navbar.component.mjs +114 -114
  414. package/esm2020/popover/index.mjs +2 -2
  415. package/esm2020/popover/popover-animations.mjs +16 -16
  416. package/esm2020/popover/popover-confirm.component.mjs +108 -108
  417. package/esm2020/popover/popover.component.mjs +253 -253
  418. package/esm2020/popover/popover.module.mjs +24 -24
  419. package/esm2020/popover/ptsecurity-mosaic-popover.mjs +4 -4
  420. package/esm2020/popover/public-api.mjs +5 -5
  421. package/esm2020/progress-bar/index.mjs +2 -2
  422. package/esm2020/progress-bar/progress-bar.component.mjs +42 -42
  423. package/esm2020/progress-bar/progress-bar.module.mjs +30 -30
  424. package/esm2020/progress-bar/ptsecurity-mosaic-progress-bar.mjs +4 -4
  425. package/esm2020/progress-bar/public-api.mjs +3 -3
  426. package/esm2020/progress-spinner/index.mjs +2 -2
  427. package/esm2020/progress-spinner/progress-spinner.component.mjs +46 -46
  428. package/esm2020/progress-spinner/progress-spinner.module.mjs +30 -30
  429. package/esm2020/progress-spinner/ptsecurity-mosaic-progress-spinner.mjs +4 -4
  430. package/esm2020/progress-spinner/public-api.mjs +3 -3
  431. package/esm2020/ptsecurity-mosaic.mjs +4 -4
  432. package/esm2020/public-api.mjs +2 -2
  433. package/esm2020/radio/index.mjs +2 -2
  434. package/esm2020/radio/ptsecurity-mosaic-radio.mjs +4 -4
  435. package/esm2020/radio/public-api.mjs +3 -3
  436. package/esm2020/radio/radio.component.mjs +458 -458
  437. package/esm2020/radio/radio.module.mjs +20 -20
  438. package/esm2020/select/index.mjs +2 -2
  439. package/esm2020/select/ptsecurity-mosaic-select.mjs +4 -4
  440. package/esm2020/select/public-api.mjs +4 -4
  441. package/esm2020/select/select-option.directive.mjs +65 -65
  442. package/esm2020/select/select.component.mjs +1107 -1110
  443. package/esm2020/select/select.module.mjs +73 -73
  444. package/esm2020/sidebar/index.mjs +2 -2
  445. package/esm2020/sidebar/ptsecurity-mosaic-sidebar.mjs +4 -4
  446. package/esm2020/sidebar/public-api.mjs +3 -3
  447. package/esm2020/sidebar/sidebar-animations.mjs +23 -23
  448. package/esm2020/sidebar/sidebar.component.mjs +146 -146
  449. package/esm2020/sidebar/sidebar.module.mjs +30 -30
  450. package/esm2020/sidepanel/index.mjs +2 -2
  451. package/esm2020/sidepanel/ptsecurity-mosaic-sidepanel.mjs +4 -4
  452. package/esm2020/sidepanel/public-api.mjs +7 -7
  453. package/esm2020/sidepanel/sidepanel-animations.mjs +26 -26
  454. package/esm2020/sidepanel/sidepanel-config.mjs +26 -26
  455. package/esm2020/sidepanel/sidepanel-container.component.mjs +106 -106
  456. package/esm2020/sidepanel/sidepanel-directives.mjs +159 -159
  457. package/esm2020/sidepanel/sidepanel-ref.mjs +53 -53
  458. package/esm2020/sidepanel/sidepanel.module.mjs +74 -74
  459. package/esm2020/sidepanel/sidepanel.service.mjs +167 -167
  460. package/esm2020/splitter/index.mjs +2 -2
  461. package/esm2020/splitter/ptsecurity-mosaic-splitter.mjs +4 -4
  462. package/esm2020/splitter/public-api.mjs +3 -3
  463. package/esm2020/splitter/splitter.component.mjs +482 -482
  464. package/esm2020/splitter/splitter.module.mjs +40 -40
  465. package/esm2020/table/index.mjs +2 -2
  466. package/esm2020/table/ptsecurity-mosaic-table.mjs +4 -4
  467. package/esm2020/table/public-api.mjs +3 -3
  468. package/esm2020/table/table.component.mjs +16 -16
  469. package/esm2020/table/table.module.mjs +30 -30
  470. package/esm2020/tabs/index.mjs +2 -2
  471. package/esm2020/tabs/paginated-tab-header.mjs +479 -479
  472. package/esm2020/tabs/ptsecurity-mosaic-tabs.mjs +4 -4
  473. package/esm2020/tabs/public-api.mjs +11 -11
  474. package/esm2020/tabs/tab-body.component.mjs +178 -178
  475. package/esm2020/tabs/tab-content.directive.mjs +15 -15
  476. package/esm2020/tabs/tab-group.component.mjs +350 -350
  477. package/esm2020/tabs/tab-header.component.mjs +67 -67
  478. package/esm2020/tabs/tab-label-wrapper.directive.mjs +78 -78
  479. package/esm2020/tabs/tab-label.directive.mjs +17 -17
  480. package/esm2020/tabs/tab-nav-bar/index.mjs +2 -2
  481. package/esm2020/tabs/tab-nav-bar/tab-nav-bar.mjs +110 -110
  482. package/esm2020/tabs/tab.component.mjs +133 -133
  483. package/esm2020/tabs/tabs-animations.mjs +24 -24
  484. package/esm2020/tabs/tabs.module.mjs +104 -104
  485. package/esm2020/tags/index.mjs +2 -2
  486. package/esm2020/tags/ptsecurity-mosaic-tags.mjs +4 -4
  487. package/esm2020/tags/public-api.mjs +6 -6
  488. package/esm2020/tags/tag-default-options.mjs +4 -4
  489. package/esm2020/tags/tag-input.mjs +229 -229
  490. package/esm2020/tags/tag-list.component.mjs +722 -722
  491. package/esm2020/tags/tag-text-control.mjs +2 -2
  492. package/esm2020/tags/tag.component.mjs +375 -377
  493. package/esm2020/tags/tag.module.mjs +56 -56
  494. package/esm2020/textarea/index.mjs +2 -2
  495. package/esm2020/textarea/ptsecurity-mosaic-textarea.mjs +4 -4
  496. package/esm2020/textarea/public-api.mjs +3 -3
  497. package/esm2020/textarea/textarea.component.mjs +269 -269
  498. package/esm2020/textarea/textarea.module.mjs +21 -21
  499. package/esm2020/timepicker/index.mjs +2 -2
  500. package/esm2020/timepicker/ptsecurity-mosaic-timepicker.mjs +4 -4
  501. package/esm2020/timepicker/public-api.mjs +4 -4
  502. package/esm2020/timepicker/timepicker.constants.mjs +25 -25
  503. package/esm2020/timepicker/timepicker.directive.mjs +676 -653
  504. package/esm2020/timepicker/timepicker.module.mjs +34 -34
  505. package/esm2020/toggle/index.mjs +2 -2
  506. package/esm2020/toggle/ptsecurity-mosaic-toggle.mjs +4 -4
  507. package/esm2020/toggle/public-api.mjs +3 -3
  508. package/esm2020/toggle/toggle.component.mjs +158 -158
  509. package/esm2020/toggle/toggle.module.mjs +20 -20
  510. package/esm2020/tooltip/index.mjs +2 -2
  511. package/esm2020/tooltip/ptsecurity-mosaic-tooltip.mjs +4 -4
  512. package/esm2020/tooltip/public-api.mjs +3 -3
  513. package/esm2020/tooltip/tooltip.animations.mjs +19 -19
  514. package/esm2020/tooltip/tooltip.component.mjs +295 -295
  515. package/esm2020/tooltip/tooltip.module.mjs +43 -43
  516. package/esm2020/tree/control/base-tree-control.mjs +60 -60
  517. package/esm2020/tree/control/flat-tree-control.mjs +126 -123
  518. package/esm2020/tree/control/nested-tree-control.mjs +41 -41
  519. package/esm2020/tree/control/tree-control.mjs +2 -2
  520. package/esm2020/tree/data-source/flat-data-source.mjs +162 -162
  521. package/esm2020/tree/data-source/nested-data-source.mjs +30 -30
  522. package/esm2020/tree/index.mjs +2 -2
  523. package/esm2020/tree/node.mjs +31 -31
  524. package/esm2020/tree/outlet.mjs +15 -15
  525. package/esm2020/tree/padding.directive.mjs +110 -113
  526. package/esm2020/tree/ptsecurity-mosaic-tree.mjs +4 -4
  527. package/esm2020/tree/public-api.mjs +16 -16
  528. package/esm2020/tree/toggle.mjs +80 -80
  529. package/esm2020/tree/tree-base.mjs +243 -243
  530. package/esm2020/tree/tree-errors.mjs +36 -36
  531. package/esm2020/tree/tree-option.component.mjs +236 -234
  532. package/esm2020/tree/tree-selection.component.mjs +540 -535
  533. package/esm2020/tree/tree.mjs +15 -15
  534. package/esm2020/tree/tree.module.mjs +57 -53
  535. package/esm2020/tree-select/index.mjs +2 -2
  536. package/esm2020/tree-select/ptsecurity-mosaic-tree-select.mjs +4 -4
  537. package/esm2020/tree-select/public-api.mjs +3 -3
  538. package/esm2020/tree-select/tree-select.component.mjs +929 -925
  539. package/esm2020/tree-select/tree-select.module.mjs +47 -47
  540. package/fesm2015/ptsecurity-mosaic-autocomplete.mjs +726 -726
  541. package/fesm2015/ptsecurity-mosaic-autocomplete.mjs.map +1 -1
  542. package/fesm2015/ptsecurity-mosaic-button-toggle.mjs +367 -367
  543. package/fesm2015/ptsecurity-mosaic-button-toggle.mjs.map +1 -1
  544. package/fesm2015/ptsecurity-mosaic-button.mjs +160 -160
  545. package/fesm2015/ptsecurity-mosaic-button.mjs.map +1 -1
  546. package/fesm2015/ptsecurity-mosaic-card.mjs +96 -96
  547. package/fesm2015/ptsecurity-mosaic-card.mjs.map +1 -1
  548. package/fesm2015/ptsecurity-mosaic-checkbox.mjs +349 -348
  549. package/fesm2015/ptsecurity-mosaic-checkbox.mjs.map +1 -1
  550. package/fesm2015/ptsecurity-mosaic-core.mjs +2653 -2613
  551. package/fesm2015/ptsecurity-mosaic-core.mjs.map +1 -1
  552. package/fesm2015/ptsecurity-mosaic-datepicker.mjs +2687 -2649
  553. package/fesm2015/ptsecurity-mosaic-datepicker.mjs.map +1 -1
  554. package/fesm2015/ptsecurity-mosaic-design-tokens.mjs +2440 -2175
  555. package/fesm2015/ptsecurity-mosaic-design-tokens.mjs.map +1 -1
  556. package/fesm2015/ptsecurity-mosaic-divider.mjs +48 -48
  557. package/fesm2015/ptsecurity-mosaic-divider.mjs.map +1 -1
  558. package/fesm2015/ptsecurity-mosaic-dl.mjs +108 -108
  559. package/fesm2015/ptsecurity-mosaic-dl.mjs.map +1 -1
  560. package/fesm2015/ptsecurity-mosaic-dropdown.mjs +1069 -1065
  561. package/fesm2015/ptsecurity-mosaic-dropdown.mjs.map +1 -1
  562. package/fesm2015/ptsecurity-mosaic-form-field.mjs +511 -506
  563. package/fesm2015/ptsecurity-mosaic-form-field.mjs.map +1 -1
  564. package/fesm2015/ptsecurity-mosaic-icon.mjs +73 -73
  565. package/fesm2015/ptsecurity-mosaic-icon.mjs.map +1 -1
  566. package/fesm2015/ptsecurity-mosaic-input.mjs +979 -975
  567. package/fesm2015/ptsecurity-mosaic-input.mjs.map +1 -1
  568. package/fesm2015/ptsecurity-mosaic-link.mjs +121 -121
  569. package/fesm2015/ptsecurity-mosaic-link.mjs.map +1 -1
  570. package/fesm2015/ptsecurity-mosaic-list.mjs +762 -763
  571. package/fesm2015/ptsecurity-mosaic-list.mjs.map +1 -1
  572. package/fesm2015/ptsecurity-mosaic-modal.mjs +824 -824
  573. package/fesm2015/ptsecurity-mosaic-modal.mjs.map +1 -1
  574. package/fesm2015/ptsecurity-mosaic-navbar.mjs +993 -995
  575. package/fesm2015/ptsecurity-mosaic-navbar.mjs.map +1 -1
  576. package/fesm2015/ptsecurity-mosaic-popover.mjs +364 -364
  577. package/fesm2015/ptsecurity-mosaic-popover.mjs.map +1 -1
  578. package/fesm2015/ptsecurity-mosaic-progress-bar.mjs +61 -61
  579. package/fesm2015/ptsecurity-mosaic-progress-bar.mjs.map +1 -1
  580. package/fesm2015/ptsecurity-mosaic-progress-spinner.mjs +65 -65
  581. package/fesm2015/ptsecurity-mosaic-progress-spinner.mjs.map +1 -1
  582. package/fesm2015/ptsecurity-mosaic-radio.mjs +464 -464
  583. package/fesm2015/ptsecurity-mosaic-radio.mjs.map +1 -1
  584. package/fesm2015/ptsecurity-mosaic-select.mjs +1203 -1205
  585. package/fesm2015/ptsecurity-mosaic-select.mjs.map +1 -1
  586. package/fesm2015/ptsecurity-mosaic-sidebar.mjs +185 -185
  587. package/fesm2015/ptsecurity-mosaic-sidebar.mjs.map +1 -1
  588. package/fesm2015/ptsecurity-mosaic-sidepanel.mjs +555 -555
  589. package/fesm2015/ptsecurity-mosaic-sidepanel.mjs.map +1 -1
  590. package/fesm2015/ptsecurity-mosaic-splitter.mjs +511 -511
  591. package/fesm2015/ptsecurity-mosaic-splitter.mjs.map +1 -1
  592. package/fesm2015/ptsecurity-mosaic-table.mjs +36 -36
  593. package/fesm2015/ptsecurity-mosaic-table.mjs.map +1 -1
  594. package/fesm2015/ptsecurity-mosaic-tabs.mjs +1460 -1460
  595. package/fesm2015/ptsecurity-mosaic-tabs.mjs.map +1 -1
  596. package/fesm2015/ptsecurity-mosaic-tags.mjs +1342 -1344
  597. package/fesm2015/ptsecurity-mosaic-tags.mjs.map +1 -1
  598. package/fesm2015/ptsecurity-mosaic-textarea.mjs +274 -274
  599. package/fesm2015/ptsecurity-mosaic-textarea.mjs.map +1 -1
  600. package/fesm2015/ptsecurity-mosaic-timepicker.mjs +718 -695
  601. package/fesm2015/ptsecurity-mosaic-timepicker.mjs.map +1 -1
  602. package/fesm2015/ptsecurity-mosaic-toggle.mjs +163 -163
  603. package/fesm2015/ptsecurity-mosaic-toggle.mjs.map +1 -1
  604. package/fesm2015/ptsecurity-mosaic-tooltip.mjs +344 -344
  605. package/fesm2015/ptsecurity-mosaic-tooltip.mjs.map +1 -1
  606. package/fesm2015/ptsecurity-mosaic-tree-select.mjs +945 -940
  607. package/fesm2015/ptsecurity-mosaic-tree-select.mjs.map +1 -1
  608. package/fesm2015/ptsecurity-mosaic-tree.mjs +1685 -1676
  609. package/fesm2015/ptsecurity-mosaic-tree.mjs.map +1 -1
  610. package/fesm2015/ptsecurity-mosaic.mjs +2 -2
  611. package/fesm2020/ptsecurity-mosaic-autocomplete.mjs +722 -722
  612. package/fesm2020/ptsecurity-mosaic-autocomplete.mjs.map +1 -1
  613. package/fesm2020/ptsecurity-mosaic-button-toggle.mjs +365 -365
  614. package/fesm2020/ptsecurity-mosaic-button-toggle.mjs.map +1 -1
  615. package/fesm2020/ptsecurity-mosaic-button.mjs +160 -160
  616. package/fesm2020/ptsecurity-mosaic-button.mjs.map +1 -1
  617. package/fesm2020/ptsecurity-mosaic-card.mjs +96 -96
  618. package/fesm2020/ptsecurity-mosaic-card.mjs.map +1 -1
  619. package/fesm2020/ptsecurity-mosaic-checkbox.mjs +347 -346
  620. package/fesm2020/ptsecurity-mosaic-checkbox.mjs.map +1 -1
  621. package/fesm2020/ptsecurity-mosaic-core.mjs +2682 -2642
  622. package/fesm2020/ptsecurity-mosaic-core.mjs.map +1 -1
  623. package/fesm2020/ptsecurity-mosaic-datepicker.mjs +2672 -2635
  624. package/fesm2020/ptsecurity-mosaic-datepicker.mjs.map +1 -1
  625. package/fesm2020/ptsecurity-mosaic-design-tokens.mjs +2440 -2175
  626. package/fesm2020/ptsecurity-mosaic-design-tokens.mjs.map +1 -1
  627. package/fesm2020/ptsecurity-mosaic-divider.mjs +48 -48
  628. package/fesm2020/ptsecurity-mosaic-divider.mjs.map +1 -1
  629. package/fesm2020/ptsecurity-mosaic-dl.mjs +108 -108
  630. package/fesm2020/ptsecurity-mosaic-dl.mjs.map +1 -1
  631. package/fesm2020/ptsecurity-mosaic-dropdown.mjs +1056 -1052
  632. package/fesm2020/ptsecurity-mosaic-dropdown.mjs.map +1 -1
  633. package/fesm2020/ptsecurity-mosaic-form-field.mjs +496 -491
  634. package/fesm2020/ptsecurity-mosaic-form-field.mjs.map +1 -1
  635. package/fesm2020/ptsecurity-mosaic-icon.mjs +71 -71
  636. package/fesm2020/ptsecurity-mosaic-icon.mjs.map +1 -1
  637. package/fesm2020/ptsecurity-mosaic-input.mjs +968 -964
  638. package/fesm2020/ptsecurity-mosaic-input.mjs.map +1 -1
  639. package/fesm2020/ptsecurity-mosaic-link.mjs +120 -120
  640. package/fesm2020/ptsecurity-mosaic-link.mjs.map +1 -1
  641. package/fesm2020/ptsecurity-mosaic-list.mjs +755 -756
  642. package/fesm2020/ptsecurity-mosaic-list.mjs.map +1 -1
  643. package/fesm2020/ptsecurity-mosaic-modal.mjs +820 -820
  644. package/fesm2020/ptsecurity-mosaic-modal.mjs.map +1 -1
  645. package/fesm2020/ptsecurity-mosaic-navbar.mjs +977 -979
  646. package/fesm2020/ptsecurity-mosaic-navbar.mjs.map +1 -1
  647. package/fesm2020/ptsecurity-mosaic-popover.mjs +360 -360
  648. package/fesm2020/ptsecurity-mosaic-popover.mjs.map +1 -1
  649. package/fesm2020/ptsecurity-mosaic-progress-bar.mjs +61 -61
  650. package/fesm2020/ptsecurity-mosaic-progress-bar.mjs.map +1 -1
  651. package/fesm2020/ptsecurity-mosaic-progress-spinner.mjs +65 -65
  652. package/fesm2020/ptsecurity-mosaic-progress-spinner.mjs.map +1 -1
  653. package/fesm2020/ptsecurity-mosaic-radio.mjs +462 -462
  654. package/fesm2020/ptsecurity-mosaic-radio.mjs.map +1 -1
  655. package/fesm2020/ptsecurity-mosaic-select.mjs +1198 -1201
  656. package/fesm2020/ptsecurity-mosaic-select.mjs.map +1 -1
  657. package/fesm2020/ptsecurity-mosaic-sidebar.mjs +185 -185
  658. package/fesm2020/ptsecurity-mosaic-sidebar.mjs.map +1 -1
  659. package/fesm2020/ptsecurity-mosaic-sidepanel.mjs +552 -552
  660. package/fesm2020/ptsecurity-mosaic-sidepanel.mjs.map +1 -1
  661. package/fesm2020/ptsecurity-mosaic-splitter.mjs +511 -511
  662. package/fesm2020/ptsecurity-mosaic-splitter.mjs.map +1 -1
  663. package/fesm2020/ptsecurity-mosaic-table.mjs +36 -36
  664. package/fesm2020/ptsecurity-mosaic-table.mjs.map +1 -1
  665. package/fesm2020/ptsecurity-mosaic-tabs.mjs +1445 -1445
  666. package/fesm2020/ptsecurity-mosaic-tabs.mjs.map +1 -1
  667. package/fesm2020/ptsecurity-mosaic-tags.mjs +1335 -1337
  668. package/fesm2020/ptsecurity-mosaic-tags.mjs.map +1 -1
  669. package/fesm2020/ptsecurity-mosaic-textarea.mjs +272 -272
  670. package/fesm2020/ptsecurity-mosaic-textarea.mjs.map +1 -1
  671. package/fesm2020/ptsecurity-mosaic-timepicker.mjs +715 -692
  672. package/fesm2020/ptsecurity-mosaic-timepicker.mjs.map +1 -1
  673. package/fesm2020/ptsecurity-mosaic-toggle.mjs +163 -163
  674. package/fesm2020/ptsecurity-mosaic-toggle.mjs.map +1 -1
  675. package/fesm2020/ptsecurity-mosaic-tooltip.mjs +336 -336
  676. package/fesm2020/ptsecurity-mosaic-tooltip.mjs.map +1 -1
  677. package/fesm2020/ptsecurity-mosaic-tree-select.mjs +942 -938
  678. package/fesm2020/ptsecurity-mosaic-tree-select.mjs.map +1 -1
  679. package/fesm2020/ptsecurity-mosaic-tree.mjs +1672 -1663
  680. package/fesm2020/ptsecurity-mosaic-tree.mjs.map +1 -1
  681. package/fesm2020/ptsecurity-mosaic.mjs +2 -2
  682. package/form-field/cleaner.d.ts +7 -7
  683. package/form-field/form-field-control.d.ts +37 -37
  684. package/form-field/form-field-errors.d.ts +2 -2
  685. package/form-field/form-field.d.ts +69 -69
  686. package/form-field/form-field.module.d.ts +15 -15
  687. package/form-field/hint.d.ts +6 -6
  688. package/form-field/index.d.ts +1 -1
  689. package/form-field/password-hint.d.ts +40 -40
  690. package/form-field/prefix.d.ts +5 -5
  691. package/form-field/ptsecurity-mosaic-form-field.d.ts +5 -5
  692. package/form-field/public-api.d.ts +10 -10
  693. package/form-field/stepper.d.ts +11 -11
  694. package/form-field/suffix.d.ts +5 -5
  695. package/icon/icon.component.d.ts +18 -18
  696. package/icon/icon.module.d.ts +10 -10
  697. package/icon/index.d.ts +1 -1
  698. package/icon/ptsecurity-mosaic-icon.d.ts +5 -5
  699. package/icon/public-api.d.ts +2 -2
  700. package/index.d.ts +1 -1
  701. package/input/index.d.ts +1 -1
  702. package/input/input-errors.d.ts +1 -1
  703. package/input/input-number-validators.d.ts +39 -39
  704. package/input/input-number.d.ts +33 -33
  705. package/input/input-password.d.ts +123 -121
  706. package/input/input-value-accessor.d.ts +4 -4
  707. package/input/input.d.ts +116 -116
  708. package/input/input.module.d.ts +14 -14
  709. package/input/ptsecurity-mosaic-input.d.ts +5 -5
  710. package/input/public-api.d.ts +6 -6
  711. package/link/index.d.ts +1 -1
  712. package/link/link.component.d.ts +38 -38
  713. package/link/link.module.d.ts +9 -9
  714. package/link/ptsecurity-mosaic-link.d.ts +5 -5
  715. package/link/public-api.d.ts +2 -2
  716. package/list/index.d.ts +1 -1
  717. package/list/list-selection.component.d.ts +168 -168
  718. package/list/list.component.d.ts +18 -18
  719. package/list/list.module.d.ts +11 -11
  720. package/list/ptsecurity-mosaic-list.d.ts +5 -5
  721. package/list/public-api.d.ts +3 -3
  722. package/modal/README.md +33 -33
  723. package/modal/css-unit.pipe.d.ts +7 -7
  724. package/modal/index.d.ts +1 -1
  725. package/modal/modal-control.service.d.ts +20 -20
  726. package/modal/modal-ref.class.d.ts +36 -36
  727. package/modal/modal-util.d.ts +12 -12
  728. package/modal/modal.component.d.ts +126 -126
  729. package/modal/modal.directive.d.ts +17 -17
  730. package/modal/modal.module.d.ts +14 -14
  731. package/modal/modal.service.d.ts +33 -33
  732. package/modal/modal.type.d.ts +59 -59
  733. package/modal/ptsecurity-mosaic-modal.d.ts +5 -5
  734. package/modal/public-api.d.ts +6 -6
  735. package/navbar/README.md +41 -41
  736. package/navbar/index.d.ts +1 -1
  737. package/navbar/navbar-item.component.d.ts +161 -161
  738. package/navbar/navbar.component.d.ts +58 -58
  739. package/navbar/navbar.module.d.ts +14 -14
  740. package/navbar/ptsecurity-mosaic-navbar.d.ts +5 -5
  741. package/navbar/public-api.d.ts +4 -4
  742. package/navbar/vertical-navbar.animation.d.ts +2 -2
  743. package/navbar/vertical-navbar.component.d.ts +23 -23
  744. package/package.json +13 -10
  745. package/popover/README.md +32 -32
  746. package/popover/index.d.ts +1 -1
  747. package/popover/popover-animations.d.ts +4 -4
  748. package/popover/popover-confirm.component.d.ts +33 -33
  749. package/popover/popover.component.d.ts +74 -74
  750. package/popover/popover.module.d.ts +12 -12
  751. package/popover/ptsecurity-mosaic-popover.d.ts +5 -5
  752. package/popover/public-api.d.ts +4 -4
  753. package/prebuilt-themes/dark-theme.css +1 -1
  754. package/prebuilt-themes/default-theme.css +1 -1
  755. package/progress-bar/index.d.ts +1 -1
  756. package/progress-bar/progress-bar.component.d.ts +18 -18
  757. package/progress-bar/progress-bar.module.d.ts +9 -9
  758. package/progress-bar/ptsecurity-mosaic-progress-bar.d.ts +5 -5
  759. package/progress-bar/public-api.d.ts +2 -2
  760. package/progress-spinner/index.d.ts +1 -1
  761. package/progress-spinner/progress-spinner.component.d.ts +19 -19
  762. package/progress-spinner/progress-spinner.module.d.ts +9 -9
  763. package/progress-spinner/ptsecurity-mosaic-progress-spinner.d.ts +5 -5
  764. package/progress-spinner/public-api.d.ts +2 -2
  765. package/ptsecurity-mosaic.d.ts +5 -5
  766. package/public-api.d.ts +1 -1
  767. package/radio/index.d.ts +1 -1
  768. package/radio/ptsecurity-mosaic-radio.d.ts +5 -5
  769. package/radio/public-api.d.ts +2 -2
  770. package/radio/radio.component.d.ts +207 -207
  771. package/radio/radio.module.d.ts +10 -10
  772. package/schematics/README.md +35 -35
  773. package/select/index.d.ts +1 -1
  774. package/select/ptsecurity-mosaic-select.d.ts +5 -5
  775. package/select/public-api.d.ts +3 -3
  776. package/select/select-option.directive.d.ts +20 -20
  777. package/select/select.component.d.ts +307 -307
  778. package/select/select.module.d.ts +15 -15
  779. package/sidebar/index.d.ts +1 -1
  780. package/sidebar/ptsecurity-mosaic-sidebar.d.ts +5 -5
  781. package/sidebar/public-api.d.ts +2 -2
  782. package/sidebar/sidebar-animations.d.ts +8 -8
  783. package/sidebar/sidebar.component.d.ts +53 -53
  784. package/sidebar/sidebar.module.d.ts +8 -8
  785. package/sidepanel/index.d.ts +1 -1
  786. package/sidepanel/ptsecurity-mosaic-sidepanel.d.ts +5 -5
  787. package/sidepanel/public-api.d.ts +6 -6
  788. package/sidepanel/sidepanel-animations.d.ts +14 -14
  789. package/sidepanel/sidepanel-config.d.ts +25 -25
  790. package/sidepanel/sidepanel-container.component.d.ts +45 -45
  791. package/sidepanel/sidepanel-directives.d.ts +50 -50
  792. package/sidepanel/sidepanel-ref.d.ts +24 -24
  793. package/sidepanel/sidepanel.module.d.ts +15 -15
  794. package/sidepanel/sidepanel.service.d.ts +57 -57
  795. package/splitter/index.d.ts +1 -1
  796. package/splitter/ptsecurity-mosaic-splitter.d.ts +5 -5
  797. package/splitter/public-api.d.ts +2 -2
  798. package/splitter/splitter.component.d.ts +130 -130
  799. package/splitter/splitter.module.d.ts +9 -9
  800. package/table/index.d.ts +1 -1
  801. package/table/ptsecurity-mosaic-table.d.ts +5 -5
  802. package/table/public-api.d.ts +2 -2
  803. package/table/table.component.d.ts +5 -5
  804. package/table/table.module.d.ts +10 -10
  805. package/tabs/index.d.ts +1 -1
  806. package/tabs/paginated-tab-header.d.ts +179 -179
  807. package/tabs/ptsecurity-mosaic-tabs.d.ts +5 -5
  808. package/tabs/public-api.d.ts +10 -10
  809. package/tabs/tab-body.component.d.ts +95 -95
  810. package/tabs/tab-content.directive.d.ts +9 -9
  811. package/tabs/tab-group.component.d.ts +133 -133
  812. package/tabs/tab-header.component.d.ts +35 -35
  813. package/tabs/tab-label-wrapper.directive.d.ts +30 -30
  814. package/tabs/tab-label.directive.d.ts +9 -9
  815. package/tabs/tab-nav-bar/index.d.ts +1 -1
  816. package/tabs/tab-nav-bar/tab-nav-bar.d.ts +38 -38
  817. package/tabs/tab.component.d.ts +66 -66
  818. package/tabs/tabs-animations.d.ts +4 -4
  819. package/tabs/tabs.module.d.ts +20 -20
  820. package/tags/index.d.ts +1 -1
  821. package/tags/ptsecurity-mosaic-tags.d.ts +5 -5
  822. package/tags/public-api.d.ts +5 -5
  823. package/tags/tag-default-options.d.ts +8 -8
  824. package/tags/tag-input.d.ts +77 -77
  825. package/tags/tag-list.component.d.ts +240 -240
  826. package/tags/tag-text-control.d.ts +10 -10
  827. package/tags/tag.component.d.ts +135 -135
  828. package/tags/tag.module.d.ts +11 -11
  829. package/textarea/index.d.ts +1 -1
  830. package/textarea/ptsecurity-mosaic-textarea.d.ts +5 -5
  831. package/textarea/public-api.d.ts +2 -2
  832. package/textarea/textarea.component.d.ts +111 -111
  833. package/textarea/textarea.module.d.ts +11 -11
  834. package/timepicker/index.d.ts +1 -1
  835. package/timepicker/ptsecurity-mosaic-timepicker.d.ts +5 -5
  836. package/timepicker/public-api.d.ts +3 -3
  837. package/timepicker/timepicker.constants.d.ts +20 -20
  838. package/timepicker/timepicker.directive.d.ts +147 -142
  839. package/timepicker/timepicker.module.d.ts +11 -11
  840. package/toggle/index.d.ts +1 -1
  841. package/toggle/ptsecurity-mosaic-toggle.d.ts +5 -5
  842. package/toggle/public-api.d.ts +2 -2
  843. package/toggle/toggle.component.d.ts +54 -54
  844. package/toggle/toggle.module.d.ts +10 -10
  845. package/tooltip/index.d.ts +1 -1
  846. package/tooltip/ptsecurity-mosaic-tooltip.d.ts +5 -5
  847. package/tooltip/public-api.d.ts +2 -2
  848. package/tooltip/tooltip.animations.d.ts +8 -8
  849. package/tooltip/tooltip.component.d.ts +91 -91
  850. package/tooltip/tooltip.module.d.ts +9 -9
  851. package/tree/control/base-tree-control.d.ts +40 -40
  852. package/tree/control/flat-tree-control.d.ts +52 -48
  853. package/tree/control/nested-tree-control.d.ts +19 -19
  854. package/tree/control/tree-control.d.ts +44 -44
  855. package/tree/data-source/flat-data-source.d.ts +80 -80
  856. package/tree/data-source/nested-data-source.d.ts +15 -15
  857. package/tree/index.d.ts +1 -1
  858. package/tree/node.d.ts +34 -34
  859. package/tree/outlet.d.ts +9 -9
  860. package/tree/padding.directive.d.ts +45 -47
  861. package/tree/ptsecurity-mosaic-tree.d.ts +5 -5
  862. package/tree/public-api.d.ts +15 -15
  863. package/tree/toggle.d.ts +28 -28
  864. package/tree/tree-base.d.ts +97 -97
  865. package/tree/tree-errors.d.ts +25 -25
  866. package/tree/tree-option.component.d.ts +68 -68
  867. package/tree/tree-selection.component.d.ts +132 -130
  868. package/tree/tree.d.ts +6 -6
  869. package/tree/tree.module.d.ts +16 -16
  870. package/tree-select/index.d.ts +1 -1
  871. package/tree-select/ptsecurity-mosaic-tree-select.d.ts +5 -5
  872. package/tree-select/public-api.d.ts +2 -2
  873. package/tree-select/tree-select.component.d.ts +274 -269
  874. package/tree-select/tree-select.module.d.ts +14 -14
  875. package/schematics/collection.json +0 -4
  876. package/schematics/migration.json +0 -10
  877. package/schematics/ng-update/data/attribute-selectors.d.ts +0 -2
  878. package/schematics/ng-update/data/attribute-selectors.js +0 -5
  879. package/schematics/ng-update/data/attribute-selectors.js.map +0 -1
  880. package/schematics/ng-update/data/class-names.d.ts +0 -2
  881. package/schematics/ng-update/data/class-names.js +0 -5
  882. package/schematics/ng-update/data/class-names.js.map +0 -1
  883. package/schematics/ng-update/data/constructor-checks.d.ts +0 -2
  884. package/schematics/ng-update/data/constructor-checks.js +0 -5
  885. package/schematics/ng-update/data/constructor-checks.js.map +0 -1
  886. package/schematics/ng-update/data/css-selectors.d.ts +0 -2
  887. package/schematics/ng-update/data/css-selectors.js +0 -5
  888. package/schematics/ng-update/data/css-selectors.js.map +0 -1
  889. package/schematics/ng-update/data/element-selectors.d.ts +0 -2
  890. package/schematics/ng-update/data/element-selectors.js +0 -5
  891. package/schematics/ng-update/data/element-selectors.js.map +0 -1
  892. package/schematics/ng-update/data/index.d.ts +0 -10
  893. package/schematics/ng-update/data/index.js +0 -14
  894. package/schematics/ng-update/data/index.js.map +0 -1
  895. package/schematics/ng-update/data/input-names.d.ts +0 -2
  896. package/schematics/ng-update/data/input-names.js +0 -35
  897. package/schematics/ng-update/data/input-names.js.map +0 -1
  898. package/schematics/ng-update/data/method-call-checks.d.ts +0 -2
  899. package/schematics/ng-update/data/method-call-checks.js +0 -5
  900. package/schematics/ng-update/data/method-call-checks.js.map +0 -1
  901. package/schematics/ng-update/data/output-names.d.ts +0 -2
  902. package/schematics/ng-update/data/output-names.js +0 -5
  903. package/schematics/ng-update/data/output-names.js.map +0 -1
  904. package/schematics/ng-update/data/property-names.d.ts +0 -2
  905. package/schematics/ng-update/data/property-names.js +0 -5
  906. package/schematics/ng-update/data/property-names.js.map +0 -1
  907. package/schematics/ng-update/data/symbol-removal.d.ts +0 -2
  908. package/schematics/ng-update/data/symbol-removal.js +0 -5
  909. package/schematics/ng-update/data/symbol-removal.js.map +0 -1
  910. package/schematics/ng-update/index.d.ts +0 -2
  911. package/schematics/ng-update/index.js +0 -23
  912. package/schematics/ng-update/index.js.map +0 -1
  913. package/schematics/ng-update/update-9.0.0/mosaic-symbols.json +0 -255
  914. package/schematics/ng-update/update-9.0.0/secondary-entry-points-migration.d.ts +0 -7
  915. package/schematics/ng-update/update-9.0.0/secondary-entry-points-migration.js +0 -154
  916. package/schematics/ng-update/update-9.0.0/secondary-entry-points-migration.js.map +0 -1
  917. package/schematics/ng-update/upgrade-data.d.ts +0 -2
  918. package/schematics/ng-update/upgrade-data.js +0 -17
  919. package/schematics/ng-update/upgrade-data.js.map +0 -1
  920. package/schematics/tsconfig.json +0 -29
  921. package/schematics/tsconfig.lib-test.json +0 -8
  922. package/schematics/tsconfig.lib.json +0 -17
@@ -2,713 +2,736 @@ import { A11yModule } from '@angular/cdk/a11y';
2
2
  import { PlatformModule } from '@angular/cdk/platform';
3
3
  import { CommonModule } from '@angular/common';
4
4
  import * as i0 from '@angular/core';
5
- import { forwardRef, EventEmitter, Directive, Optional, Input, Output, NgModule } from '@angular/core';
5
+ import { forwardRef, EventEmitter, Directive, Optional, Inject, Input, Output, NgModule } from '@angular/core';
6
+ import * as i1 from '@angular/forms';
6
7
  import { NG_VALUE_ACCESSOR, NG_VALIDATORS, Validators, FormsModule } from '@angular/forms';
7
8
  import { coerceBooleanProperty } from '@angular/cdk/coercion';
8
9
  import { isLetterKey, hasModifierKey, isVerticalMovement, isHorizontalMovement, DELETE, BACKSPACE, TAB, SPACE, HOME, PAGE_UP, END, PAGE_DOWN, UP_ARROW, DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW } from '@ptsecurity/cdk/keycodes';
9
- import { validationTooltipShowDelay, validationTooltipHideDelay } from '@ptsecurity/mosaic/core';
10
+ import { validationTooltipShowDelay, validationTooltipHideDelay, setMosaicValidationForCustomFormControl, MC_VALIDATION } from '@ptsecurity/mosaic/core';
10
11
  import { McFormFieldControl } from '@ptsecurity/mosaic/form-field';
11
12
  import { Subject, noop } from 'rxjs';
12
- import * as i1 from '@ptsecurity/cdk/datetime';
13
+ import * as i2 from '@ptsecurity/cdk/datetime';
13
14
 
14
- // tslint:disable:naming-convention
15
- var TimeParts;
16
- (function (TimeParts) {
17
- TimeParts[TimeParts["hours"] = 0] = "hours";
18
- TimeParts[TimeParts["minutes"] = 1] = "minutes";
19
- TimeParts[TimeParts["seconds"] = 2] = "seconds";
20
- })(TimeParts || (TimeParts = {}));
21
- var TimeFormats;
22
- (function (TimeFormats) {
23
- TimeFormats["HHmmss"] = "HH:mm:ss";
24
- TimeFormats["HHmm"] = "HH:mm";
25
- })(TimeFormats || (TimeFormats = {}));
26
- const TIMEFORMAT_PLACEHOLDERS = {
27
- [TimeFormats.HHmmss]: 'чч:мм:сс',
28
- [TimeFormats.HHmm]: 'чч:мм'
29
- };
30
- const DEFAULT_TIME_FORMAT = TimeFormats.HHmm;
31
- const HOURS_MINUTES_SECONDS_REGEXP = /^([0-1][0-9]|2[0-3]):?([0-5][0-9]):?([0-5][0-9])?$/;
32
- const HOURS_MINUTES_REGEXP = /^([0-1][0-9]|2[0-3]):?([0-5][0-9])?$/;
33
- const HOURS_ONLY_REGEXP = /^([0-1][0-9]|2[0-3]):?$/;
34
- const AM_PM_FORMAT_REGEXP = /^([0-1]?[0-9]):([0-5]?[0-9]) ([ap][m]?$)/i;
35
- const SECONDS_PER_MINUTE = 59;
36
- const MINUTES_PER_HOUR = 59;
15
+ // tslint:disable:naming-convention
16
+ var TimeParts;
17
+ (function (TimeParts) {
18
+ TimeParts[TimeParts["hours"] = 0] = "hours";
19
+ TimeParts[TimeParts["minutes"] = 1] = "minutes";
20
+ TimeParts[TimeParts["seconds"] = 2] = "seconds";
21
+ })(TimeParts || (TimeParts = {}));
22
+ var TimeFormats;
23
+ (function (TimeFormats) {
24
+ TimeFormats["HHmmss"] = "HH:mm:ss";
25
+ TimeFormats["HHmm"] = "HH:mm";
26
+ })(TimeFormats || (TimeFormats = {}));
27
+ const TIMEFORMAT_PLACEHOLDERS = {
28
+ [TimeFormats.HHmmss]: 'чч:мм:сс',
29
+ [TimeFormats.HHmm]: 'чч:мм'
30
+ };
31
+ const DEFAULT_TIME_FORMAT = TimeFormats.HHmm;
32
+ const HOURS_MINUTES_SECONDS_REGEXP = /^([0-1][0-9]|2[0-3]):?([0-5][0-9]):?([0-5][0-9])?$/;
33
+ const HOURS_MINUTES_REGEXP = /^([0-1][0-9]|2[0-3]):?([0-5][0-9])?$/;
34
+ const HOURS_ONLY_REGEXP = /^([0-1][0-9]|2[0-3]):?$/;
35
+ const AM_PM_FORMAT_REGEXP = /^([0-1]?[0-9]):([0-5]?[0-9]) ([ap][m]?$)/i;
36
+ const SECONDS_PER_MINUTE = 59;
37
+ const MINUTES_PER_HOUR = 59;
37
38
  const HOURS_PER_DAY = 23;
38
39
 
39
- /** @docs-private */
40
- const MC_TIMEPICKER_VALUE_ACCESSOR = {
41
- provide: NG_VALUE_ACCESSOR,
42
- useExisting: forwardRef(() => McTimepicker),
43
- multi: true
44
- };
45
- /** @docs-private */
46
- const MC_TIMEPICKER_VALIDATORS = {
47
- provide: NG_VALIDATORS,
48
- useExisting: forwardRef(() => McTimepicker),
49
- multi: true
50
- };
51
- let uniqueComponentIdSuffix = 0;
52
- const shortFormatSize = 5;
53
- const fullFormatSize = 8;
54
- class McTimepicker {
55
- constructor(elementRef, renderer, dateAdapter) {
56
- this.elementRef = elementRef;
57
- this.renderer = renderer;
58
- this.dateAdapter = dateAdapter;
59
- /**
60
- * Implemented as part of McFormFieldControl.
61
- * @docs-private
62
- */
63
- this.stateChanges = new Subject();
64
- /**
65
- * Implemented as part of McFormFieldControl.
66
- * @docs-private
67
- */
68
- this.focused = false;
69
- /**
70
- * Implemented as part of McFormFieldControl.
71
- * @docs-private
72
- */
73
- this.controlType = 'timepicker';
74
- this._placeholder = TIMEFORMAT_PLACEHOLDERS[DEFAULT_TIME_FORMAT];
75
- this._format = DEFAULT_TIME_FORMAT;
76
- this._min = null;
77
- this._max = null;
78
- this.incorrectInput = new EventEmitter();
79
- this.uid = `mc-timepicker-${uniqueComponentIdSuffix++}`;
80
- this.lastValueValid = false;
81
- this.defaultPlaceholder = true;
82
- this.onInput = () => {
83
- const formattedValue = this.formatUserInput(this.viewValue);
84
- const newTimeObj = this.getDateFromTimeString(formattedValue);
85
- this.lastValueValid = !!newTimeObj;
86
- if (!newTimeObj) {
87
- this.onChange(null);
88
- return;
89
- }
90
- const selectionStart = this.selectionStart;
91
- const selectionEnd = this.selectionEnd;
92
- this.setViewValue(this.getTimeStringFromDate(newTimeObj, this.format));
93
- this.selectionStart = selectionStart;
94
- this.selectionEnd = selectionEnd;
95
- this.createSelectionOfTimeComponentInInput(selectionStart + 1);
96
- this.value = newTimeObj;
97
- this.onChange(newTimeObj);
98
- this.stateChanges.next();
99
- };
100
- this.parseValidator = () => {
101
- return this.focused ||
102
- this.empty ||
103
- this.lastValueValid ? null : { mcTimepickerParse: { text: this.viewValue } };
104
- };
105
- this.minValidator = (control) => {
106
- const controlValue = this.getValidDateOrNull(this.dateAdapter.deserialize(control.value));
107
- return (!this.min || !controlValue || this.compareTime(this.min, controlValue) <= 0) ?
108
- null :
109
- { mcTimepickerLowerThenMin: { min: this.min, actual: controlValue } };
110
- };
111
- this.maxValidator = (control) => {
112
- const controlValue = this.getValidDateOrNull(this.dateAdapter.deserialize(control.value));
113
- return (!this.max || !controlValue || this.compareTime(this.max, controlValue) >= 0) ?
114
- null :
115
- { mcTimepickerHigherThenMax: { max: this.max, actual: controlValue } };
116
- };
117
- // tslint:disable-next-line:no-empty
118
- this.validatorOnChange = () => { };
119
- if (!this.dateAdapter) {
120
- throw Error(`McTimepicker: No provider found for DateAdapter. You must import one of the existing ` +
121
- `modules at your application root or provide a custom implementation or use exists ones.`);
122
- }
123
- this.validator = Validators.compose([this.parseValidator, this.minValidator, this.maxValidator]);
124
- this.onChange = noop;
125
- // Force setter to be called in case id was not specified.
126
- this.id = this.id;
127
- }
128
- /**
129
- * Implemented as part of McFormFieldControl.
130
- * @docs-private
131
- */
132
- get placeholder() {
133
- return this._placeholder;
134
- }
135
- set placeholder(value) {
136
- this._placeholder = value;
137
- this.defaultPlaceholder = false;
138
- }
139
- get disabled() {
140
- return this._disabled;
141
- }
142
- set disabled(value) {
143
- this._disabled = coerceBooleanProperty(value);
144
- // Browsers may not fire the blur event if the input is disabled too quickly.
145
- // Reset from here to ensure that the element doesn't become stuck.
146
- if (this.focused) {
147
- this.focused = false;
148
- }
149
- this.stateChanges.next();
150
- }
151
- get id() {
152
- return this._id;
153
- }
154
- set id(value) {
155
- this._id = value || this.uid;
156
- }
157
- /**
158
- * Implemented as part of McFormFieldControl.
159
- * @docs-private
160
- */
161
- get required() {
162
- return this._required;
163
- }
164
- set required(value) {
165
- this._required = coerceBooleanProperty(value);
166
- }
167
- get format() {
168
- return this._format;
169
- }
170
- set format(formatValue) {
171
- this._format = Object
172
- .keys(TimeFormats)
173
- .map((timeFormatKey) => TimeFormats[timeFormatKey])
174
- .indexOf(formatValue) > -1 ? formatValue : DEFAULT_TIME_FORMAT;
175
- if (this.defaultPlaceholder) {
176
- this._placeholder = TIMEFORMAT_PLACEHOLDERS[this._format];
177
- }
178
- if (this.value) {
179
- this.updateView();
180
- }
181
- }
182
- get min() {
183
- return this._min;
184
- }
185
- set min(value) {
186
- this._min = this.getValidDateOrNull(this.dateAdapter.deserialize(value));
187
- this.validatorOnChange();
188
- }
189
- get max() {
190
- return this._max;
191
- }
192
- set max(value) {
193
- this._max = this.getValidDateOrNull(this.dateAdapter.deserialize(value));
194
- this.validatorOnChange();
195
- }
196
- get value() {
197
- return this._value;
198
- }
199
- set value(value) {
200
- const newValue = this.dateAdapter.deserialize(value);
201
- this.lastValueValid = !newValue || this.dateAdapter.isValid(newValue);
202
- this._value = this.getValidDateOrNull(newValue);
203
- this.updateView();
204
- }
205
- set mcValidationTooltip(tooltip) {
206
- if (!tooltip) {
207
- return;
208
- }
209
- tooltip.enterDelay = validationTooltipShowDelay;
210
- tooltip.trigger = 'manual';
211
- tooltip.initListeners();
212
- this.incorrectInput.subscribe(() => {
213
- if (tooltip.isOpen) {
214
- return;
215
- }
216
- tooltip.show();
217
- setTimeout(() => tooltip.hide(), validationTooltipHideDelay);
218
- });
219
- }
220
- get hasSelection() {
221
- return this.selectionStart !== this.selectionEnd;
222
- }
223
- get isFullFormat() {
224
- return this.format === TimeFormats.HHmmss;
225
- }
226
- get isShortFormat() {
227
- return this.format === TimeFormats.HHmm;
228
- }
229
- get viewValue() {
230
- return this.elementRef.nativeElement.value;
231
- }
232
- get ngControl() {
233
- return this.control;
234
- }
235
- /**
236
- * Implemented as part of McFormFieldControl.
237
- * @docs-private
238
- */
239
- get empty() {
240
- return !this.viewValue && !this.isBadInput();
241
- }
242
- get selectionStart() {
243
- return this.elementRef.nativeElement.selectionStart;
244
- }
245
- set selectionStart(value) {
246
- this.elementRef.nativeElement.selectionStart = value;
247
- }
248
- get selectionEnd() {
249
- return this.elementRef.nativeElement.selectionEnd;
250
- }
251
- set selectionEnd(value) {
252
- this.elementRef.nativeElement.selectionEnd = value;
253
- }
254
- ngOnDestroy() {
255
- this.stateChanges.complete();
256
- }
257
- getSize() {
258
- return this.isFullFormat ? fullFormatSize : shortFormatSize;
259
- }
260
- focus() {
261
- this.elementRef.nativeElement.focus();
262
- }
263
- focusChanged(isFocused) {
264
- if (isFocused !== this.focused) {
265
- this.focused = isFocused;
266
- this.onTouched();
267
- this.stateChanges.next();
268
- }
269
- }
270
- onBlur() {
271
- this.focusChanged(false);
272
- this.setViewValue(this.formatUserPaste(this.viewValue));
273
- this.onInput();
274
- }
275
- onPaste($event) {
276
- $event.preventDefault();
277
- const value = this.formatUserPaste($event.clipboardData.getData('text'));
278
- const newTimeObj = this.getDateFromTimeString(value);
279
- if (!newTimeObj) {
280
- return;
281
- }
282
- this.setViewValue(this.getTimeStringFromDate(newTimeObj, this.format));
283
- this.value = newTimeObj;
284
- this.onChange(newTimeObj);
285
- this.stateChanges.next();
286
- }
287
- /**
288
- * Implemented as part of McFormFieldControl.
289
- * @docs-private
290
- */
291
- onContainerClick() {
292
- this.focus();
293
- }
294
- onKeyDown(event) {
295
- // tslint:disable-next-line: deprecation
296
- const keyCode = event.keyCode;
297
- if (isLetterKey(event) && !event.ctrlKey && !event.metaKey) {
298
- event.preventDefault();
299
- this.incorrectInput.emit();
300
- }
301
- else if ((hasModifierKey(event) && (isVerticalMovement(event) || isHorizontalMovement(event))) ||
302
- event.ctrlKey || event.metaKey ||
303
- [DELETE, BACKSPACE, TAB].includes(keyCode)) {
304
- noop();
305
- }
306
- else if (keyCode === SPACE) {
307
- this.spaceKeyHandler(event);
308
- }
309
- else if ([HOME, PAGE_UP].includes(keyCode)) {
310
- this.createSelectionOfTimeComponentInInput(0);
311
- }
312
- else if ([END, PAGE_DOWN].includes(keyCode)) {
313
- this.createSelectionOfTimeComponentInInput(this.viewValue.length);
314
- }
315
- else if ([UP_ARROW, DOWN_ARROW].includes(keyCode)) {
316
- event.preventDefault();
317
- this.verticalArrowKeyHandler(keyCode);
318
- }
319
- else if ([LEFT_ARROW, RIGHT_ARROW].includes(keyCode)) {
320
- this.horizontalArrowKeyHandler(keyCode);
321
- }
322
- else if (/^\D$/.test(event.key)) {
323
- event.preventDefault();
324
- const newValue = this.getNewValue(event.key, this.selectionStart);
325
- const formattedValue = this.replaceSymbols(newValue);
326
- if (newValue !== formattedValue) {
327
- this.setViewValue(formattedValue);
328
- setTimeout(this.onInput);
329
- }
330
- else {
331
- this.incorrectInput.emit();
332
- }
333
- }
334
- else {
335
- setTimeout(this.onInput);
336
- }
337
- }
338
- validate(control) {
339
- this.setControl(control);
340
- return this.validator ? this.validator(control) : null;
341
- }
342
- registerOnValidatorChange(fn) {
343
- this.validatorOnChange = fn;
344
- }
345
- writeValue(value) {
346
- this.value = value;
347
- }
348
- registerOnChange(fn) {
349
- this.onChange = fn;
350
- }
351
- registerOnTouched(fn) {
352
- this.onTouched = fn;
353
- }
354
- setDisabledState(isDisabled) {
355
- this.disabled = isDisabled;
356
- }
357
- formatUserPaste(value) {
358
- var _a;
359
- if (value.match(AM_PM_FORMAT_REGEXP)) {
360
- return value;
361
- }
362
- const match = value.match(/^(\D+)?(?<hours>\d+)?(\D+)?(\D+)?(?<minutes>\d+)?(\D+)?(\D+)?(?<seconds>\d+)?(\D+)?$/);
363
- if (!((_a = match === null || match === void 0 ? void 0 : match.groups) === null || _a === void 0 ? void 0 : _a.hours)) {
364
- this.setViewValue(value);
365
- return value;
366
- }
367
- return this.replaceNumbers(Object.values(match.groups)
368
- // tslint:disable-next-line:no-magic-numbers
369
- .map((group) => (group || '').padStart(2, '0'))
370
- .join(':'));
371
- }
372
- formatUserInput(value) {
373
- return this.replaceNumbers(this.replaceSymbols(value));
374
- }
375
- replaceSymbols(value) {
376
- let formattedValue = value;
377
- const match = value.match(/^(\d\d:){0,2}(?<number>[0-9])(?<symbol>\W)(:\d\d){0,2}$/);
378
- if (match === null || match === void 0 ? void 0 : match.groups) {
379
- const { number, symbol } = match.groups;
380
- formattedValue = value.replace(number + symbol, `0${number}`);
381
- }
382
- return formattedValue;
383
- }
384
- replaceNumbers(value) {
385
- let formattedValue = value;
386
- const match = value.match(/^(?<hours>\d{0,4}):?(?<minutes>\d{0,4}):?(?<seconds>\d{0,4})$/);
387
- if (match === null || match === void 0 ? void 0 : match.groups) {
388
- const { hours, minutes, seconds } = match.groups;
389
- if (hours.length && parseInt(hours) > HOURS_PER_DAY) {
390
- formattedValue = formattedValue.replace(hours, HOURS_PER_DAY.toString());
391
- }
392
- if (minutes.length && parseInt(minutes) > MINUTES_PER_HOUR) {
393
- formattedValue = formattedValue.replace(minutes, MINUTES_PER_HOUR.toString());
394
- }
395
- if (seconds.length && parseInt(seconds) > SECONDS_PER_MINUTE) {
396
- formattedValue = formattedValue.replace(seconds, SECONDS_PER_MINUTE.toString());
397
- }
398
- }
399
- return formattedValue;
400
- }
401
- /** Checks whether the input is invalid based on the native validation. */
402
- isBadInput() {
403
- const validity = this.elementRef.nativeElement.validity;
404
- return validity && validity.badInput;
405
- }
406
- spaceKeyHandler(event) {
407
- event.preventDefault();
408
- if (this.selectionStart === this.selectionEnd) {
409
- const value = this.getNewValue(event.key, this.selectionStart);
410
- const formattedValue = this.replaceSymbols(value);
411
- if (value !== formattedValue) {
412
- this.setViewValue(formattedValue);
413
- setTimeout(this.onInput);
414
- }
415
- }
416
- else if (this.selectionStart !== this.selectionEnd) {
417
- let cursorPos = this.selectionStart;
418
- const nextDividerPos = this.viewValue.indexOf(':', cursorPos);
419
- cursorPos = nextDividerPos ? nextDividerPos + 1 : 0;
420
- this.createSelectionOfTimeComponentInInput(cursorPos);
421
- }
422
- }
423
- getNewValue(key, position) {
424
- return [this.viewValue.slice(0, position), key, this.viewValue.slice(position)].join('');
425
- }
426
- verticalArrowKeyHandler(keyCode) {
427
- if (!this.value) {
428
- return;
429
- }
430
- let changedTime;
431
- const newEditParams = this.getTimeEditMetrics(this.selectionStart);
432
- if (keyCode === UP_ARROW) {
433
- changedTime = this.incrementTime(this.value, newEditParams.modifiedTimePart);
434
- }
435
- if (keyCode === DOWN_ARROW) {
436
- changedTime = this.decrementTime(this.value, newEditParams.modifiedTimePart);
437
- }
438
- this.value = changedTime;
439
- this.selectionStart = newEditParams.cursorStartPosition;
440
- this.selectionEnd = newEditParams.cursorEndPosition;
441
- this.onChange(changedTime);
442
- this.stateChanges.next();
443
- }
444
- horizontalArrowKeyHandler(keyCode) {
445
- if (!this.value) {
446
- return;
447
- }
448
- let cursorPos = this.selectionStart;
449
- if (keyCode === LEFT_ARROW) {
450
- cursorPos = cursorPos === 0 ? this.viewValue.length : cursorPos - 1;
451
- }
452
- else if (keyCode === RIGHT_ARROW) {
453
- const nextDividerPos = this.viewValue.indexOf(':', cursorPos);
454
- cursorPos = nextDividerPos ? nextDividerPos + 1 : 0;
455
- }
456
- this.createSelectionOfTimeComponentInInput(cursorPos);
457
- }
458
- createSelectionOfTimeComponentInInput(cursorPos) {
459
- setTimeout(() => {
460
- const newEditParams = this.getTimeEditMetrics(cursorPos);
461
- this.selectionStart = newEditParams.cursorStartPosition;
462
- this.selectionEnd = newEditParams.cursorEndPosition;
463
- });
464
- }
465
- incrementTime(dateVal, whatToIncrement = TimeParts.seconds) {
466
- let hours = this.dateAdapter.getHours(dateVal);
467
- let minutes = this.dateAdapter.getMinutes(dateVal);
468
- let seconds = this.dateAdapter.getSeconds(dateVal);
469
- switch (whatToIncrement) {
470
- case TimeParts.hours:
471
- hours++;
472
- break;
473
- case TimeParts.minutes:
474
- minutes++;
475
- break;
476
- case TimeParts.seconds:
477
- seconds++;
478
- break;
479
- default:
480
- }
481
- if (seconds > SECONDS_PER_MINUTE) {
482
- seconds = 0;
483
- }
484
- if (minutes > MINUTES_PER_HOUR) {
485
- minutes = 0;
486
- }
487
- if (hours > HOURS_PER_DAY) {
488
- hours = 0;
489
- }
490
- return this.dateAdapter.createDateTime(this.dateAdapter.getYear(this.value), this.dateAdapter.getMonth(this.value), this.dateAdapter.getDate(this.value), hours, minutes, seconds, this.dateAdapter.getMilliseconds(this.value));
491
- }
492
- decrementTime(dateVal, whatToDecrement = TimeParts.seconds) {
493
- let hours = this.dateAdapter.getHours(dateVal);
494
- let minutes = this.dateAdapter.getMinutes(dateVal);
495
- let seconds = this.dateAdapter.getSeconds(dateVal);
496
- switch (whatToDecrement) {
497
- case TimeParts.hours:
498
- hours--;
499
- break;
500
- case TimeParts.minutes:
501
- minutes--;
502
- break;
503
- case TimeParts.seconds:
504
- seconds--;
505
- break;
506
- default:
507
- }
508
- if (seconds < 0) {
509
- seconds = SECONDS_PER_MINUTE;
510
- }
511
- if (minutes < 0) {
512
- minutes = MINUTES_PER_HOUR;
513
- }
514
- if (hours < 0) {
515
- hours = HOURS_PER_DAY;
516
- }
517
- return this.dateAdapter.createDateTime(this.dateAdapter.getYear(this.value), this.dateAdapter.getMonth(this.value), this.dateAdapter.getDate(this.value), hours, minutes, seconds, this.dateAdapter.getMilliseconds(this.value));
518
- }
519
- /**
520
- * @description Get params for arrow-keys (up/down) time valie edit.
521
- * @param cursorPosition Current cursor position in timeString
522
- */
523
- getTimeEditMetrics(cursorPosition) {
524
- const timeString = this.viewValue;
525
- let modifiedTimePart;
526
- let cursorStartPosition;
527
- let cursorEndPosition;
528
- const hoursIndex = 0;
529
- const minutesIndex = timeString.indexOf(':', hoursIndex + 1);
530
- const secondsIndex = minutesIndex !== -1 ? timeString.indexOf(':', minutesIndex + 1) : -1;
531
- if (secondsIndex !== -1 && cursorPosition > secondsIndex) {
532
- modifiedTimePart = TimeParts.seconds;
533
- cursorStartPosition = secondsIndex + 1;
534
- cursorEndPosition = timeString.length;
535
- }
536
- else if (minutesIndex !== -1 && cursorPosition > minutesIndex) {
537
- modifiedTimePart = TimeParts.minutes;
538
- cursorStartPosition = minutesIndex + 1;
539
- cursorEndPosition = secondsIndex > -1 ? secondsIndex : timeString.length;
540
- }
541
- else {
542
- modifiedTimePart = TimeParts.hours;
543
- cursorStartPosition = hoursIndex;
544
- cursorEndPosition = minutesIndex !== -1 ? minutesIndex : timeString.length;
545
- }
546
- return { modifiedTimePart, cursorStartPosition, cursorEndPosition };
547
- }
548
- /**
549
- * @description Create time string for displaying inside input element of UI
550
- */
551
- getTimeStringFromDate(value, timeFormat) {
552
- if (!value || !this.dateAdapter.isValid(value)) {
553
- return '';
554
- }
555
- return this.dateAdapter.format(value, timeFormat);
556
- }
557
- getDateFromTimeString(timeString) {
558
- if (!timeString) {
559
- return null;
560
- }
561
- const HMS = timeString.match(HOURS_MINUTES_SECONDS_REGEXP);
562
- const HM = timeString.match(HOURS_MINUTES_REGEXP);
563
- const H = timeString.match(HOURS_ONLY_REGEXP);
564
- const amPm = timeString.match(AM_PM_FORMAT_REGEXP);
565
- let hours = 0;
566
- let minutes = 0;
567
- let seconds = 0;
568
- // tslint:disable:no-magic-numbers
569
- if (amPm) {
570
- hours = Number(amPm[1]);
571
- minutes = Number(amPm[2]);
572
- if (/[p]/i.test(amPm[3]) || (/[a]/i.test(amPm[3]) && hours === 12)) {
573
- hours += 12;
574
- }
575
- }
576
- else if (HMS) {
577
- hours = Number(HMS[1]);
578
- minutes = Number(HMS[2]);
579
- seconds = Number(HMS[3]);
580
- }
581
- else if (HM) {
582
- hours = Number(HM[1]);
583
- minutes = Number(HM[2]);
584
- }
585
- else if (H) {
586
- hours = Number(H[1]);
587
- }
588
- else {
589
- return null;
590
- }
591
- // tslint:enable
592
- const date = this.value || this.dateAdapter.today();
593
- const resultDate = this.dateAdapter.createDateTime(this.dateAdapter.getYear(date), this.dateAdapter.getMonth(date), this.dateAdapter.getDate(date), hours, minutes || 0, seconds || 0, this.dateAdapter.getMilliseconds(date));
594
- return this.getValidDateOrNull(resultDate);
595
- }
596
- compareTime(first, second) {
597
- const result = this.dateAdapter.getHours(first) - this.dateAdapter.getHours(second) ||
598
- this.dateAdapter.getMinutes(first) - this.dateAdapter.getMinutes(second);
599
- if (TimeFormats.HHmm === this.format) {
600
- return result;
601
- }
602
- else if (TimeFormats.HHmmss === this.format) {
603
- return result || this.dateAdapter.getSeconds(first) - this.dateAdapter.getSeconds(second);
604
- }
605
- else {
606
- throw Error(`Unknown format: ${this.format}`);
607
- }
608
- }
609
- getValidDateOrNull(obj) {
610
- return (this.dateAdapter.isDateInstance(obj) && this.dateAdapter.isValid(obj)) ? obj : null;
611
- }
612
- setViewValue(value) {
613
- this.renderer.setProperty(this.elementRef.nativeElement, 'value', value);
614
- }
615
- updateView() {
616
- const formattedValue = this.getTimeStringFromDate(this.value, this.format);
617
- this.setViewValue(formattedValue);
618
- }
619
- setControl(control) {
620
- if (!this.control) {
621
- this.control = control;
622
- }
623
- }
624
- }
625
- /** @nocollapse */ /** @nocollapse */ McTimepicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: McTimepicker, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.DateAdapter, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
626
- /** @nocollapse */ /** @nocollapse */ McTimepicker.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.4", type: McTimepicker, selector: "input[mcTimepicker]", inputs: { placeholder: "placeholder", disabled: "disabled", id: "id", required: "required", format: "format", min: "min", max: "max", value: "value", mcValidationTooltip: "mcValidationTooltip" }, outputs: { incorrectInput: "incorrectInput" }, host: { listeners: { "blur": "onBlur()", "focus": "focusChanged(true)", "paste": "onPaste($event)", "keydown": "onKeyDown($event)" }, properties: { "attr.id": "id", "attr.placeholder": "placeholder", "attr.disabled": "disabled || null", "attr.required": "required", "attr.size": "getSize()", "attr.autocomplete": "\"off\"" }, classAttribute: "mc-input mc-timepicker" }, providers: [
627
- MC_TIMEPICKER_VALIDATORS,
628
- MC_TIMEPICKER_VALUE_ACCESSOR,
629
- { provide: McFormFieldControl, useExisting: McTimepicker }
630
- ], exportAs: ["mcTimepicker"], ngImport: i0 });
631
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: McTimepicker, decorators: [{
632
- type: Directive,
633
- args: [{
634
- selector: 'input[mcTimepicker]',
635
- exportAs: 'mcTimepicker',
636
- host: {
637
- class: 'mc-input mc-timepicker',
638
- // Native input properties that are overwritten by Angular inputs need to be synced with
639
- // the native input element. Otherwise property bindings for those don't work.
640
- '[attr.id]': 'id',
641
- '[attr.placeholder]': 'placeholder',
642
- '[attr.disabled]': 'disabled || null',
643
- '[attr.required]': 'required',
644
- '[attr.size]': 'getSize()',
645
- '[attr.autocomplete]': '"off"',
646
- '(blur)': 'onBlur()',
647
- '(focus)': 'focusChanged(true)',
648
- '(paste)': 'onPaste($event)',
649
- '(keydown)': 'onKeyDown($event)'
650
- },
651
- providers: [
652
- MC_TIMEPICKER_VALIDATORS,
653
- MC_TIMEPICKER_VALUE_ACCESSOR,
654
- { provide: McFormFieldControl, useExisting: McTimepicker }
655
- ]
656
- }]
657
- }], ctorParameters: function () {
658
- return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.DateAdapter, decorators: [{
659
- type: Optional
660
- }] }];
661
- }, propDecorators: { placeholder: [{
662
- type: Input
663
- }], disabled: [{
664
- type: Input
665
- }], id: [{
666
- type: Input
667
- }], required: [{
668
- type: Input
669
- }], format: [{
670
- type: Input
671
- }], min: [{
672
- type: Input
673
- }], max: [{
674
- type: Input
675
- }], value: [{
676
- type: Input
677
- }], mcValidationTooltip: [{
678
- type: Input
679
- }], incorrectInput: [{
680
- type: Output
40
+ /** @docs-private */
41
+ const MC_TIMEPICKER_VALUE_ACCESSOR = {
42
+ provide: NG_VALUE_ACCESSOR,
43
+ useExisting: forwardRef(() => McTimepicker),
44
+ multi: true
45
+ };
46
+ /** @docs-private */
47
+ const MC_TIMEPICKER_VALIDATORS = {
48
+ provide: NG_VALIDATORS,
49
+ useExisting: forwardRef(() => McTimepicker),
50
+ multi: true
51
+ };
52
+ let uniqueComponentIdSuffix = 0;
53
+ const shortFormatSize = 5;
54
+ const fullFormatSize = 8;
55
+ class McTimepicker {
56
+ constructor(elementRef, changeDetectorRef, renderer, mcValidation, parentForm, parentFormGroup, dateAdapter) {
57
+ this.elementRef = elementRef;
58
+ this.changeDetectorRef = changeDetectorRef;
59
+ this.renderer = renderer;
60
+ this.mcValidation = mcValidation;
61
+ this.parentForm = parentForm;
62
+ this.parentFormGroup = parentFormGroup;
63
+ this.dateAdapter = dateAdapter;
64
+ /**
65
+ * Implemented as part of McFormFieldControl.
66
+ * @docs-private
67
+ */
68
+ this.stateChanges = new Subject();
69
+ /**
70
+ * Implemented as part of McFormFieldControl.
71
+ * @docs-private
72
+ */
73
+ this.focused = false;
74
+ /**
75
+ * Implemented as part of McFormFieldControl.
76
+ * @docs-private
77
+ */
78
+ this.controlType = 'timepicker';
79
+ this._placeholder = TIMEFORMAT_PLACEHOLDERS[DEFAULT_TIME_FORMAT];
80
+ this._format = DEFAULT_TIME_FORMAT;
81
+ this._min = null;
82
+ this._max = null;
83
+ this.incorrectInput = new EventEmitter();
84
+ this.uid = `mc-timepicker-${uniqueComponentIdSuffix++}`;
85
+ this.lastValueValid = false;
86
+ this.defaultPlaceholder = true;
87
+ this.onInput = () => {
88
+ const formattedValue = this.formatUserInput(this.viewValue);
89
+ const newTimeObj = this.getDateFromTimeString(formattedValue);
90
+ this.lastValueValid = !!newTimeObj;
91
+ if (!newTimeObj) {
92
+ if (!this.viewValue) {
93
+ this.onChange(null);
94
+ }
95
+ else {
96
+ this.control.updateValueAndValidity();
97
+ }
98
+ return;
99
+ }
100
+ const selectionStart = this.selectionStart;
101
+ const selectionEnd = this.selectionEnd;
102
+ this.setViewValue(this.getTimeStringFromDate(newTimeObj, this.format));
103
+ this.selectionStart = selectionStart;
104
+ this.selectionEnd = selectionEnd;
105
+ this.createSelectionOfTimeComponentInInput(selectionStart + 1);
106
+ this.value = newTimeObj;
107
+ this.onChange(newTimeObj);
108
+ this.stateChanges.next();
109
+ };
110
+ this.parseValidator = () => {
111
+ return this.focused ||
112
+ this.empty ||
113
+ this.lastValueValid ? null : { mcTimepickerParse: { text: this.viewValue } };
114
+ };
115
+ this.minValidator = (control) => {
116
+ const controlValue = this.getValidDateOrNull(this.dateAdapter.deserialize(control.value));
117
+ return (!this.min || !controlValue || this.compareTime(this.min, controlValue) <= 0) ?
118
+ null :
119
+ { mcTimepickerLowerThenMin: { min: this.min, actual: controlValue } };
120
+ };
121
+ this.maxValidator = (control) => {
122
+ const controlValue = this.getValidDateOrNull(this.dateAdapter.deserialize(control.value));
123
+ return (!this.max || !controlValue || this.compareTime(this.max, controlValue) >= 0) ?
124
+ null :
125
+ { mcTimepickerHigherThenMax: { max: this.max, actual: controlValue } };
126
+ };
127
+ // tslint:disable-next-line:no-empty
128
+ this.validatorOnChange = () => { };
129
+ if (!this.dateAdapter) {
130
+ throw Error(`McTimepicker: No provider found for DateAdapter. You must import one of the existing ` +
131
+ `modules at your application root or provide a custom implementation or use exists ones.`);
132
+ }
133
+ this.validator = Validators.compose([this.parseValidator, this.minValidator, this.maxValidator]);
134
+ this.onChange = noop;
135
+ // Force setter to be called in case id was not specified.
136
+ this.id = this.id;
137
+ }
138
+ /**
139
+ * Implemented as part of McFormFieldControl.
140
+ * @docs-private
141
+ */
142
+ get placeholder() {
143
+ return this._placeholder;
144
+ }
145
+ set placeholder(value) {
146
+ this._placeholder = value;
147
+ this.defaultPlaceholder = false;
148
+ }
149
+ get disabled() {
150
+ return this._disabled;
151
+ }
152
+ set disabled(value) {
153
+ this._disabled = coerceBooleanProperty(value);
154
+ // Browsers may not fire the blur event if the input is disabled too quickly.
155
+ // Reset from here to ensure that the element doesn't become stuck.
156
+ if (this.focused) {
157
+ this.focused = false;
158
+ }
159
+ this.stateChanges.next();
160
+ }
161
+ get id() {
162
+ return this._id;
163
+ }
164
+ set id(value) {
165
+ this._id = value || this.uid;
166
+ }
167
+ /**
168
+ * Implemented as part of McFormFieldControl.
169
+ * @docs-private
170
+ */
171
+ get required() {
172
+ return this._required;
173
+ }
174
+ set required(value) {
175
+ this._required = coerceBooleanProperty(value);
176
+ }
177
+ get format() {
178
+ return this._format;
179
+ }
180
+ set format(formatValue) {
181
+ this._format = Object
182
+ .keys(TimeFormats)
183
+ .map((timeFormatKey) => TimeFormats[timeFormatKey])
184
+ .indexOf(formatValue) > -1 ? formatValue : DEFAULT_TIME_FORMAT;
185
+ if (this.defaultPlaceholder) {
186
+ this._placeholder = TIMEFORMAT_PLACEHOLDERS[this._format];
187
+ }
188
+ if (this.value) {
189
+ this.updateView();
190
+ }
191
+ }
192
+ get min() {
193
+ return this._min;
194
+ }
195
+ set min(value) {
196
+ this._min = this.getValidDateOrNull(this.dateAdapter.deserialize(value));
197
+ this.validatorOnChange();
198
+ }
199
+ get max() {
200
+ return this._max;
201
+ }
202
+ set max(value) {
203
+ this._max = this.getValidDateOrNull(this.dateAdapter.deserialize(value));
204
+ this.validatorOnChange();
205
+ }
206
+ get value() {
207
+ return this._value;
208
+ }
209
+ set value(value) {
210
+ const newValue = this.dateAdapter.deserialize(value);
211
+ this.lastValueValid = !newValue || this.dateAdapter.isValid(newValue);
212
+ this._value = this.getValidDateOrNull(newValue);
213
+ this.updateView();
214
+ }
215
+ set mcValidationTooltip(tooltip) {
216
+ if (!tooltip) {
217
+ return;
218
+ }
219
+ tooltip.enterDelay = validationTooltipShowDelay;
220
+ tooltip.trigger = 'manual';
221
+ tooltip.initListeners();
222
+ this.incorrectInput.subscribe(() => {
223
+ if (tooltip.isOpen) {
224
+ return;
225
+ }
226
+ tooltip.show();
227
+ setTimeout(() => tooltip.hide(), validationTooltipHideDelay);
228
+ });
229
+ }
230
+ get hasSelection() {
231
+ return this.selectionStart !== this.selectionEnd;
232
+ }
233
+ get isFullFormat() {
234
+ return this.format === TimeFormats.HHmmss;
235
+ }
236
+ get isShortFormat() {
237
+ return this.format === TimeFormats.HHmm;
238
+ }
239
+ get viewValue() {
240
+ return this.elementRef.nativeElement.value;
241
+ }
242
+ get ngControl() {
243
+ return this.control;
244
+ }
245
+ /**
246
+ * Implemented as part of McFormFieldControl.
247
+ * @docs-private
248
+ */
249
+ get empty() {
250
+ return !this.viewValue && !this.isBadInput();
251
+ }
252
+ get selectionStart() {
253
+ return this.elementRef.nativeElement.selectionStart;
254
+ }
255
+ set selectionStart(value) {
256
+ this.elementRef.nativeElement.selectionStart = value;
257
+ }
258
+ get selectionEnd() {
259
+ return this.elementRef.nativeElement.selectionEnd;
260
+ }
261
+ set selectionEnd(value) {
262
+ this.elementRef.nativeElement.selectionEnd = value;
263
+ }
264
+ ngOnDestroy() {
265
+ this.stateChanges.complete();
266
+ }
267
+ getSize() {
268
+ return this.isFullFormat ? fullFormatSize : shortFormatSize;
269
+ }
270
+ focus() {
271
+ this.elementRef.nativeElement.focus();
272
+ }
273
+ focusChanged(isFocused) {
274
+ if (isFocused !== this.focused) {
275
+ this.focused = isFocused;
276
+ this.onTouched();
277
+ this.stateChanges.next();
278
+ }
279
+ }
280
+ onBlur() {
281
+ this.focusChanged(false);
282
+ this.setViewValue(this.formatUserPaste(this.viewValue));
283
+ this.onInput();
284
+ }
285
+ onPaste($event) {
286
+ $event.preventDefault();
287
+ const value = this.formatUserPaste($event.clipboardData.getData('text'));
288
+ const newTimeObj = this.getDateFromTimeString(value);
289
+ if (!newTimeObj) {
290
+ return;
291
+ }
292
+ this.setViewValue(this.getTimeStringFromDate(newTimeObj, this.format));
293
+ this.value = newTimeObj;
294
+ this.onChange(newTimeObj);
295
+ this.stateChanges.next();
296
+ }
297
+ /**
298
+ * Implemented as part of McFormFieldControl.
299
+ * @docs-private
300
+ */
301
+ onContainerClick() {
302
+ this.focus();
303
+ }
304
+ onKeyDown(event) {
305
+ // tslint:disable-next-line: deprecation
306
+ const keyCode = event.keyCode;
307
+ if (isLetterKey(event) && !event.ctrlKey && !event.metaKey) {
308
+ event.preventDefault();
309
+ this.incorrectInput.emit();
310
+ }
311
+ else if ((hasModifierKey(event) && (isVerticalMovement(event) || isHorizontalMovement(event))) ||
312
+ event.ctrlKey || event.metaKey ||
313
+ [DELETE, BACKSPACE, TAB].includes(keyCode)) {
314
+ noop();
315
+ }
316
+ else if (keyCode === SPACE) {
317
+ this.spaceKeyHandler(event);
318
+ }
319
+ else if ([HOME, PAGE_UP].includes(keyCode)) {
320
+ this.createSelectionOfTimeComponentInInput(0);
321
+ }
322
+ else if ([END, PAGE_DOWN].includes(keyCode)) {
323
+ this.createSelectionOfTimeComponentInInput(this.viewValue.length);
324
+ }
325
+ else if ([UP_ARROW, DOWN_ARROW].includes(keyCode)) {
326
+ event.preventDefault();
327
+ this.verticalArrowKeyHandler(keyCode);
328
+ }
329
+ else if ([LEFT_ARROW, RIGHT_ARROW].includes(keyCode)) {
330
+ this.horizontalArrowKeyHandler(keyCode);
331
+ }
332
+ else if (/^\D$/.test(event.key)) {
333
+ event.preventDefault();
334
+ const newValue = this.getNewValue(event.key, this.selectionStart);
335
+ const formattedValue = this.replaceSymbols(newValue);
336
+ if (newValue !== formattedValue) {
337
+ this.setViewValue(formattedValue);
338
+ setTimeout(this.onInput);
339
+ }
340
+ else {
341
+ this.incorrectInput.emit();
342
+ }
343
+ }
344
+ else {
345
+ setTimeout(this.onInput);
346
+ }
347
+ }
348
+ validate(control) {
349
+ this.setControl(control);
350
+ return this.validator ? this.validator(control) : null;
351
+ }
352
+ registerOnValidatorChange(fn) {
353
+ this.validatorOnChange = fn;
354
+ }
355
+ writeValue(value) {
356
+ this.value = value;
357
+ }
358
+ registerOnChange(fn) {
359
+ this.onChange = fn;
360
+ }
361
+ registerOnTouched(fn) {
362
+ this.onTouched = fn;
363
+ }
364
+ setDisabledState(isDisabled) {
365
+ this.disabled = isDisabled;
366
+ }
367
+ formatUserPaste(value) {
368
+ var _a;
369
+ if (value.match(AM_PM_FORMAT_REGEXP)) {
370
+ return value;
371
+ }
372
+ const match = value.match(/^(\D+)?(?<hours>\d+)?(\D+)?(\D+)?(?<minutes>\d+)?(\D+)?(\D+)?(?<seconds>\d+)?(\D+)?$/);
373
+ if (!((_a = match === null || match === void 0 ? void 0 : match.groups) === null || _a === void 0 ? void 0 : _a.hours)) {
374
+ this.setViewValue(value);
375
+ return value;
376
+ }
377
+ return this.replaceNumbers(Object.values(match.groups)
378
+ // tslint:disable-next-line:no-magic-numbers
379
+ .map((group) => (group || '').padStart(2, '0'))
380
+ .join(':'));
381
+ }
382
+ formatUserInput(value) {
383
+ return this.replaceNumbers(this.replaceSymbols(value));
384
+ }
385
+ replaceSymbols(value) {
386
+ let formattedValue = value;
387
+ const match = value.match(/^(\d\d:){0,2}(?<number>[0-9])(?<symbol>\W)(:\d\d){0,2}$/);
388
+ if (match === null || match === void 0 ? void 0 : match.groups) {
389
+ const { number, symbol } = match.groups;
390
+ formattedValue = value.replace(number + symbol, `0${number}`);
391
+ }
392
+ return formattedValue;
393
+ }
394
+ replaceNumbers(value) {
395
+ let formattedValue = value;
396
+ const match = value.match(/^(?<hours>\d{0,4}):?(?<minutes>\d{0,4}):?(?<seconds>\d{0,4})$/);
397
+ if (match === null || match === void 0 ? void 0 : match.groups) {
398
+ const { hours, minutes, seconds } = match.groups;
399
+ if (hours.length && parseInt(hours) > HOURS_PER_DAY) {
400
+ formattedValue = formattedValue.replace(hours, HOURS_PER_DAY.toString());
401
+ }
402
+ if (minutes.length && parseInt(minutes) > MINUTES_PER_HOUR) {
403
+ formattedValue = formattedValue.replace(minutes, MINUTES_PER_HOUR.toString());
404
+ }
405
+ if (seconds.length && parseInt(seconds) > SECONDS_PER_MINUTE) {
406
+ formattedValue = formattedValue.replace(seconds, SECONDS_PER_MINUTE.toString());
407
+ }
408
+ }
409
+ return formattedValue;
410
+ }
411
+ /** Checks whether the input is invalid based on the native validation. */
412
+ isBadInput() {
413
+ const validity = this.elementRef.nativeElement.validity;
414
+ return validity && validity.badInput;
415
+ }
416
+ spaceKeyHandler(event) {
417
+ event.preventDefault();
418
+ if (this.selectionStart === this.selectionEnd) {
419
+ const value = this.getNewValue(event.key, this.selectionStart);
420
+ const formattedValue = this.replaceSymbols(value);
421
+ if (value !== formattedValue) {
422
+ this.setViewValue(formattedValue);
423
+ setTimeout(this.onInput);
424
+ }
425
+ }
426
+ else if (this.selectionStart !== this.selectionEnd) {
427
+ let cursorPos = this.selectionStart;
428
+ const nextDividerPos = this.viewValue.indexOf(':', cursorPos);
429
+ cursorPos = nextDividerPos ? nextDividerPos + 1 : 0;
430
+ this.createSelectionOfTimeComponentInInput(cursorPos);
431
+ }
432
+ }
433
+ getNewValue(key, position) {
434
+ return [this.viewValue.slice(0, position), key, this.viewValue.slice(position)].join('');
435
+ }
436
+ verticalArrowKeyHandler(keyCode) {
437
+ if (!this.value) {
438
+ return;
439
+ }
440
+ let changedTime;
441
+ const newEditParams = this.getTimeEditMetrics(this.selectionStart);
442
+ if (keyCode === UP_ARROW) {
443
+ changedTime = this.incrementTime(this.value, newEditParams.modifiedTimePart);
444
+ }
445
+ if (keyCode === DOWN_ARROW) {
446
+ changedTime = this.decrementTime(this.value, newEditParams.modifiedTimePart);
447
+ }
448
+ this.value = changedTime;
449
+ this.selectionStart = newEditParams.cursorStartPosition;
450
+ this.selectionEnd = newEditParams.cursorEndPosition;
451
+ this.onChange(changedTime);
452
+ this.stateChanges.next();
453
+ }
454
+ horizontalArrowKeyHandler(keyCode) {
455
+ if (!this.value) {
456
+ return;
457
+ }
458
+ let cursorPos = this.selectionStart;
459
+ if (keyCode === LEFT_ARROW) {
460
+ cursorPos = cursorPos === 0 ? this.viewValue.length : cursorPos - 1;
461
+ }
462
+ else if (keyCode === RIGHT_ARROW) {
463
+ const nextDividerPos = this.viewValue.indexOf(':', cursorPos);
464
+ cursorPos = nextDividerPos ? nextDividerPos + 1 : 0;
465
+ }
466
+ this.createSelectionOfTimeComponentInInput(cursorPos);
467
+ }
468
+ createSelectionOfTimeComponentInInput(cursorPos) {
469
+ setTimeout(() => {
470
+ const newEditParams = this.getTimeEditMetrics(cursorPos);
471
+ this.selectionStart = newEditParams.cursorStartPosition;
472
+ this.selectionEnd = newEditParams.cursorEndPosition;
473
+ });
474
+ }
475
+ incrementTime(dateVal, whatToIncrement = TimeParts.seconds) {
476
+ let hours = this.dateAdapter.getHours(dateVal);
477
+ let minutes = this.dateAdapter.getMinutes(dateVal);
478
+ let seconds = this.dateAdapter.getSeconds(dateVal);
479
+ switch (whatToIncrement) {
480
+ case TimeParts.hours:
481
+ hours++;
482
+ break;
483
+ case TimeParts.minutes:
484
+ minutes++;
485
+ break;
486
+ case TimeParts.seconds:
487
+ seconds++;
488
+ break;
489
+ default:
490
+ }
491
+ if (seconds > SECONDS_PER_MINUTE) {
492
+ seconds = 0;
493
+ }
494
+ if (minutes > MINUTES_PER_HOUR) {
495
+ minutes = 0;
496
+ }
497
+ if (hours > HOURS_PER_DAY) {
498
+ hours = 0;
499
+ }
500
+ return this.dateAdapter.createDateTime(this.dateAdapter.getYear(this.value), this.dateAdapter.getMonth(this.value), this.dateAdapter.getDate(this.value), hours, minutes, seconds, this.dateAdapter.getMilliseconds(this.value));
501
+ }
502
+ decrementTime(dateVal, whatToDecrement = TimeParts.seconds) {
503
+ let hours = this.dateAdapter.getHours(dateVal);
504
+ let minutes = this.dateAdapter.getMinutes(dateVal);
505
+ let seconds = this.dateAdapter.getSeconds(dateVal);
506
+ switch (whatToDecrement) {
507
+ case TimeParts.hours:
508
+ hours--;
509
+ break;
510
+ case TimeParts.minutes:
511
+ minutes--;
512
+ break;
513
+ case TimeParts.seconds:
514
+ seconds--;
515
+ break;
516
+ default:
517
+ }
518
+ if (seconds < 0) {
519
+ seconds = SECONDS_PER_MINUTE;
520
+ }
521
+ if (minutes < 0) {
522
+ minutes = MINUTES_PER_HOUR;
523
+ }
524
+ if (hours < 0) {
525
+ hours = HOURS_PER_DAY;
526
+ }
527
+ return this.dateAdapter.createDateTime(this.dateAdapter.getYear(this.value), this.dateAdapter.getMonth(this.value), this.dateAdapter.getDate(this.value), hours, minutes, seconds, this.dateAdapter.getMilliseconds(this.value));
528
+ }
529
+ /**
530
+ * @description Get params for arrow-keys (up/down) time valie edit.
531
+ * @param cursorPosition Current cursor position in timeString
532
+ */
533
+ getTimeEditMetrics(cursorPosition) {
534
+ const timeString = this.viewValue;
535
+ let modifiedTimePart;
536
+ let cursorStartPosition;
537
+ let cursorEndPosition;
538
+ const hoursIndex = 0;
539
+ const minutesIndex = timeString.indexOf(':', hoursIndex + 1);
540
+ const secondsIndex = minutesIndex !== -1 ? timeString.indexOf(':', minutesIndex + 1) : -1;
541
+ if (secondsIndex !== -1 && cursorPosition > secondsIndex) {
542
+ modifiedTimePart = TimeParts.seconds;
543
+ cursorStartPosition = secondsIndex + 1;
544
+ cursorEndPosition = timeString.length;
545
+ }
546
+ else if (minutesIndex !== -1 && cursorPosition > minutesIndex) {
547
+ modifiedTimePart = TimeParts.minutes;
548
+ cursorStartPosition = minutesIndex + 1;
549
+ cursorEndPosition = secondsIndex > -1 ? secondsIndex : timeString.length;
550
+ }
551
+ else {
552
+ modifiedTimePart = TimeParts.hours;
553
+ cursorStartPosition = hoursIndex;
554
+ cursorEndPosition = minutesIndex !== -1 ? minutesIndex : timeString.length;
555
+ }
556
+ return { modifiedTimePart, cursorStartPosition, cursorEndPosition };
557
+ }
558
+ /**
559
+ * @description Create time string for displaying inside input element of UI
560
+ */
561
+ getTimeStringFromDate(value, timeFormat) {
562
+ if (!value || !this.dateAdapter.isValid(value)) {
563
+ return '';
564
+ }
565
+ return this.dateAdapter.format(value, timeFormat);
566
+ }
567
+ getDateFromTimeString(timeString) {
568
+ if (!timeString) {
569
+ return null;
570
+ }
571
+ const HMS = timeString.match(HOURS_MINUTES_SECONDS_REGEXP);
572
+ const HM = timeString.match(HOURS_MINUTES_REGEXP);
573
+ const H = timeString.match(HOURS_ONLY_REGEXP);
574
+ const amPm = timeString.match(AM_PM_FORMAT_REGEXP);
575
+ let hours = 0;
576
+ let minutes = 0;
577
+ let seconds = 0;
578
+ // tslint:disable:no-magic-numbers
579
+ if (amPm) {
580
+ hours = Number(amPm[1]);
581
+ minutes = Number(amPm[2]);
582
+ if (/[p]/i.test(amPm[3]) || (/[a]/i.test(amPm[3]) && hours === 12)) {
583
+ hours += 12;
584
+ }
585
+ }
586
+ else if (HMS) {
587
+ hours = Number(HMS[1]);
588
+ minutes = Number(HMS[2]);
589
+ seconds = Number(HMS[3]);
590
+ }
591
+ else if (HM) {
592
+ hours = Number(HM[1]);
593
+ minutes = Number(HM[2]);
594
+ }
595
+ else if (H) {
596
+ hours = Number(H[1]);
597
+ }
598
+ else {
599
+ return null;
600
+ }
601
+ // tslint:enable
602
+ const date = this.value || this.dateAdapter.today();
603
+ const resultDate = this.dateAdapter.createDateTime(this.dateAdapter.getYear(date), this.dateAdapter.getMonth(date), this.dateAdapter.getDate(date), hours, minutes || 0, seconds || 0, this.dateAdapter.getMilliseconds(date));
604
+ return this.getValidDateOrNull(resultDate);
605
+ }
606
+ compareTime(first, second) {
607
+ const result = this.dateAdapter.getHours(first) - this.dateAdapter.getHours(second) ||
608
+ this.dateAdapter.getMinutes(first) - this.dateAdapter.getMinutes(second);
609
+ if (TimeFormats.HHmm === this.format) {
610
+ return result;
611
+ }
612
+ else if (TimeFormats.HHmmss === this.format) {
613
+ return result || this.dateAdapter.getSeconds(first) - this.dateAdapter.getSeconds(second);
614
+ }
615
+ else {
616
+ throw Error(`Unknown format: ${this.format}`);
617
+ }
618
+ }
619
+ getValidDateOrNull(obj) {
620
+ return (this.dateAdapter.isDateInstance(obj) && this.dateAdapter.isValid(obj)) ? obj : null;
621
+ }
622
+ setViewValue(value) {
623
+ this.renderer.setProperty(this.elementRef.nativeElement, 'value', value);
624
+ }
625
+ updateView() {
626
+ const formattedValue = this.getTimeStringFromDate(this.value, this.format);
627
+ this.setViewValue(formattedValue);
628
+ }
629
+ setControl(control) {
630
+ if (this.control) {
631
+ return;
632
+ }
633
+ this.control = control;
634
+ if (this.mcValidation.useValidation) {
635
+ setMosaicValidationForCustomFormControl(this, this.changeDetectorRef);
636
+ }
637
+ }
638
+ }
639
+ /** @nocollapse */ /** @nocollapse */ McTimepicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McTimepicker, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: MC_VALIDATION, optional: true }, { token: i1.NgForm, optional: true }, { token: i1.FormGroupDirective, optional: true }, { token: i2.DateAdapter, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
640
+ /** @nocollapse */ /** @nocollapse */ McTimepicker.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.7", type: McTimepicker, selector: "input[mcTimepicker]", inputs: { placeholder: "placeholder", disabled: "disabled", id: "id", required: "required", format: "format", min: "min", max: "max", value: "value", mcValidationTooltip: "mcValidationTooltip" }, outputs: { incorrectInput: "incorrectInput" }, host: { listeners: { "blur": "onBlur()", "focus": "focusChanged(true)", "paste": "onPaste($event)", "keydown": "onKeyDown($event)" }, properties: { "attr.id": "id", "attr.placeholder": "placeholder", "attr.disabled": "disabled || null", "attr.required": "required", "attr.size": "getSize()", "attr.autocomplete": "\"off\"" }, classAttribute: "mc-input mc-timepicker" }, providers: [
641
+ MC_TIMEPICKER_VALIDATORS,
642
+ MC_TIMEPICKER_VALUE_ACCESSOR,
643
+ { provide: McFormFieldControl, useExisting: McTimepicker }
644
+ ], exportAs: ["mcTimepicker"], ngImport: i0 });
645
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McTimepicker, decorators: [{
646
+ type: Directive,
647
+ args: [{
648
+ selector: 'input[mcTimepicker]',
649
+ exportAs: 'mcTimepicker',
650
+ host: {
651
+ class: 'mc-input mc-timepicker',
652
+ // Native input properties that are overwritten by Angular inputs need to be synced with
653
+ // the native input element. Otherwise property bindings for those don't work.
654
+ '[attr.id]': 'id',
655
+ '[attr.placeholder]': 'placeholder',
656
+ '[attr.disabled]': 'disabled || null',
657
+ '[attr.required]': 'required',
658
+ '[attr.size]': 'getSize()',
659
+ '[attr.autocomplete]': '"off"',
660
+ '(blur)': 'onBlur()',
661
+ '(focus)': 'focusChanged(true)',
662
+ '(paste)': 'onPaste($event)',
663
+ '(keydown)': 'onKeyDown($event)'
664
+ },
665
+ providers: [
666
+ MC_TIMEPICKER_VALIDATORS,
667
+ MC_TIMEPICKER_VALUE_ACCESSOR,
668
+ { provide: McFormFieldControl, useExisting: McTimepicker }
669
+ ]
670
+ }]
671
+ }], ctorParameters: function () {
672
+ return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
673
+ type: Optional
674
+ }, {
675
+ type: Inject,
676
+ args: [MC_VALIDATION]
677
+ }] }, { type: i1.NgForm, decorators: [{
678
+ type: Optional
679
+ }] }, { type: i1.FormGroupDirective, decorators: [{
680
+ type: Optional
681
+ }] }, { type: i2.DateAdapter, decorators: [{
682
+ type: Optional
683
+ }] }];
684
+ }, propDecorators: { placeholder: [{
685
+ type: Input
686
+ }], disabled: [{
687
+ type: Input
688
+ }], id: [{
689
+ type: Input
690
+ }], required: [{
691
+ type: Input
692
+ }], format: [{
693
+ type: Input
694
+ }], min: [{
695
+ type: Input
696
+ }], max: [{
697
+ type: Input
698
+ }], value: [{
699
+ type: Input
700
+ }], mcValidationTooltip: [{
701
+ type: Input
702
+ }], incorrectInput: [{
703
+ type: Output
681
704
  }] } });
682
705
 
683
- class McTimepickerModule {
684
- }
685
- /** @nocollapse */ /** @nocollapse */ McTimepickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: McTimepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
686
- /** @nocollapse */ /** @nocollapse */ McTimepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: McTimepickerModule, declarations: [McTimepicker], imports: [CommonModule,
687
- A11yModule,
688
- PlatformModule,
689
- FormsModule], exports: [McTimepicker] });
690
- /** @nocollapse */ /** @nocollapse */ McTimepickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: McTimepickerModule, imports: [[
691
- CommonModule,
692
- A11yModule,
693
- PlatformModule,
694
- FormsModule
695
- ]] });
696
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: McTimepickerModule, decorators: [{
697
- type: NgModule,
698
- args: [{
699
- imports: [
700
- CommonModule,
701
- A11yModule,
702
- PlatformModule,
703
- FormsModule
704
- ],
705
- declarations: [McTimepicker],
706
- exports: [McTimepicker]
707
- }]
706
+ class McTimepickerModule {
707
+ }
708
+ /** @nocollapse */ /** @nocollapse */ McTimepickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McTimepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
709
+ /** @nocollapse */ /** @nocollapse */ McTimepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McTimepickerModule, declarations: [McTimepicker], imports: [CommonModule,
710
+ A11yModule,
711
+ PlatformModule,
712
+ FormsModule], exports: [McTimepicker] });
713
+ /** @nocollapse */ /** @nocollapse */ McTimepickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McTimepickerModule, imports: [[
714
+ CommonModule,
715
+ A11yModule,
716
+ PlatformModule,
717
+ FormsModule
718
+ ]] });
719
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McTimepickerModule, decorators: [{
720
+ type: NgModule,
721
+ args: [{
722
+ imports: [
723
+ CommonModule,
724
+ A11yModule,
725
+ PlatformModule,
726
+ FormsModule
727
+ ],
728
+ declarations: [McTimepicker],
729
+ exports: [McTimepicker]
730
+ }]
708
731
  }] });
709
732
 
710
- /**
711
- * Generated bundle index. Do not edit.
733
+ /**
734
+ * Generated bundle index. Do not edit.
712
735
  */
713
736
 
714
737
  export { AM_PM_FORMAT_REGEXP, DEFAULT_TIME_FORMAT, HOURS_MINUTES_REGEXP, HOURS_MINUTES_SECONDS_REGEXP, HOURS_ONLY_REGEXP, HOURS_PER_DAY, MC_TIMEPICKER_VALIDATORS, MC_TIMEPICKER_VALUE_ACCESSOR, MINUTES_PER_HOUR, McTimepicker, McTimepickerModule, SECONDS_PER_MINUTE, TIMEFORMAT_PLACEHOLDERS, TimeFormats, TimeParts };