@ptsecurity/mosaic 13.4.0 → 13.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (922) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +6 -6
  3. package/_theming.scss +7091 -6963
  4. package/_visual.scss +2690 -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 +21 -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 +8 -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 +18 -18
  126. package/design-tokens/legacy-2017/tokens/components/progress-bar.json5 +13 -13
  127. package/design-tokens/legacy-2017/tokens/components/progress-spinner.json5 +7 -7
  128. package/design-tokens/legacy-2017/tokens/components/radio.json5 +44 -44
  129. package/design-tokens/legacy-2017/tokens/components/select.json5 +24 -24
  130. package/design-tokens/legacy-2017/tokens/components/sidepanel.json5 +32 -32
  131. package/design-tokens/legacy-2017/tokens/components/table.json5 +15 -15
  132. package/design-tokens/legacy-2017/tokens/components/tabs.json5 +101 -101
  133. package/design-tokens/legacy-2017/tokens/components/tags.json5 +134 -131
  134. package/design-tokens/legacy-2017/tokens/components/textarea.json5 +12 -12
  135. package/design-tokens/legacy-2017/tokens/components/timepicker.json5 +7 -7
  136. package/design-tokens/legacy-2017/tokens/components/toggle.json5 +79 -79
  137. package/design-tokens/legacy-2017/tokens/components/tooltip.json5 +83 -83
  138. package/design-tokens/legacy-2017/tokens/components/tree.json5 +15 -15
  139. package/design-tokens/legacy-2017/tokens/properties/aliases.json5 +3 -3
  140. package/design-tokens/legacy-2017/tokens/properties/colors.json5 +118 -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 +7839 -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 +8 -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 +18 -18
  170. package/design-tokens/pt-2022/tokens/components/progress-bar.json5 +13 -13
  171. package/design-tokens/pt-2022/tokens/components/progress-spinner.json5 +7 -7
  172. package/design-tokens/pt-2022/tokens/components/radio.json5 +44 -44
  173. package/design-tokens/pt-2022/tokens/components/select.json5 +24 -24
  174. package/design-tokens/pt-2022/tokens/components/sidepanel.json5 +32 -32
  175. package/design-tokens/pt-2022/tokens/components/table.json5 +15 -15
  176. package/design-tokens/pt-2022/tokens/components/tabs.json5 +101 -101
  177. package/design-tokens/pt-2022/tokens/components/tags.json5 +137 -131
  178. package/design-tokens/pt-2022/tokens/components/textarea.json5 +12 -12
  179. package/design-tokens/pt-2022/tokens/components/timepicker.json5 +7 -7
  180. package/design-tokens/pt-2022/tokens/components/toggle.json5 +79 -79
  181. package/design-tokens/pt-2022/tokens/components/tooltip.json5 +83 -83
  182. package/design-tokens/pt-2022/tokens/components/tree.json5 +15 -15
  183. package/design-tokens/pt-2022/tokens/properties/aliases.json5 +3 -3
  184. package/design-tokens/pt-2022/tokens/properties/colors.json5 +120 -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 +9171 -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 +37 -37
  305. package/esm2020/core/selection/pseudo-checkbox/pseudo-checkbox.module.mjs +18 -18
  306. package/esm2020/core/services/measure-scrollbar.service.mjs +48 -48
  307. package/esm2020/core/utils/index.mjs +2 -2
  308. package/esm2020/core/utils/public-api.mjs +2 -2
  309. package/esm2020/core/utils/utils.mjs +5 -5
  310. package/esm2020/core/validation/index.mjs +2 -2
  311. package/esm2020/core/validation/validation.mjs +118 -89
  312. package/esm2020/core/version.mjs +3 -3
  313. package/esm2020/datepicker/calendar-body.component.mjs +106 -106
  314. package/esm2020/datepicker/calendar.component.mjs +362 -362
  315. package/esm2020/datepicker/datepicker-animations.mjs +32 -32
  316. package/esm2020/datepicker/datepicker-errors.mjs +6 -6
  317. package/esm2020/datepicker/datepicker-input.directive.mjs +936 -900
  318. package/esm2020/datepicker/datepicker-intl.mjs +40 -40
  319. package/esm2020/datepicker/datepicker-module.mjs +107 -107
  320. package/esm2020/datepicker/datepicker-toggle.component.mjs +86 -86
  321. package/esm2020/datepicker/datepicker.component.mjs +408 -408
  322. package/esm2020/datepicker/index.mjs +2 -2
  323. package/esm2020/datepicker/month-view.component.mjs +257 -257
  324. package/esm2020/datepicker/multi-year-view.component.mjs +218 -218
  325. package/esm2020/datepicker/ptsecurity-mosaic-datepicker.mjs +4 -4
  326. package/esm2020/datepicker/public-api.mjs +12 -12
  327. package/esm2020/datepicker/year-view.component.mjs +253 -253
  328. package/esm2020/design-tokens/index.mjs +2 -2
  329. package/esm2020/design-tokens/legacy-2017/tokens.mjs +1133 -1104
  330. package/esm2020/design-tokens/pt-2022/tokens.mjs +1203 -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 +134 -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 +368 -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 +1107 -1110
  443. package/esm2020/select/select.module.mjs +73 -73
  444. package/esm2020/sidebar/index.mjs +2 -2
  445. package/esm2020/sidebar/ptsecurity-mosaic-sidebar.mjs +4 -4
  446. package/esm2020/sidebar/public-api.mjs +3 -3
  447. package/esm2020/sidebar/sidebar-animations.mjs +23 -23
  448. package/esm2020/sidebar/sidebar.component.mjs +146 -146
  449. package/esm2020/sidebar/sidebar.module.mjs +30 -30
  450. package/esm2020/sidepanel/index.mjs +2 -2
  451. package/esm2020/sidepanel/ptsecurity-mosaic-sidepanel.mjs +4 -4
  452. package/esm2020/sidepanel/public-api.mjs +7 -7
  453. package/esm2020/sidepanel/sidepanel-animations.mjs +26 -26
  454. package/esm2020/sidepanel/sidepanel-config.mjs +26 -26
  455. package/esm2020/sidepanel/sidepanel-container.component.mjs +106 -106
  456. package/esm2020/sidepanel/sidepanel-directives.mjs +159 -159
  457. package/esm2020/sidepanel/sidepanel-ref.mjs +53 -53
  458. package/esm2020/sidepanel/sidepanel.module.mjs +74 -74
  459. package/esm2020/sidepanel/sidepanel.service.mjs +167 -167
  460. package/esm2020/splitter/index.mjs +2 -2
  461. package/esm2020/splitter/ptsecurity-mosaic-splitter.mjs +4 -4
  462. package/esm2020/splitter/public-api.mjs +3 -3
  463. package/esm2020/splitter/splitter.component.mjs +482 -482
  464. package/esm2020/splitter/splitter.module.mjs +40 -40
  465. package/esm2020/table/index.mjs +2 -2
  466. package/esm2020/table/ptsecurity-mosaic-table.mjs +4 -4
  467. package/esm2020/table/public-api.mjs +3 -3
  468. package/esm2020/table/table.component.mjs +16 -16
  469. package/esm2020/table/table.module.mjs +30 -30
  470. package/esm2020/tabs/index.mjs +2 -2
  471. package/esm2020/tabs/paginated-tab-header.mjs +479 -479
  472. package/esm2020/tabs/ptsecurity-mosaic-tabs.mjs +4 -4
  473. package/esm2020/tabs/public-api.mjs +11 -11
  474. package/esm2020/tabs/tab-body.component.mjs +178 -178
  475. package/esm2020/tabs/tab-content.directive.mjs +15 -15
  476. package/esm2020/tabs/tab-group.component.mjs +350 -350
  477. package/esm2020/tabs/tab-header.component.mjs +67 -67
  478. package/esm2020/tabs/tab-label-wrapper.directive.mjs +78 -78
  479. package/esm2020/tabs/tab-label.directive.mjs +17 -17
  480. package/esm2020/tabs/tab-nav-bar/index.mjs +2 -2
  481. package/esm2020/tabs/tab-nav-bar/tab-nav-bar.mjs +110 -110
  482. package/esm2020/tabs/tab.component.mjs +133 -133
  483. package/esm2020/tabs/tabs-animations.mjs +24 -24
  484. package/esm2020/tabs/tabs.module.mjs +104 -104
  485. package/esm2020/tags/index.mjs +2 -2
  486. package/esm2020/tags/ptsecurity-mosaic-tags.mjs +4 -4
  487. package/esm2020/tags/public-api.mjs +6 -6
  488. package/esm2020/tags/tag-default-options.mjs +4 -4
  489. package/esm2020/tags/tag-input.mjs +229 -229
  490. package/esm2020/tags/tag-list.component.mjs +722 -722
  491. package/esm2020/tags/tag-text-control.mjs +2 -2
  492. package/esm2020/tags/tag.component.mjs +375 -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 +676 -653
  504. package/esm2020/timepicker/timepicker.module.mjs +34 -34
  505. package/esm2020/toggle/index.mjs +2 -2
  506. package/esm2020/toggle/ptsecurity-mosaic-toggle.mjs +4 -4
  507. package/esm2020/toggle/public-api.mjs +3 -3
  508. package/esm2020/toggle/toggle.component.mjs +158 -158
  509. package/esm2020/toggle/toggle.module.mjs +20 -20
  510. package/esm2020/tooltip/index.mjs +2 -2
  511. package/esm2020/tooltip/ptsecurity-mosaic-tooltip.mjs +4 -4
  512. package/esm2020/tooltip/public-api.mjs +3 -3
  513. package/esm2020/tooltip/tooltip.animations.mjs +19 -19
  514. package/esm2020/tooltip/tooltip.component.mjs +295 -295
  515. package/esm2020/tooltip/tooltip.module.mjs +43 -43
  516. package/esm2020/tree/control/base-tree-control.mjs +60 -60
  517. package/esm2020/tree/control/flat-tree-control.mjs +123 -123
  518. package/esm2020/tree/control/nested-tree-control.mjs +41 -41
  519. package/esm2020/tree/control/tree-control.mjs +2 -2
  520. package/esm2020/tree/data-source/flat-data-source.mjs +162 -162
  521. package/esm2020/tree/data-source/nested-data-source.mjs +30 -30
  522. package/esm2020/tree/index.mjs +2 -2
  523. package/esm2020/tree/node.mjs +31 -31
  524. package/esm2020/tree/outlet.mjs +15 -15
  525. package/esm2020/tree/padding.directive.mjs +110 -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 +236 -234
  532. package/esm2020/tree/tree-selection.component.mjs +540 -535
  533. package/esm2020/tree/tree.mjs +15 -15
  534. package/esm2020/tree/tree.module.mjs +57 -53
  535. package/esm2020/tree-select/index.mjs +2 -2
  536. package/esm2020/tree-select/ptsecurity-mosaic-tree-select.mjs +4 -4
  537. package/esm2020/tree-select/public-api.mjs +3 -3
  538. package/esm2020/tree-select/tree-select.component.mjs +924 -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 +2642 -2613
  551. package/fesm2015/ptsecurity-mosaic-core.mjs.map +1 -1
  552. package/fesm2015/ptsecurity-mosaic-datepicker.mjs +2687 -2649
  553. package/fesm2015/ptsecurity-mosaic-datepicker.mjs.map +1 -1
  554. package/fesm2015/ptsecurity-mosaic-design-tokens.mjs +2374 -2284
  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 +506 -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 +975 -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 +1203 -1205
  585. package/fesm2015/ptsecurity-mosaic-select.mjs.map +1 -1
  586. package/fesm2015/ptsecurity-mosaic-sidebar.mjs +185 -185
  587. package/fesm2015/ptsecurity-mosaic-sidebar.mjs.map +1 -1
  588. package/fesm2015/ptsecurity-mosaic-sidepanel.mjs +555 -555
  589. package/fesm2015/ptsecurity-mosaic-sidepanel.mjs.map +1 -1
  590. package/fesm2015/ptsecurity-mosaic-splitter.mjs +511 -511
  591. package/fesm2015/ptsecurity-mosaic-splitter.mjs.map +1 -1
  592. package/fesm2015/ptsecurity-mosaic-table.mjs +36 -36
  593. package/fesm2015/ptsecurity-mosaic-table.mjs.map +1 -1
  594. package/fesm2015/ptsecurity-mosaic-tabs.mjs +1460 -1460
  595. package/fesm2015/ptsecurity-mosaic-tabs.mjs.map +1 -1
  596. package/fesm2015/ptsecurity-mosaic-tags.mjs +1342 -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 +718 -695
  601. package/fesm2015/ptsecurity-mosaic-timepicker.mjs.map +1 -1
  602. package/fesm2015/ptsecurity-mosaic-toggle.mjs +163 -163
  603. package/fesm2015/ptsecurity-mosaic-toggle.mjs.map +1 -1
  604. package/fesm2015/ptsecurity-mosaic-tooltip.mjs +344 -344
  605. package/fesm2015/ptsecurity-mosaic-tooltip.mjs.map +1 -1
  606. package/fesm2015/ptsecurity-mosaic-tree-select.mjs +940 -940
  607. package/fesm2015/ptsecurity-mosaic-tree-select.mjs.map +1 -1
  608. package/fesm2015/ptsecurity-mosaic-tree.mjs +1676 -1669
  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 +2671 -2642
  622. package/fesm2020/ptsecurity-mosaic-core.mjs.map +1 -1
  623. package/fesm2020/ptsecurity-mosaic-datepicker.mjs +2672 -2635
  624. package/fesm2020/ptsecurity-mosaic-datepicker.mjs.map +1 -1
  625. package/fesm2020/ptsecurity-mosaic-design-tokens.mjs +2374 -2284
  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 +491 -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 +964 -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 +1198 -1201
  656. package/fesm2020/ptsecurity-mosaic-select.mjs.map +1 -1
  657. package/fesm2020/ptsecurity-mosaic-sidebar.mjs +185 -185
  658. package/fesm2020/ptsecurity-mosaic-sidebar.mjs.map +1 -1
  659. package/fesm2020/ptsecurity-mosaic-sidepanel.mjs +552 -552
  660. package/fesm2020/ptsecurity-mosaic-sidepanel.mjs.map +1 -1
  661. package/fesm2020/ptsecurity-mosaic-splitter.mjs +511 -511
  662. package/fesm2020/ptsecurity-mosaic-splitter.mjs.map +1 -1
  663. package/fesm2020/ptsecurity-mosaic-table.mjs +36 -36
  664. package/fesm2020/ptsecurity-mosaic-table.mjs.map +1 -1
  665. package/fesm2020/ptsecurity-mosaic-tabs.mjs +1445 -1445
  666. package/fesm2020/ptsecurity-mosaic-tabs.mjs.map +1 -1
  667. package/fesm2020/ptsecurity-mosaic-tags.mjs +1335 -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 +715 -692
  672. package/fesm2020/ptsecurity-mosaic-timepicker.mjs.map +1 -1
  673. package/fesm2020/ptsecurity-mosaic-toggle.mjs +163 -163
  674. package/fesm2020/ptsecurity-mosaic-toggle.mjs.map +1 -1
  675. package/fesm2020/ptsecurity-mosaic-tooltip.mjs +336 -336
  676. package/fesm2020/ptsecurity-mosaic-tooltip.mjs.map +1 -1
  677. package/fesm2020/ptsecurity-mosaic-tree-select.mjs +937 -938
  678. package/fesm2020/ptsecurity-mosaic-tree-select.mjs.map +1 -1
  679. package/fesm2020/ptsecurity-mosaic-tree.mjs +1663 -1656
  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 +121 -121
  706. package/input/input-value-accessor.d.ts +4 -4
  707. package/input/input.d.ts +116 -116
  708. package/input/input.module.d.ts +14 -14
  709. package/input/ptsecurity-mosaic-input.d.ts +5 -5
  710. package/input/public-api.d.ts +6 -6
  711. package/link/index.d.ts +1 -1
  712. package/link/link.component.d.ts +38 -38
  713. package/link/link.module.d.ts +9 -9
  714. package/link/ptsecurity-mosaic-link.d.ts +5 -5
  715. package/link/public-api.d.ts +2 -2
  716. package/list/index.d.ts +1 -1
  717. package/list/list-selection.component.d.ts +168 -168
  718. package/list/list.component.d.ts +18 -18
  719. package/list/list.module.d.ts +11 -11
  720. package/list/ptsecurity-mosaic-list.d.ts +5 -5
  721. package/list/public-api.d.ts +3 -3
  722. package/modal/README.md +33 -33
  723. package/modal/css-unit.pipe.d.ts +7 -7
  724. package/modal/index.d.ts +1 -1
  725. package/modal/modal-control.service.d.ts +20 -20
  726. package/modal/modal-ref.class.d.ts +36 -36
  727. package/modal/modal-util.d.ts +12 -12
  728. package/modal/modal.component.d.ts +126 -126
  729. package/modal/modal.directive.d.ts +17 -17
  730. package/modal/modal.module.d.ts +14 -14
  731. package/modal/modal.service.d.ts +33 -33
  732. package/modal/modal.type.d.ts +59 -59
  733. package/modal/ptsecurity-mosaic-modal.d.ts +5 -5
  734. package/modal/public-api.d.ts +6 -6
  735. package/navbar/README.md +41 -41
  736. package/navbar/index.d.ts +1 -1
  737. package/navbar/navbar-item.component.d.ts +161 -161
  738. package/navbar/navbar.component.d.ts +58 -58
  739. package/navbar/navbar.module.d.ts +14 -14
  740. package/navbar/ptsecurity-mosaic-navbar.d.ts +5 -5
  741. package/navbar/public-api.d.ts +4 -4
  742. package/navbar/vertical-navbar.animation.d.ts +2 -2
  743. package/navbar/vertical-navbar.component.d.ts +23 -23
  744. package/package.json +13 -10
  745. package/popover/README.md +32 -32
  746. package/popover/index.d.ts +1 -1
  747. package/popover/popover-animations.d.ts +4 -4
  748. package/popover/popover-confirm.component.d.ts +33 -33
  749. package/popover/popover.component.d.ts +74 -74
  750. package/popover/popover.module.d.ts +12 -12
  751. package/popover/ptsecurity-mosaic-popover.d.ts +5 -5
  752. package/popover/public-api.d.ts +4 -4
  753. package/prebuilt-themes/dark-theme.css +1 -1
  754. package/prebuilt-themes/default-theme.css +1 -1
  755. package/progress-bar/index.d.ts +1 -1
  756. package/progress-bar/progress-bar.component.d.ts +18 -18
  757. package/progress-bar/progress-bar.module.d.ts +9 -9
  758. package/progress-bar/ptsecurity-mosaic-progress-bar.d.ts +5 -5
  759. package/progress-bar/public-api.d.ts +2 -2
  760. package/progress-spinner/index.d.ts +1 -1
  761. package/progress-spinner/progress-spinner.component.d.ts +19 -19
  762. package/progress-spinner/progress-spinner.module.d.ts +9 -9
  763. package/progress-spinner/ptsecurity-mosaic-progress-spinner.d.ts +5 -5
  764. package/progress-spinner/public-api.d.ts +2 -2
  765. package/ptsecurity-mosaic.d.ts +5 -5
  766. package/public-api.d.ts +1 -1
  767. package/radio/index.d.ts +1 -1
  768. package/radio/ptsecurity-mosaic-radio.d.ts +5 -5
  769. package/radio/public-api.d.ts +2 -2
  770. package/radio/radio.component.d.ts +207 -207
  771. package/radio/radio.module.d.ts +10 -10
  772. package/schematics/README.md +35 -35
  773. package/select/index.d.ts +1 -1
  774. package/select/ptsecurity-mosaic-select.d.ts +5 -5
  775. package/select/public-api.d.ts +3 -3
  776. package/select/select-option.directive.d.ts +20 -20
  777. package/select/select.component.d.ts +307 -307
  778. package/select/select.module.d.ts +15 -15
  779. package/sidebar/index.d.ts +1 -1
  780. package/sidebar/ptsecurity-mosaic-sidebar.d.ts +5 -5
  781. package/sidebar/public-api.d.ts +2 -2
  782. package/sidebar/sidebar-animations.d.ts +8 -8
  783. package/sidebar/sidebar.component.d.ts +53 -53
  784. package/sidebar/sidebar.module.d.ts +8 -8
  785. package/sidepanel/index.d.ts +1 -1
  786. package/sidepanel/ptsecurity-mosaic-sidepanel.d.ts +5 -5
  787. package/sidepanel/public-api.d.ts +6 -6
  788. package/sidepanel/sidepanel-animations.d.ts +14 -14
  789. package/sidepanel/sidepanel-config.d.ts +25 -25
  790. package/sidepanel/sidepanel-container.component.d.ts +45 -45
  791. package/sidepanel/sidepanel-directives.d.ts +50 -50
  792. package/sidepanel/sidepanel-ref.d.ts +24 -24
  793. package/sidepanel/sidepanel.module.d.ts +15 -15
  794. package/sidepanel/sidepanel.service.d.ts +57 -57
  795. package/splitter/index.d.ts +1 -1
  796. package/splitter/ptsecurity-mosaic-splitter.d.ts +5 -5
  797. package/splitter/public-api.d.ts +2 -2
  798. package/splitter/splitter.component.d.ts +130 -130
  799. package/splitter/splitter.module.d.ts +9 -9
  800. package/table/index.d.ts +1 -1
  801. package/table/ptsecurity-mosaic-table.d.ts +5 -5
  802. package/table/public-api.d.ts +2 -2
  803. package/table/table.component.d.ts +5 -5
  804. package/table/table.module.d.ts +10 -10
  805. package/tabs/index.d.ts +1 -1
  806. package/tabs/paginated-tab-header.d.ts +179 -179
  807. package/tabs/ptsecurity-mosaic-tabs.d.ts +5 -5
  808. package/tabs/public-api.d.ts +10 -10
  809. package/tabs/tab-body.component.d.ts +95 -95
  810. package/tabs/tab-content.directive.d.ts +9 -9
  811. package/tabs/tab-group.component.d.ts +133 -133
  812. package/tabs/tab-header.component.d.ts +35 -35
  813. package/tabs/tab-label-wrapper.directive.d.ts +30 -30
  814. package/tabs/tab-label.directive.d.ts +9 -9
  815. package/tabs/tab-nav-bar/index.d.ts +1 -1
  816. package/tabs/tab-nav-bar/tab-nav-bar.d.ts +38 -38
  817. package/tabs/tab.component.d.ts +66 -66
  818. package/tabs/tabs-animations.d.ts +4 -4
  819. package/tabs/tabs.module.d.ts +20 -20
  820. package/tags/index.d.ts +1 -1
  821. package/tags/ptsecurity-mosaic-tags.d.ts +5 -5
  822. package/tags/public-api.d.ts +5 -5
  823. package/tags/tag-default-options.d.ts +8 -8
  824. package/tags/tag-input.d.ts +77 -77
  825. package/tags/tag-list.component.d.ts +240 -240
  826. package/tags/tag-text-control.d.ts +10 -10
  827. package/tags/tag.component.d.ts +135 -135
  828. package/tags/tag.module.d.ts +11 -11
  829. package/textarea/index.d.ts +1 -1
  830. package/textarea/ptsecurity-mosaic-textarea.d.ts +5 -5
  831. package/textarea/public-api.d.ts +2 -2
  832. package/textarea/textarea.component.d.ts +111 -111
  833. package/textarea/textarea.module.d.ts +11 -11
  834. package/timepicker/index.d.ts +1 -1
  835. package/timepicker/ptsecurity-mosaic-timepicker.d.ts +5 -5
  836. package/timepicker/public-api.d.ts +3 -3
  837. package/timepicker/timepicker.constants.d.ts +20 -20
  838. package/timepicker/timepicker.directive.d.ts +147 -142
  839. package/timepicker/timepicker.module.d.ts +11 -11
  840. package/toggle/index.d.ts +1 -1
  841. package/toggle/ptsecurity-mosaic-toggle.d.ts +5 -5
  842. package/toggle/public-api.d.ts +2 -2
  843. package/toggle/toggle.component.d.ts +54 -54
  844. package/toggle/toggle.module.d.ts +10 -10
  845. package/tooltip/index.d.ts +1 -1
  846. package/tooltip/ptsecurity-mosaic-tooltip.d.ts +5 -5
  847. package/tooltip/public-api.d.ts +2 -2
  848. package/tooltip/tooltip.animations.d.ts +8 -8
  849. package/tooltip/tooltip.component.d.ts +91 -91
  850. package/tooltip/tooltip.module.d.ts +9 -9
  851. package/tree/control/base-tree-control.d.ts +40 -40
  852. package/tree/control/flat-tree-control.d.ts +48 -48
  853. package/tree/control/nested-tree-control.d.ts +19 -19
  854. package/tree/control/tree-control.d.ts +44 -44
  855. package/tree/data-source/flat-data-source.d.ts +80 -80
  856. package/tree/data-source/nested-data-source.d.ts +15 -15
  857. package/tree/index.d.ts +1 -1
  858. package/tree/node.d.ts +34 -34
  859. package/tree/outlet.d.ts +9 -9
  860. package/tree/padding.directive.d.ts +45 -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 +68 -68
  867. package/tree/tree-selection.component.d.ts +132 -130
  868. package/tree/tree.d.ts +6 -6
  869. package/tree/tree.module.d.ts +16 -16
  870. package/tree-select/index.d.ts +1 -1
  871. package/tree-select/ptsecurity-mosaic-tree-select.d.ts +5 -5
  872. package/tree-select/public-api.d.ts +2 -2
  873. package/tree-select/tree-select.component.d.ts +269 -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
