@ptsecurity/mosaic 13.4.0 → 13.6.1

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 +7141 -6963
  4. package/_visual.scss +2695 -2658
  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 -104
  117. package/design-tokens/legacy-2017/tokens/components/input.json5 +12 -12
  118. package/design-tokens/legacy-2017/tokens/components/link.json5 +50 -50
  119. package/design-tokens/legacy-2017/tokens/components/list.json5 +13 -13
  120. package/design-tokens/legacy-2017/tokens/components/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 +45 -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 +119 -118
  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 +7844 -7810
  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 -104
  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 +45 -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 +122 -120
  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 -232
  189. package/design-tokens/pt-2022/tokens/properties/typography.json5 +175 -175
  190. package/design-tokens/pt-2022/tokens.d.ts +9176 -9139
  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 -136
  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 +938 -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 +404 -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 +1138 -1104
  330. package/esm2020/design-tokens/pt-2022/tokens.mjs +1208 -1171
  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 -489
  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 -582
  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 +1117 -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 -375
  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 +665 -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 +113 -110
  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 +248 -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 +939 -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 +2685 -2649
  553. package/fesm2015/ptsecurity-mosaic-datepicker.mjs.map +1 -1
  554. package/fesm2015/ptsecurity-mosaic-design-tokens.mjs +2391 -2286
  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 -1069
  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 -993
  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 +1213 -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 -1342
  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 +707 -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 +955 -940
  607. package/fesm2015/ptsecurity-mosaic-tree-select.mjs.map +1 -1
  608. package/fesm2015/ptsecurity-mosaic-tree.mjs +1698 -1675
  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 +2670 -2635
  624. package/fesm2020/ptsecurity-mosaic-datepicker.mjs.map +1 -1
  625. package/fesm2020/ptsecurity-mosaic-design-tokens.mjs +2391 -2286
  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 -1056
  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 -977
  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 +1208 -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 -1335
  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 +704 -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 +952 -938
  678. package/fesm2020/ptsecurity-mosaic-tree-select.mjs.map +1 -1
  679. package/fesm2020/ptsecurity-mosaic-tree.mjs +1685 -1662
  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 +310 -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 +146 -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 +47 -45
  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 +72 -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 +277 -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
@@ -17,995 +17,999 @@ import { McTooltipTrigger, MC_TOOLTIP_SCROLL_STRATEGY } from '@ptsecurity/mosaic
17
17
  import * as i1$1 from '@angular/cdk/overlay';
18
18
  import * as i2 from '@angular/cdk/bidi';
19
19
 
20
- function getMcInputUnsupportedTypeError(inputType) {
21
- return Error(`Input type "${inputType}" isn't supported by mcInput.`);
20
+ function getMcInputUnsupportedTypeError(inputType) {
21
+ return Error(`Input type "${inputType}" isn't supported by mcInput.`);
22
22
  }
23
23
 
24
24
  const MC_INPUT_VALUE_ACCESSOR = new InjectionToken('MC_INPUT_VALUE_ACCESSOR');
25
25
 
26
- const BIG_STEP = 10;
27
- const SMALL_STEP = 1;
28
- function normalizeSplitter(value) {
29
- return value ? value.replace(/,/g, '.') : value;
30
- }
31
- function isFloat(value) {
32
- return /^-?\d+\.\d+$/.test(value);
33
- }
34
- function isInt(value) {
35
- return /^-?\d+$/.test(value);
36
- }
37
- function isDigit(value) {
38
- return isFloat(value) || isInt(value);
39
- }
40
- function getPrecision(value) {
41
- const arr = value.toString().split('.');
42
- return arr.length === 1
43
- ? 1
44
- // tslint:disable-next-line:no-magic-numbers
45
- : Math.pow(10, arr[1].length);
46
- }
47
- function add(value1, value2) {
48
- const precision = Math.max(getPrecision(value1), getPrecision(value2));
49
- return (value1 * precision + value2 * precision) / precision;
50
- }
51
- class McNumberInput {
52
- constructor(elementRef, ngControl, step, bigStep, min, max) {
53
- this.elementRef = elementRef;
54
- this.ngControl = ngControl;
55
- this.focused = false;
56
- this.stateChanges = new Subject();
57
- this.step = isDigit(step) ? parseFloat(step) : SMALL_STEP;
58
- this.bigStep = isDigit(bigStep) ? parseFloat(bigStep) : BIG_STEP;
59
- this.min = isDigit(min) ? parseFloat(min) : -Infinity;
60
- this.max = isDigit(max) ? parseFloat(max) : Infinity;
61
- if ('valueAsNumber' in this.nativeElement) {
62
- Object.defineProperty(Object.getPrototypeOf(this.nativeElement), 'valueAsNumber', {
63
- // tslint:disable-next-line:no-reserved-keywords
64
- get() {
65
- const res = parseFloat(normalizeSplitter(this.value));
66
- return isNaN(res) ? null : res;
67
- }
68
- });
69
- }
70
- }
71
- get nativeElement() {
72
- return this.elementRef.nativeElement;
73
- }
74
- focusChanged(isFocused) {
75
- if (isFocused !== this.focused) {
76
- this.focused = isFocused;
77
- this.stateChanges.next();
78
- }
79
- }
80
- onKeyDown(event) {
81
- // tslint:disable-next-line:deprecation
82
- const keyCode = event.keyCode;
83
- const isCtrlA = (e) => e.keyCode === A && (e.ctrlKey || e.metaKey);
84
- const isCtrlC = (e) => e.keyCode === C && (e.ctrlKey || e.metaKey);
85
- const isCtrlV = (e) => e.keyCode === V && (e.ctrlKey || e.metaKey);
86
- const isCtrlX = (e) => e.keyCode === X && (e.ctrlKey || e.metaKey);
87
- const isCtrlZ = (e) => e.keyCode === Z && (e.ctrlKey || e.metaKey);
88
- const isFKey = (e) => e.keyCode >= F1 && e.keyCode <= F12;
89
- const isNumber = (e) => (e.keyCode >= ZERO && e.keyCode <= NINE) ||
90
- (e.keyCode >= NUMPAD_ZERO && e.keyCode <= NUMPAD_NINE);
91
- const isPeriod = (e) => e.key === '.' || e.key === ',';
92
- const minuses = [NUMPAD_MINUS, DASH, FF_MINUS];
93
- const serviceKeys = [DELETE, BACKSPACE, TAB, ESCAPE, ENTER];
94
- const arrows = [LEFT_ARROW, RIGHT_ARROW];
95
- const allowedKeys = [HOME, END].concat(arrows).concat(serviceKeys).concat(minuses);
96
- if (allowedKeys.indexOf(keyCode) !== -1 ||
97
- isCtrlA(event) ||
98
- isCtrlC(event) ||
99
- isCtrlV(event) ||
100
- isCtrlX(event) ||
101
- isCtrlZ(event) ||
102
- isFKey(event) ||
103
- isPeriod(event)) {
104
- // let it happen, don't do anything
105
- return;
106
- }
107
- // Ensure that it is not a number and stop the keypress
108
- if (event.shiftKey || !isNumber(event)) {
109
- event.preventDefault();
110
- // process steps
111
- const step = event.shiftKey ? this.bigStep : this.step;
112
- if (keyCode === UP_ARROW) {
113
- this.stepUp(step);
114
- }
115
- if (keyCode === DOWN_ARROW) {
116
- this.stepDown(step);
117
- }
118
- }
119
- }
120
- onPaste(event) {
121
- if (!isDigit(normalizeSplitter(event.clipboardData.getData('text')))) {
122
- event.preventDefault();
123
- }
124
- }
125
- stepUp(step) {
126
- this.elementRef.nativeElement.focus();
127
- const res = Math.max(Math.min(add(this.nativeElement.valueAsNumber || 0, step), this.max), this.min);
128
- this.nativeElement.value = res.toString();
129
- this.viewToModelUpdate(this.nativeElement.valueAsNumber);
130
- }
131
- stepDown(step) {
132
- this.elementRef.nativeElement.focus();
133
- const res = Math.min(Math.max(add(this.nativeElement.valueAsNumber || 0, -step), this.min), this.max);
134
- this.nativeElement.value = res.toString();
135
- this.viewToModelUpdate(this.nativeElement.valueAsNumber);
136
- }
137
- viewToModelUpdate(value) {
138
- if (this.ngControl) {
139
- this.ngControl.control.setValue(value);
140
- }
141
- }
142
- }
143
- /** @nocollapse */ /** @nocollapse */ McNumberInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McNumberInput, deps: [{ token: i0.ElementRef }, { token: i1.NgControl, optional: true, self: true }, { token: 'step', attribute: true }, { token: 'big-step', attribute: true }, { token: 'min', attribute: true }, { token: 'max', attribute: true }], target: i0.ɵɵFactoryTarget.Directive });
144
- /** @nocollapse */ /** @nocollapse */ McNumberInput.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.7", type: McNumberInput, selector: "input[mcInput][type=\"number\"]", inputs: { bigStep: "bigStep", step: "step", min: "min", max: "max" }, host: { listeners: { "blur": "focusChanged(false)", "focus": "focusChanged(true)", "paste": "onPaste($event)", "keydown": "onKeyDown($event)" } }, exportAs: ["mcNumericalInput"], ngImport: i0 });
145
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McNumberInput, decorators: [{
146
- type: Directive,
147
- args: [{
148
- selector: `input[mcInput][type="number"]`,
149
- exportAs: 'mcNumericalInput',
150
- host: {
151
- '(blur)': 'focusChanged(false)',
152
- '(focus)': 'focusChanged(true)',
153
- '(paste)': 'onPaste($event)',
154
- '(keydown)': 'onKeyDown($event)'
155
- }
156
- }]
157
- }], ctorParameters: function () {
158
- return [{ type: i0.ElementRef }, { type: i1.NgControl, decorators: [{
159
- type: Optional
160
- }, {
161
- type: Self
162
- }] }, { type: undefined, decorators: [{
163
- type: Attribute,
164
- args: ['step']
165
- }] }, { type: undefined, decorators: [{
166
- type: Attribute,
167
- args: ['big-step']
168
- }] }, { type: undefined, decorators: [{
169
- type: Attribute,
170
- args: ['min']
171
- }] }, { type: undefined, decorators: [{
172
- type: Attribute,
173
- args: ['max']
174
- }] }];
175
- }, propDecorators: { bigStep: [{
176
- type: Input
177
- }], step: [{
178
- type: Input
179
- }], min: [{
180
- type: Input
181
- }], max: [{
182
- type: Input
26
+ const BIG_STEP = 10;
27
+ const SMALL_STEP = 1;
28
+ function normalizeSplitter(value) {
29
+ return value ? value.replace(/,/g, '.') : value;
30
+ }
31
+ function isFloat(value) {
32
+ return /^-?\d+\.\d+$/.test(value);
33
+ }
34
+ function isInt(value) {
35
+ return /^-?\d+$/.test(value);
36
+ }
37
+ function isDigit(value) {
38
+ return isFloat(value) || isInt(value);
39
+ }
40
+ function getPrecision(value) {
41
+ const arr = value.toString().split('.');
42
+ return arr.length === 1
43
+ ? 1
44
+ // tslint:disable-next-line:no-magic-numbers
45
+ : Math.pow(10, arr[1].length);
46
+ }
47
+ function add(value1, value2) {
48
+ const precision = Math.max(getPrecision(value1), getPrecision(value2));
49
+ return (value1 * precision + value2 * precision) / precision;
50
+ }
51
+ class McNumberInput {
52
+ constructor(elementRef, ngControl, step, bigStep, min, max) {
53
+ this.elementRef = elementRef;
54
+ this.ngControl = ngControl;
55
+ this.focused = false;
56
+ this.stateChanges = new Subject();
57
+ this.step = isDigit(step) ? parseFloat(step) : SMALL_STEP;
58
+ this.bigStep = isDigit(bigStep) ? parseFloat(bigStep) : BIG_STEP;
59
+ this.min = isDigit(min) ? parseFloat(min) : -Infinity;
60
+ this.max = isDigit(max) ? parseFloat(max) : Infinity;
61
+ if ('valueAsNumber' in this.nativeElement) {
62
+ Object.defineProperty(Object.getPrototypeOf(this.nativeElement), 'valueAsNumber', {
63
+ // tslint:disable-next-line:no-reserved-keywords
64
+ get() {
65
+ const res = parseFloat(normalizeSplitter(this.value));
66
+ return isNaN(res) ? null : res;
67
+ }
68
+ });
69
+ }
70
+ }
71
+ get nativeElement() {
72
+ return this.elementRef.nativeElement;
73
+ }
74
+ focusChanged(isFocused) {
75
+ if (isFocused !== this.focused) {
76
+ this.focused = isFocused;
77
+ this.stateChanges.next();
78
+ }
79
+ }
80
+ onKeyDown(event) {
81
+ // tslint:disable-next-line:deprecation
82
+ const keyCode = event.keyCode;
83
+ const isCtrlA = (e) => e.keyCode === A && (e.ctrlKey || e.metaKey);
84
+ const isCtrlC = (e) => e.keyCode === C && (e.ctrlKey || e.metaKey);
85
+ const isCtrlV = (e) => e.keyCode === V && (e.ctrlKey || e.metaKey);
86
+ const isCtrlX = (e) => e.keyCode === X && (e.ctrlKey || e.metaKey);
87
+ const isCtrlZ = (e) => e.keyCode === Z && (e.ctrlKey || e.metaKey);
88
+ const isFKey = (e) => e.keyCode >= F1 && e.keyCode <= F12;
89
+ const isNumber = (e) => (e.keyCode >= ZERO && e.keyCode <= NINE) ||
90
+ (e.keyCode >= NUMPAD_ZERO && e.keyCode <= NUMPAD_NINE);
91
+ const isPeriod = (e) => e.key === '.' || e.key === ',';
92
+ const minuses = [NUMPAD_MINUS, DASH, FF_MINUS];
93
+ const serviceKeys = [DELETE, BACKSPACE, TAB, ESCAPE, ENTER];
94
+ const arrows = [LEFT_ARROW, RIGHT_ARROW];
95
+ const allowedKeys = [HOME, END].concat(arrows).concat(serviceKeys).concat(minuses);
96
+ if (allowedKeys.indexOf(keyCode) !== -1 ||
97
+ isCtrlA(event) ||
98
+ isCtrlC(event) ||
99
+ isCtrlV(event) ||
100
+ isCtrlX(event) ||
101
+ isCtrlZ(event) ||
102
+ isFKey(event) ||
103
+ isPeriod(event)) {
104
+ // let it happen, don't do anything
105
+ return;
106
+ }
107
+ // Ensure that it is not a number and stop the keypress
108
+ if (event.shiftKey || !isNumber(event)) {
109
+ event.preventDefault();
110
+ // process steps
111
+ const step = event.shiftKey ? this.bigStep : this.step;
112
+ if (keyCode === UP_ARROW) {
113
+ this.stepUp(step);
114
+ }
115
+ if (keyCode === DOWN_ARROW) {
116
+ this.stepDown(step);
117
+ }
118
+ }
119
+ }
120
+ onPaste(event) {
121
+ if (!isDigit(normalizeSplitter(event.clipboardData.getData('text')))) {
122
+ event.preventDefault();
123
+ }
124
+ }
125
+ stepUp(step) {
126
+ this.elementRef.nativeElement.focus();
127
+ const res = Math.max(Math.min(add(this.nativeElement.valueAsNumber || 0, step), this.max), this.min);
128
+ this.nativeElement.value = res.toString();
129
+ this.viewToModelUpdate(this.nativeElement.valueAsNumber);
130
+ }
131
+ stepDown(step) {
132
+ this.elementRef.nativeElement.focus();
133
+ const res = Math.min(Math.max(add(this.nativeElement.valueAsNumber || 0, -step), this.min), this.max);
134
+ this.nativeElement.value = res.toString();
135
+ this.viewToModelUpdate(this.nativeElement.valueAsNumber);
136
+ }
137
+ viewToModelUpdate(value) {
138
+ if (this.ngControl) {
139
+ this.ngControl.control.setValue(value);
140
+ }
141
+ }
142
+ }
143
+ /** @nocollapse */ /** @nocollapse */ McNumberInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McNumberInput, deps: [{ token: i0.ElementRef }, { token: i1.NgControl, optional: true, self: true }, { token: 'step', attribute: true }, { token: 'big-step', attribute: true }, { token: 'min', attribute: true }, { token: 'max', attribute: true }], target: i0.ɵɵFactoryTarget.Directive });
144
+ /** @nocollapse */ /** @nocollapse */ McNumberInput.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: McNumberInput, selector: "input[mcInput][type=\"number\"]", inputs: { bigStep: "bigStep", step: "step", min: "min", max: "max" }, host: { listeners: { "blur": "focusChanged(false)", "focus": "focusChanged(true)", "paste": "onPaste($event)", "keydown": "onKeyDown($event)" } }, exportAs: ["mcNumericalInput"], ngImport: i0 });
145
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McNumberInput, decorators: [{
146
+ type: Directive,
147
+ args: [{
148
+ selector: `input[mcInput][type="number"]`,
149
+ exportAs: 'mcNumericalInput',
150
+ host: {
151
+ '(blur)': 'focusChanged(false)',
152
+ '(focus)': 'focusChanged(true)',
153
+ '(paste)': 'onPaste($event)',
154
+ '(keydown)': 'onKeyDown($event)'
155
+ }
156
+ }]
157
+ }], ctorParameters: function () {
158
+ return [{ type: i0.ElementRef }, { type: i1.NgControl, decorators: [{
159
+ type: Optional
160
+ }, {
161
+ type: Self
162
+ }] }, { type: undefined, decorators: [{
163
+ type: Attribute,
164
+ args: ['step']
165
+ }] }, { type: undefined, decorators: [{
166
+ type: Attribute,
167
+ args: ['big-step']
168
+ }] }, { type: undefined, decorators: [{
169
+ type: Attribute,
170
+ args: ['min']
171
+ }] }, { type: undefined, decorators: [{
172
+ type: Attribute,
173
+ args: ['max']
174
+ }] }];
175
+ }, propDecorators: { bigStep: [{
176
+ type: Input
177
+ }], step: [{
178
+ type: Input
179
+ }], min: [{
180
+ type: Input
181
+ }], max: [{
182
+ type: Input
183
183
  }] } });