@@ -16,848 +16,848 @@ import { A11yModule } from '@angular/cdk/a11y';
16
16
  import { ComponentPortal } from '@angular/cdk/portal';
17
17
  import { filter } from 'rxjs/operators';
18
18
 
19
- /**
20
- * API class that public to users to handle the modal instance.
21
- * McModalRef is aim to avoid accessing to the modal instance directly by users.
22
- */
23
- // tslint:disable-next-line:naming-convention
24
- class McModalRef {
19
+ /**
20
+ * API class that public to users to handle the modal instance.
21
+ * McModalRef is aim to avoid accessing to the modal instance directly by users.
22
+ */
23
+ // tslint:disable-next-line:naming-convention
24
+ class McModalRef {
25
25
  }
26
26
 
27
- class ModalUtil {
28
- constructor(document) {
29
- this.document = document;
30
- this.lastPosition = { x: -1, y: -1 };
31
- this.listenDocumentClick();
32
- }
33
- getLastClickPosition() {
34
- return this.lastPosition;
35
- }
36
- listenDocumentClick() {
37
- this.document.addEventListener('click', (event) => {
38
- this.lastPosition = { x: event.clientX, y: event.clientY };
39
- });
40
- }
41
- }
27
+ class ModalUtil {
28
+ constructor(document) {
29
+ this.document = document;
30
+ this.lastPosition = { x: -1, y: -1 };
31
+ this.listenDocumentClick();
32
+ }
33
+ getLastClickPosition() {
34
+ return this.lastPosition;
35
+ }
36
+ listenDocumentClick() {
37
+ this.document.addEventListener('click', (event) => {
38
+ this.lastPosition = { x: event.clientX, y: event.clientY };
39
+ });
40
+ }
41
+ }
42
42
  const modalUtilObject = new ModalUtil(document);
43
43
 
44
- var ModalSize;
45
- (function (ModalSize) {
46
- ModalSize["Small"] = "small";
47
- ModalSize["Normal"] = "normal";
48
- ModalSize["Large"] = "large";
44
+ var ModalSize;
45
+ (function (ModalSize) {
46
+ ModalSize["Small"] = "small";
47
+ ModalSize["Normal"] = "normal";
48
+ ModalSize["Large"] = "large";
49
49
  })(ModalSize || (ModalSize = {}));
50
50
 
51
- class McModalControlService {
52
- constructor(parentService) {
53
- this.parentService = parentService;
54
- // @ts-ignore
55
- this.rootOpenModals = this.parentService ? null : [];
56
- // @ts-ignore
57
- this.rootAfterAllClose = this.parentService ? null : new Subject();
58
- // @ts-ignore
59
- this.rootRegisteredMetaMap = this.parentService ? null : new Map();
60
- }
61
- // Track singleton afterAllClose through over the injection tree
62
- get afterAllClose() {
63
- return this.parentService ? this.parentService.afterAllClose : this.rootAfterAllClose;
64
- }
65
- // Track singleton openModals array through over the injection tree
66
- get openModals() {
67
- return this.parentService ? this.parentService.openModals : this.rootOpenModals;
68
- }
69
- // Registered modal for later usage
70
- get registeredMetaMap() {
71
- return this.parentService ? this.parentService.registeredMetaMap : this.rootRegisteredMetaMap;
72
- }
73
- // Register a modal to listen its open/close
74
- registerModal(modalRef) {
75
- if (!this.hasRegistered(modalRef)) {
76
- const afterOpenSubscription = modalRef.afterOpen.subscribe(() => this.openModals.push(modalRef));
77
- const afterCloseSubscription = modalRef.afterClose.subscribe(() => this.removeOpenModal(modalRef));
78
- this.registeredMetaMap.set(modalRef, { modalRef, afterOpenSubscription, afterCloseSubscription });
79
- this.handleMultipleMasks(modalRef);
80
- }
81
- }
82
- hasRegistered(modalRef) {
83
- return this.registeredMetaMap.has(modalRef);
84
- }
85
- // Close all registered opened modals
86
- closeAll() {
87
- let i = this.openModals.length;
88
- while (i--) {
89
- this.openModals[i].close();
90
- }
91
- }
92
- removeOpenModal(modalRef) {
93
- const index = this.openModals.indexOf(modalRef);
94
- if (index > -1) {
95
- this.openModals.splice(index, 1);
96
- if (!this.openModals.length) {
97
- this.afterAllClose.next();
98
- }
99
- }
100
- }
101
- handleMultipleMasks(modalRef) {
102
- const modals = Array.from(this.registeredMetaMap.values()).map((v) => v.modalRef);
103
- if (modals.filter((modal) => modal.mcVisible).length > 1) {
104
- const otherModals = modals.splice(0, modals.length - 1)
105
- .filter((modal) => modal.mcVisible && modal.mcMask);
106
- // hide other masks
107
- setTimeout(() => {
108
- otherModals.forEach((modal) => {
109
- modal.getInstance().mcMask = false;
110
- modal.markForCheck();
111
- });
112
- });
113
- // show other masks on close
114
- modalRef.afterClose.subscribe(() => {
115
- otherModals.forEach((modal) => {
116
- modal.getInstance().mcMask = true;
117
- modal.markForCheck();
118
- });
119
- });
120
- }
121
- }
122
- }
123
- /** @nocollapse */ /** @nocollapse */ McModalControlService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McModalControlService, deps: [{ token: McModalControlService, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Injectable });
124
- /** @nocollapse */ /** @nocollapse */ McModalControlService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McModalControlService });
125
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McModalControlService, decorators: [{
126
- type: Injectable
127
- }], ctorParameters: function () {
128
- return [{ type: McModalControlService, decorators: [{
129
- type: Optional
130
- }, {
131
- type: SkipSelf
132
- }] }];
51
+ class McModalControlService {
52
+ constructor(parentService) {
53
+ this.parentService = parentService;
54
+ // @ts-ignore
55
+ this.rootOpenModals = this.parentService ? null : [];
56
+ // @ts-ignore
57
+ this.rootAfterAllClose = this.parentService ? null : new Subject();
58
+ // @ts-ignore
59
+ this.rootRegisteredMetaMap = this.parentService ? null : new Map();
60
+ }
61
+ // Track singleton afterAllClose through over the injection tree
62
+ get afterAllClose() {
63
+ return this.parentService ? this.parentService.afterAllClose : this.rootAfterAllClose;
64
+ }
65
+ // Track singleton openModals array through over the injection tree
66
+ get openModals() {
67
+ return this.parentService ? this.parentService.openModals : this.rootOpenModals;
68
+ }
69
+ // Registered modal for later usage
70
+ get registeredMetaMap() {
71
+ return this.parentService ? this.parentService.registeredMetaMap : this.rootRegisteredMetaMap;
72
+ }
73
+ // Register a modal to listen its open/close
74
+ registerModal(modalRef) {
75
+ if (!this.hasRegistered(modalRef)) {
76
+ const afterOpenSubscription = modalRef.afterOpen.subscribe(() => this.openModals.push(modalRef));
77
+ const afterCloseSubscription = modalRef.afterClose.subscribe(() => this.removeOpenModal(modalRef));
78
+ this.registeredMetaMap.set(modalRef, { modalRef, afterOpenSubscription, afterCloseSubscription });
79
+ this.handleMultipleMasks(modalRef);
80
+ }
81
+ }
82
+ hasRegistered(modalRef) {
83
+ return this.registeredMetaMap.has(modalRef);
84
+ }
85
+ // Close all registered opened modals
86
+ closeAll() {
87
+ let i = this.openModals.length;
88
+ while (i--) {
89
+ this.openModals[i].close();
90
+ }
91
+ }
92
+ removeOpenModal(modalRef) {
93
+ const index = this.openModals.indexOf(modalRef);
94
+ if (index > -1) {
95
+ this.openModals.splice(index, 1);
96
+ if (!this.openModals.length) {
97
+ this.afterAllClose.next();
98
+ }
99
+ }
100
+ }
101
+ handleMultipleMasks(modalRef) {
102
+ const modals = Array.from(this.registeredMetaMap.values()).map((v) => v.modalRef);
103
+ if (modals.filter((modal) => modal.mcVisible).length > 1) {
104
+ const otherModals = modals.splice(0, modals.length - 1)
105
+ .filter((modal) => modal.mcVisible && modal.mcMask);
106
+ // hide other masks
107
+ setTimeout(() => {
108
+ otherModals.forEach((modal) => {
109
+ modal.getInstance().mcMask = false;
110
+ modal.markForCheck();
111
+ });
112
+ });
113
+ // show other masks on close
114
+ modalRef.afterClose.subscribe(() => {
115
+ otherModals.forEach((modal) => {
116
+ modal.getInstance().mcMask = true;
117
+ modal.markForCheck();
118
+ });
119
+ });
120
+ }
121
+ }
122
+ }
123
+ /** @nocollapse */ /** @nocollapse */ McModalControlService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McModalControlService, deps: [{ token: McModalControlService, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Injectable });
124
+ /** @nocollapse */ /** @nocollapse */ McModalControlService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McModalControlService });
125
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McModalControlService, decorators: [{
126
+ type: Injectable
127
+ }], ctorParameters: function () {
128
+ return [{ type: McModalControlService, decorators: [{
129
+ type: Optional
130
+ }, {
131
+ type: SkipSelf
132
+ }] }];
133
133
  } });