184
184
 
185
- const MC_INPUT_INVALID_TYPES = [
186
- 'button',
187
- 'checkbox',
188
- 'file',
189
- 'hidden',
190
- 'image',
191
- 'radio',
192
- 'range',
193
- 'reset',
194
- 'submit'
195
- ];
196
- let nextUniqueId$1 = 0;
197
- class McInputBase {
198
- constructor(defaultErrorStateMatcher, parentForm, parentFormGroup, ngControl) {
199
- this.defaultErrorStateMatcher = defaultErrorStateMatcher;
200
- this.parentForm = parentForm;
201
- this.parentFormGroup = parentFormGroup;
202
- this.ngControl = ngControl;
203
- }
204
- }
205
- // tslint:disable-next-line:naming-convention
206
- const McInputMixinBase = mixinErrorState(McInputBase);
207
- class McInput extends McInputMixinBase {
208
- // tslint:disable-next-line: naming-convention
209
- constructor(elementRef, rawValidators, mcValidation, ngControl, numberInput, ngModel, formControlName, parentForm, parentFormGroup, defaultErrorStateMatcher, inputValueAccessor, changeDetectorRef) {
210
- super(defaultErrorStateMatcher, parentForm, parentFormGroup, ngControl);
211
- this.elementRef = elementRef;
212
- this.rawValidators = rawValidators;
213
- this.mcValidation = mcValidation;
214
- this.numberInput = numberInput;
215
- this.ngModel = ngModel;
216
- this.formControlName = formControlName;
217
- this.changeDetectorRef = changeDetectorRef;
218
- /**
219
- * Implemented as part of McFormFieldControl.
220
- * @docs-private
221
- */
222
- this.focused = false;
223
- /**
224
- * Implemented as part of McFormFieldControl.
225
- * @docs-private
226
- */
227
- this.stateChanges = new Subject();
228
- /**
229
- * Implemented as part of McFormFieldControl.
230
- * @docs-private
231
- */
232
- this.controlType = 'input';
233
- this.uid = `mc-input-${nextUniqueId$1++}`;
234
- this.neverEmptyInputTypes = [
235
- 'date',
236
- 'datetime',
237
- 'datetime-local',
238
- 'month',
239
- 'time',
240
- 'week'
241
- ].filter((t) => getSupportedInputTypes().has(t));
242
- this._disabled = false;
243
- this._required = false;
244
- // tslint:enable no-reserved-keywords
245
- this._type = 'text';
246
- // If no input value accessor was explicitly specified, use the element as the input value
247
- // accessor.
248
- this._inputValueAccessor = inputValueAccessor || this.elementRef.nativeElement;
249
- this.previousNativeValue = this.value;
250
- // Force setter to be called in case id was not specified.
251
- this.id = this.id;
252
- }
253
- /**
254
- * Implemented as part of McFormFieldControl.
255
- * @docs-private
256
- */
257
- get disabled() {
258
- if (this.ngControl && this.ngControl.disabled !== null) {
259
- return this.ngControl.disabled;
260
- }
261
- return this._disabled;
262
- }
263
- set disabled(value) {
264
- this._disabled = coerceBooleanProperty(value);
265
- // Browsers may not fire the blur event if the input is disabled too quickly.
266
- // Reset from here to ensure that the element doesn't become stuck.
267
- if (this.focused) {
268
- this.focused = false;
269
- this.stateChanges.next();
270
- }
271
- }
272
- /**
273
- * Implemented as part of McFormFieldControl.
274
- * @docs-private
275
- */
276
- get id() {
277
- return this._id;
278
- }
279
- set id(value) {
280
- this._id = value || this.uid;
281
- }
282
- /**
283
- * Implemented as part of McFormFieldControl.
284
- * @docs-private
285
- */
286
- get required() {
287
- return this._required;
288
- }
289
- set required(value) {
290
- this._required = coerceBooleanProperty(value);
291
- }
292
- // tslint:disable no-reserved-keywords
293
- /** Input type of the element. */
294
- get type() {
295
- return this._type;
296
- }
297
- set type(value) {
298
- this._type = value || 'text';
299
- this.validateType();
300
- // When using Angular inputs, developers are no longer able to set the properties on the native
301
- // input element. To ensure that bindings for `type` work, we need to sync the setter
302
- // with the native property. Textarea elements don't support the type property or attribute.
303
- if (getSupportedInputTypes().has(this._type)) {
304
- this.elementRef.nativeElement.type = this._type;
305
- }
306
- }
307
- /**
308
- * Implemented as part of McFormFieldControl.
309
- * @docs-private
310
- */
311
- get value() {
312
- return this._inputValueAccessor.value;
313
- }
314
- set value(value) {
315
- if (value !== this.value) {
316
- this._inputValueAccessor.value = value;
317
- this.stateChanges.next();
318
- }
319
- }
320
- ngAfterContentInit() {
321
- if (!this.ngControl) {
322
- return;
323
- }
324
- if (this.mcValidation.useValidation) {
325
- setMosaicValidation(this, this.changeDetectorRef);
326
- }
327
- }
328
- ngOnChanges() {
329
- this.stateChanges.next();
330
- }
331
- ngOnDestroy() {
332
- this.stateChanges.complete();
333
- }
334
- ngDoCheck() {
335
- if (this.ngControl) {
336
- // We need to re-evaluate this on every change detection cycle, because there are some
337
- // error triggers that we can't subscribe to (e.g. parent form submissions). This means
338
- // that whatever logic is in here has to be super lean or we risk destroying the performance.
339
- this.updateErrorState();
340
- }
341
- // We need to dirty-check the native element's value, because there are some cases where
342
- // we won't be notified when it changes (e.g. the consumer isn't using forms or they're
343
- // updating the value using `emitEvent: false`).
344
- this.dirtyCheckNativeValue();
345
- }
346
- /** Focuses the input. */
347
- focus() {
348
- this.elementRef.nativeElement.focus();
349
- }
350
- onBlur() {
351
- this.focusChanged(false);
352
- if (this.ngControl && this.ngControl.control) {
353
- const control = this.ngControl.control;
354
- control.updateValueAndValidity({ emitEvent: false });
355
- control.statusChanges.emit(control.status);
356
- }
357
- }
358
- /** Callback for the cases where the focused state of the input changes. */
359
- focusChanged(isFocused) {
360
- if (isFocused !== this.focused) {
361
- this.focused = isFocused;
362
- this.stateChanges.next();
363
- }
364
- }
365
- onInput() {
366
- // This is a noop function and is used to let Angular know whenever the value changes.
367
- // Angular will run a new change detection each time the `input` event has been dispatched.
368
- // It's necessary that Angular recognizes the value change, because when floatingLabel
369
- // is set to false and Angular forms aren't used, the placeholder won't recognize the
370
- // value changes and will not disappear.
371
- // Listening to the input event wouldn't be necessary when the input is using the
372
- // FormsModule or ReactiveFormsModule, because Angular forms also listens to input events.
373
- }
374
- /**
375
- * Implemented as part of McFormFieldControl.
376
- * @docs-private
377
- */
378
- get empty() {
379
- return !this.isNeverEmpty() && !this.elementRef.nativeElement.value && !this.isBadInput();
380
- }
381
- /**
382
- * Implemented as part of McFormFieldControl.
383
- * @docs-private
384
- */
385
- onContainerClick() {
386
- this.focus();
387
- }
388
- /** Does some manual dirty checking on the native input `value` property. */
389
- dirtyCheckNativeValue() {
390
- const newValue = this.value;
391
- if (this.previousNativeValue !== newValue) {
392
- this.previousNativeValue = newValue;
393
- this.stateChanges.next();
394
- }
395
- }
396
- /** Make sure the input is a supported type. */
397
- validateType() {
398
- if (MC_INPUT_INVALID_TYPES.indexOf(this._type) > -1) {
399
- throw getMcInputUnsupportedTypeError(this._type);
400
- }
401
- }
402
- /** Checks whether the input type is one of the types that are never empty. */
403
- isNeverEmpty() {
404
- return this.neverEmptyInputTypes.indexOf(this._type) > -1;
405
- }
406
- /** Checks whether the input is invalid based on the native validation. */
407
- isBadInput() {
408
- // The `validity` property won't be present on platform-server.
409
- const validity = this.elementRef.nativeElement.validity;
410
- return validity && validity.badInput;
411
- }
412
- }
413
- /** @nocollapse */ /** @nocollapse */ McInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McInput, deps: [{ token: i0.ElementRef }, { token: NG_VALIDATORS, optional: true, self: true }, { token: MC_VALIDATION, optional: true }, { token: i1.NgControl, optional: true, self: true }, { token: McNumberInput, optional: true, self: true }, { token: i1.NgModel, optional: true, self: true }, { token: i1.FormControlName, optional: true, self: true }, { token: i1.NgForm, optional: true }, { token: i1.FormGroupDirective, optional: true }, { token: i3.ErrorStateMatcher }, { token: MC_INPUT_VALUE_ACCESSOR, optional: true, self: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
414
- /** @nocollapse */ /** @nocollapse */ McInput.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.7", type: McInput, selector: "input[mcInput]", inputs: { errorStateMatcher: "errorStateMatcher", placeholder: "placeholder", disabled: "disabled", id: "id", required: "required", type: "type", value: "value" }, host: { listeners: { "blur": "onBlur()", "focus": "focusChanged(true)", "input": "onInput()" }, properties: { "attr.id": "id", "attr.placeholder": "placeholder", "attr.disabled": "disabled || null", "required": "required" }, classAttribute: "mc-input" }, providers: [{
415
- provide: McFormFieldControl, useExisting: McInput
416
- }], exportAs: ["mcInput"], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
417
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McInput, decorators: [{
418
- type: Directive,
419
- args: [{
420
- selector: `input[mcInput]`,
421
- exportAs: 'mcInput',
422
- host: {
423
- class: 'mc-input',
424
- // Native input properties that are overwritten by Angular inputs need to be synced with
425
- // the native input element. Otherwise property bindings for those don't work.
426
- '[attr.id]': 'id',
427
- '[attr.placeholder]': 'placeholder',
428
- '[attr.disabled]': 'disabled || null',
429
- '[required]': 'required',
430
- '(blur)': 'onBlur()',
431
- '(focus)': 'focusChanged(true)',
432
- '(input)': 'onInput()'
433
- },
434
- providers: [{
435
- provide: McFormFieldControl, useExisting: McInput
436
- }]
437
- }]
438
- }], ctorParameters: function () {
439
- return [{ type: i0.ElementRef }, { type: undefined, decorators: [{
440
- type: Optional
441
- }, {
442
- type: Self
443
- }, {
444
- type: Inject,
445
- args: [NG_VALIDATORS]
446
- }] }, { type: undefined, decorators: [{
447
- type: Optional
448
- }, {
449
- type: Inject,
450
- args: [MC_VALIDATION]
451
- }] }, { type: i1.NgControl, decorators: [{
452
- type: Optional
453
- }, {
454
- type: Self
455
- }] }, { type: McNumberInput, decorators: [{
456
- type: Optional
457
- }, {
458
- type: Self
459
- }] }, { type: i1.NgModel, decorators: [{
460
- type: Optional
461
- }, {
462
- type: Self
463
- }] }, { type: i1.FormControlName, decorators: [{
464
- type: Optional
465
- }, {
466
- type: Self
467
- }] }, { type: i1.NgForm, decorators: [{
468
- type: Optional
469
- }] }, { type: i1.FormGroupDirective, decorators: [{
470
- type: Optional
471
- }] }, { type: i3.ErrorStateMatcher }, { type: undefined, decorators: [{
472
- type: Optional
473
- }, {
474
- type: Self
475
- }, {
476
- type: Inject,
477
- args: [MC_INPUT_VALUE_ACCESSOR]
478
- }] }, { type: i0.ChangeDetectorRef }];
479
- }, propDecorators: { errorStateMatcher: [{
480
- type: Input
481
- }], placeholder: [{
482
- type: Input
483
- }], disabled: [{
484
- type: Input
485
- }], id: [{
486
- type: Input
487
- }], required: [{
488
- type: Input
489
- }], type: [{
490
- type: Input
491
- }], value: [{
492
- type: Input
493
- }] } });
494
- class McInputMono {
495
- }
496
- /** @nocollapse */ /** @nocollapse */ McInputMono.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McInputMono, deps: [], target: i0.ɵɵFactoryTarget.Directive });
497
- /** @nocollapse */ /** @nocollapse */ McInputMono.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.7", type: McInputMono, selector: "input[mcInputMonospace]", host: { classAttribute: "mc-input_monospace" }, exportAs: ["McInputMonospace"], ngImport: i0 });
498
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McInputMono, decorators: [{
499
- type: Directive,
500
- args: [{
501
- selector: 'input[mcInputMonospace]',
502
- exportAs: 'McInputMonospace',
503
- host: { class: 'mc-input_monospace' }
504
- }]
185
+ const MC_INPUT_INVALID_TYPES = [
186
+ 'button',
187
+ 'checkbox',
188
+ 'file',
189
+ 'hidden',
190
+ 'image',
191
+ 'radio',
192
+ 'range',
193
+ 'reset',
194
+ 'submit'
195
+ ];
196
+ let nextUniqueId$1 = 0;
197
+ class McInputBase {
198
+ constructor(defaultErrorStateMatcher, parentForm, parentFormGroup, ngControl) {
199
+ this.defaultErrorStateMatcher = defaultErrorStateMatcher;
200
+ this.parentForm = parentForm;
201
+ this.parentFormGroup = parentFormGroup;
202
+ this.ngControl = ngControl;
203
+ }
204
+ }
205
+ // tslint:disable-next-line:naming-convention
206
+ const McInputMixinBase = mixinErrorState(McInputBase);
207
+ class McInput extends McInputMixinBase {
208
+ // tslint:disable-next-line: naming-convention
209
+ constructor(elementRef, rawValidators, mcValidation, ngControl, numberInput, ngModel, formControlName, parentForm, parentFormGroup, defaultErrorStateMatcher, inputValueAccessor, changeDetectorRef) {
210
+ super(defaultErrorStateMatcher, parentForm, parentFormGroup, ngControl);
211
+ this.elementRef = elementRef;
212
+ this.rawValidators = rawValidators;
213
+ this.mcValidation = mcValidation;
214
+ this.numberInput = numberInput;
215
+ this.ngModel = ngModel;
216
+ this.formControlName = formControlName;
217
+ this.changeDetectorRef = changeDetectorRef;
218
+ /**
219
+ * Implemented as part of McFormFieldControl.
220
+ * @docs-private
221
+ */
222
+ this.focused = false;
223
+ /**
224
+ * Implemented as part of McFormFieldControl.
225
+ * @docs-private
226
+ */
227
+ this.stateChanges = new Subject();
228
+ /**
229
+ * Implemented as part of McFormFieldControl.
230
+ * @docs-private
231
+ */
232
+ this.controlType = 'input';
233
+ this.uid = `mc-input-${nextUniqueId$1++}`;
234
+ this.neverEmptyInputTypes = [
235
+ 'date',
236
+ 'datetime',
237
+ 'datetime-local',
238
+ 'month',
239
+ 'time',
240
+ 'week'
241
+ ].filter((t) => getSupportedInputTypes().has(t));
242
+ this._disabled = false;
243
+ this._required = false;
244
+ // tslint:enable no-reserved-keywords
245
+ this._type = 'text';
246
+ // If no input value accessor was explicitly specified, use the element as the input value
247
+ // accessor.
248
+ this._inputValueAccessor = inputValueAccessor || this.elementRef.nativeElement;
249
+ this.previousNativeValue = this.value;
250
+ // Force setter to be called in case id was not specified.
251
+ this.id = this.id;
252
+ }
253
+ /**
254
+ * Implemented as part of McFormFieldControl.
255
+ * @docs-private
256
+ */
257
+ get disabled() {
258
+ if (this.ngControl && this.ngControl.disabled !== null) {
259
+ return this.ngControl.disabled;
260
+ }
261
+ return this._disabled;
262
+ }
263
+ set disabled(value) {
264
+ this._disabled = coerceBooleanProperty(value);
265
+ // Browsers may not fire the blur event if the input is disabled too quickly.
266
+ // Reset from here to ensure that the element doesn't become stuck.
267
+ if (this.focused) {
268
+ this.focused = false;
269
+ this.stateChanges.next();
270
+ }
271
+ }
272
+ /**
273
+ * Implemented as part of McFormFieldControl.
274
+ * @docs-private
275
+ */
276
+ get id() {
277
+ return this._id;
278
+ }
279
+ set id(value) {
280
+ this._id = value || this.uid;
281
+ }
282
+ /**
283
+ * Implemented as part of McFormFieldControl.
284
+ * @docs-private
285
+ */
286
+ get required() {
287
+ return this._required;
288
+ }
289
+ set required(value) {
290
+ this._required = coerceBooleanProperty(value);
291
+ }
292
+ // tslint:disable no-reserved-keywords
293
+ /** Input type of the element. */
294
+ get type() {
295
+ return this._type;
296
+ }
297
+ set type(value) {
298
+ this._type = value || 'text';
299
+ this.validateType();
300
+ // When using Angular inputs, developers are no longer able to set the properties on the native
301
+ // input element. To ensure that bindings for `type` work, we need to sync the setter
302
+ // with the native property. Textarea elements don't support the type property or attribute.
303
+ if (getSupportedInputTypes().has(this._type)) {
304
+ this.elementRef.nativeElement.type = this._type;
305
+ }
306
+ }
307
+ /**
308
+ * Implemented as part of McFormFieldControl.
309
+ * @docs-private
310
+ */
311
+ get value() {
312
+ return this._inputValueAccessor.value;
313
+ }
314
+ set value(value) {
315
+ if (value !== this.value) {
316
+ this._inputValueAccessor.value = value;
317
+ this.stateChanges.next();
318
+ }
319
+ }
320
+ ngAfterContentInit() {
321
+ if (!this.ngControl) {
322
+ return;
323
+ }
324
+ if (this.mcValidation.useValidation) {
325
+ setMosaicValidation(this, this.changeDetectorRef);
326
+ }
327
+ }
328
+ ngOnChanges() {
329
+ this.stateChanges.next();
330
+ }
331
+ ngOnDestroy() {
332
+ this.stateChanges.complete();
333
+ }
334
+ ngDoCheck() {
335
+ if (this.ngControl) {
336
+ // We need to re-evaluate this on every change detection cycle, because there are some
337
+ // error triggers that we can't subscribe to (e.g. parent form submissions). This means
338
+ // that whatever logic is in here has to be super lean or we risk destroying the performance.
339
+ this.updateErrorState();
340
+ }
341
+ // We need to dirty-check the native element's value, because there are some cases where
342
+ // we won't be notified when it changes (e.g. the consumer isn't using forms or they're
343
+ // updating the value using `emitEvent: false`).
344
+ this.dirtyCheckNativeValue();
345
+ }
346
+ /** Focuses the input. */
347
+ focus() {
348
+ this.elementRef.nativeElement.focus();
349
+ }
350
+ onBlur() {
351
+ this.focusChanged(false);
352
+ if (this.ngControl && this.ngControl.control) {
353
+ const control = this.ngControl.control;
354
+ control.updateValueAndValidity({ emitEvent: false });
355
+ control.statusChanges.emit(control.status);
356
+ }
357
+ }
358
+ /** Callback for the cases where the focused state of the input changes. */
359
+ focusChanged(isFocused) {
360
+ if (isFocused !== this.focused) {
361
+ this.focused = isFocused;
362
+ this.stateChanges.next();
363
+ }
364
+ }
365
+ onInput() {
366
+ // This is a noop function and is used to let Angular know whenever the value changes.
367
+ // Angular will run a new change detection each time the `input` event has been dispatched.
368
+ // It's necessary that Angular recognizes the value change, because when floatingLabel
369
+ // is set to false and Angular forms aren't used, the placeholder won't recognize the
370
+ // value changes and will not disappear.
371
+ // Listening to the input event wouldn't be necessary when the input is using the
372
+ // FormsModule or ReactiveFormsModule, because Angular forms also listens to input events.
373
+ }
374
+ /**
375
+ * Implemented as part of McFormFieldControl.
376
+ * @docs-private
377
+ */
378
+ get empty() {
379
+ return !this.isNeverEmpty() && !this.elementRef.nativeElement.value && !this.isBadInput();
380
+ }
381
+ /**
382
+ * Implemented as part of McFormFieldControl.
383
+ * @docs-private
384
+ */
385
+ onContainerClick() {
386
+ this.focus();
387
+ }
388
+ /** Does some manual dirty checking on the native input `value` property. */
389
+ dirtyCheckNativeValue() {
390
+ const newValue = this.value;
391
+ if (this.previousNativeValue !== newValue) {
392
+ this.previousNativeValue = newValue;
393
+ this.stateChanges.next();
394
+ }
395
+ }
396
+ /** Make sure the input is a supported type. */
397
+ validateType() {
398
+ if (MC_INPUT_INVALID_TYPES.indexOf(this._type) > -1) {
399
+ throw getMcInputUnsupportedTypeError(this._type);
400
+ }
401
+ }
402
+ /** Checks whether the input type is one of the types that are never empty. */
403
+ isNeverEmpty() {
404
+ return this.neverEmptyInputTypes.indexOf(this._type) > -1;
405
+ }
406
+ /** Checks whether the input is invalid based on the native validation. */
407
+ isBadInput() {
408
+ // The `validity` property won't be present on platform-server.
409
+ const validity = this.elementRef.nativeElement.validity;
410
+ return validity && validity.badInput;
411
+ }
412
+ }
413
+ /** @nocollapse */ /** @nocollapse */ McInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McInput, deps: [{ token: i0.ElementRef }, { token: NG_VALIDATORS, optional: true, self: true }, { token: MC_VALIDATION, optional: true }, { token: i1.NgControl, optional: true, self: true }, { token: McNumberInput, optional: true, self: true }, { token: i1.NgModel, optional: true, self: true }, { token: i1.FormControlName, optional: true, self: true }, { token: i1.NgForm, optional: true }, { token: i1.FormGroupDirective, optional: true }, { token: i3.ErrorStateMatcher }, { token: MC_INPUT_VALUE_ACCESSOR, optional: true, self: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
414
+ /** @nocollapse */ /** @nocollapse */ McInput.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: McInput, selector: "input[mcInput]", inputs: { errorStateMatcher: "errorStateMatcher", placeholder: "placeholder", disabled: "disabled", id: "id", required: "required", type: "type", value: "value" }, host: { listeners: { "blur": "onBlur()", "focus": "focusChanged(true)", "input": "onInput()" }, properties: { "attr.id": "id", "attr.placeholder": "placeholder", "attr.disabled": "disabled || null", "required": "required" }, classAttribute: "mc-input" }, providers: [{
415
+ provide: McFormFieldControl, useExisting: McInput
416
+ }], exportAs: ["mcInput"], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
417
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McInput, decorators: [{
418
+ type: Directive,
419
+ args: [{
420
+ selector: `input[mcInput]`,
421
+ exportAs: 'mcInput',
422
+ host: {
423
+ class: 'mc-input',
424
+ // Native input properties that are overwritten by Angular inputs need to be synced with
425
+ // the native input element. Otherwise property bindings for those don't work.
426
+ '[attr.id]': 'id',
427
+ '[attr.placeholder]': 'placeholder',
428
+ '[attr.disabled]': 'disabled || null',
429
+ '[required]': 'required',
430
+ '(blur)': 'onBlur()',
431
+ '(focus)': 'focusChanged(true)',
432
+ '(input)': 'onInput()'
433
+ },
434
+ providers: [{
435
+ provide: McFormFieldControl, useExisting: McInput
436
+ }]
437
+ }]
438
+ }], ctorParameters: function () {
439
+ return [{ type: i0.ElementRef }, { type: undefined, decorators: [{
440
+ type: Optional
441
+ }, {
442
+ type: Self
443
+ }, {
444
+ type: Inject,
445
+ args: [NG_VALIDATORS]
446
+ }] }, { type: undefined, decorators: [{
447
+ type: Optional
448
+ }, {
449
+ type: Inject,
450
+ args: [MC_VALIDATION]
451
+ }] }, { type: i1.NgControl, decorators: [{
452
+ type: Optional
453
+ }, {
454
+ type: Self
455
+ }] }, { type: McNumberInput, decorators: [{
456
+ type: Optional
457
+ }, {
458
+ type: Self
459
+ }] }, { type: i1.NgModel, decorators: [{
460
+ type: Optional
461
+ }, {
462
+ type: Self
463
+ }] }, { type: i1.FormControlName, decorators: [{
464
+ type: Optional
465
+ }, {
466
+ type: Self
467
+ }] }, { type: i1.NgForm, decorators: [{
468
+ type: Optional
469
+ }] }, { type: i1.FormGroupDirective, decorators: [{
470
+ type: Optional
471
+ }] }, { type: i3.ErrorStateMatcher }, { type: undefined, decorators: [{
472
+ type: Optional
473
+ }, {
474
+ type: Self
475
+ }, {
476
+ type: Inject,
477
+ args: [MC_INPUT_VALUE_ACCESSOR]
478
+ }] }, { type: i0.ChangeDetectorRef }];
479
+ }, propDecorators: { errorStateMatcher: [{
480
+ type: Input
481
+ }], placeholder: [{
482
+ type: Input
483
+ }], disabled: [{
484
+ type: Input
485
+ }], id: [{
486
+ type: Input
487
+ }], required: [{
488
+ type: Input
489
+ }], type: [{
490
+ type: Input
491
+ }], value: [{
492
+ type: Input
493
+ }] } });
494
+ class McInputMono {
495
+ }
496
+ /** @nocollapse */ /** @nocollapse */ McInputMono.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McInputMono, deps: [], target: i0.ɵɵFactoryTarget.Directive });
497
+ /** @nocollapse */ /** @nocollapse */ McInputMono.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: McInputMono, selector: "input[mcInputMonospace]", host: { classAttribute: "mc-input_monospace" }, exportAs: ["McInputMonospace"], ngImport: i0 });
498
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McInputMono, decorators: [{
499
+ type: Directive,
500
+ args: [{
501
+ selector: 'input[mcInputMonospace]',
502
+ exportAs: 'McInputMonospace',
503
+ host: { class: 'mc-input_monospace' }
504
+ }]
505
505
  }] });
506
506
 
507
- const MIN_VALIDATOR = {
508
- provide: NG_VALIDATORS,
509
- useExisting: forwardRef(() => MinValidator),
510
- multi: true
511
- };
512
- /**
513
- * A directive which installs the {@link MinValidator} for any `formControlName`,
514
- * `formControl`, or control with `ngModel` that also has a `min` attribute.
515
- *
516
- * @experimental
517
- */
518
- class MinValidator {
519
- ngOnChanges(changes) {
520
- if ('min' in changes) {
521
- this.createValidator();
522
- if (this.onChange) {
523
- this.onChange();
524
- }
525
- }
526
- }
527
- validate(c) {
528
- return this.validator(c);
529
- }
530
- registerOnValidatorChange(fn) {
531
- this.onChange = fn;
532
- }
533
- createValidator() {
534
- this.validator = Validators.min(parseInt(this.min, 10));
535
- }
536
- }
537
- /** @nocollapse */ /** @nocollapse */ MinValidator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: MinValidator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
538
- /** @nocollapse */ /** @nocollapse */ MinValidator.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.7", type: MinValidator, selector: "[min][formControlName],[min][formControl],[min][ngModel]", inputs: { min: "min" }, host: { properties: { "attr.min": "min ? min : null" } }, providers: [MIN_VALIDATOR], usesOnChanges: true, ngImport: i0 });
539
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: MinValidator, decorators: [{
540
- type: Directive,
541
- args: [{
542
- selector: '[min][formControlName],[min][formControl],[min][ngModel]',
543
- providers: [MIN_VALIDATOR],
544
- host: {
545
- '[attr.min]': 'min ? min : null'
546
- }
547
- }]
548
- }], propDecorators: { min: [{
549
- type: Input
550
- }] } });
551
- const MAX_VALIDATOR = {
552
- provide: NG_VALIDATORS,
553
- useExisting: forwardRef(() => MaxValidator),
554
- multi: true
555
- };
556
- /**
557
- * A directive which installs the {@link MaxValidator} for any `formControlName`,
558
- * `formControl`, or control with `ngModel` that also has a `min` attribute.
559
- *
560
- * @experimental
561
- */
562
- class MaxValidator {
563
- ngOnChanges(changes) {
564
- if ('max' in changes) {
565
- this.createValidator();
566
- if (this.onChange) {
567
- this.onChange();
568
- }
569
- }
570
- }
571
- validate(c) {
572
- return this.validator(c);
573
- }
574
- registerOnValidatorChange(fn) {
575
- this.onChange = fn;
576
- }
577
- createValidator() {
578
- this.validator = Validators.max(parseInt(this.max, 10));
579
- }
580
- }
581
- /** @nocollapse */ /** @nocollapse */ MaxValidator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: MaxValidator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
582
- /** @nocollapse */ /** @nocollapse */ MaxValidator.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.7", type: MaxValidator, selector: "[max][formControlName],[max][formControl],[max][ngModel]", inputs: { max: "max" }, host: { properties: { "attr.max": "max ? max : null" } }, providers: [MAX_VALIDATOR], usesOnChanges: true, ngImport: i0 });
583
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: MaxValidator, decorators: [{
584
- type: Directive,
585
- args: [{
586
- selector: '[max][formControlName],[max][formControl],[max][ngModel]',
587
- providers: [MAX_VALIDATOR],
588
- host: {
589
- '[attr.max]': 'max ? max : null'
590
- }
591
- }]
592
- }], propDecorators: { max: [{
593
- type: Input
507
+ const MIN_VALIDATOR = {
508
+ provide: NG_VALIDATORS,
509
+ useExisting: forwardRef(() => MinValidator),
510
+ multi: true
511
+ };
512
+ /**
513
+ * A directive which installs the {@link MinValidator} for any `formControlName`,
514
+ * `formControl`, or control with `ngModel` that also has a `min` attribute.
515
+ *
516
+ * @experimental
517
+ */
518
+ class MinValidator {
519
+ ngOnChanges(changes) {
520
+ if ('min' in changes) {
521
+ this.createValidator();
522
+ if (this.onChange) {
523
+ this.onChange();
524
+ }
525
+ }
526
+ }
527
+ validate(c) {
528
+ return this.validator(c);
529
+ }
530
+ registerOnValidatorChange(fn) {
531
+ this.onChange = fn;
532
+ }
533
+ createValidator() {
534
+ this.validator = Validators.min(parseInt(this.min, 10));
535
+ }
536
+ }
537
+ /** @nocollapse */ /** @nocollapse */ MinValidator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: MinValidator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
538
+ /** @nocollapse */ /** @nocollapse */ MinValidator.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: MinValidator, selector: "[min][formControlName],[min][formControl],[min][ngModel]", inputs: { min: "min" }, host: { properties: { "attr.min": "min ? min : null" } }, providers: [MIN_VALIDATOR], usesOnChanges: true, ngImport: i0 });
539
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: MinValidator, decorators: [{
540
+ type: Directive,
541
+ args: [{
542
+ selector: '[min][formControlName],[min][formControl],[min][ngModel]',
543
+ providers: [MIN_VALIDATOR],
544
+ host: {
545
+ '[attr.min]': 'min ? min : null'
546
+ }
547
+ }]
548
+ }], propDecorators: { min: [{
549
+ type: Input
550
+ }] } });
551
+ const MAX_VALIDATOR = {
552
+ provide: NG_VALIDATORS,
553
+ useExisting: forwardRef(() => MaxValidator),
554
+ multi: true
555
+ };
556
+ /**
557
+ * A directive which installs the {@link MaxValidator} for any `formControlName`,
558
+ * `formControl`, or control with `ngModel` that also has a `min` attribute.
559
+ *
560
+ * @experimental
561
+ */
562
+ class MaxValidator {
563
+ ngOnChanges(changes) {
564
+ if ('max' in changes) {
565
+ this.createValidator();
566
+ if (this.onChange) {
567
+ this.onChange();
568
+ }
569
+ }
570
+ }
571
+ validate(c) {
572
+ return this.validator(c);
573
+ }
574
+ registerOnValidatorChange(fn) {
575
+ this.onChange = fn;
576
+ }
577
+ createValidator() {
578
+ this.validator = Validators.max(parseInt(this.max, 10));
579
+ }
580
+ }
581
+ /** @nocollapse */ /** @nocollapse */ MaxValidator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: MaxValidator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
582
+ /** @nocollapse */ /** @nocollapse */ MaxValidator.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: MaxValidator, selector: "[max][formControlName],[max][formControl],[max][ngModel]", inputs: { max: "max" }, host: { properties: { "attr.max": "max ? max : null" } }, providers: [MAX_VALIDATOR], usesOnChanges: true, ngImport: i0 });
583
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: MaxValidator, decorators: [{
584
+ type: Directive,
585
+ args: [{
586
+ selector: '[max][formControlName],[max][formControl],[max][ngModel]',
587
+ providers: [MAX_VALIDATOR],
588
+ host: {
589
+ '[attr.max]': 'max ? max : null'
590
+ }
591
+ }]
592
+ }], propDecorators: { max: [{
593
+ type: Input
594
594
  }] } });