134
134
 
135
- class McModalTitle {
136
- }
137
- /** @nocollapse */ /** @nocollapse */ McModalTitle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McModalTitle, deps: [], target: i0.ɵɵFactoryTarget.Directive });
138
- /** @nocollapse */ /** @nocollapse */ McModalTitle.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.7", type: McModalTitle, selector: "[mc-modal-title], mc-modal-title, [mcModalTitle]", host: { classAttribute: "mc-modal-header mc-modal-title" }, ngImport: i0 });
139
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McModalTitle, decorators: [{
140
- type: Directive,
141
- args: [{
142
- selector: `[mc-modal-title], mc-modal-title, [mcModalTitle]`,
143
- host: {
144
- class: 'mc-modal-header mc-modal-title'
145
- }
146
- }]
147
- }] });
148
- class McModalBody {
149
- }
150
- /** @nocollapse */ /** @nocollapse */ McModalBody.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McModalBody, deps: [], target: i0.ɵɵFactoryTarget.Directive });
151
- /** @nocollapse */ /** @nocollapse */ McModalBody.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.7", type: McModalBody, selector: "[mc-modal-body], mc-modal-body, [mcModalBody]", host: { classAttribute: "mc-modal-body" }, ngImport: i0 });
152
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McModalBody, decorators: [{
153
- type: Directive,
154
- args: [{
155
- selector: `[mc-modal-body], mc-modal-body, [mcModalBody]`,
156
- host: {
157
- class: 'mc-modal-body'
158
- }
159
- }]
160
- }] });
161
- class McModalFooter {
162
- }
163
- /** @nocollapse */ /** @nocollapse */ McModalFooter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McModalFooter, deps: [], target: i0.ɵɵFactoryTarget.Directive });
164
- /** @nocollapse */ /** @nocollapse */ McModalFooter.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.7", type: McModalFooter, selector: "[mc-modal-footer], mc-modal-footer, [mcModalFooter]", host: { classAttribute: "mc-modal-footer" }, ngImport: i0 });
165
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McModalFooter, decorators: [{
166
- type: Directive,
167
- args: [{
168
- selector: `[mc-modal-footer], mc-modal-footer, [mcModalFooter]`,
169
- host: {
170
- class: 'mc-modal-footer'
171
- }
172
- }]
173
- }] });
174
- class McModalMainAction {
175
- }
176
- /** @nocollapse */ /** @nocollapse */ McModalMainAction.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McModalMainAction, deps: [], target: i0.ɵɵFactoryTarget.Directive });
177
- /** @nocollapse */ /** @nocollapse */ McModalMainAction.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.7", type: McModalMainAction, selector: "[mc-modal-main-action]", ngImport: i0 });
178
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McModalMainAction, decorators: [{
179
- type: Directive,
180
- args: [{
181
- selector: `[mc-modal-main-action]`
182
- }]
135
+ class McModalTitle {
136
+ }
137
+ /** @nocollapse */ /** @nocollapse */ McModalTitle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McModalTitle, deps: [], target: i0.ɵɵFactoryTarget.Directive });
138
+ /** @nocollapse */ /** @nocollapse */ McModalTitle.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.7", type: McModalTitle, selector: "[mc-modal-title], mc-modal-title, [mcModalTitle]", host: { classAttribute: "mc-modal-header mc-modal-title" }, ngImport: i0 });
139
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McModalTitle, decorators: [{
140
+ type: Directive,
141
+ args: [{
142
+ selector: `[mc-modal-title], mc-modal-title, [mcModalTitle]`,
143
+ host: {
144
+ class: 'mc-modal-header mc-modal-title'
145
+ }
146
+ }]
147
+ }] });
148
+ class McModalBody {
149
+ }
150
+ /** @nocollapse */ /** @nocollapse */ McModalBody.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McModalBody, deps: [], target: i0.ɵɵFactoryTarget.Directive });
151
+ /** @nocollapse */ /** @nocollapse */ McModalBody.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.7", type: McModalBody, selector: "[mc-modal-body], mc-modal-body, [mcModalBody]", host: { classAttribute: "mc-modal-body" }, ngImport: i0 });
152
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McModalBody, decorators: [{
153
+ type: Directive,
154
+ args: [{
155
+ selector: `[mc-modal-body], mc-modal-body, [mcModalBody]`,
156
+ host: {
157
+ class: 'mc-modal-body'
158
+ }
159
+ }]
160
+ }] });
161
+ class McModalFooter {
162
+ }
163
+ /** @nocollapse */ /** @nocollapse */ McModalFooter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McModalFooter, deps: [], target: i0.ɵɵFactoryTarget.Directive });
164
+ /** @nocollapse */ /** @nocollapse */ McModalFooter.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.7", type: McModalFooter, selector: "[mc-modal-footer], mc-modal-footer, [mcModalFooter]", host: { classAttribute: "mc-modal-footer" }, ngImport: i0 });
165
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McModalFooter, decorators: [{
166
+ type: Directive,
167
+ args: [{
168
+ selector: `[mc-modal-footer], mc-modal-footer, [mcModalFooter]`,
169
+ host: {
170
+ class: 'mc-modal-footer'
171
+ }
172
+ }]
173
+ }] });
174
+ class McModalMainAction {
175
+ }
176
+ /** @nocollapse */ /** @nocollapse */ McModalMainAction.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McModalMainAction, deps: [], target: i0.ɵɵFactoryTarget.Directive });
177
+ /** @nocollapse */ /** @nocollapse */ McModalMainAction.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.7", type: McModalMainAction, selector: "[mc-modal-main-action]", ngImport: i0 });
178
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McModalMainAction, decorators: [{
179
+ type: Directive,
180
+ args: [{
181
+ selector: `[mc-modal-main-action]`
182
+ }]
183
183
  }] });
184
184
 
185
- class CssUnitPipe {
186
- transform(value, defaultUnit = 'px') {
187
- const formatted = +value;
188
- return isNaN(formatted) ? `${value}` : `${formatted}${defaultUnit}`;
189
- }
190
- }
191
- /** @nocollapse */ /** @nocollapse */ CssUnitPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: CssUnitPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
192
- /** @nocollapse */ /** @nocollapse */ CssUnitPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: CssUnitPipe, name: "toCssUnit" });
193
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: CssUnitPipe, decorators: [{
194
- type: Pipe,
195
- args: [{
196
- name: 'toCssUnit'
197
- }]
185
+ class CssUnitPipe {
186
+ transform(value, defaultUnit = 'px') {
187
+ const formatted = +value;
188
+ return isNaN(formatted) ? `${value}` : `${formatted}${defaultUnit}`;
189
+ }
190
+ }
191
+ /** @nocollapse */ /** @nocollapse */ CssUnitPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: CssUnitPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
192
+ /** @nocollapse */ /** @nocollapse */ CssUnitPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: CssUnitPipe, name: "toCssUnit" });
193
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: CssUnitPipe, decorators: [{
194
+ type: Pipe,
195
+ args: [{
196
+ name: 'toCssUnit'
197
+ }]
198
198
  }] });
199
199
 