595
595
 
596
- let nextUniqueId = 0;
597
- class McPasswordToggle extends McTooltipTrigger {
598
- constructor(overlay, elementRef, ngZone, scrollDispatcher, hostView, scrollStrategy, direction, focusMonitor, formField) {
599
- super(overlay, elementRef, ngZone, scrollDispatcher, hostView, scrollStrategy, direction);
600
- this.focusMonitor = focusMonitor;
601
- this.formField = formField;
602
- this._tabIndex = 0;
603
- this.trigger = `${PopUpTriggers.Hover}`;
604
- this.runFocusMonitor();
605
- }
606
- get content() {
607
- return this.formField.control.elementType === 'password' ?
608
- this.mcTooltipHidden :
609
- this._content;
610
- }
611
- set content(content) {
612
- this._content = content;
613
- this.updateData();
614
- }
615
- get disabled() {
616
- return this._disabled === undefined ? this.formField.disabled : this._disabled;
617
- }
618
- set disabled(value) {
619
- this._disabled = coerceBooleanProperty(value);
620
- this._disabled ? this.stopFocusMonitor() : this.runFocusMonitor();
621
- }
622
- get tabIndex() {
623
- return this.disabled ? -1 : this._tabIndex;
624
- }
625
- set tabIndex(value) {
626
- // If the specified tabIndex value is null or undefined, fall back to the default value.
627
- this._tabIndex = value != null ? coerceNumberProperty(value) : 0;
628
- }
629
- get hidden() {
630
- return this.formField.control.elementType === 'password';
631
- }
632
- ngOnDestroy() {
633
- this.stopFocusMonitor();
634
- }
635
- toggle() {
636
- if (this.disabled) {
637
- return;
638
- }
639
- this.hide();
640
- const input = this.formField.control;
641
- input.toggleType();
642
- this.updateData();
643
- }
644
- runFocusMonitor() {
645
- this.focusMonitor.monitor(this.elementRef)
646
- .subscribe((origin) => {
647
- if (origin === 'keyboard') {
648
- this.show();
649
- }
650
- else if (origin === null) {
651
- this.hide();
652
- }
653
- });
654
- }
655
- stopFocusMonitor() {
656
- this.focusMonitor.stopMonitoring(this.elementRef);
657
- }
658
- }
659
- /** @nocollapse */ /** @nocollapse */ McPasswordToggle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McPasswordToggle, deps: [{ token: i1$1.Overlay }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i1$1.ScrollDispatcher }, { token: i0.ViewContainerRef }, { token: MC_TOOLTIP_SCROLL_STRATEGY }, { token: i2.Directionality, optional: true }, { token: i3$1.FocusMonitor }, { token: i4.McFormField }], target: i0.ɵɵFactoryTarget.Component });
660
- /** @nocollapse */ /** @nocollapse */ McPasswordToggle.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.7", type: McPasswordToggle, selector: "mc-password-toggle", inputs: { content: ["mcTooltipNotHidden", "content"], mcTooltipHidden: "mcTooltipHidden", disabled: "disabled", tabIndex: "tabIndex" }, host: { listeners: { "click": "toggle()", "keydown.ENTER": "toggle()", "keydown.SPACE": "toggle()" }, properties: { "class.mc-eye_16": "hidden", "class.mc-eye-crossed_16": "!hidden", "attr.tabindex": "disabled ? null : tabIndex", "attr.disabled": "disabled || null" }, classAttribute: "mc-password-toggle mc" }, exportAs: ["mcPasswordToggle"], usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
661
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McPasswordToggle, decorators: [{
662
- type: Component,
663
- args: [{
664
- selector: `mc-password-toggle`,
665
- exportAs: 'mcPasswordToggle',
666
- template: '<ng-content></ng-content>',
667
- host: {
668
- class: 'mc-password-toggle mc',
669
- '[class.mc-eye_16]': 'hidden',
670
- '[class.mc-eye-crossed_16]': '!hidden',
671
- '[attr.tabindex]': 'disabled ? null : tabIndex',
672
- '[attr.disabled]': 'disabled || null',
673
- '(click)': 'toggle()',
674
- '(keydown.ENTER)': 'toggle()',
675
- '(keydown.SPACE)': 'toggle()'
676
- },
677
- changeDetection: ChangeDetectionStrategy.OnPush,
678
- encapsulation: ViewEncapsulation.None
679
- }]
680
- }], ctorParameters: function () {
681
- return [{ type: i1$1.Overlay }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i1$1.ScrollDispatcher }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{
682
- type: Inject,
683
- args: [MC_TOOLTIP_SCROLL_STRATEGY]
684
- }] }, { type: i2.Directionality, decorators: [{
685
- type: Optional
686
- }] }, { type: i3$1.FocusMonitor }, { type: i4.McFormField }];
687
- }, propDecorators: { content: [{
688
- type: Input,
689
- args: ['mcTooltipNotHidden']
690
- }], mcTooltipHidden: [{
691
- type: Input
692
- }], disabled: [{
693
- type: Input
694
- }], tabIndex: [{
695
- type: Input
696
- }] } });
697
- class McInputPassword extends McInputMixinBase {
698
- // tslint:disable-next-line: naming-convention
699
- constructor(elementRef, rawValidators, mcValidation, ngControl, ngModel, formControlName, parentForm, parentFormGroup, defaultErrorStateMatcher, inputValueAccessor, changeDetectorRef) {
700
- super(defaultErrorStateMatcher, parentForm, parentFormGroup, ngControl);
701
- this.elementRef = elementRef;
702
- this.rawValidators = rawValidators;
703
- this.mcValidation = mcValidation;
704
- this.ngModel = ngModel;
705
- this.formControlName = formControlName;
706
- this.changeDetectorRef = changeDetectorRef;
707
- /**
708
- * Implemented as part of McFormFieldControl.
709
- * @docs-private
710
- */
711
- this.focused = false;
712
- /**
713
- * Implemented as part of McFormFieldControl.
714
- * @docs-private
715
- */
716
- this.stateChanges = new Subject();
717
- /**
718
- * Implemented as part of McFormFieldControl.
719
- * @docs-private
720
- */
721
- this.controlType = 'input-password';
722
- this.elementType = 'password';
723
- this.uid = `mc-input-${nextUniqueId++}`;
724
- this._disabled = false;
725
- this._required = false;
726
- // If no input value accessor was explicitly specified, use the element as the input value
727
- // accessor.
728
- this._inputValueAccessor = inputValueAccessor || this.elementRef.nativeElement;
729
- this.previousNativeValue = this.value;
730
- // Force setter to be called in case id was not specified.
731
- this.id = this.id;
732
- }
733
- /**
734
- * Implemented as part of McFormFieldControl.
735
- * @docs-private
736
- */
737
- get disabled() {
738
- var _a;
739
- if (((_a = this.ngControl) === null || _a === void 0 ? void 0 : _a.disabled) !== null) {
740
- return this.ngControl.disabled;
741
- }
742
- return this._disabled;
743
- }
744
- set disabled(value) {
745
- this._disabled = coerceBooleanProperty(value);
746
- // Browsers may not fire the blur event if the input is disabled too quickly.
747
- // Reset from here to ensure that the element doesn't become stuck.
748
- if (this.focused) {
749
- this.focused = false;
750
- this.stateChanges.next();
751
- }
752
- }
753
- /**
754
- * Implemented as part of McFormFieldControl.
755
- * @docs-private
756
- */
757
- get id() {
758
- return this._id;
759
- }
760
- set id(value) {
761
- this._id = value || this.uid;
762
- }
763
- /**
764
- * Implemented as part of McFormFieldControl.
765
- * @docs-private
766
- */
767
- get required() {
768
- return this._required;
769
- }
770
- set required(value) {
771
- this._required = coerceBooleanProperty(value);
772
- }
773
- // this.elementRef.nativeElement.type = this._type;
774
- /**
775
- * Implemented as part of McFormFieldControl.
776
- * @docs-private
777
- */
778
- get value() {
779
- return this._inputValueAccessor.value;
780
- }
781
- set value(value) {
782
- if (value === this.value) {
783
- return;
784
- }
785
- this._inputValueAccessor.value = value;
786
- this.stateChanges.next();
787
- }
788
- ngAfterContentInit() {
789
- if (!this.ngControl) {
790
- return;
791
- }
792
- if (this.mcValidation.useValidation) {
793
- setMosaicValidation(this, this.changeDetectorRef);
794
- }
795
- }
796
- ngOnChanges() {
797
- this.stateChanges.next();
798
- }
799
- ngOnDestroy() {
800
- this.stateChanges.complete();
801
- }
802
- ngDoCheck() {
803
- if (this.ngControl) {
804
- // We need to re-evaluate this on every change detection cycle, because there are some
805
- // error triggers that we can't subscribe to (e.g. parent form submissions). This means
806
- // that whatever logic is in here has to be super lean or we risk destroying the performance.
807
- this.updateErrorState();
808
- }
809
- // We need to dirty-check the native element's value, because there are some cases where
810
- // we won't be notified when it changes (e.g. the consumer isn't using forms or they're
811
- // updating the value using `emitEvent: false`).
812
- this.dirtyCheckNativeValue();
813
- }
814
- toggleType() {
815
- this.elementType = this.elementType === 'password' ? 'text' : 'password';
816
- }
817
- /** Focuses the input. */
818
- focus() {
819
- this.elementRef.nativeElement.focus();
820
- }
821
- onBlur() {
822
- var _a;
823
- if ((_a = this.ngControl) === null || _a === void 0 ? void 0 : _a.control) {
824
- const control = this.ngControl.control;
825
- control.updateValueAndValidity({ emitEvent: false });
826
- control.statusChanges.emit(control.status);
827
- }
828
- this.focusChanged(false);
829
- }
830
- /** Callback for the cases where the focused state of the input changes. */
831
- focusChanged(isFocused) {
832
- if (isFocused === this.focused) {
833
- return;
834
- }
835
- this.focused = isFocused;
836
- this.stateChanges.next({ focused: this.focused });
837
- }
838
- onInput() {
839
- // This is a noop function and is used to let Angular know whenever the value changes.
840
- // Angular will run a new change detection each time the `input` event has been dispatched.
841
- // It's necessary that Angular recognizes the value change, because when floatingLabel
842
- // is set to false and Angular forms aren't used, the placeholder won't recognize the
843
- // value changes and will not disappear.
844
- // Listening to the input event wouldn't be necessary when the input is using the
845
- // FormsModule or ReactiveFormsModule, because Angular forms also listens to input events.
846
- }
847
- /**
848
- * Implemented as part of McFormFieldControl.
849
- * @docs-private
850
- */
851
- get empty() {
852
- return !this.elementRef.nativeElement.value && !this.isBadInput();
853
- }
854
- /**
855
- * Implemented as part of McFormFieldControl.
856
- * @docs-private
857
- */
858
- onContainerClick() {
859
- this.focus();
860
- }
861
- /** Does some manual dirty checking on the native input `value` property. */
862
- dirtyCheckNativeValue() {
863
- if (this.previousNativeValue !== this.value) {
864
- this.previousNativeValue = this.value;
865
- this.stateChanges.next();
866
- }
867
- }
868
- /** Checks whether the input is invalid based on the native validation. */
869
- isBadInput() {
870
- var _a;
871
- // The `validity` property won't be present on platform-server.
872
- return (_a = this.elementRef.nativeElement.validity) === null || _a === void 0 ? void 0 : _a.badInput;
873
- }
874
- }
875
- /** @nocollapse */ /** @nocollapse */ McInputPassword.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McInputPassword, deps: [{ token: i0.ElementRef }, { token: NG_VALIDATORS, optional: true, self: true }, { token: MC_VALIDATION, optional: true }, { token: i1.NgControl, optional: true, self: true }, { token: i1.NgModel, optional: true, self: true }, { token: i1.FormControlName, optional: true, self: true }, { token: i1.NgForm, optional: true }, { token: i1.FormGroupDirective, optional: true }, { token: i3.ErrorStateMatcher }, { token: MC_INPUT_VALUE_ACCESSOR, optional: true, self: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
876
- /** @nocollapse */ /** @nocollapse */ McInputPassword.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.7", type: McInputPassword, selector: "input[mcInputPassword]", inputs: { errorStateMatcher: "errorStateMatcher", placeholder: "placeholder", disabled: "disabled", id: "id", required: "required", value: "value" }, host: { listeners: { "blur": "onBlur()", "focus": "focusChanged(true)", "input": "onInput()" }, properties: { "attr.id": "id", "attr.type": "elementType", "attr.placeholder": "placeholder", "attr.disabled": "disabled || null", "required": "required" }, classAttribute: "mc-input mc-input-password" }, providers: [{
877
- provide: McFormFieldControl, useExisting: McInputPassword
878
- }], exportAs: ["mcInputPassword"], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
879
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McInputPassword, decorators: [{
880
- type: Directive,
881
- args: [{
882
- selector: `input[mcInputPassword]`,
883
- exportAs: 'mcInputPassword',
884
- host: {
885
- class: 'mc-input mc-input-password',
886
- // Native input properties that are overwritten by Angular inputs need to be synced with
887
- // the native input element. Otherwise property bindings for those don't work.
888
- '[attr.id]': 'id',
889
- '[attr.type]': 'elementType',
890
- '[attr.placeholder]': 'placeholder',
891
- '[attr.disabled]': 'disabled || null',
892
- '[required]': 'required',
893
- '(blur)': 'onBlur()',
894
- '(focus)': 'focusChanged(true)',
895
- '(input)': 'onInput()'
896
- },
897
- providers: [{
898
- provide: McFormFieldControl, useExisting: McInputPassword
899
- }]
900
- }]
901
- }], ctorParameters: function () {
902
- return [{ type: i0.ElementRef }, { type: undefined, decorators: [{
903
- type: Optional
904
- }, {
905
- type: Self
906
- }, {
907
- type: Inject,
908
- args: [NG_VALIDATORS]
909
- }] }, { type: undefined, decorators: [{
910
- type: Optional
911
- }, {
912
- type: Inject,
913
- args: [MC_VALIDATION]
914
- }] }, { type: i1.NgControl, decorators: [{
915
- type: Optional
916
- }, {
917
- type: Self
918
- }] }, { type: i1.NgModel, decorators: [{
919
- type: Optional
920
- }, {
921
- type: Self
922
- }] }, { type: i1.FormControlName, decorators: [{
923
- type: Optional
924
- }, {
925
- type: Self
926
- }] }, { type: i1.NgForm, decorators: [{
927
- type: Optional
928
- }] }, { type: i1.FormGroupDirective, decorators: [{
929
- type: Optional
930
- }] }, { type: i3.ErrorStateMatcher }, { type: undefined, decorators: [{
931
- type: Optional
932
- }, {
933
- type: Self
934
- }, {
935
- type: Inject,
936
- args: [MC_INPUT_VALUE_ACCESSOR]
937
- }] }, { type: i0.ChangeDetectorRef }];
938
- }, propDecorators: { errorStateMatcher: [{
939
- type: Input
940
- }], placeholder: [{
941
- type: Input
942
- }], disabled: [{
943
- type: Input
944
- }], id: [{
945
- type: Input
946
- }], required: [{
947
- type: Input
948
- }], value: [{
949
- type: Input
596
+ let nextUniqueId = 0;
597
+ class McPasswordToggle extends McTooltipTrigger {
598
+ constructor(overlay, elementRef, ngZone, scrollDispatcher, hostView, scrollStrategy, direction, focusMonitor, formField) {
599
+ super(overlay, elementRef, ngZone, scrollDispatcher, hostView, scrollStrategy, direction);
600
+ this.focusMonitor = focusMonitor;
601
+ this.formField = formField;
602
+ this._tabIndex = 0;
603
+ this.trigger = `${PopUpTriggers.Hover}`;
604
+ this.runFocusMonitor();
605
+ }
606
+ get content() {
607
+ return this.formField.control.elementType === 'password' ?
608
+ this.mcTooltipHidden :
609
+ this._content;
610
+ }
611
+ set content(content) {
612
+ this._content = content;
613
+ this.updateData();
614
+ }
615
+ get disabled() {
616
+ return this._disabled === undefined ? this.formField.disabled : this._disabled;
617
+ }
618
+ set disabled(value) {
619
+ this._disabled = coerceBooleanProperty(value);
620
+ this._disabled ? this.stopFocusMonitor() : this.runFocusMonitor();
621
+ }
622
+ get tabIndex() {
623
+ return this.disabled ? -1 : this._tabIndex;
624
+ }
625
+ set tabIndex(value) {
626
+ // If the specified tabIndex value is null or undefined, fall back to the default value.
627
+ this._tabIndex = value != null ? coerceNumberProperty(value) : 0;
628
+ }
629
+ get hidden() {
630
+ return this.formField.control.elementType === 'password';
631
+ }
632
+ ngOnDestroy() {
633
+ this.stopFocusMonitor();
634
+ }
635
+ toggle() {
636
+ if (this.disabled) {
637
+ return;
638
+ }
639
+ this.hide();
640
+ const input = this.formField.control;
641
+ input.toggleType();
642
+ this.updateData();
643
+ }
644
+ runFocusMonitor() {
645
+ this.focusMonitor.monitor(this.elementRef)
646
+ .subscribe((origin) => {
647
+ if (origin === 'keyboard') {
648
+ this.show();
649
+ }
650
+ else if (origin === null) {
651
+ this.hide();
652
+ }
653
+ });
654
+ }
655
+ stopFocusMonitor() {
656
+ this.focusMonitor.stopMonitoring(this.elementRef);
657
+ }
658
+ }
659
+ /** @nocollapse */ /** @nocollapse */ McPasswordToggle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McPasswordToggle, deps: [{ token: i1$1.Overlay }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i1$1.ScrollDispatcher }, { token: i0.ViewContainerRef }, { token: MC_TOOLTIP_SCROLL_STRATEGY }, { token: i2.Directionality, optional: true }, { token: i3$1.FocusMonitor }, { token: i4.McFormField }], target: i0.ɵɵFactoryTarget.Component });
660
+ /** @nocollapse */ /** @nocollapse */ McPasswordToggle.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: McPasswordToggle, selector: "mc-password-toggle", inputs: { content: ["mcTooltipNotHidden", "content"], mcTooltipHidden: "mcTooltipHidden", disabled: "disabled", tabIndex: "tabIndex" }, host: { listeners: { "click": "toggle()", "keydown.ENTER": "toggle()", "keydown.SPACE": "toggle()" }, properties: { "class.mc-eye_16": "hidden", "class.mc-eye-crossed_16": "!hidden", "attr.tabindex": "disabled ? null : tabIndex", "attr.disabled": "disabled || null" }, classAttribute: "mc-password-toggle mc" }, exportAs: ["mcPasswordToggle"], usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
661
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McPasswordToggle, decorators: [{
662
+ type: Component,
663
+ args: [{
664
+ selector: `mc-password-toggle`,
665
+ exportAs: 'mcPasswordToggle',
666
+ template: '<ng-content></ng-content>',
667
+ host: {
668
+ class: 'mc-password-toggle mc',
669
+ '[class.mc-eye_16]': 'hidden',
670
+ '[class.mc-eye-crossed_16]': '!hidden',
671
+ '[attr.tabindex]': 'disabled ? null : tabIndex',
672
+ '[attr.disabled]': 'disabled || null',
673
+ '(click)': 'toggle()',
674
+ '(keydown.ENTER)': 'toggle()',
675
+ '(keydown.SPACE)': 'toggle()'
676
+ },
677
+ changeDetection: ChangeDetectionStrategy.OnPush,
678
+ encapsulation: ViewEncapsulation.None
679
+ }]
680
+ }], ctorParameters: function () {
681
+ return [{ type: i1$1.Overlay }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i1$1.ScrollDispatcher }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{
682
+ type: Inject,
683
+ args: [MC_TOOLTIP_SCROLL_STRATEGY]
684
+ }] }, { type: i2.Directionality, decorators: [{
685
+ type: Optional
686
+ }] }, { type: i3$1.FocusMonitor }, { type: i4.McFormField }];
687
+ }, propDecorators: { content: [{
688
+ type: Input,
689
+ args: ['mcTooltipNotHidden']
690
+ }], mcTooltipHidden: [{
691
+ type: Input
692
+ }], disabled: [{
693
+ type: Input
694
+ }], tabIndex: [{
695
+ type: Input
696
+ }] } });
697
+ class McInputPassword extends McInputMixinBase {
698
+ // tslint:disable-next-line: naming-convention
699
+ constructor(elementRef, rawValidators, mcValidation, ngControl, ngModel, formControlName, parentForm, parentFormGroup, defaultErrorStateMatcher, inputValueAccessor, changeDetectorRef) {
700
+ super(defaultErrorStateMatcher, parentForm, parentFormGroup, ngControl);
701
+ this.elementRef = elementRef;
702
+ this.rawValidators = rawValidators;
703
+ this.mcValidation = mcValidation;
704
+ this.ngModel = ngModel;
705
+ this.formControlName = formControlName;
706
+ this.changeDetectorRef = changeDetectorRef;
707
+ /**
708
+ * Implemented as part of McFormFieldControl.
709
+ * @docs-private
710
+ */
711
+ this.focused = false;
712
+ /**
713
+ * Implemented as part of McFormFieldControl.
714
+ * @docs-private
715
+ */
716
+ this.stateChanges = new Subject();
717
+ this.checkRule = new Subject();
718
+ /**
719
+ * Implemented as part of McFormFieldControl.
720
+ * @docs-private
721
+ */
722
+ this.controlType = 'input-password';
723
+ this.elementType = 'password';
724
+ this.uid = `mc-input-${nextUniqueId++}`;
725
+ this._disabled = false;
726
+ this._required = false;
727
+ // If no input value accessor was explicitly specified, use the element as the input value
728
+ // accessor.
729
+ this._inputValueAccessor = inputValueAccessor || this.elementRef.nativeElement;
730
+ this.previousNativeValue = this.value;
731
+ // Force setter to be called in case id was not specified.
732
+ this.id = this.id;
733
+ }
734
+ /**
735
+ * Implemented as part of McFormFieldControl.
736
+ * @docs-private
737
+ */
738
+ get disabled() {
739
+ var _a;
740
+ if (((_a = this.ngControl) === null || _a === void 0 ? void 0 : _a.disabled) !== null) {
741
+ return this.ngControl.disabled;
742
+ }
743
+ return this._disabled;
744
+ }
745
+ set disabled(value) {
746
+ this._disabled = coerceBooleanProperty(value);
747
+ // Browsers may not fire the blur event if the input is disabled too quickly.
748
+ // Reset from here to ensure that the element doesn't become stuck.
749
+ if (this.focused) {
750
+ this.focused = false;
751
+ this.stateChanges.next();
752
+ }
753
+ }
754
+ /**
755
+ * Implemented as part of McFormFieldControl.
756
+ * @docs-private
757
+ */
758
+ get id() {
759
+ return this._id;
760
+ }
761
+ set id(value) {
762
+ this._id = value || this.uid;
763
+ }
764
+ /**
765
+ * Implemented as part of McFormFieldControl.
766
+ * @docs-private
767
+ */
768
+ get required() {
769
+ return this._required;
770
+ }
771
+ set required(value) {
772
+ this._required = coerceBooleanProperty(value);
773
+ }
774
+ // this.elementRef.nativeElement.type = this._type;
775
+ /**
776
+ * Implemented as part of McFormFieldControl.
777
+ * @docs-private
778
+ */
779
+ get value() {
780
+ return this._inputValueAccessor.value;
781
+ }
782
+ set value(value) {
783
+ if (value === this.value) {
784
+ return;
785
+ }
786
+ this._inputValueAccessor.value = value;
787
+ this.stateChanges.next();
788
+ }
789
+ /**
790
+ * Implemented as part of McFormFieldControl.
791
+ * @docs-private
792
+ */
793
+ get empty() {
794
+ return !this.elementRef.nativeElement.value && !this.isBadInput();
795
+ }
796
+ ngAfterContentInit() {
797
+ if (!this.ngControl) {
798
+ return;
799
+ }
800
+ if (this.mcValidation.useValidation) {
801
+ setMosaicValidation(this, this.changeDetectorRef);
802
+ }
803
+ }
804
+ ngOnChanges() {
805
+ this.stateChanges.next();
806
+ }
807
+ ngOnDestroy() {
808
+ this.stateChanges.complete();
809
+ }
810
+ ngDoCheck() {
811
+ if (this.ngControl) {
812
+ // We need to re-evaluate this on every change detection cycle, because there are some
813
+ // error triggers that we can't subscribe to (e.g. parent form submissions). This means
814
+ // that whatever logic is in here has to be super lean or we risk destroying the performance.
815
+ this.updateErrorState();
816
+ }
817
+ // We need to dirty-check the native element's value, because there are some cases where
818
+ // we won't be notified when it changes (e.g. the consumer isn't using forms or they're
819
+ // updating the value using `emitEvent: false`).
820
+ this.dirtyCheckNativeValue();
821
+ }
822
+ checkRules() {
823
+ this.checkRule.next();
824
+ }
825
+ toggleType() {
826
+ this.elementType = this.elementType === 'password' ? 'text' : 'password';
827
+ }
828
+ /** Focuses the input. */
829
+ focus() {
830
+ this.elementRef.nativeElement.focus();
831
+ }
832
+ onBlur() {
833
+ var _a;
834
+ if ((_a = this.ngControl) === null || _a === void 0 ? void 0 : _a.control) {
835
+ const control = this.ngControl.control;
836
+ control.updateValueAndValidity({ emitEvent: false });
837
+ control.statusChanges.emit(control.status);
838
+ }
839
+ this.focusChanged(false);
840
+ }
841
+ /** Callback for the cases where the focused state of the input changes. */
842
+ focusChanged(isFocused) {
843
+ if (isFocused === this.focused) {
844
+ return;
845
+ }
846
+ this.focused = isFocused;
847
+ this.stateChanges.next({ focused: this.focused });
848
+ }
849
+ onInput() {
850
+ // This is a noop function and is used to let Angular know whenever the value changes.
851
+ // Angular will run a new change detection each time the `input` event has been dispatched.
852
+ // It's necessary that Angular recognizes the value change, because when floatingLabel
853
+ // is set to false and Angular forms aren't used, the placeholder won't recognize the
854
+ // value changes and will not disappear.
855
+ // Listening to the input event wouldn't be necessary when the input is using the
856
+ // FormsModule or ReactiveFormsModule, because Angular forms also listens to input events.
857
+ }
858
+ /**
859
+ * Implemented as part of McFormFieldControl.
860
+ * @docs-private
861
+ */
862
+ onContainerClick() {
863
+ this.focus();
864
+ }
865
+ /** Does some manual dirty checking on the native input `value` property. */
866
+ dirtyCheckNativeValue() {
867
+ if (this.previousNativeValue !== this.value) {
868
+ this.previousNativeValue = this.value;
869
+ this.stateChanges.next();
870
+ }
871
+ }
872
+ /** Checks whether the input is invalid based on the native validation. */
873
+ isBadInput() {
874
+ var _a;
875
+ // The `validity` property won't be present on platform-server.
876
+ return (_a = this.elementRef.nativeElement.validity) === null || _a === void 0 ? void 0 : _a.badInput;
877
+ }
878
+ }
879
+ /** @nocollapse */ /** @nocollapse */ McInputPassword.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McInputPassword, deps: [{ token: i0.ElementRef }, { token: NG_VALIDATORS, optional: true, self: true }, { token: MC_VALIDATION, optional: true }, { token: i1.NgControl, optional: true, self: true }, { token: i1.NgModel, optional: true, self: true }, { token: i1.FormControlName, optional: true, self: true }, { token: i1.NgForm, optional: true }, { token: i1.FormGroupDirective, optional: true }, { token: i3.ErrorStateMatcher }, { token: MC_INPUT_VALUE_ACCESSOR, optional: true, self: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
880
+ /** @nocollapse */ /** @nocollapse */ McInputPassword.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: McInputPassword, selector: "input[mcInputPassword]", inputs: { errorStateMatcher: "errorStateMatcher", placeholder: "placeholder", disabled: "disabled", id: "id", required: "required", value: "value" }, host: { listeners: { "blur": "onBlur()", "focus": "focusChanged(true)", "input": "onInput()" }, properties: { "attr.id": "id", "attr.type": "elementType", "attr.placeholder": "placeholder", "attr.disabled": "disabled || null", "required": "required" }, classAttribute: "mc-input mc-input-password" }, providers: [{
881
+ provide: McFormFieldControl, useExisting: McInputPassword
882
+ }], exportAs: ["mcInputPassword"], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
883
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McInputPassword, decorators: [{
884
+ type: Directive,
885
+ args: [{
886
+ selector: `input[mcInputPassword]`,
887
+ exportAs: 'mcInputPassword',
888
+ host: {
889
+ class: 'mc-input mc-input-password',
890
+ // Native input properties that are overwritten by Angular inputs need to be synced with
891
+ // the native input element. Otherwise property bindings for those don't work.
892
+ '[attr.id]': 'id',
893
+ '[attr.type]': 'elementType',
894
+ '[attr.placeholder]': 'placeholder',
895
+ '[attr.disabled]': 'disabled || null',
896
+ '[required]': 'required',
897
+ '(blur)': 'onBlur()',
898
+ '(focus)': 'focusChanged(true)',
899
+ '(input)': 'onInput()'
900
+ },
901
+ providers: [{
902
+ provide: McFormFieldControl, useExisting: McInputPassword
903
+ }]
904
+ }]
905
+ }], ctorParameters: function () {
906
+ return [{ type: i0.ElementRef }, { type: undefined, decorators: [{
907
+ type: Optional
908
+ }, {
909
+ type: Self
910
+ }, {
911
+ type: Inject,
912
+ args: [NG_VALIDATORS]
913
+ }] }, { type: undefined, decorators: [{
914
+ type: Optional
915
+ }, {
916
+ type: Inject,
917
+ args: [MC_VALIDATION]
918
+ }] }, { type: i1.NgControl, decorators: [{
919
+ type: Optional
920
+ }, {
921
+ type: Self
922
+ }] }, { type: i1.NgModel, decorators: [{
923
+ type: Optional
924
+ }, {
925
+ type: Self
926
+ }] }, { type: i1.FormControlName, decorators: [{
927
+ type: Optional
928
+ }, {
929
+ type: Self
930
+ }] }, { type: i1.NgForm, decorators: [{
931
+ type: Optional
932
+ }] }, { type: i1.FormGroupDirective, decorators: [{
933
+ type: Optional
934
+ }] }, { type: i3.ErrorStateMatcher }, { type: undefined, decorators: [{
935
+ type: Optional
936
+ }, {
937
+ type: Self
938
+ }, {
939
+ type: Inject,
940
+ args: [MC_INPUT_VALUE_ACCESSOR]
941
+ }] }, { type: i0.ChangeDetectorRef }];
942
+ }, propDecorators: { errorStateMatcher: [{
943
+ type: Input
944
+ }], placeholder: [{
945
+ type: Input
946
+ }], disabled: [{
947
+ type: Input
948
+ }], id: [{
949
+ type: Input
950
+ }], required: [{
951
+ type: Input
952
+ }], value: [{
953
+ type: Input
950
954
  }] } });
951
955
 
952
- class McInputModule {
953
- }
954
- /** @nocollapse */ /** @nocollapse */ McInputModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
955
- /** @nocollapse */ /** @nocollapse */ McInputModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McInputModule, declarations: [McInput,
956
- McNumberInput,
957
- McInputPassword,
958
- McPasswordToggle,
959
- McInputMono,
960
- MinValidator,
961
- MaxValidator], imports: [CommonModule,
962
- A11yModule,
963
- McCommonModule,
964
- FormsModule], exports: [McInput,
965
- McNumberInput,
966
- McInputPassword,
967
- McPasswordToggle,
968
- McInputMono,
969
- MinValidator,
970
- MaxValidator] });
971
- /** @nocollapse */ /** @nocollapse */ McInputModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McInputModule, imports: [[
972
- CommonModule,
973
- A11yModule,
974
- McCommonModule,
975
- FormsModule
976
- ]] });
977
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McInputModule, decorators: [{
978
- type: NgModule,
979
- args: [{
980
- imports: [
981
- CommonModule,
982
- A11yModule,
983
- McCommonModule,
984
- FormsModule
985
- ],
986
- declarations: [
987
- McInput,
988
- McNumberInput,
989
- McInputPassword,
990
- McPasswordToggle,
991
- McInputMono,
992
- MinValidator,
993
- MaxValidator
994
- ],
995
- exports: [
996
- McInput,
997
- McNumberInput,
998
- McInputPassword,
999
- McPasswordToggle,
1000
- McInputMono,
1001
- MinValidator,
1002
- MaxValidator
1003
- ]
1004
- }]
956
+ class McInputModule {
957
+ }
958
+ /** @nocollapse */ /** @nocollapse */ McInputModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
959
+ /** @nocollapse */ /** @nocollapse */ McInputModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McInputModule, declarations: [McInput,
960
+ McNumberInput,
961
+ McInputPassword,
962
+ McPasswordToggle,
963
+ McInputMono,
964
+ MinValidator,
965
+ MaxValidator], imports: [CommonModule,
966
+ A11yModule,
967
+ McCommonModule,
968
+ FormsModule], exports: [McInput,
969
+ McNumberInput,
970
+ McInputPassword,
971
+ McPasswordToggle,
972
+ McInputMono,
973
+ MinValidator,
974
+ MaxValidator] });
975
+ /** @nocollapse */ /** @nocollapse */ McInputModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McInputModule, imports: [[
976
+ CommonModule,
977
+ A11yModule,
978
+ McCommonModule,
979
+ FormsModule
980
+ ]] });
981
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McInputModule, decorators: [{
982
+ type: NgModule,
983
+ args: [{
984
+ imports: [
985
+ CommonModule,
986
+ A11yModule,
987
+ McCommonModule,
988
+ FormsModule
989
+ ],
990
+ declarations: [
991
+ McInput,
992
+ McNumberInput,
993
+ McInputPassword,
994
+ McPasswordToggle,
995
+ McInputMono,
996
+ MinValidator,
997
+ MaxValidator
998
+ ],
999
+ exports: [
1000
+ McInput,
1001
+ McNumberInput,
1002
+ McInputPassword,
1003
+ McPasswordToggle,
1004
+ McInputMono,
1005
+ MinValidator,
1006
+ MaxValidator
1007
+ ]
1008
+ }]
1005
1009
  }] });
1006
1010
 
1007
- /**
1008
- * Generated bundle index. Do not edit.
1011
+ /**
1012
+ * Generated bundle index. Do not edit.
1009
1013
  */
1010
1014
 
1011
1015
  export { BIG_STEP, MAX_VALIDATOR, MC_INPUT_VALUE_ACCESSOR, MIN_VALIDATOR, MaxValidator, McInput, McInputBase, McInputMixinBase, McInputModule, McInputMono, McInputPassword, McNumberInput, McPasswordToggle, MinValidator, SMALL_STEP, add, getPrecision, isDigit, isFloat, isInt, normalizeSplitter };