200
- // Duration when perform animations (ms)
201
- const MODAL_ANIMATE_DURATION = 200;
202
- class McModalComponent extends McModalRef {
203
- constructor(overlay, renderer, cfr, elementRef, viewContainer, modalControl, changeDetector, document) {
204
- super();
205
- this.overlay = overlay;
206
- this.renderer = renderer;
207
- this.cfr = cfr;
208
- this.elementRef = elementRef;
209
- this.viewContainer = viewContainer;
210
- this.modalControl = modalControl;
211
- this.changeDetector = changeDetector;
212
- this.document = document;
213
- this.themePalette = ThemePalette;
214
- this.mcModalType = 'default';
215
- this._mcVisible = false;
216
- this.mcVisibleChange = new EventEmitter();
217
- this.mcZIndex = 1000;
218
- this.mcSize = ModalSize.Normal;
219
- this.mcCloseByESC = true;
220
- this._mcClosable = true;
221
- this._mcMask = true;
222
- this._mcMaskClosable = false;
223
- // Trigger when modal open(visible) after animations
224
- this.mcAfterOpen = new EventEmitter();
225
- // Trigger when modal leave-animation over
226
- this.mcAfterClose = new EventEmitter();
227
- this.mcOkType = 'primary';
228
- this._mcOkLoading = false;
229
- this.mcOnOk = new EventEmitter();
230
- this._mcCancelLoading = false;
231
- this.mcOnCancel = new EventEmitter();
232
- this.isTopOverflow = false;
233
- this.isBottomOverflow = false;
234
- // The origin point that animation based on
235
- this.transformOrigin = '0px 0px 0px';
236
- this.mcGetContainer = () => this.overlay.create();
237
- }
238
- get mcVisible() { return this._mcVisible; }
239
- set mcVisible(value) { this._mcVisible = value; }
240
- get mcClosable() { return this._mcClosable; }
241
- set mcClosable(value) { this._mcClosable = value; }
242
- get mcMask() { return this._mcMask; }
243
- set mcMask(value) { this._mcMask = value; }
244
- get mcMaskClosable() { return this._mcMaskClosable; }
245
- set mcMaskClosable(value) { this._mcMaskClosable = value; }
246
- get mcOkLoading() { return this._mcOkLoading; }
247
- set mcOkLoading(value) { this._mcOkLoading = value; }
248
- get mcCancelLoading() { return this._mcCancelLoading; }
249
- set mcCancelLoading(value) { this._mcCancelLoading = value; }
250
- // Observable alias for mcAfterOpen
251
- get afterOpen() {
252
- return this.mcAfterOpen.asObservable();
253
- }
254
- // Observable alias for mcAfterClose
255
- get afterClose() {
256
- return this.mcAfterClose.asObservable();
257
- }
258
- get okText() {
259
- return this.mcOkText;
260
- }
261
- get cancelText() {
262
- return this.mcCancelText;
263
- }
264
- // Indicate whether this dialog should hidden
265
- get hidden() {
266
- return !this.mcVisible && !this.animationState;
267
- }
268
- ngOnInit() {
269
- // Create component along without View
270
- if (this.isComponent(this.mcContent)) {
271
- this.createDynamicComponent(this.mcContent);
272
- }
273
- // Setup default button options
274
- if (this.isModalButtons(this.mcFooter)) {
275
- this.mcFooter = this.formatModalButtons(this.mcFooter);
276
- }
277
- if (this.isComponent(this.mcComponent)) {
278
- this.createDynamicComponent(this.mcComponent);
279
- }
280
- // Place the modal dom to elsewhere
281
- this.container = typeof this.mcGetContainer === 'function' ? this.mcGetContainer() : this.mcGetContainer;
282
- if (this.container instanceof HTMLElement) {
283
- this.container.appendChild(this.elementRef.nativeElement);
284
- }
285
- else if (this.container instanceof OverlayRef) {
286
- // NOTE: only attach the dom to overlay, the view container is not changed actually
287
- this.container.overlayElement.appendChild(this.elementRef.nativeElement);
288
- }
289
- // Register modal when afterOpen/afterClose is stable
290
- this.modalControl.registerModal(this);
291
- }
292
- // [NOTE] NOT available when using by service!
293
- // Because ngOnChanges never be called when using by service,
294
- // here we can't support "mcContent"(Component) etc. as inputs that initialized dynamically.
295
- // BUT: User also can change "mcContent" dynamically to trigger UI changes
296
- // (provided you don't use Component that needs initializations)
297
- ngOnChanges(changes) {
298
- if (changes.mcVisible) {
299
- // Do not trigger animation while initializing
300
- this.handleVisibleStateChange(this.mcVisible, !changes.mcVisible.firstChange);
301
- }
302
- }
303
- ngAfterViewInit() {
304
- var _a;
305
- // If using Component, it is the time to attach View while bodyContainer is ready
306
- if (this.contentComponentRef) {
307
- this.bodyContainer.insert(this.contentComponentRef.hostView);
308
- }
309
- (_a = this.getElement().getElementsByTagName('button')[0]) === null || _a === void 0 ? void 0 : _a.focus();
310
- for (const autoFocusedButton of this.autoFocusedButtons.toArray()) {
311
- if (autoFocusedButton.nativeElement.autofocus) {
312
- autoFocusedButton.nativeElement.focus();
313
- break;
314
- }
315
- }
316
- this.checkOverflow();
317
- }
318
- ngOnDestroy() {
319
- if (this.container instanceof OverlayRef) {
320
- this.container.dispose();
321
- }
322
- }
323
- checkOverflow() {
324
- var _a;
325
- const nativeElement = (_a = this.modalBody) === null || _a === void 0 ? void 0 : _a.nativeElement;
326
- if (!nativeElement) {
327
- return;
328
- }
329
- const scrollTop = nativeElement.scrollTop;
330
- const offsetHeight = nativeElement.offsetHeight;
331
- const scrollHeight = nativeElement.scrollHeight;
332
- this.isTopOverflow = scrollTop > 0;
333
- this.isBottomOverflow = scrollTop + offsetHeight < scrollHeight;
334
- }
335
- open() {
336
- this.changeVisibleFromInside(true);
337
- }
338
- close(result) {
339
- this.changeVisibleFromInside(false, result);
340
- }
341
- // Destroy equals Close
342
- destroy(result) {
343
- this.close(result);
344
- }
345
- markForCheck() {
346
- this.changeDetector.markForCheck();
347
- }
348
- triggerOk() {
349
- this.onClickOkCancel('ok');
350
- }
351
- triggerCancel() {
352
- this.onClickOkCancel('cancel');
353
- }
354
- getInstance() {
355
- return this;
356
- }
357
- getContentComponentRef() {
358
- return this.contentComponentRef;
359
- }
360
- getContentComponent() {
361
- return this.contentComponentRef && this.contentComponentRef.instance;
362
- }
363
- getElement() {
364
- return this.elementRef && this.elementRef.nativeElement;
365
- }
366
- getMcFooter() {
367
- return this.getElement().getElementsByClassName('mc-modal-footer').item(0);
368
- }
369
- onClickMask($event) {
370
- if (this.mcMask &&
371
- this.mcMaskClosable &&
372
- $event.target.classList.contains('mc-modal-wrap') &&
373
- this.mcVisible) {
374
- this.onClickOkCancel('cancel');
375
- }
376
- }
377
- // tslint:disable-next-line: no-reserved-keywords
378
- isModalType(type) {
379
- return this.mcModalType === type;
380
- }
381
- onKeyDown(event) {
382
- var _a;
383
- // tslint:disable-next-line:deprecation .key isn't supported in Edge
384
- if (event.keyCode === ESCAPE && this.container && (this.container instanceof OverlayRef)) {
385
- this.close();
386
- event.preventDefault();
387
- }
388
- // tslint:disable-next-line:deprecation .key isn't supported in Edge
389
- if (event.ctrlKey && event.keyCode === ENTER) {
390
- if (this.mcModalType === 'confirm') {
391
- this.triggerOk();
392
- }
393
- (_a = this.getElement().querySelector('[mc-modal-main-action]')) === null || _a === void 0 ? void 0 : _a.click();
394
- event.preventDefault();
395
- }
396
- }
397
- // AoT
398
- onClickCloseBtn() {
399
- if (this.mcVisible) {
400
- this.onClickOkCancel('cancel');
401
- }
402
- }
403
- // AoT
404
- // tslint:disable-next-line: no-reserved-keywords
405
- onClickOkCancel(type) {
406
- const trigger = { ok: this.mcOnOk, cancel: this.mcOnCancel }[type];
407
- const loadingKey = { ok: 'mcOkLoading', cancel: 'mcCancelLoading' }[type];
408
- if (trigger instanceof EventEmitter) {
409
- trigger.emit(this.getContentComponent());
410
- }
411
- else if (typeof trigger === 'function') {
412
- const result = trigger(this.getContentComponent());
413
- // Users can return "false" to prevent closing by default
414
- const caseClose = (doClose) => (doClose !== false) && this.close(doClose);
415
- if (isPromise(result)) {
416
- this[loadingKey] = true;
417
- const handleThen = (doClose) => {
418
- this[loadingKey] = false;
419
- caseClose(doClose);
420
- };
421
- result.then(handleThen).catch(handleThen);
422
- }
423
- else {
424
- caseClose(result);
425
- }
426
- }
427
- }
428
- // AoT
429
- isNonEmptyString(value) {
430
- return typeof value === 'string' && value !== '';
431
- }
432
- // AoT
433
- isTemplateRef(value) {
434
- return value instanceof TemplateRef;
435
- }
436
- // AoT
437
- isComponent(value) {
438
- return value instanceof Type;
439
- }
440
- // AoT
441
- isModalButtons(value) {
442
- return Array.isArray(value) && value.length > 0;
443
- }
444
- // Lookup a button's property, if the prop is a function, call & then return the result, otherwise, return itself.
445
- // AoT
446
- getButtonCallableProp(options, prop) {
447
- const value = options[prop];
448
- const args = [];
449
- if (this.contentComponentRef) {
450
- args.push(this.contentComponentRef.instance);
451
- }
452
- return typeof value === 'function' ? value.apply(options, args) : value;
453
- }
454
- // On mcFooter's modal button click
455
- // AoT
456
- onButtonClick(button) {
457
- // Call onClick directly
458
- // tslint:disable-next-line:no-inferred-empty-object-type rule seems to be broken
459
- const result = this.getButtonCallableProp(button, 'onClick');
460
- if (isPromise(result)) {
461
- button.loading = true;
462
- result.then(() => button.loading = false).catch(() => button.loading = false);
463
- }
464
- }
465
- // Do rest things when visible state changed
466
- handleVisibleStateChange(visible, animation = true, closeResult) {
467
- // Hide scrollbar at the first time when shown up
468
- if (visible) {
469
- this.changeBodyOverflow(1);
470
- }
471
- return Promise
472
- .resolve(animation && this.animateTo(visible))
473
- // Emit open/close event after animations over
474
- .then(() => {
475
- if (visible) {
476
- this.mcAfterOpen.emit();
477
- }
478
- else {
479
- this.mcAfterClose.emit(closeResult);
480
- // Show/hide scrollbar when animation is over
481
- this.changeBodyOverflow();
482
- }
483
- });
484
- }
485
- // Change mcVisible from inside
486
- changeVisibleFromInside(visible, closeResult) {
487
- if (this.mcVisible !== visible) {
488
- // Change mcVisible value immediately
489
- this.mcVisible = visible;
490
- this.mcVisibleChange.emit(visible);
491
- return this.handleVisibleStateChange(visible, true, closeResult);
492
- }
493
- return Promise.resolve();
494
- }
495
- changeAnimationState(state) {
496
- this.animationState = state;
497
- if (state) {
498
- this.maskAnimationClassMap = {
499
- [`fade-${state}`]: true,
500
- [`fade-${state}-active`]: true
501
- };
502
- this.modalAnimationClassMap = {
503
- [`zoom-${state}`]: true,
504
- [`zoom-${state}-active`]: true
505
- };
506
- }
507
- else {
508
- // @ts-ignore
509
- this.maskAnimationClassMap = this.modalAnimationClassMap = null;
510
- }
511
- if (this.contentComponentRef) {
512
- this.contentComponentRef.changeDetectorRef.markForCheck();
513
- }
514
- else {
515
- this.changeDetector.markForCheck();
516
- }
517
- }
518
- animateTo(isVisible) {
519
- // Figure out the lastest click position when shows up
520
- if (isVisible) {
521
- // [NOTE] Using timeout due to the document.click event is fired later than visible change,
522
- // so if not postponed to next event-loop, we can't get the lastest click position
523
- window.setTimeout(() => this.updateTransformOrigin());
524
- }
525
- this.changeAnimationState(isVisible ? 'enter' : 'leave');
526
- // Return when animation is over
527
- return new Promise((resolve) => {
528
- return window.setTimeout(() => {
529
- this.changeAnimationState(null);
530
- resolve(null);
531
- }, MODAL_ANIMATE_DURATION);
532
- });
533
- }
534
- formatModalButtons(buttons) {
535
- return buttons.map((button) => {
536
- return Object.assign({
537
- type: 'default',
538
- size: 'default',
539
- autoLoading: true,
540
- show: true,
541
- loading: false,
542
- disabled: false
543
- }, button);
544
- });
545
- }
546
- /**
547
- * Create a component dynamically but not attach to any View
548
- * (this action will be executed when bodyContainer is ready)
549
- * @param component Component class
550
- */
551
- createDynamicComponent(component) {
552
- const factory = this.cfr.resolveComponentFactory(component);
553
- const childInjector = Injector.create({
554
- providers: [{ provide: McModalRef, useValue: this }],
555
- parent: this.viewContainer.injector
556
- });
557
- this.contentComponentRef = factory.create(childInjector);
558
- if (this.mcComponentParams) {
559
- Object.assign(this.contentComponentRef.instance, this.mcComponentParams);
560
- }
561
- // Do the first change detection immediately
562
- // (or we do detection at ngAfterViewInit, multi-changes error will be thrown)
563
- this.contentComponentRef.changeDetectorRef.detectChanges();
564
- }
565
- // Update transform-origin to the last click position on document
566
- updateTransformOrigin() {
567
- const modalElement = this.modalContainer.nativeElement;
568
- const lastPosition = modalUtilObject.getLastClickPosition();
569
- if (lastPosition) {
570
- this.transformOrigin = `${lastPosition.x - modalElement.offsetLeft}px ${lastPosition.y - modalElement.offsetTop}px 0px`;
571
- }
572
- }
573
- /**
574
- * Take care of the body's overflow to decide the existense of scrollbar
575
- * @param plusNum The number that the openModals.length will increase soon
576
- */
577
- changeBodyOverflow(plusNum = 0) {
578
- const openModals = this.modalControl.openModals;
579
- if (openModals.length + plusNum > 0) {
580
- this.renderer.setStyle(this.document.body, 'overflow', 'hidden');
581
- }
582
- else {
583
- this.renderer.removeStyle(this.document.body, 'overflow');
584
- }
585
- }
586
- }
587
- /** @nocollapse */ /** @nocollapse */ McModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McModalComponent, deps: [{ token: i1.Overlay }, { token: i0.Renderer2 }, { token: i0.ComponentFactoryResolver }, { token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: McModalControlService }, { token: i0.ChangeDetectorRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
588
- /** @nocollapse */ /** @nocollapse */ McModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.7", type: McModalComponent, selector: "mc-modal", inputs: { mcModalType: "mcModalType", mcComponent: "mcComponent", mcContent: "mcContent", mcComponentParams: "mcComponentParams", mcFooter: "mcFooter", mcVisible: "mcVisible", mcZIndex: "mcZIndex", mcWidth: "mcWidth", mcSize: "mcSize", mcWrapClassName: "mcWrapClassName", mcClassName: "mcClassName", mcStyle: "mcStyle", mcTitle: "mcTitle", mcCloseByESC: "mcCloseByESC", mcClosable: "mcClosable", mcMask: "mcMask", mcMaskClosable: "mcMaskClosable", mcMaskStyle: "mcMaskStyle", mcBodyStyle: "mcBodyStyle", mcOkText: "mcOkText", mcOkType: "mcOkType", mcOkLoading: "mcOkLoading", mcOnOk: "mcOnOk", mcCancelText: "mcCancelText", mcCancelLoading: "mcCancelLoading", mcOnCancel: "mcOnCancel", mcGetContainer: "mcGetContainer" }, outputs: { mcVisibleChange: "mcVisibleChange", mcAfterOpen: "mcAfterOpen", mcAfterClose: "mcAfterClose", mcOnOk: "mcOnOk", mcOnCancel: "mcOnCancel" }, host: { listeners: { "keydown": "onKeyDown($event)" } }, viewQueries: [{ propertyName: "modalContainer", first: true, predicate: ["modalContainer"], descendants: true, static: true }, { propertyName: "bodyContainer", first: true, predicate: ["bodyContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "modalBody", first: true, predicate: ["modalBody"], descendants: true }, { propertyName: "autoFocusedButtons", predicate: ["autoFocusedButton"], descendants: true, read: ElementRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<!-- Compatible: the <ng-content> can appear only once -->\n<ng-template #tplOriginContent>\n <ng-content></ng-content>\n</ng-template>\n\n<div>\n <div *ngIf=\"mcMask\"\n class=\"mc-modal-mask\"\n [ngClass]=\"maskAnimationClassMap\"\n [class.mc-modal-mask-hidden]=\"hidden\"\n [ngStyle]=\"mcMaskStyle\"\n [style.zIndex]=\"mcZIndex\"\n ></div>\n <div (mousedown)=\"onClickMask($event)\"\n class=\"mc-modal-wrap {{ mcWrapClassName }}\"\n [style.zIndex]=\"mcZIndex\"\n [style.display]=\"hidden ? 'none' : ''\"\n tabindex=\"-1\">\n\n <div #modalContainer\n class=\"mc-modal {{ mcClassName }} mc-modal_{{ mcSize }}\"\n [ngClass]=\"modalAnimationClassMap\"\n [ngStyle]=\"mcStyle\"\n [style.width]=\"mcWidth | toCssUnit\"\n [style.transform-origin]=\"transformOrigin\">\n\n <div class=\"mc-modal-content\" cdkTrapFocus>\n <button *ngIf=\"mcClosable\"\n mc-button\n (click)=\"onClickCloseBtn()\"\n class=\"mc-modal-close mc-button_transparent\">\n <i mc-icon=\"mc-close-L_16\" class=\"mc-icon mc-icon_light\" [color]=\"themePalette.Second\"></i>\n </button>\n <ng-container [ngSwitch]=\"true\">\n <ng-container *ngSwitchCase=\"isModalType('default')\"\n [ngTemplateOutlet]=\"tplContentDefault\"></ng-container>\n <ng-container *ngSwitchCase=\"isModalType('confirm')\"\n [ngTemplateOutlet]=\"tplContentConfirm\"></ng-container>\n <ng-container *ngSwitchCase=\"isModalType('custom')\"\n [ngTemplateOutlet]=\"tplContentCustom\"></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #tplContentCustom>\n <ng-container #bodyContainer></ng-container>\n</ng-template>\n\n\n<!-- [Predefined] Default Modal Content -->\n<ng-template #tplContentDefault>\n <div *ngIf=\"mcTitle\" class=\"mc-modal-header\" [class.mc-modal-body_top-overflow]=\"isTopOverflow\">\n <div class=\"mc-modal-title\">\n <ng-container [ngSwitch]=\"true\">\n <ng-container *ngSwitchCase=\"isTemplateRef(mcTitle)\" [ngTemplateOutlet]=\"$any(mcTitle)\"></ng-container>\n <ng-container *ngSwitchCase=\"isNonEmptyString(mcTitle)\">\n <div [innerHTML]=\"mcTitle\"></div>\n </ng-container>\n </ng-container>\n </div>\n </div>\n <div class=\"mc-modal-body\" #modalBody [ngStyle]=\"mcBodyStyle\" (scroll)=\"checkOverflow()\">\n <ng-container #bodyContainer>\n <ng-container *ngIf=\"!isComponent(mcContent)\" [ngSwitch]=\"true\">\n <ng-container *ngSwitchCase=\"isTemplateRef(mcContent)\" [ngTemplateOutlet]=\"$any(mcContent)\"></ng-container>\n <ng-container *ngSwitchCase=\"isNonEmptyString(mcContent)\">\n <div [innerHTML]=\"mcContent\"></div>\n </ng-container>\n <ng-container *ngSwitchDefault [ngTemplateOutlet]=\"tplOriginContent\"></ng-container>\n </ng-container>\n </ng-container>\n </div>\n <div *ngIf=\"mcFooter || mcOkText || mcCancelText\" class=\"mc-modal-footer\" [class.mc-modal-body_bottom-overflow]=\"isBottomOverflow\">\n <ng-container [ngSwitch]=\"true\">\n <ng-container *ngSwitchCase=\"isTemplateRef(mcFooter)\" [ngTemplateOutlet]=\"$any(mcFooter)\"></ng-container>\n <ng-container *ngSwitchCase=\"isNonEmptyString(mcFooter)\">\n <div [innerHTML]=\"mcFooter\"></div>\n </ng-container>\n <ng-container *ngSwitchCase=\"isModalButtons(mcFooter)\">\n <ng-container *ngFor=\"let button of $any(mcFooter)\">\n <button\n mc-button\n #autoFocusedButton\n [attr.autofocus]=\"button.autoFocus\"\n [attr.mc-modal-main-action]=\"button.mcModalMainAction\"\n *ngIf=\"getButtonCallableProp(button, 'show')\"\n [disabled]=\"getButtonCallableProp(button, 'disabled')\"\n [class.mc-progress]=\"getButtonCallableProp(button, 'loading')\"\n (click)=\"onButtonClick(button)\"\n [color]=\"button.type\">\n {{ button.label }}\n </button>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <button\n #autoFocusedButton\n [attr.autofocus]=\"true\"\n *ngIf=\"mcOkText\"\n mc-button\n [color]=\"themePalette.Primary\"\n (click)=\"onClickOkCancel('ok')\">\n\n {{ okText }}\n </button>\n <button *ngIf=\"mcCancelText\" mc-button (click)=\"onClickOkCancel('cancel')\">\n {{ cancelText }}\n </button>\n </ng-container>\n </ng-container>\n </div>\n</ng-template>\n<!-- /[Predefined] Default Modal Content -->\n\n<!-- [Predefined] Confirm Modal Content -->\n<ng-template #tplContentConfirm>\n <div class=\"mc-modal-body\" [ngStyle]=\"mcBodyStyle\">\n <div class=\"mc-confirm-body-wrapper\">\n <div class=\"mc-confirm-body\">\n <div class=\"mc-confirm-content\">\n <ng-container #bodyContainer>\n <ng-container *ngIf=\"!isComponent(mcContent)\" [ngSwitch]=\"true\">\n <ng-container *ngSwitchCase=\"isTemplateRef(mcContent)\"\n [ngTemplateOutlet]=\"$any(mcContent)\">\n </ng-container>\n <ng-container *ngSwitchCase=\"isNonEmptyString(mcContent)\">\n <div [innerHTML]=\"mcContent\"></div>\n </ng-container>\n <ng-container *ngSwitchDefault [ngTemplateOutlet]=\"tplOriginContent\"></ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n </div> <!-- /.mc-confirm-body-wrapper -->\n </div>\n <div class=\"mc-confirm-btns\" *ngIf=\"mcOkText || mcCancelText\">\n <button\n mc-button\n #autoFocusedButton\n [color]=\"mcOkType\"\n [attr.autofocus]=\"true\"\n *ngIf=\"mcOkText\"\n (click)=\"onClickOkCancel('ok')\">\n\n {{ okText }}\n </button>\n\n <button mc-button [color]=\"themePalette.Second\" *ngIf=\"mcCancelText\" (click)=\"onClickOkCancel('cancel')\">\n {{ cancelText }}\n </button>\n </div>\n</ng-template>\n<!-- /[Predefined] Confirm Modal Content -->\n", styles: [".mc-confirm .mc-modal-header,.mc-confirm .mc-modal-close{display:none}.mc-confirm .mc-modal-body{padding:var(--mc-modal-confirm-size-padding, 24px)}.mc-confirm-body-wrapper{zoom:1}.mc-confirm-body-wrapper:before,.mc-confirm-body-wrapper:after{content:\"\";display:table}.mc-confirm-body-wrapper:after{clear:both}.mc-confirm-body .mc-confirm-title{display:block;overflow:auto}.mc-confirm .mc-confirm-btns{border-radius:var(--mc-modal-footer-size-border-radius, 0 0 4px 4px);text-align:right}.mc-confirm .mc-confirm-btns button+button{margin:16px}.mc-modal{box-sizing:border-box;position:relative;top:var(--mc-modal-size-top, 48px);width:auto;margin:0 auto;list-style:none}.mc-modal.zoom-enter,.mc-modal.zoom-appear{animation-duration:.3s;transform:none;opacity:0}.mc-modal.mc-modal_small{width:var(--mc-modal-size-small, 400px)}.mc-modal.mc-modal_normal{width:var(--mc-modal-size-normal, 640px)}.mc-modal.mc-modal_large{width:var(--mc-modal-size-large, 960px)}.mc-modal .mc-modal-close{position:absolute;z-index:10;top:0;right:0;width:var(--mc-modal-size-close-width, 56px);height:var(--mc-modal-size-close-width, 56px)}.mc-modal-wrap{position:fixed;z-index:1000;top:0;right:0;bottom:0;left:0;overflow:auto;-webkit-overflow-scrolling:touch;outline:0}.mc-modal-title{margin:0}.mc-modal-content{position:relative;border-radius:var(--mc-modal-size-border-radius, 4px);background-clip:padding-box;background-color:#fff}.mc-modal-header{display:flex;align-items:center;height:var(--mc-modal-header-size-height, 56px);border-radius:var(--mc-modal-header-size-border-radius, 4px 4px 0 0);padding:var(--mc-modal-header-size-padding, 0 16px)}.mc-modal-body{display:block;overflow-y:auto;max-height:var(--mc-modal-body-size-max-height, calc(100vh - 260px));padding:var(--mc-modal-body-size-padding, 16px 24px 24px);word-wrap:break-word}.mc-modal-footer{display:flex;align-items:center;justify-content:right;height:var(--mc-modal-footer-size-height, 64px);border-radius:var(--mc-modal-footer-size-border-radius, 0 0 4px 4px);padding:var(--mc-modal-footer-size-padding, 0 16px)}.mc-modal-footer button+button{margin-left:16px;margin-bottom:0}.mc-modal-mask{position:fixed;z-index:1000;top:0;right:0;left:0;bottom:0;height:100%}.mc-modal-mask.mc-modal-mask-hidden{display:none}.mc-modal-open{overflow:hidden}\n"], components: [{ type: i3.McButton, selector: "[mc-button]", inputs: ["color", "tabIndex", "disabled"] }, { type: i4.McIcon, selector: "[mc-icon]", inputs: ["color"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i6.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { type: i3.McButtonCssStyler, selector: "[mc-button]" }, { type: i4.McIconCSSStyler, selector: "[mc-icon]" }, { type: i5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i5.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: McModalMainAction, selector: "[mc-modal-main-action]" }], pipes: { "toCssUnit": CssUnitPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
589
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McModalComponent, decorators: [{
590
- type: Component,
591
- args: [{ selector: 'mc-modal', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
592
- '(keydown)': 'onKeyDown($event)'
593
- }, template: "<!-- Compatible: the <ng-content> can appear only once -->\n<ng-template #tplOriginContent>\n <ng-content></ng-content>\n</ng-template>\n\n<div>\n <div *ngIf=\"mcMask\"\n class=\"mc-modal-mask\"\n [ngClass]=\"maskAnimationClassMap\"\n [class.mc-modal-mask-hidden]=\"hidden\"\n [ngStyle]=\"mcMaskStyle\"\n [style.zIndex]=\"mcZIndex\"\n ></div>\n <div (mousedown)=\"onClickMask($event)\"\n class=\"mc-modal-wrap {{ mcWrapClassName }}\"\n [style.zIndex]=\"mcZIndex\"\n [style.display]=\"hidden ? 'none' : ''\"\n tabindex=\"-1\">\n\n <div #modalContainer\n class=\"mc-modal {{ mcClassName }} mc-modal_{{ mcSize }}\"\n [ngClass]=\"modalAnimationClassMap\"\n [ngStyle]=\"mcStyle\"\n [style.width]=\"mcWidth | toCssUnit\"\n [style.transform-origin]=\"transformOrigin\">\n\n <div class=\"mc-modal-content\" cdkTrapFocus>\n <button *ngIf=\"mcClosable\"\n mc-button\n (click)=\"onClickCloseBtn()\"\n class=\"mc-modal-close mc-button_transparent\">\n <i mc-icon=\"mc-close-L_16\" class=\"mc-icon mc-icon_light\" [color]=\"themePalette.Second\"></i>\n </button>\n <ng-container [ngSwitch]=\"true\">\n <ng-container *ngSwitchCase=\"isModalType('default')\"\n [ngTemplateOutlet]=\"tplContentDefault\"></ng-container>\n <ng-container *ngSwitchCase=\"isModalType('confirm')\"\n [ngTemplateOutlet]=\"tplContentConfirm\"></ng-container>\n <ng-container *ngSwitchCase=\"isModalType('custom')\"\n [ngTemplateOutlet]=\"tplContentCustom\"></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #tplContentCustom>\n <ng-container #bodyContainer></ng-container>\n</ng-template>\n\n\n<!-- [Predefined] Default Modal Content -->\n<ng-template #tplContentDefault>\n <div *ngIf=\"mcTitle\" class=\"mc-modal-header\" [class.mc-modal-body_top-overflow]=\"isTopOverflow\">\n <div class=\"mc-modal-title\">\n <ng-container [ngSwitch]=\"true\">\n <ng-container *ngSwitchCase=\"isTemplateRef(mcTitle)\" [ngTemplateOutlet]=\"$any(mcTitle)\"></ng-container>\n <ng-container *ngSwitchCase=\"isNonEmptyString(mcTitle)\">\n <div [innerHTML]=\"mcTitle\"></div>\n </ng-container>\n </ng-container>\n </div>\n </div>\n <div class=\"mc-modal-body\" #modalBody [ngStyle]=\"mcBodyStyle\" (scroll)=\"checkOverflow()\">\n <ng-container #bodyContainer>\n <ng-container *ngIf=\"!isComponent(mcContent)\" [ngSwitch]=\"true\">\n <ng-container *ngSwitchCase=\"isTemplateRef(mcContent)\" [ngTemplateOutlet]=\"$any(mcContent)\"></ng-container>\n <ng-container *ngSwitchCase=\"isNonEmptyString(mcContent)\">\n <div [innerHTML]=\"mcContent\"></div>\n </ng-container>\n <ng-container *ngSwitchDefault [ngTemplateOutlet]=\"tplOriginContent\"></ng-container>\n </ng-container>\n </ng-container>\n </div>\n <div *ngIf=\"mcFooter || mcOkText || mcCancelText\" class=\"mc-modal-footer\" [class.mc-modal-body_bottom-overflow]=\"isBottomOverflow\">\n <ng-container [ngSwitch]=\"true\">\n <ng-container *ngSwitchCase=\"isTemplateRef(mcFooter)\" [ngTemplateOutlet]=\"$any(mcFooter)\"></ng-container>\n <ng-container *ngSwitchCase=\"isNonEmptyString(mcFooter)\">\n <div [innerHTML]=\"mcFooter\"></div>\n </ng-container>\n <ng-container *ngSwitchCase=\"isModalButtons(mcFooter)\">\n <ng-container *ngFor=\"let button of $any(mcFooter)\">\n <button\n mc-button\n #autoFocusedButton\n [attr.autofocus]=\"button.autoFocus\"\n [attr.mc-modal-main-action]=\"button.mcModalMainAction\"\n *ngIf=\"getButtonCallableProp(button, 'show')\"\n [disabled]=\"getButtonCallableProp(button, 'disabled')\"\n [class.mc-progress]=\"getButtonCallableProp(button, 'loading')\"\n (click)=\"onButtonClick(button)\"\n [color]=\"button.type\">\n {{ button.label }}\n </button>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <button\n #autoFocusedButton\n [attr.autofocus]=\"true\"\n *ngIf=\"mcOkText\"\n mc-button\n [color]=\"themePalette.Primary\"\n (click)=\"onClickOkCancel('ok')\">\n\n {{ okText }}\n </button>\n <button *ngIf=\"mcCancelText\" mc-button (click)=\"onClickOkCancel('cancel')\">\n {{ cancelText }}\n </button>\n </ng-container>\n </ng-container>\n </div>\n</ng-template>\n<!-- /[Predefined] Default Modal Content -->\n\n<!-- [Predefined] Confirm Modal Content -->\n<ng-template #tplContentConfirm>\n <div class=\"mc-modal-body\" [ngStyle]=\"mcBodyStyle\">\n <div class=\"mc-confirm-body-wrapper\">\n <div class=\"mc-confirm-body\">\n <div class=\"mc-confirm-content\">\n <ng-container #bodyContainer>\n <ng-container *ngIf=\"!isComponent(mcContent)\" [ngSwitch]=\"true\">\n <ng-container *ngSwitchCase=\"isTemplateRef(mcContent)\"\n [ngTemplateOutlet]=\"$any(mcContent)\">\n </ng-container>\n <ng-container *ngSwitchCase=\"isNonEmptyString(mcContent)\">\n <div [innerHTML]=\"mcContent\"></div>\n </ng-container>\n <ng-container *ngSwitchDefault [ngTemplateOutlet]=\"tplOriginContent\"></ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n </div> <!-- /.mc-confirm-body-wrapper -->\n </div>\n <div class=\"mc-confirm-btns\" *ngIf=\"mcOkText || mcCancelText\">\n <button\n mc-button\n #autoFocusedButton\n [color]=\"mcOkType\"\n [attr.autofocus]=\"true\"\n *ngIf=\"mcOkText\"\n (click)=\"onClickOkCancel('ok')\">\n\n {{ okText }}\n </button>\n\n <button mc-button [color]=\"themePalette.Second\" *ngIf=\"mcCancelText\" (click)=\"onClickOkCancel('cancel')\">\n {{ cancelText }}\n </button>\n </div>\n</ng-template>\n<!-- /[Predefined] Confirm Modal Content -->\n", styles: [".mc-confirm .mc-modal-header,.mc-confirm .mc-modal-close{display:none}.mc-confirm .mc-modal-body{padding:var(--mc-modal-confirm-size-padding, 24px)}.mc-confirm-body-wrapper{zoom:1}.mc-confirm-body-wrapper:before,.mc-confirm-body-wrapper:after{content:\"\";display:table}.mc-confirm-body-wrapper:after{clear:both}.mc-confirm-body .mc-confirm-title{display:block;overflow:auto}.mc-confirm .mc-confirm-btns{border-radius:var(--mc-modal-footer-size-border-radius, 0 0 4px 4px);text-align:right}.mc-confirm .mc-confirm-btns button+button{margin:16px}.mc-modal{box-sizing:border-box;position:relative;top:var(--mc-modal-size-top, 48px);width:auto;margin:0 auto;list-style:none}.mc-modal.zoom-enter,.mc-modal.zoom-appear{animation-duration:.3s;transform:none;opacity:0}.mc-modal.mc-modal_small{width:var(--mc-modal-size-small, 400px)}.mc-modal.mc-modal_normal{width:var(--mc-modal-size-normal, 640px)}.mc-modal.mc-modal_large{width:var(--mc-modal-size-large, 960px)}.mc-modal .mc-modal-close{position:absolute;z-index:10;top:0;right:0;width:var(--mc-modal-size-close-width, 56px);height:var(--mc-modal-size-close-width, 56px)}.mc-modal-wrap{position:fixed;z-index:1000;top:0;right:0;bottom:0;left:0;overflow:auto;-webkit-overflow-scrolling:touch;outline:0}.mc-modal-title{margin:0}.mc-modal-content{position:relative;border-radius:var(--mc-modal-size-border-radius, 4px);background-clip:padding-box;background-color:#fff}.mc-modal-header{display:flex;align-items:center;height:var(--mc-modal-header-size-height, 56px);border-radius:var(--mc-modal-header-size-border-radius, 4px 4px 0 0);padding:var(--mc-modal-header-size-padding, 0 16px)}.mc-modal-body{display:block;overflow-y:auto;max-height:var(--mc-modal-body-size-max-height, calc(100vh - 260px));padding:var(--mc-modal-body-size-padding, 16px 24px 24px);word-wrap:break-word}.mc-modal-footer{display:flex;align-items:center;justify-content:right;height:var(--mc-modal-footer-size-height, 64px);border-radius:var(--mc-modal-footer-size-border-radius, 0 0 4px 4px);padding:var(--mc-modal-footer-size-padding, 0 16px)}.mc-modal-footer button+button{margin-left:16px;margin-bottom:0}.mc-modal-mask{position:fixed;z-index:1000;top:0;right:0;left:0;bottom:0;height:100%}.mc-modal-mask.mc-modal-mask-hidden{display:none}.mc-modal-open{overflow:hidden}\n"] }]
594
- }], ctorParameters: function () {
595
- return [{ type: i1.Overlay }, { type: i0.Renderer2 }, { type: i0.ComponentFactoryResolver }, { type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: McModalControlService }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
596
- type: Inject,
597
- args: [DOCUMENT]
598
- }] }];
599
- }, propDecorators: { mcModalType: [{
600
- type: Input
601
- }], mcComponent: [{
602
- type: Input
603
- }], mcContent: [{
604
- type: Input
605
- }], mcComponentParams: [{
606
- type: Input
607
- }], mcFooter: [{
608
- type: Input
609
- }], mcVisible: [{
610
- type: Input
611
- }], mcVisibleChange: [{
612
- type: Output
613
- }], mcZIndex: [{
614
- type: Input
615
- }], mcWidth: [{
616
- type: Input
617
- }], mcSize: [{
618
- type: Input
619
- }], mcWrapClassName: [{
620
- type: Input
621
- }], mcClassName: [{
622
- type: Input
623
- }], mcStyle: [{
624
- type: Input
625
- }], mcTitle: [{
626
- type: Input
627
- }], mcCloseByESC: [{
628
- type: Input
629
- }], mcClosable: [{
630
- type: Input
631
- }], mcMask: [{
632
- type: Input
633
- }], mcMaskClosable: [{
634
- type: Input
635
- }], mcMaskStyle: [{
636
- type: Input
637
- }], mcBodyStyle: [{
638
- type: Input
639
- }], mcAfterOpen: [{
640
- type: Output
641
- }], mcAfterClose: [{
642
- type: Output
643
- }], mcOkText: [{
644
- type: Input
645
- }], mcOkType: [{
646
- type: Input
647
- }], mcOkLoading: [{
648
- type: Input
649
- }], mcOnOk: [{
650
- type: Input
651
- }, {
652
- type: Output
653
- }], mcCancelText: [{
654
- type: Input
655
- }], mcCancelLoading: [{
656
- type: Input
657
- }], mcOnCancel: [{
658
- type: Input
659
- }, {
660
- type: Output
661
- }], modalContainer: [{
662
- type: ViewChild,
663
- args: ['modalContainer', { static: true }]
664
- }], bodyContainer: [{
665
- type: ViewChild,
666
- args: ['bodyContainer', { read: ViewContainerRef, static: false }]
667
- }], autoFocusedButtons: [{
668
- type: ViewChildren,
669
- args: ['autoFocusedButton', { read: ElementRef }]
670
- }], modalBody: [{
671
- type: ViewChild,
672
- args: ['modalBody']
673
- }], mcGetContainer: [{
674
- type: Input
675
- }] } });
676
- ////////////
677
- function isPromise(obj) {
678
- // tslint:disable-next-line: no-unbound-method
679
- return !!obj &&
680
- (typeof obj === 'object' || typeof obj === 'function') &&
681
- typeof obj.then === 'function' &&
682
- typeof obj.catch === 'function';
200
+ // Duration when perform animations (ms)
201
+ const MODAL_ANIMATE_DURATION = 200;
202
+ class McModalComponent extends McModalRef {
203
+ constructor(overlay, renderer, cfr, elementRef, viewContainer, modalControl, changeDetector, document) {
204
+ super();
205
+ this.overlay = overlay;
206
+ this.renderer = renderer;
207
+ this.cfr = cfr;
208
+ this.elementRef = elementRef;
209
+ this.viewContainer = viewContainer;
210
+ this.modalControl = modalControl;
211
+ this.changeDetector = changeDetector;
212
+ this.document = document;
213
+ this.themePalette = ThemePalette;
214
+ this.mcModalType = 'default';
215
+ this._mcVisible = false;
216
+ this.mcVisibleChange = new EventEmitter();
217
+ this.mcZIndex = 1000;
218
+ this.mcSize = ModalSize.Normal;
219
+ this.mcCloseByESC = true;
220
+ this._mcClosable = true;
221
+ this._mcMask = true;
222
+ this._mcMaskClosable = false;
223
+ // Trigger when modal open(visible) after animations
224
+ this.mcAfterOpen = new EventEmitter();
225
+ // Trigger when modal leave-animation over
226
+ this.mcAfterClose = new EventEmitter();
227
+ this.mcOkType = 'primary';
228
+ this._mcOkLoading = false;
229
+ this.mcOnOk = new EventEmitter();
230
+ this._mcCancelLoading = false;
231
+ this.mcOnCancel = new EventEmitter();
232
+ this.isTopOverflow = false;
233
+ this.isBottomOverflow = false;
234
+ // The origin point that animation based on
235
+ this.transformOrigin = '0px 0px 0px';
236
+ this.mcGetContainer = () => this.overlay.create();
237
+ }
238
+ get mcVisible() { return this._mcVisible; }
239
+ set mcVisible(value) { this._mcVisible = value; }
240
+ get mcClosable() { return this._mcClosable; }
241
+ set mcClosable(value) { this._mcClosable = value; }
242
+ get mcMask() { return this._mcMask; }
243
+ set mcMask(value) { this._mcMask = value; }
244
+ get mcMaskClosable() { return this._mcMaskClosable; }
245
+ set mcMaskClosable(value) { this._mcMaskClosable = value; }
246
+ get mcOkLoading() { return this._mcOkLoading; }
247
+ set mcOkLoading(value) { this._mcOkLoading = value; }
248
+ get mcCancelLoading() { return this._mcCancelLoading; }
249
+ set mcCancelLoading(value) { this._mcCancelLoading = value; }
250
+ // Observable alias for mcAfterOpen
251
+ get afterOpen() {
252
+ return this.mcAfterOpen.asObservable();
253
+ }
254
+ // Observable alias for mcAfterClose
255
+ get afterClose() {
256
+ return this.mcAfterClose.asObservable();
257
+ }
258
+ get okText() {
259
+ return this.mcOkText;
260
+ }
261
+ get cancelText() {
262
+ return this.mcCancelText;
263
+ }
264
+ // Indicate whether this dialog should hidden
265
+ get hidden() {
266
+ return !this.mcVisible && !this.animationState;
267
+ }
268
+ ngOnInit() {
269
+ // Create component along without View
270
+ if (this.isComponent(this.mcContent)) {
271
+ this.createDynamicComponent(this.mcContent);
272
+ }
273
+ // Setup default button options
274
+ if (this.isModalButtons(this.mcFooter)) {
275
+ this.mcFooter = this.formatModalButtons(this.mcFooter);
276
+ }
277
+ if (this.isComponent(this.mcComponent)) {
278
+ this.createDynamicComponent(this.mcComponent);
279
+ }
280
+ // Place the modal dom to elsewhere
281
+ this.container = typeof this.mcGetContainer === 'function' ? this.mcGetContainer() : this.mcGetContainer;
282
+ if (this.container instanceof HTMLElement) {
283
+ this.container.appendChild(this.elementRef.nativeElement);
284
+ }
285
+ else if (this.container instanceof OverlayRef) {
286
+ // NOTE: only attach the dom to overlay, the view container is not changed actually
287
+ this.container.overlayElement.appendChild(this.elementRef.nativeElement);
288
+ }
289
+ // Register modal when afterOpen/afterClose is stable
290
+ this.modalControl.registerModal(this);
291
+ }
292
+ // [NOTE] NOT available when using by service!
293
+ // Because ngOnChanges never be called when using by service,
294
+ // here we can't support "mcContent"(Component) etc. as inputs that initialized dynamically.
295
+ // BUT: User also can change "mcContent" dynamically to trigger UI changes
296
+ // (provided you don't use Component that needs initializations)
297
+ ngOnChanges(changes) {
298
+ if (changes.mcVisible) {
299
+ // Do not trigger animation while initializing
300
+ this.handleVisibleStateChange(this.mcVisible, !changes.mcVisible.firstChange);
301
+ }
302
+ }
303
+ ngAfterViewInit() {
304
+ var _a;
305
+ // If using Component, it is the time to attach View while bodyContainer is ready
306
+ if (this.contentComponentRef) {
307
+ this.bodyContainer.insert(this.contentComponentRef.hostView);
308
+ }
309
+ (_a = this.getElement().getElementsByTagName('button')[0]) === null || _a === void 0 ? void 0 : _a.focus();
310
+ for (const autoFocusedButton of this.autoFocusedButtons.toArray()) {
311
+ if (autoFocusedButton.nativeElement.autofocus) {
312
+ autoFocusedButton.nativeElement.focus();
313
+ break;
314
+ }
315
+ }
316
+ this.checkOverflow();
317
+ }
318
+ ngOnDestroy() {
319
+ if (this.container instanceof OverlayRef) {
320
+ this.container.dispose();
321
+ }
322
+ }
323
+ checkOverflow() {
324
+ var _a;
325
+ const nativeElement = (_a = this.modalBody) === null || _a === void 0 ? void 0 : _a.nativeElement;
326
+ if (!nativeElement) {
327
+ return;
328
+ }
329
+ const scrollTop = nativeElement.scrollTop;
330
+ const offsetHeight = nativeElement.offsetHeight;
331
+ const scrollHeight = nativeElement.scrollHeight;
332
+ this.isTopOverflow = scrollTop > 0;
333
+ this.isBottomOverflow = scrollTop + offsetHeight < scrollHeight;
334
+ }
335
+ open() {
336
+ this.changeVisibleFromInside(true);
337
+ }
338
+ close(result) {
339
+ this.changeVisibleFromInside(false, result);
340
+ }
341
+ // Destroy equals Close
342
+ destroy(result) {
343
+ this.close(result);
344
+ }
345
+ markForCheck() {
346
+ this.changeDetector.markForCheck();
347
+ }
348
+ triggerOk() {
349
+ this.onClickOkCancel('ok');
350
+ }
351
+ triggerCancel() {
352
+ this.onClickOkCancel('cancel');
353
+ }
354
+ getInstance() {
355
+ return this;
356
+ }
357
+ getContentComponentRef() {
358
+ return this.contentComponentRef;
359
+ }
360
+ getContentComponent() {
361
+ return this.contentComponentRef && this.contentComponentRef.instance;
362
+ }
363
+ getElement() {
364
+ return this.elementRef && this.elementRef.nativeElement;
365
+ }
366
+ getMcFooter() {
367
+ return this.getElement().getElementsByClassName('mc-modal-footer').item(0);
368
+ }
369
+ onClickMask($event) {
370
+ if (this.mcMask &&
371
+ this.mcMaskClosable &&
372
+ $event.target.classList.contains('mc-modal-wrap') &&
373
+ this.mcVisible) {
374
+ this.onClickOkCancel('cancel');
375
+ }
376
+ }
377
+ // tslint:disable-next-line: no-reserved-keywords
378
+ isModalType(type) {
379
+ return this.mcModalType === type;
380
+ }
381
+ onKeyDown(event) {
382
+ var _a;
383
+ // tslint:disable-next-line:deprecation .key isn't supported in Edge
384
+ if (event.keyCode === ESCAPE && this.container && (this.container instanceof OverlayRef)) {
385
+ this.close();
386
+ event.preventDefault();
387
+ }
388
+ // tslint:disable-next-line:deprecation .key isn't supported in Edge
389
+ if (event.ctrlKey && event.keyCode === ENTER) {
390
+ if (this.mcModalType === 'confirm') {
391
+ this.triggerOk();
392
+ }
393
+ (_a = this.getElement().querySelector('[mc-modal-main-action]')) === null || _a === void 0 ? void 0 : _a.click();
394
+ event.preventDefault();
395
+ }
396
+ }
397
+ // AoT
398
+ onClickCloseBtn() {
399
+ if (this.mcVisible) {
400
+ this.onClickOkCancel('cancel');
401
+ }
402
+ }
403
+ // AoT
404
+ // tslint:disable-next-line: no-reserved-keywords
405
+ onClickOkCancel(type) {
406
+ const trigger = { ok: this.mcOnOk, cancel: this.mcOnCancel }[type];
407
+ const loadingKey = { ok: 'mcOkLoading', cancel: 'mcCancelLoading' }[type];
408
+ if (trigger instanceof EventEmitter) {
409
+ trigger.emit(this.getContentComponent());
410
+ }
411
+ else if (typeof trigger === 'function') {
412
+ const result = trigger(this.getContentComponent());
413
+ // Users can return "false" to prevent closing by default
414
+ const caseClose = (doClose) => (doClose !== false) && this.close(doClose);
415
+ if (isPromise(result)) {
416
+ this[loadingKey] = true;
417
+ const handleThen = (doClose) => {
418
+ this[loadingKey] = false;
419
+ caseClose(doClose);
420
+ };
421
+ result.then(handleThen).catch(handleThen);
422
+ }
423
+ else {
424
+ caseClose(result);
425
+ }
426
+ }
427
+ }
428
+ // AoT
429
+ isNonEmptyString(value) {
430
+ return typeof value === 'string' && value !== '';
431
+ }
432
+ // AoT
433
+ isTemplateRef(value) {
434
+ return value instanceof TemplateRef;
435
+ }
436
+ // AoT
437
+ isComponent(value) {
438
+ return value instanceof Type;
439
+ }
440
+ // AoT
441
+ isModalButtons(value) {
442
+ return Array.isArray(value) && value.length > 0;
443
+ }
444
+ // Lookup a button's property, if the prop is a function, call & then return the result, otherwise, return itself.
445
+ // AoT
446
+ getButtonCallableProp(options, prop) {
447
+ const value = options[prop];
448
+ const args = [];
449
+ if (this.contentComponentRef) {
450
+ args.push(this.contentComponentRef.instance);
451
+ }
452
+ return typeof value === 'function' ? value.apply(options, args) : value;
453
+ }
454
+ // On mcFooter's modal button click
455
+ // AoT
456
+ onButtonClick(button) {
457
+ // Call onClick directly
458
+ // tslint:disable-next-line:no-inferred-empty-object-type rule seems to be broken
459
+ const result = this.getButtonCallableProp(button, 'onClick');
460
+ if (isPromise(result)) {
461
+ button.loading = true;
462
+ result.then(() => button.loading = false).catch(() => button.loading = false);
463
+ }
464
+ }
465
+ // Do rest things when visible state changed
466
+ handleVisibleStateChange(visible, animation = true, closeResult) {
467
+ // Hide scrollbar at the first time when shown up
468
+ if (visible) {
469
+ this.changeBodyOverflow(1);
470
+ }
471
+ return Promise
472
+ .resolve(animation && this.animateTo(visible))
473
+ // Emit open/close event after animations over
474
+ .then(() => {
475
+ if (visible) {
476
+ this.mcAfterOpen.emit();
477
+ }
478
+ else {
479
+ this.mcAfterClose.emit(closeResult);
480
+ // Show/hide scrollbar when animation is over
481
+ this.changeBodyOverflow();
482
+ }
483
+ });
484
+ }
485
+ // Change mcVisible from inside
486
+ changeVisibleFromInside(visible, closeResult) {
487
+ if (this.mcVisible !== visible) {
488
+ // Change mcVisible value immediately
489
+ this.mcVisible = visible;
490
+ this.mcVisibleChange.emit(visible);
491
+ return this.handleVisibleStateChange(visible, true, closeResult);
492
+ }
493
+ return Promise.resolve();
494
+ }
495
+ changeAnimationState(state) {
496
+ this.animationState = state;
497
+ if (state) {
498
+ this.maskAnimationClassMap = {
499
+ [`fade-${state}`]: true,
500
+ [`fade-${state}-active`]: true
501
+ };
502
+ this.modalAnimationClassMap = {
503
+ [`zoom-${state}`]: true,
504
+ [`zoom-${state}-active`]: true
505
+ };
506
+ }
507
+ else {
508
+ // @ts-ignore
509
+ this.maskAnimationClassMap = this.modalAnimationClassMap = null;
510
+ }
511
+ if (this.contentComponentRef) {
512
+ this.contentComponentRef.changeDetectorRef.markForCheck();
513
+ }
514
+ else {
515
+ this.changeDetector.markForCheck();
516
+ }
517
+ }
518
+ animateTo(isVisible) {
519
+ // Figure out the lastest click position when shows up
520
+ if (isVisible) {
521
+ // [NOTE] Using timeout due to the document.click event is fired later than visible change,
522
+ // so if not postponed to next event-loop, we can't get the lastest click position
523
+ window.setTimeout(() => this.updateTransformOrigin());
524
+ }
525
+ this.changeAnimationState(isVisible ? 'enter' : 'leave');
526
+ // Return when animation is over
527
+ return new Promise((resolve) => {
528
+ return window.setTimeout(() => {
529
+ this.changeAnimationState(null);
530
+ resolve(null);
531
+ }, MODAL_ANIMATE_DURATION);
532
+ });
533
+ }
534
+ formatModalButtons(buttons) {
535
+ return buttons.map((button) => {
536
+ return Object.assign({
537
+ type: 'default',
538
+ size: 'default',
539
+ autoLoading: true,
540
+ show: true,
541
+ loading: false,
542
+ disabled: false
543
+ }, button);
544
+ });
545
+ }
546
+ /**
547
+ * Create a component dynamically but not attach to any View
548
+ * (this action will be executed when bodyContainer is ready)
549
+ * @param component Component class
550
+ */
551
+ createDynamicComponent(component) {
552
+ const factory = this.cfr.resolveComponentFactory(component);
553
+ const childInjector = Injector.create({
554
+ providers: [{ provide: McModalRef, useValue: this }],
555
+ parent: this.viewContainer.injector
556
+ });
557
+ this.contentComponentRef = factory.create(childInjector);
558
+ if (this.mcComponentParams) {
559
+ Object.assign(this.contentComponentRef.instance, this.mcComponentParams);
560
+ }
561
+ // Do the first change detection immediately
562
+ // (or we do detection at ngAfterViewInit, multi-changes error will be thrown)
563
+ this.contentComponentRef.changeDetectorRef.detectChanges();
564
+ }
565
+ // Update transform-origin to the last click position on document
566
+ updateTransformOrigin() {
567
+ const modalElement = this.modalContainer.nativeElement;
568
+ const lastPosition = modalUtilObject.getLastClickPosition();
569
+ if (lastPosition) {
570
+ this.transformOrigin = `${lastPosition.x - modalElement.offsetLeft}px ${lastPosition.y - modalElement.offsetTop}px 0px`;
571
+ }
572
+ }
573
+ /**
574
+ * Take care of the body's overflow to decide the existense of scrollbar
575
+ * @param plusNum The number that the openModals.length will increase soon
576
+ */
577
+ changeBodyOverflow(plusNum = 0) {
578
+ const openModals = this.modalControl.openModals;
579
+ if (openModals.length + plusNum > 0) {
580
+ this.renderer.setStyle(this.document.body, 'overflow', 'hidden');
581
+ }
582
+ else {
583
+ this.renderer.removeStyle(this.document.body, 'overflow');
584
+ }
585
+ }
586
+ }
587
+ /** @nocollapse */ /** @nocollapse */ McModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McModalComponent, deps: [{ token: i1.Overlay }, { token: i0.Renderer2 }, { token: i0.ComponentFactoryResolver }, { token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: McModalControlService }, { token: i0.ChangeDetectorRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
588
+ /** @nocollapse */ /** @nocollapse */ McModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.7", type: McModalComponent, selector: "mc-modal", inputs: { mcModalType: "mcModalType", mcComponent: "mcComponent", mcContent: "mcContent", mcComponentParams: "mcComponentParams", mcFooter: "mcFooter", mcVisible: "mcVisible", mcZIndex: "mcZIndex", mcWidth: "mcWidth", mcSize: "mcSize", mcWrapClassName: "mcWrapClassName", mcClassName: "mcClassName", mcStyle: "mcStyle", mcTitle: "mcTitle", mcCloseByESC: "mcCloseByESC", mcClosable: "mcClosable", mcMask: "mcMask", mcMaskClosable: "mcMaskClosable", mcMaskStyle: "mcMaskStyle", mcBodyStyle: "mcBodyStyle", mcOkText: "mcOkText", mcOkType: "mcOkType", mcOkLoading: "mcOkLoading", mcOnOk: "mcOnOk", mcCancelText: "mcCancelText", mcCancelLoading: "mcCancelLoading", mcOnCancel: "mcOnCancel", mcGetContainer: "mcGetContainer" }, outputs: { mcVisibleChange: "mcVisibleChange", mcAfterOpen: "mcAfterOpen", mcAfterClose: "mcAfterClose", mcOnOk: "mcOnOk", mcOnCancel: "mcOnCancel" }, host: { listeners: { "keydown": "onKeyDown($event)" } }, viewQueries: [{ propertyName: "modalContainer", first: true, predicate: ["modalContainer"], descendants: true, static: true }, { propertyName: "bodyContainer", first: true, predicate: ["bodyContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "modalBody", first: true, predicate: ["modalBody"], descendants: true }, { propertyName: "autoFocusedButtons", predicate: ["autoFocusedButton"], descendants: true, read: ElementRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<!-- Compatible: the <ng-content> can appear only once -->\r\n<ng-template #tplOriginContent>\r\n <ng-content></ng-content>\r\n</ng-template>\r\n\r\n<div>\r\n <div *ngIf=\"mcMask\"\r\n class=\"mc-modal-mask\"\r\n [ngClass]=\"maskAnimationClassMap\"\r\n [class.mc-modal-mask-hidden]=\"hidden\"\r\n [ngStyle]=\"mcMaskStyle\"\r\n [style.zIndex]=\"mcZIndex\"\r\n ></div>\r\n <div (mousedown)=\"onClickMask($event)\"\r\n class=\"mc-modal-wrap {{ mcWrapClassName }}\"\r\n [style.zIndex]=\"mcZIndex\"\r\n [style.display]=\"hidden ? 'none' : ''\"\r\n tabindex=\"-1\">\r\n\r\n <div #modalContainer\r\n class=\"mc-modal {{ mcClassName }} mc-modal_{{ mcSize }}\"\r\n [ngClass]=\"modalAnimationClassMap\"\r\n [ngStyle]=\"mcStyle\"\r\n [style.width]=\"mcWidth | toCssUnit\"\r\n [style.transform-origin]=\"transformOrigin\">\r\n\r\n <div class=\"mc-modal-content\" cdkTrapFocus>\r\n <button *ngIf=\"mcClosable\"\r\n mc-button\r\n (click)=\"onClickCloseBtn()\"\r\n class=\"mc-modal-close mc-button_transparent\">\r\n <i mc-icon=\"mc-close-L_16\" class=\"mc-icon mc-icon_light\" [color]=\"themePalette.Second\"></i>\r\n </button>\r\n <ng-container [ngSwitch]=\"true\">\r\n <ng-container *ngSwitchCase=\"isModalType('default')\"\r\n [ngTemplateOutlet]=\"tplContentDefault\"></ng-container>\r\n <ng-container *ngSwitchCase=\"isModalType('confirm')\"\r\n [ngTemplateOutlet]=\"tplContentConfirm\"></ng-container>\r\n <ng-container *ngSwitchCase=\"isModalType('custom')\"\r\n [ngTemplateOutlet]=\"tplContentCustom\"></ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #tplContentCustom>\r\n <ng-container #bodyContainer></ng-container>\r\n</ng-template>\r\n\r\n\r\n<!-- [Predefined] Default Modal Content -->\r\n<ng-template #tplContentDefault>\r\n <div *ngIf=\"mcTitle\" class=\"mc-modal-header\" [class.mc-modal-body_top-overflow]=\"isTopOverflow\">\r\n <div class=\"mc-modal-title\">\r\n <ng-container [ngSwitch]=\"true\">\r\n <ng-container *ngSwitchCase=\"isTemplateRef(mcTitle)\" [ngTemplateOutlet]=\"$any(mcTitle)\"></ng-container>\r\n <ng-container *ngSwitchCase=\"isNonEmptyString(mcTitle)\">\r\n <div [innerHTML]=\"mcTitle\"></div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"mc-modal-body\" #modalBody [ngStyle]=\"mcBodyStyle\" (scroll)=\"checkOverflow()\">\r\n <ng-container #bodyContainer>\r\n <ng-container *ngIf=\"!isComponent(mcContent)\" [ngSwitch]=\"true\">\r\n <ng-container *ngSwitchCase=\"isTemplateRef(mcContent)\" [ngTemplateOutlet]=\"$any(mcContent)\"></ng-container>\r\n <ng-container *ngSwitchCase=\"isNonEmptyString(mcContent)\">\r\n <div [innerHTML]=\"mcContent\"></div>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault [ngTemplateOutlet]=\"tplOriginContent\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"mcFooter || mcOkText || mcCancelText\" class=\"mc-modal-footer\" [class.mc-modal-body_bottom-overflow]=\"isBottomOverflow\">\r\n <ng-container [ngSwitch]=\"true\">\r\n <ng-container *ngSwitchCase=\"isTemplateRef(mcFooter)\" [ngTemplateOutlet]=\"$any(mcFooter)\"></ng-container>\r\n <ng-container *ngSwitchCase=\"isNonEmptyString(mcFooter)\">\r\n <div [innerHTML]=\"mcFooter\"></div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"isModalButtons(mcFooter)\">\r\n <ng-container *ngFor=\"let button of $any(mcFooter)\">\r\n <button\r\n mc-button\r\n #autoFocusedButton\r\n [attr.autofocus]=\"button.autoFocus\"\r\n [attr.mc-modal-main-action]=\"button.mcModalMainAction\"\r\n *ngIf=\"getButtonCallableProp(button, 'show')\"\r\n [disabled]=\"getButtonCallableProp(button, 'disabled')\"\r\n [class.mc-progress]=\"getButtonCallableProp(button, 'loading')\"\r\n (click)=\"onButtonClick(button)\"\r\n [color]=\"button.type\">\r\n {{ button.label }}\r\n </button>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <button\r\n #autoFocusedButton\r\n [attr.autofocus]=\"true\"\r\n *ngIf=\"mcOkText\"\r\n mc-button\r\n [color]=\"themePalette.Primary\"\r\n (click)=\"onClickOkCancel('ok')\">\r\n\r\n {{ okText }}\r\n </button>\r\n <button *ngIf=\"mcCancelText\" mc-button (click)=\"onClickOkCancel('cancel')\">\r\n {{ cancelText }}\r\n </button>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n<!-- /[Predefined] Default Modal Content -->\r\n\r\n<!-- [Predefined] Confirm Modal Content -->\r\n<ng-template #tplContentConfirm>\r\n <div class=\"mc-modal-body\" [ngStyle]=\"mcBodyStyle\">\r\n <div class=\"mc-confirm-body-wrapper\">\r\n <div class=\"mc-confirm-body\">\r\n <div class=\"mc-confirm-content\">\r\n <ng-container #bodyContainer>\r\n <ng-container *ngIf=\"!isComponent(mcContent)\" [ngSwitch]=\"true\">\r\n <ng-container *ngSwitchCase=\"isTemplateRef(mcContent)\"\r\n [ngTemplateOutlet]=\"$any(mcContent)\">\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"isNonEmptyString(mcContent)\">\r\n <div [innerHTML]=\"mcContent\"></div>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault [ngTemplateOutlet]=\"tplOriginContent\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div> <!-- /.mc-confirm-body-wrapper -->\r\n </div>\r\n <div class=\"mc-confirm-btns\" *ngIf=\"mcOkText || mcCancelText\">\r\n <button\r\n mc-button\r\n #autoFocusedButton\r\n [color]=\"mcOkType\"\r\n [attr.autofocus]=\"true\"\r\n *ngIf=\"mcOkText\"\r\n (click)=\"onClickOkCancel('ok')\">\r\n\r\n {{ okText }}\r\n </button>\r\n\r\n <button mc-button [color]=\"themePalette.Second\" *ngIf=\"mcCancelText\" (click)=\"onClickOkCancel('cancel')\">\r\n {{ cancelText }}\r\n </button>\r\n </div>\r\n</ng-template>\r\n<!-- /[Predefined] Confirm Modal Content -->\r\n", styles: [".mc-confirm .mc-modal-header,.mc-confirm .mc-modal-close{display:none}.mc-confirm .mc-modal-body{padding:var(--mc-modal-confirm-size-padding, 24px)}.mc-confirm-body-wrapper{zoom:1}.mc-confirm-body-wrapper:before,.mc-confirm-body-wrapper:after{content:\"\";display:table}.mc-confirm-body-wrapper:after{clear:both}.mc-confirm-body .mc-confirm-title{display:block;overflow:auto}.mc-confirm .mc-confirm-btns{border-radius:var(--mc-modal-footer-size-border-radius, 0 0 4px 4px);text-align:right}.mc-confirm .mc-confirm-btns button+button{margin:16px}.mc-modal{box-sizing:border-box;position:relative;top:var(--mc-modal-size-top, 48px);width:auto;margin:0 auto;list-style:none}.mc-modal.zoom-enter,.mc-modal.zoom-appear{animation-duration:.3s;transform:none;opacity:0}.mc-modal.mc-modal_small{width:var(--mc-modal-size-small, 400px)}.mc-modal.mc-modal_normal{width:var(--mc-modal-size-normal, 640px)}.mc-modal.mc-modal_large{width:var(--mc-modal-size-large, 960px)}.mc-modal .mc-modal-close{position:absolute;z-index:10;top:0;right:0;width:var(--mc-modal-size-close-width, 56px);height:var(--mc-modal-size-close-width, 56px)}.mc-modal-wrap{position:fixed;z-index:1000;top:0;right:0;bottom:0;left:0;overflow:auto;-webkit-overflow-scrolling:touch;outline:0}.mc-modal-title{margin:0}.mc-modal-content{position:relative;border-radius:var(--mc-modal-size-border-radius, 4px);background-clip:padding-box;background-color:#fff}.mc-modal-header{display:flex;align-items:center;height:var(--mc-modal-header-size-height, 56px);border-radius:var(--mc-modal-header-size-border-radius, 4px 4px 0 0);padding:var(--mc-modal-header-size-padding, 0 16px)}.mc-modal-body{display:block;overflow-y:auto;max-height:var(--mc-modal-body-size-max-height, calc(100vh - 260px));padding:var(--mc-modal-body-size-padding, 16px 24px 24px);word-wrap:break-word}.mc-modal-footer{display:flex;align-items:center;justify-content:right;height:var(--mc-modal-footer-size-height, 64px);border-radius:var(--mc-modal-footer-size-border-radius, 0 0 4px 4px);padding:var(--mc-modal-footer-size-padding, 0 16px)}.mc-modal-footer button+button{margin-left:16px;margin-bottom:0}.mc-modal-mask{position:fixed;z-index:1000;top:0;right:0;left:0;bottom:0;height:100%}.mc-modal-mask.mc-modal-mask-hidden{display:none}.mc-modal-open{overflow:hidden}\n"], components: [{ type: i3.McButton, selector: "[mc-button]", inputs: ["color", "tabIndex", "disabled"] }, { type: i4.McIcon, selector: "[mc-icon]", inputs: ["color"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i6.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { type: i3.McButtonCssStyler, selector: "[mc-button]" }, { type: i4.McIconCSSStyler, selector: "[mc-icon]" }, { type: i5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i5.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: McModalMainAction, selector: "[mc-modal-main-action]" }], pipes: { "toCssUnit": CssUnitPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
589
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McModalComponent, decorators: [{
590
+ type: Component,
591
+ args: [{ selector: 'mc-modal', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
592
+ '(keydown)': 'onKeyDown($event)'
593
+ }, template: "<!-- Compatible: the <ng-content> can appear only once -->\r\n<ng-template #tplOriginContent>\r\n <ng-content></ng-content>\r\n</ng-template>\r\n\r\n<div>\r\n <div *ngIf=\"mcMask\"\r\n class=\"mc-modal-mask\"\r\n [ngClass]=\"maskAnimationClassMap\"\r\n [class.mc-modal-mask-hidden]=\"hidden\"\r\n [ngStyle]=\"mcMaskStyle\"\r\n [style.zIndex]=\"mcZIndex\"\r\n ></div>\r\n <div (mousedown)=\"onClickMask($event)\"\r\n class=\"mc-modal-wrap {{ mcWrapClassName }}\"\r\n [style.zIndex]=\"mcZIndex\"\r\n [style.display]=\"hidden ? 'none' : ''\"\r\n tabindex=\"-1\">\r\n\r\n <div #modalContainer\r\n class=\"mc-modal {{ mcClassName }} mc-modal_{{ mcSize }}\"\r\n [ngClass]=\"modalAnimationClassMap\"\r\n [ngStyle]=\"mcStyle\"\r\n [style.width]=\"mcWidth | toCssUnit\"\r\n [style.transform-origin]=\"transformOrigin\">\r\n\r\n <div class=\"mc-modal-content\" cdkTrapFocus>\r\n <button *ngIf=\"mcClosable\"\r\n mc-button\r\n (click)=\"onClickCloseBtn()\"\r\n class=\"mc-modal-close mc-button_transparent\">\r\n <i mc-icon=\"mc-close-L_16\" class=\"mc-icon mc-icon_light\" [color]=\"themePalette.Second\"></i>\r\n </button>\r\n <ng-container [ngSwitch]=\"true\">\r\n <ng-container *ngSwitchCase=\"isModalType('default')\"\r\n [ngTemplateOutlet]=\"tplContentDefault\"></ng-container>\r\n <ng-container *ngSwitchCase=\"isModalType('confirm')\"\r\n [ngTemplateOutlet]=\"tplContentConfirm\"></ng-container>\r\n <ng-container *ngSwitchCase=\"isModalType('custom')\"\r\n [ngTemplateOutlet]=\"tplContentCustom\"></ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #tplContentCustom>\r\n <ng-container #bodyContainer></ng-container>\r\n</ng-template>\r\n\r\n\r\n<!-- [Predefined] Default Modal Content -->\r\n<ng-template #tplContentDefault>\r\n <div *ngIf=\"mcTitle\" class=\"mc-modal-header\" [class.mc-modal-body_top-overflow]=\"isTopOverflow\">\r\n <div class=\"mc-modal-title\">\r\n <ng-container [ngSwitch]=\"true\">\r\n <ng-container *ngSwitchCase=\"isTemplateRef(mcTitle)\" [ngTemplateOutlet]=\"$any(mcTitle)\"></ng-container>\r\n <ng-container *ngSwitchCase=\"isNonEmptyString(mcTitle)\">\r\n <div [innerHTML]=\"mcTitle\"></div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"mc-modal-body\" #modalBody [ngStyle]=\"mcBodyStyle\" (scroll)=\"checkOverflow()\">\r\n <ng-container #bodyContainer>\r\n <ng-container *ngIf=\"!isComponent(mcContent)\" [ngSwitch]=\"true\">\r\n <ng-container *ngSwitchCase=\"isTemplateRef(mcContent)\" [ngTemplateOutlet]=\"$any(mcContent)\"></ng-container>\r\n <ng-container *ngSwitchCase=\"isNonEmptyString(mcContent)\">\r\n <div [innerHTML]=\"mcContent\"></div>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault [ngTemplateOutlet]=\"tplOriginContent\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"mcFooter || mcOkText || mcCancelText\" class=\"mc-modal-footer\" [class.mc-modal-body_bottom-overflow]=\"isBottomOverflow\">\r\n <ng-container [ngSwitch]=\"true\">\r\n <ng-container *ngSwitchCase=\"isTemplateRef(mcFooter)\" [ngTemplateOutlet]=\"$any(mcFooter)\"></ng-container>\r\n <ng-container *ngSwitchCase=\"isNonEmptyString(mcFooter)\">\r\n <div [innerHTML]=\"mcFooter\"></div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"isModalButtons(mcFooter)\">\r\n <ng-container *ngFor=\"let button of $any(mcFooter)\">\r\n <button\r\n mc-button\r\n #autoFocusedButton\r\n [attr.autofocus]=\"button.autoFocus\"\r\n [attr.mc-modal-main-action]=\"button.mcModalMainAction\"\r\n *ngIf=\"getButtonCallableProp(button, 'show')\"\r\n [disabled]=\"getButtonCallableProp(button, 'disabled')\"\r\n [class.mc-progress]=\"getButtonCallableProp(button, 'loading')\"\r\n (click)=\"onButtonClick(button)\"\r\n [color]=\"button.type\">\r\n {{ button.label }}\r\n </button>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <button\r\n #autoFocusedButton\r\n [attr.autofocus]=\"true\"\r\n *ngIf=\"mcOkText\"\r\n mc-button\r\n [color]=\"themePalette.Primary\"\r\n (click)=\"onClickOkCancel('ok')\">\r\n\r\n {{ okText }}\r\n </button>\r\n <button *ngIf=\"mcCancelText\" mc-button (click)=\"onClickOkCancel('cancel')\">\r\n {{ cancelText }}\r\n </button>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n<!-- /[Predefined] Default Modal Content -->\r\n\r\n<!-- [Predefined] Confirm Modal Content -->\r\n<ng-template #tplContentConfirm>\r\n <div class=\"mc-modal-body\" [ngStyle]=\"mcBodyStyle\">\r\n <div class=\"mc-confirm-body-wrapper\">\r\n <div class=\"mc-confirm-body\">\r\n <div class=\"mc-confirm-content\">\r\n <ng-container #bodyContainer>\r\n <ng-container *ngIf=\"!isComponent(mcContent)\" [ngSwitch]=\"true\">\r\n <ng-container *ngSwitchCase=\"isTemplateRef(mcContent)\"\r\n [ngTemplateOutlet]=\"$any(mcContent)\">\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"isNonEmptyString(mcContent)\">\r\n <div [innerHTML]=\"mcContent\"></div>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault [ngTemplateOutlet]=\"tplOriginContent\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div> <!-- /.mc-confirm-body-wrapper -->\r\n </div>\r\n <div class=\"mc-confirm-btns\" *ngIf=\"mcOkText || mcCancelText\">\r\n <button\r\n mc-button\r\n #autoFocusedButton\r\n [color]=\"mcOkType\"\r\n [attr.autofocus]=\"true\"\r\n *ngIf=\"mcOkText\"\r\n (click)=\"onClickOkCancel('ok')\">\r\n\r\n {{ okText }}\r\n </button>\r\n\r\n <button mc-button [color]=\"themePalette.Second\" *ngIf=\"mcCancelText\" (click)=\"onClickOkCancel('cancel')\">\r\n {{ cancelText }}\r\n </button>\r\n </div>\r\n</ng-template>\r\n<!-- /[Predefined] Confirm Modal Content -->\r\n", styles: [".mc-confirm .mc-modal-header,.mc-confirm .mc-modal-close{display:none}.mc-confirm .mc-modal-body{padding:var(--mc-modal-confirm-size-padding, 24px)}.mc-confirm-body-wrapper{zoom:1}.mc-confirm-body-wrapper:before,.mc-confirm-body-wrapper:after{content:\"\";display:table}.mc-confirm-body-wrapper:after{clear:both}.mc-confirm-body .mc-confirm-title{display:block;overflow:auto}.mc-confirm .mc-confirm-btns{border-radius:var(--mc-modal-footer-size-border-radius, 0 0 4px 4px);text-align:right}.mc-confirm .mc-confirm-btns button+button{margin:16px}.mc-modal{box-sizing:border-box;position:relative;top:var(--mc-modal-size-top, 48px);width:auto;margin:0 auto;list-style:none}.mc-modal.zoom-enter,.mc-modal.zoom-appear{animation-duration:.3s;transform:none;opacity:0}.mc-modal.mc-modal_small{width:var(--mc-modal-size-small, 400px)}.mc-modal.mc-modal_normal{width:var(--mc-modal-size-normal, 640px)}.mc-modal.mc-modal_large{width:var(--mc-modal-size-large, 960px)}.mc-modal .mc-modal-close{position:absolute;z-index:10;top:0;right:0;width:var(--mc-modal-size-close-width, 56px);height:var(--mc-modal-size-close-width, 56px)}.mc-modal-wrap{position:fixed;z-index:1000;top:0;right:0;bottom:0;left:0;overflow:auto;-webkit-overflow-scrolling:touch;outline:0}.mc-modal-title{margin:0}.mc-modal-content{position:relative;border-radius:var(--mc-modal-size-border-radius, 4px);background-clip:padding-box;background-color:#fff}.mc-modal-header{display:flex;align-items:center;height:var(--mc-modal-header-size-height, 56px);border-radius:var(--mc-modal-header-size-border-radius, 4px 4px 0 0);padding:var(--mc-modal-header-size-padding, 0 16px)}.mc-modal-body{display:block;overflow-y:auto;max-height:var(--mc-modal-body-size-max-height, calc(100vh - 260px));padding:var(--mc-modal-body-size-padding, 16px 24px 24px);word-wrap:break-word}.mc-modal-footer{display:flex;align-items:center;justify-content:right;height:var(--mc-modal-footer-size-height, 64px);border-radius:var(--mc-modal-footer-size-border-radius, 0 0 4px 4px);padding:var(--mc-modal-footer-size-padding, 0 16px)}.mc-modal-footer button+button{margin-left:16px;margin-bottom:0}.mc-modal-mask{position:fixed;z-index:1000;top:0;right:0;left:0;bottom:0;height:100%}.mc-modal-mask.mc-modal-mask-hidden{display:none}.mc-modal-open{overflow:hidden}\n"] }]
594
+ }], ctorParameters: function () {
595
+ return [{ type: i1.Overlay }, { type: i0.Renderer2 }, { type: i0.ComponentFactoryResolver }, { type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: McModalControlService }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
596
+ type: Inject,
597
+ args: [DOCUMENT]
598
+ }] }];
599
+ }, propDecorators: { mcModalType: [{
600
+ type: Input
601
+ }], mcComponent: [{
602
+ type: Input
603
+ }], mcContent: [{
604
+ type: Input
605
+ }], mcComponentParams: [{
606
+ type: Input
607
+ }], mcFooter: [{
608
+ type: Input
609
+ }], mcVisible: [{
610
+ type: Input
611
+ }], mcVisibleChange: [{
612
+ type: Output
613
+ }], mcZIndex: [{
614
+ type: Input
615
+ }], mcWidth: [{
616
+ type: Input
617
+ }], mcSize: [{
618
+ type: Input
619
+ }], mcWrapClassName: [{
620
+ type: Input
621
+ }], mcClassName: [{
622
+ type: Input
623
+ }], mcStyle: [{
624
+ type: Input
625
+ }], mcTitle: [{
626
+ type: Input
627
+ }], mcCloseByESC: [{
628
+ type: Input
629
+ }], mcClosable: [{
630
+ type: Input
631
+ }], mcMask: [{
632
+ type: Input
633
+ }], mcMaskClosable: [{
634
+ type: Input
635
+ }], mcMaskStyle: [{
636
+ type: Input
637
+ }], mcBodyStyle: [{
638
+ type: Input
639
+ }], mcAfterOpen: [{
640
+ type: Output
641
+ }], mcAfterClose: [{
642
+ type: Output
643
+ }], mcOkText: [{
644
+ type: Input
645
+ }], mcOkType: [{
646
+ type: Input
647
+ }], mcOkLoading: [{
648
+ type: Input
649
+ }], mcOnOk: [{
650
+ type: Input
651
+ }, {
652
+ type: Output
653
+ }], mcCancelText: [{
654
+ type: Input
655
+ }], mcCancelLoading: [{
656
+ type: Input
657
+ }], mcOnCancel: [{
658
+ type: Input
659
+ }, {
660
+ type: Output
661
+ }], modalContainer: [{
662
+ type: ViewChild,
663
+ args: ['modalContainer', { static: true }]
664
+ }], bodyContainer: [{
665
+ type: ViewChild,
666
+ args: ['bodyContainer', { read: ViewContainerRef, static: false }]
667
+ }], autoFocusedButtons: [{
668
+ type: ViewChildren,
669
+ args: ['autoFocusedButton', { read: ElementRef }]
670
+ }], modalBody: [{
671
+ type: ViewChild,
672
+ args: ['modalBody']
673
+ }], mcGetContainer: [{
674
+ type: Input
675
+ }] } });
676
+ ////////////
677
+ function isPromise(obj) {
678
+ // tslint:disable-next-line: no-unbound-method
679
+ return !!obj &&
680
+ (typeof obj === 'object' || typeof obj === 'function') &&
681
+ typeof obj.then === 'function' &&
682
+ typeof obj.catch === 'function';
683
683
  }
684
684
 
685
- // A builder used for managing service creating modals
686
- class ModalBuilderForService {
687
- constructor(overlay, options = {}) {
688
- this.overlay = overlay;
689
- this.createModal();
690
- if (!('mcGetContainer' in options)) {
691
- options.mcGetContainer = undefined;
692
- }
693
- this.changeProps(options);
694
- this.modalRef.instance.open();
695
- this.modalRef.instance.mcAfterClose.subscribe(() => this.destroyModal());
696
- this.overlayRef.keydownEvents()
697
- // @ts-ignore
698
- .pipe(filter((event) => {
699
- // tslint:disable-next-line:deprecation replacement .key isn't supported in Edge
700
- return event.keyCode === ESCAPE && options.mcCloseByESC;
701
- }))
702
- .subscribe(() => this.modalRef.instance.close());
703
- }
704
- getInstance() {
705
- return this.modalRef && this.modalRef.instance;
706
- }
707
- destroyModal() {
708
- if (this.modalRef) {
709
- this.overlayRef.dispose();
710
- this.modalRef = null;
711
- }
712
- }
713
- changeProps(options) {
714
- if (this.modalRef) {
715
- // here not limit user's inputs at runtime
716
- Object.assign(this.modalRef.instance, options);
717
- }
718
- }
719
- // Create component to ApplicationRef
720
- createModal() {
721
- this.overlayRef = this.overlay.create();
722
- this.modalRef = this.overlayRef.attach(new ComponentPortal(McModalComponent));
723
- }
724
- }
725
- class McModalService {
726
- constructor(overlay, modalControl) {
727
- this.overlay = overlay;
728
- this.modalControl = modalControl;
729
- }
730
- // Track of the current close modals (we assume invisible is close this time)
731
- get openModals() {
732
- return this.modalControl.openModals;
733
- }
734
- get afterAllClose() {
735
- return this.modalControl.afterAllClose.asObservable();
736
- }
737
- // Closes all of the currently-open dialogs
738
- closeAll() {
739
- this.modalControl.closeAll();
740
- }
741
- create(options = {}) {
742
- if (typeof options.mcOnCancel !== 'function') {
743
- // Leave a empty function to close this modal by default
744
- // tslint:disable-next-line
745
- options.mcOnCancel = () => { };
746
- }
747
- if (!('mcCloseByESC' in options)) {
748
- options.mcCloseByESC = true;
749
- }
750
- // Remove the Cancel button if the user not specify a Cancel button
751
- if (!('mcCancelText' in options)) {
752
- options.mcCancelText = undefined;
753
- }
754
- // Remove the Ok button if the user not specify a Ok button
755
- if (!('mcOkText' in options)) {
756
- options.mcOkText = undefined;
757
- }
758
- // Remove the footer if the user not specify a footer
759
- if (!('mcFooter' in options)) {
760
- options.mcFooter = undefined;
761
- }
762
- return new ModalBuilderForService(this.overlay, options).getInstance();
763
- }
764
- confirm(options = {}, confirmType = 'confirm') {
765
- if ('mcFooter' in options) {
766
- console.warn(`The Confirm-Modal doesn't support "mcFooter", this property will be ignored.`);
767
- }
768
- // NOTE: only support function currently by calling confirm()
769
- if (typeof options.mcOnOk !== 'function') {
770
- // Leave a empty function to close this modal by default
771
- // tslint:disable-next-line
772
- options.mcOnOk = () => { };
773
- }
774
- options.mcModalType = 'confirm';
775
- options.mcClassName = `mc-confirm mc-confirm-${confirmType} ${options.mcClassName || ''}`;
776
- return this.create(options);
777
- }
778
- open(options = {}) {
779
- options.mcModalType = 'custom';
780
- return this.create(options);
781
- }
782
- success(options = {}) {
783
- return this.simpleConfirm(options, 'success');
784
- }
785
- // tslint:disable-next-line: no-reserved-keywords
786
- delete(options = {}) {
787
- return this.simpleConfirm(options, 'warn');
788
- }
789
- simpleConfirm(options = {}, confirmType) {
790
- return this.confirm(options, confirmType);
791
- }
792
- }
793
- /** @nocollapse */ /** @nocollapse */ McModalService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McModalService, deps: [{ token: i1.Overlay }, { token: McModalControlService }], target: i0.ɵɵFactoryTarget.Injectable });
794
- /** @nocollapse */ /** @nocollapse */ McModalService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McModalService });
795
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McModalService, decorators: [{
796
- type: Injectable
685
+ // A builder used for managing service creating modals
686
+ class ModalBuilderForService {
687
+ constructor(overlay, options = {}) {
688
+ this.overlay = overlay;
689
+ this.createModal();
690
+ if (!('mcGetContainer' in options)) {
691
+ options.mcGetContainer = undefined;
692
+ }
693
+ this.changeProps(options);
694
+ this.modalRef.instance.open();
695
+ this.modalRef.instance.mcAfterClose.subscribe(() => this.destroyModal());
696
+ this.overlayRef.keydownEvents()
697
+ // @ts-ignore
698
+ .pipe(filter((event) => {
699
+ // tslint:disable-next-line:deprecation replacement .key isn't supported in Edge
700
+ return event.keyCode === ESCAPE && options.mcCloseByESC;
701
+ }))
702
+ .subscribe(() => this.modalRef.instance.close());
703
+ }
704
+ getInstance() {
705
+ return this.modalRef && this.modalRef.instance;
706
+ }
707
+ destroyModal() {
708
+ if (this.modalRef) {
709
+ this.overlayRef.dispose();
710
+ this.modalRef = null;
711
+ }
712
+ }
713
+ changeProps(options) {
714
+ if (this.modalRef) {
715
+ // here not limit user's inputs at runtime
716
+ Object.assign(this.modalRef.instance, options);
717
+ }
718
+ }
719
+ // Create component to ApplicationRef
720
+ createModal() {
721
+ this.overlayRef = this.overlay.create();
722
+ this.modalRef = this.overlayRef.attach(new ComponentPortal(McModalComponent));
723
+ }
724
+ }
725
+ class McModalService {
726
+ constructor(overlay, modalControl) {
727
+ this.overlay = overlay;
728
+ this.modalControl = modalControl;
729
+ }
730
+ // Track of the current close modals (we assume invisible is close this time)
731
+ get openModals() {
732
+ return this.modalControl.openModals;
733
+ }
734
+ get afterAllClose() {
735
+ return this.modalControl.afterAllClose.asObservable();
736
+ }
737
+ // Closes all of the currently-open dialogs
738
+ closeAll() {
739
+ this.modalControl.closeAll();
740
+ }
741
+ create(options = {}) {
742
+ if (typeof options.mcOnCancel !== 'function') {
743
+ // Leave a empty function to close this modal by default
744
+ // tslint:disable-next-line
745
+ options.mcOnCancel = () => { };
746
+ }
747
+ if (!('mcCloseByESC' in options)) {
748
+ options.mcCloseByESC = true;
749
+ }
750
+ // Remove the Cancel button if the user not specify a Cancel button
751
+ if (!('mcCancelText' in options)) {
752
+ options.mcCancelText = undefined;
753
+ }
754
+ // Remove the Ok button if the user not specify a Ok button
755
+ if (!('mcOkText' in options)) {
756
+ options.mcOkText = undefined;
757
+ }
758
+ // Remove the footer if the user not specify a footer
759
+ if (!('mcFooter' in options)) {
760
+ options.mcFooter = undefined;
761
+ }
762
+ return new ModalBuilderForService(this.overlay, options).getInstance();
763
+ }
764
+ confirm(options = {}, confirmType = 'confirm') {
765
+ if ('mcFooter' in options) {
766
+ console.warn(`The Confirm-Modal doesn't support "mcFooter", this property will be ignored.`);
767
+ }
768
+ // NOTE: only support function currently by calling confirm()
769
+ if (typeof options.mcOnOk !== 'function') {
770
+ // Leave a empty function to close this modal by default
771
+ // tslint:disable-next-line
772
+ options.mcOnOk = () => { };
773
+ }
774
+ options.mcModalType = 'confirm';
775
+ options.mcClassName = `mc-confirm mc-confirm-${confirmType} ${options.mcClassName || ''}`;
776
+ return this.create(options);
777
+ }
778
+ open(options = {}) {
779
+ options.mcModalType = 'custom';
780
+ return this.create(options);
781
+ }
782
+ success(options = {}) {
783
+ return this.simpleConfirm(options, 'success');
784
+ }
785
+ // tslint:disable-next-line: no-reserved-keywords
786
+ delete(options = {}) {
787
+ return this.simpleConfirm(options, 'warn');
788
+ }
789
+ simpleConfirm(options = {}, confirmType) {
790
+ return this.confirm(options, confirmType);
791
+ }
792
+ }
793
+ /** @nocollapse */ /** @nocollapse */ McModalService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McModalService, deps: [{ token: i1.Overlay }, { token: McModalControlService }], target: i0.ɵɵFactoryTarget.Injectable });
794
+ /** @nocollapse */ /** @nocollapse */ McModalService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McModalService });
795
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McModalService, decorators: [{
796
+ type: Injectable
797
797
  }], ctorParameters: function () { return [{ type: i1.Overlay }, { type: McModalControlService }]; } });
798
798
 
799
- class McModalModule {
800
- }
801
- /** @nocollapse */ /** @nocollapse */ McModalModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McModalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
802
- /** @nocollapse */ /** @nocollapse */ McModalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McModalModule, declarations: [McModalComponent,
803
- McModalTitle,
804
- McModalBody,
805
- McModalFooter,
806
- CssUnitPipe,
807
- McModalMainAction], imports: [CommonModule,
808
- OverlayModule,
809
- A11yModule,
810
- McButtonModule,
811
- McIconModule], exports: [McModalComponent,
812
- McModalTitle,
813
- McModalBody,
814
- McModalFooter,
815
- McModalMainAction] });
816
- /** @nocollapse */ /** @nocollapse */ McModalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McModalModule, providers: [
817
- McModalControlService,
818
- McModalService
819
- ], imports: [[
820
- CommonModule,
821
- OverlayModule,
822
- A11yModule,
823
- McButtonModule,
824
- McIconModule
825
- ]] });
826
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McModalModule, decorators: [{
827
- type: NgModule,
828
- args: [{
829
- imports: [
830
- CommonModule,
831
- OverlayModule,
832
- A11yModule,
833
- McButtonModule,
834
- McIconModule
835
- ],
836
- exports: [
837
- McModalComponent,
838
- McModalTitle,
839
- McModalBody,
840
- McModalFooter,
841
- McModalMainAction
842
- ],
843
- declarations: [
844
- McModalComponent,
845
- McModalTitle,
846
- McModalBody,
847
- McModalFooter,
848
- CssUnitPipe,
849
- McModalMainAction
850
- ],
851
- providers: [
852
- McModalControlService,
853
- McModalService
854
- ],
855
- entryComponents: [McModalComponent]
856
- }]
799
+ class McModalModule {
800
+ }
801
+ /** @nocollapse */ /** @nocollapse */ McModalModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McModalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
802
+ /** @nocollapse */ /** @nocollapse */ McModalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McModalModule, declarations: [McModalComponent,
803
+ McModalTitle,
804
+ McModalBody,
805
+ McModalFooter,
806
+ CssUnitPipe,
807
+ McModalMainAction], imports: [CommonModule,
808
+ OverlayModule,
809
+ A11yModule,
810
+ McButtonModule,
811
+ McIconModule], exports: [McModalComponent,
812
+ McModalTitle,
813
+ McModalBody,
814
+ McModalFooter,
815
+ McModalMainAction] });
816
+ /** @nocollapse */ /** @nocollapse */ McModalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McModalModule, providers: [
817
+ McModalControlService,
818
+ McModalService
819
+ ], imports: [[
820
+ CommonModule,
821
+ OverlayModule,
822
+ A11yModule,
823
+ McButtonModule,
824
+ McIconModule
825
+ ]] });
826
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McModalModule, decorators: [{
827
+ type: NgModule,
828
+ args: [{
829
+ imports: [
830
+ CommonModule,
831
+ OverlayModule,
832
+ A11yModule,
833
+ McButtonModule,
834
+ McIconModule
835
+ ],
836
+ exports: [
837
+ McModalComponent,
838
+ McModalTitle,
839
+ McModalBody,
840
+ McModalFooter,
841
+ McModalMainAction
842
+ ],
843
+ declarations: [
844
+ McModalComponent,
845
+ McModalTitle,
846
+ McModalBody,
847
+ McModalFooter,
848
+ CssUnitPipe,
849
+ McModalMainAction
850
+ ],
851
+ providers: [
852
+ McModalControlService,
853
+ McModalService
854
+ ],
855
+ entryComponents: [McModalComponent]
856
+ }]
857
857
  }] });
858
858
 
859
- /**
860
- * Generated bundle index. Do not edit.
859
+ /**
860
+ * Generated bundle index. Do not edit.
861
861
  */
862
862
 
863
863
  export { McModalBody, McModalComponent, McModalFooter, McModalMainAction, McModalModule, McModalRef, McModalService, McModalTitle, ModalSize };