@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,768 +16,767 @@ import { McTooltipTrigger } from '@ptsecurity/mosaic/tooltip';
16
16
  import { Subject, merge } from 'rxjs';
17
17
  import { take, takeUntil, startWith } from 'rxjs/operators';
18
18
 
19
- /* tslint:disable:no-empty */
20
- /**
21
- * Component for list-options of selection-list. Each list-option can automatically
22
- * generate a checkbox and can put current item into the selectionModel of selection-list
23
- * if the current item is selected.
24
- */
25
- class McListOption {
26
- constructor(elementRef, changeDetector, ngZone, listSelection, group) {
27
- this.elementRef = elementRef;
28
- this.changeDetector = changeDetector;
29
- this.ngZone = ngZone;
30
- this.listSelection = listSelection;
31
- this.group = group;
32
- this.hasFocus = false;
33
- this.onFocus = new Subject();
34
- this.onBlur = new Subject();
35
- /**
36
- * This is set to true after the first OnChanges cycle so we don't clear the value of `selected`
37
- * in the first cycle.
38
- */
39
- this.inputsInitialized = false;
40
- this._disabled = false;
41
- this._selected = false;
42
- }
43
- get value() { return this._value; }
44
- set value(newValue) {
45
- if (this.selected && newValue !== this.value && this.inputsInitialized) {
46
- this.selected = false;
47
- }
48
- this._value = newValue;
49
- }
50
- get disabled() {
51
- const listSelectionDisabled = this.listSelection && this.listSelection.disabled;
52
- const groupDisabled = this.group && this.group.disabled;
53
- return listSelectionDisabled || groupDisabled || this._disabled;
54
- }
55
- set disabled(value) {
56
- const newValue = toBoolean(value);
57
- if (newValue !== this._disabled) {
58
- this._disabled = newValue;
59
- this.changeDetector.markForCheck();
60
- }
61
- }
62
- get showCheckbox() {
63
- return this._showCheckbox !== undefined ? this._showCheckbox : this.listSelection.showCheckbox;
64
- }
65
- set showCheckbox(value) {
66
- this._showCheckbox = coerceBooleanProperty(value);
67
- }
68
- get selected() {
69
- return this.listSelection.selectionModel?.isSelected(this) || false;
70
- }
71
- set selected(value) {
72
- const isSelected = toBoolean(value);
73
- if (isSelected !== this._selected) {
74
- this.setSelected(isSelected);
75
- }
76
- }
77
- get tabIndex() {
78
- return this.disabled ? null : -1;
79
- }
80
- ngOnInit() {
81
- const list = this.listSelection;
82
- if (list._value && list._value.some((value) => list.compareWith(value, this._value))) {
83
- this.setSelected(true);
84
- }
85
- const wasSelected = this._selected;
86
- // List options that are selected at initialization can't be reported properly to the form
87
- // control. This is because it takes some time until the selection-list knows about all
88
- // available options. Also it can happen that the ControlValueAccessor has an initial value
89
- // that should be used instead. Deferring the value change report to the next tick ensures
90
- // that the form control value is not being overwritten.
91
- Promise.resolve().then(() => {
92
- if (this._selected || wasSelected) {
93
- this.selected = true;
94
- this.changeDetector.markForCheck();
95
- }
96
- });
97
- this.inputsInitialized = true;
98
- }
99
- ngOnDestroy() {
100
- if (this.selected) {
101
- // We have to delay this until the next tick in order
102
- // to avoid changed after checked errors.
103
- Promise.resolve().then(() => this.selected = false);
104
- }
105
- this.listSelection.removeOptionFromList(this);
106
- }
107
- toggle() {
108
- this.selected = !this.selected;
109
- }
110
- getLabel() {
111
- return this.text ? this.text.nativeElement.textContent : '';
112
- }
113
- setSelected(selected) {
114
- if (this._selected === selected || !this.listSelection.selectionModel) {
115
- return;
116
- }
117
- this._selected = selected;
118
- if (selected) {
119
- this.listSelection.selectionModel.select(this);
120
- }
121
- else {
122
- this.listSelection.selectionModel.deselect(this);
123
- }
124
- this.changeDetector.markForCheck();
125
- }
126
- getHeight() {
127
- const clientRects = this.elementRef.nativeElement.getClientRects();
128
- return clientRects.length ? clientRects[0].height : 0;
129
- }
130
- handleClick($event) {
131
- if (this.disabled) {
132
- return;
133
- }
134
- this.listSelection.setSelectedOptionsByClick(this, hasModifierKey($event, 'shiftKey'), hasModifierKey($event, 'ctrlKey'));
135
- }
136
- onKeydown($event) {
137
- if (!this.actionButton) {
138
- return;
139
- }
140
- if ($event.keyCode === TAB && !$event.shiftKey && !this.actionButton.hasFocus) {
141
- this.actionButton.focus();
142
- $event.preventDefault();
143
- }
144
- }
145
- focus() {
146
- if (this.disabled || this.hasFocus || this.actionButton?.hasFocus) {
147
- return;
148
- }
149
- this.elementRef.nativeElement.focus();
150
- this.onFocus.next({ option: this });
151
- Promise.resolve().then(() => {
152
- this.hasFocus = true;
153
- this.changeDetector.markForCheck();
154
- });
155
- }
156
- blur() {
157
- // When animations are enabled, Angular may end up removing the option from the DOM a little
158
- // earlier than usual, causing it to be blurred and throwing off the logic in the list
159
- // that moves focus not the next item. To work around the issue, we defer marking the option
160
- // as not focused until the next time the zone stabilizes.
161
- this.ngZone.onStable
162
- .asObservable()
163
- .pipe(take(1))
164
- .subscribe(() => {
165
- this.ngZone.run(() => {
166
- this.hasFocus = false;
167
- if (this.actionButton?.hasFocus) {
168
- return;
169
- }
170
- this.onBlur.next({ option: this });
171
- });
172
- });
173
- }
174
- getHostElement() {
175
- return this.elementRef.nativeElement;
176
- }
177
- }
178
- /** @nocollapse */ /** @nocollapse */ McListOption.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McListOption, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: forwardRef(() => McListSelection) }, { token: i1.McOptgroup, optional: true }], target: i0.ɵɵFactoryTarget.Component });
179
- /** @nocollapse */ /** @nocollapse */ McListOption.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.7", type: McListOption, selector: "mc-list-option", inputs: { checkboxPosition: "checkboxPosition", value: "value", disabled: "disabled", showCheckbox: "showCheckbox", selected: "selected" }, host: { listeners: { "focusin": "focus()", "blur": "blur()", "click": "handleClick($event)", "keydown": "onKeydown($event)" }, properties: { "class.mc-selected": "selected", "class.mc-disabled": "disabled", "class.mc-focused": "hasFocus", "class.mc-action-button-focused": "actionButton?.active", "attr.tabindex": "tabIndex", "attr.disabled": "disabled || null" }, classAttribute: "mc-list-option" }, providers: [
180
- { provide: MC_OPTION_ACTION_PARENT, useExisting: McListOption }
181
- ], queries: [{ propertyName: "actionButton", first: true, predicate: McOptionActionComponent, descendants: true }, { propertyName: "tooltipTrigger", first: true, predicate: McTooltipTrigger, descendants: true }, { propertyName: "dropdownTrigger", first: true, predicate: McDropdownTrigger, descendants: true }], viewQueries: [{ propertyName: "text", first: true, predicate: ["text"], descendants: true }], exportAs: ["mcListOption"], ngImport: i0, template: "<mc-pseudo-checkbox\n *ngIf=\"showCheckbox\"\n [state]=\"selected ? 'checked' : 'unchecked'\"\n [disabled]=\"disabled\">\n</mc-pseudo-checkbox>\n\n<ng-content select=\"[mc-icon]\"></ng-content>\n\n<div class=\"mc-list-text\" #text>\n <ng-content></ng-content>\n</div>\n\n<ng-content select=\"mc-option-action\"></ng-content>\n", components: [{ type: i1.McPseudoCheckbox, selector: "mc-pseudo-checkbox", inputs: ["state", "disabled"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
182
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McListOption, decorators: [{
183
- type: Component,
184
- args: [{ exportAs: 'mcListOption', selector: 'mc-list-option', host: {
185
- class: 'mc-list-option',
186
- '[class.mc-selected]': 'selected',
187
- '[class.mc-disabled]': 'disabled',
188
- '[class.mc-focused]': 'hasFocus',
189
- '[class.mc-action-button-focused]': 'actionButton?.active',
190
- '[attr.tabindex]': 'tabIndex',
191
- '[attr.disabled]': 'disabled || null',
192
- '(focusin)': 'focus()',
193
- '(blur)': 'blur()',
194
- '(click)': 'handleClick($event)',
195
- '(keydown)': 'onKeydown($event)'
196
- }, encapsulation: ViewEncapsulation.None, preserveWhitespaces: false, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
197
- { provide: MC_OPTION_ACTION_PARENT, useExisting: McListOption }
198
- ], template: "<mc-pseudo-checkbox\n *ngIf=\"showCheckbox\"\n [state]=\"selected ? 'checked' : 'unchecked'\"\n [disabled]=\"disabled\">\n</mc-pseudo-checkbox>\n\n<ng-content select=\"[mc-icon]\"></ng-content>\n\n<div class=\"mc-list-text\" #text>\n <ng-content></ng-content>\n</div>\n\n<ng-content select=\"mc-option-action\"></ng-content>\n" }]
199
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: McListSelection, decorators: [{
200
- type: Inject,
201
- args: [forwardRef(() => McListSelection)]
202
- }] }, { type: i1.McOptgroup, decorators: [{
203
- type: Optional
204
- }] }]; }, propDecorators: { actionButton: [{
205
- type: ContentChild,
206
- args: [McOptionActionComponent]
207
- }], tooltipTrigger: [{
208
- type: ContentChild,
209
- args: [McTooltipTrigger]
210
- }], dropdownTrigger: [{
211
- type: ContentChild,
212
- args: [McDropdownTrigger]
213
- }], text: [{
214
- type: ViewChild,
215
- args: ['text', { static: false }]
216
- }], checkboxPosition: [{
217
- type: Input
218
- }], value: [{
219
- type: Input
220
- }], disabled: [{
221
- type: Input
222
- }], showCheckbox: [{
223
- type: Input
224
- }], selected: [{
225
- type: Input
226
- }] } });
227
- const MC_SELECTION_LIST_VALUE_ACCESSOR = {
228
- provide: NG_VALUE_ACCESSOR,
229
- useExisting: forwardRef(() => McListSelection),
230
- multi: true
231
- };
232
- class McListSelectionChange {
233
- constructor(source, option) {
234
- this.source = source;
235
- this.option = option;
236
- }
237
- }
238
- class McListSelectAllEvent {
239
- constructor(source, options) {
240
- this.source = source;
241
- this.options = options;
242
- }
243
- }
244
- class McListCopyEvent {
245
- constructor(source, option) {
246
- this.source = source;
247
- this.option = option;
248
- }
249
- }
250
- class McListSelectionBase {
251
- constructor(elementRef) {
252
- this.elementRef = elementRef;
253
- }
254
- }
255
- // tslint:disable-next-line:naming-convention
256
- const McListSelectionMixinBase = mixinTabIndex(mixinDisabled(McListSelectionBase));
257
- class McListSelection extends McListSelectionMixinBase {
258
- constructor(elementRef, changeDetectorRef, multiple, clipboard) {
259
- super(elementRef);
260
- this.changeDetectorRef = changeDetectorRef;
261
- this.clipboard = clipboard;
262
- this.onSelectAll = new EventEmitter();
263
- this.onCopy = new EventEmitter();
264
- this._autoSelect = true;
265
- this._noUnselectLast = true;
266
- this.horizontal = false;
267
- this._tabIndex = 0;
268
- this.userTabIndex = null;
269
- // Emits a change event whenever the selected state of an option changes.
270
- this.selectionChange = new EventEmitter();
271
- /** Emits whenever the component is destroyed. */
272
- this.destroyed = new Subject();
273
- /**
274
- * Function used for comparing an option against the selected value when determining which
275
- * options should appear as selected. The first argument is the value of an options. The second
276
- * one is a value from the selected value. A boolean must be returned.
277
- */
278
- this.compareWith = (a1, a2) => a1 === a2;
279
- // View to model callback that should be called if the list or its options lost focus.
280
- // tslint:disable-next-line:no-empty
281
- this.onTouched = () => { };
282
- // View to model callback that should be called whenever the selected options change.
283
- this.onChange = (_) => { };
284
- if (multiple === MultipleMode.CHECKBOX || multiple === MultipleMode.KEYBOARD) {
285
- this.multipleMode = multiple;
286
- }
287
- else if (multiple !== null) {
288
- this.multipleMode = MultipleMode.CHECKBOX;
289
- }
290
- if (this.multipleMode === MultipleMode.CHECKBOX) {
291
- this.autoSelect = false;
292
- this.noUnselectLast = false;
293
- }
294
- this.selectionModel = new SelectionModel(this.multiple);
295
- }
296
- get autoSelect() {
297
- return this._autoSelect;
298
- }
299
- set autoSelect(value) {
300
- this._autoSelect = coerceBooleanProperty(value);
301
- }
302
- get noUnselectLast() {
303
- return this._noUnselectLast;
304
- }
305
- set noUnselectLast(value) {
306
- this._noUnselectLast = coerceBooleanProperty(value);
307
- }
308
- get multiple() {
309
- return !!this.multipleMode;
310
- }
311
- get tabIndex() {
312
- return this.disabled ? -1 : this._tabIndex;
313
- }
314
- set tabIndex(value) {
315
- this.userTabIndex = value;
316
- this._tabIndex = value;
317
- }
318
- get showCheckbox() {
319
- return this.multipleMode === MultipleMode.CHECKBOX;
320
- }
321
- get optionFocusChanges() {
322
- return merge(...this.options.map((option) => option.onFocus));
323
- }
324
- get optionBlurChanges() {
325
- return merge(...this.options.map((option) => option.onBlur));
326
- }
327
- ngAfterContentInit() {
328
- this.horizontal = toBoolean(this.horizontal);
329
- this.keyManager = new FocusKeyManager(this.options)
330
- .withTypeAhead()
331
- .withVerticalOrientation(!this.horizontal)
332
- .withHorizontalOrientation(this.horizontal ? 'ltr' : null);
333
- this.keyManager.tabOut
334
- .pipe(takeUntil(this.destroyed))
335
- .subscribe(() => {
336
- this._tabIndex = -1;
337
- setTimeout(() => {
338
- this._tabIndex = this.userTabIndex || 0;
339
- this.changeDetectorRef.markForCheck();
340
- });
341
- });
342
- if (this._value) {
343
- this.setOptionsFromValues(this._value);
344
- }
345
- this.selectionModel.changed
346
- .pipe(takeUntil(this.destroyed))
347
- .subscribe((event) => {
348
- for (const item of event.added) {
349
- item.selected = true;
350
- }
351
- for (const item of event.removed) {
352
- item.selected = false;
353
- }
354
- });
355
- this.options.changes
356
- .pipe(startWith(null), takeUntil(this.destroyed))
357
- .subscribe(() => {
358
- this.resetOptions();
359
- // Check to see if we need to update our tab index
360
- this.updateTabIndex();
361
- });
362
- this.updateScrollSize();
363
- }
364
- ngOnDestroy() {
365
- this.destroyed.next();
366
- this.destroyed.complete();
367
- }
368
- focus() {
369
- if (this.options.length === 0) {
370
- return;
371
- }
372
- this.keyManager.setFirstItemActive();
373
- }
374
- blur() {
375
- if (!this.hasFocusedOption()) {
376
- this.keyManager.setActiveItem(-1);
377
- }
378
- this.onTouched();
379
- this.changeDetectorRef.markForCheck();
380
- }
381
- selectAll() {
382
- this.options.forEach((option) => option.setSelected(true));
383
- this.reportValueChange();
384
- }
385
- deselectAll() {
386
- this.options.forEach((option) => option.setSelected(false));
387
- this.reportValueChange();
388
- }
389
- updateScrollSize() {
390
- if (this.horizontal || !this.options.first) {
391
- return;
392
- }
393
- this.keyManager.withScrollSize(Math.floor(this.getHeight() / this.options.first.getHeight()));
394
- }
395
- setSelectedOptionsByClick(option, shiftKey, ctrlKey) {
396
- if (shiftKey && this.multiple) {
397
- this.setSelectedOptions(option);
398
- }
399
- else if (ctrlKey) {
400
- if (!this.canDeselectLast(option)) {
401
- return;
402
- }
403
- this.selectionModel.toggle(option);
404
- }
405
- else if (this.autoSelect) {
406
- this.selectionModel.clear();
407
- this.selectionModel.toggle(option);
408
- }
409
- else {
410
- this.selectionModel.toggle(option);
411
- }
412
- this.emitChangeEvent(option);
413
- this.reportValueChange();
414
- }
415
- setSelectedOptionsByKey(option, shiftKey, ctrlKey) {
416
- if (shiftKey && this.multiple) {
417
- this.setSelectedOptions(option);
418
- }
419
- else if (ctrlKey) {
420
- if (!this.canDeselectLast(option)) {
421
- return;
422
- }
423
- }
424
- else if (this.autoSelect) {
425
- this.options.forEach((item) => item.setSelected(false));
426
- option.setSelected(true);
427
- this.emitChangeEvent(option);
428
- this.reportValueChange();
429
- }
430
- }
431
- setSelectedOptions(option) {
432
- const selectedOptionState = option.selected;
433
- let fromIndex = this.keyManager.previousActiveItemIndex;
434
- let toIndex = this.keyManager.previousActiveItemIndex = this.keyManager.activeItemIndex;
435
- if (toIndex === fromIndex) {
436
- return;
437
- }
438
- if (fromIndex > toIndex) {
439
- [fromIndex, toIndex] = [toIndex, fromIndex];
440
- }
441
- this.options
442
- .toArray()
443
- .slice(fromIndex, toIndex + 1)
444
- .filter((item) => !item.disabled)
445
- .forEach((renderedOption) => {
446
- const isLastRenderedOption = renderedOption === this.keyManager.activeItem;
447
- if (isLastRenderedOption && renderedOption.selected && this.noUnselectLast) {
448
- return;
449
- }
450
- renderedOption.setSelected(!selectedOptionState);
451
- });
452
- }
453
- // Implemented as part of ControlValueAccessor.
454
- writeValue(values) {
455
- this._value = values;
456
- if (this.options) {
457
- this.setOptionsFromValues(values || []);
458
- }
459
- }
460
- // Implemented as part of ControlValueAccessor.
461
- registerOnChange(fn) {
462
- this.onChange = fn;
463
- }
464
- // Implemented as part of ControlValueAccessor.
465
- registerOnTouched(fn) {
466
- this.onTouched = fn;
467
- }
468
- // Implemented as a part of ControlValueAccessor.
469
- setDisabledState(isDisabled) {
470
- if (this.options) {
471
- this.options.forEach((option) => option.disabled = isDisabled);
472
- }
473
- }
474
- getSelectedOptionValues() {
475
- return this.options.filter((option) => option.selected).map((option) => option.value);
476
- }
477
- // Toggles the selected state of the currently focused option.
478
- toggleFocusedOption() {
479
- const focusedIndex = this.keyManager.activeItemIndex;
480
- if (focusedIndex != null && this.isValidIndex(focusedIndex)) {
481
- const focusedOption = this.options.toArray()[focusedIndex];
482
- if (focusedOption && this.canDeselectLast(focusedOption)) {
483
- focusedOption.toggle();
484
- // Emit a change event because the focused option changed its state through user interaction.
485
- this.emitChangeEvent(focusedOption);
486
- }
487
- }
488
- }
489
- canDeselectLast(listOption) {
490
- return !(this.noUnselectLast && this.selectionModel.selected.length === 1 && listOption.selected);
491
- }
492
- getHeight() {
493
- const clientRects = this.elementRef.nativeElement.getClientRects();
494
- return clientRects.length ? clientRects[0].height : 0;
495
- }
496
- // Removes an option from the selection list and updates the active item.
497
- removeOptionFromList(option) {
498
- if (!option.hasFocus) {
499
- return;
500
- }
501
- const optionIndex = this.getOptionIndex(option);
502
- // Check whether the option is the last item
503
- if (optionIndex > 0) {
504
- this.keyManager.setPreviousItemActive();
505
- }
506
- else if (optionIndex === 0 && this.options.length > 1) {
507
- this.keyManager.setNextItemActive();
508
- }
509
- }
510
- onKeyDown(event) {
511
- // tslint:disable-next-line: deprecation
512
- const keyCode = event.keyCode;
513
- if ([SPACE, ENTER, LEFT_ARROW, RIGHT_ARROW].includes(keyCode) || isVerticalMovement(event)) {
514
- event.preventDefault();
515
- }
516
- if (this.multiple && isSelectAll(event)) {
517
- this.selectAllOptions();
518
- event.preventDefault();
519
- return;
520
- }
521
- else if (isCopy(event)) {
522
- this.copyActiveOption();
523
- event.preventDefault();
524
- return;
525
- }
526
- else if ([SPACE, ENTER].includes(keyCode)) {
527
- this.toggleFocusedOption();
528
- return;
529
- }
530
- else if (keyCode === TAB) {
531
- this.keyManager.tabOut.next();
532
- return;
533
- }
534
- else if (keyCode === DOWN_ARROW) {
535
- this.keyManager.setNextItemActive();
536
- }
537
- else if (keyCode === UP_ARROW) {
538
- this.keyManager.setPreviousItemActive();
539
- }
540
- else if (keyCode === HOME) {
541
- this.keyManager.setFirstItemActive();
542
- }
543
- else if (keyCode === END) {
544
- this.keyManager.setLastItemActive();
545
- }
546
- else if (keyCode === PAGE_UP) {
547
- this.keyManager.setPreviousPageItemActive();
548
- }
549
- else if (keyCode === PAGE_DOWN) {
550
- this.keyManager.setNextPageItemActive();
551
- }
552
- if (this.keyManager.activeItem && isVerticalMovement(event)) {
553
- this.setSelectedOptionsByKey(this.keyManager.activeItem, hasModifierKey(event, 'shiftKey'), hasModifierKey(event, 'ctrlKey'));
554
- }
555
- }
556
- // Reports a value change to the ControlValueAccessor
557
- reportValueChange() {
558
- if (this.options) {
559
- const value = this.getSelectedOptionValues();
560
- this.onChange(value);
561
- this._value = value;
562
- }
563
- }
564
- // Emits a change event if the selected state of an option changed.
565
- emitChangeEvent(option) {
566
- this.selectionChange.emit(new McListSelectionChange(this, option));
567
- }
568
- updateTabIndex() {
569
- this._tabIndex = this.userTabIndex || (this.options.length === 0 ? -1 : 0);
570
- }
571
- onCopyDefaultHandler() {
572
- this.clipboard?.copy(this.keyManager.activeItem.value);
573
- }
574
- resetOptions() {
575
- this.dropSubscriptions();
576
- this.listenToOptionsFocus();
577
- }
578
- dropSubscriptions() {
579
- if (this.optionFocusSubscription) {
580
- this.optionFocusSubscription.unsubscribe();
581
- this.optionFocusSubscription = null;
582
- }
583
- if (this.optionBlurSubscription) {
584
- this.optionBlurSubscription.unsubscribe();
585
- this.optionBlurSubscription = null;
586
- }
587
- }
588
- listenToOptionsFocus() {
589
- this.optionFocusSubscription = this.optionFocusChanges
590
- .subscribe((event) => {
591
- const index = this.options.toArray().indexOf(event.option);
592
- if (this.isValidIndex(index)) {
593
- this.keyManager.updateActiveItem(index);
594
- }
595
- });
596
- this.optionBlurSubscription = this.optionBlurChanges
597
- .subscribe(() => this.blur());
598
- }
599
- /** Checks whether any of the options is focused. */
600
- hasFocusedOption() {
601
- return this.options.some((option) => option.hasFocus);
602
- }
603
- // Returns the option with the specified value.
604
- getOptionByValue(value) {
605
- return this.options.find((option) => option.value === value);
606
- }
607
- // Sets the selected options based on the specified values.
608
- setOptionsFromValues(values) {
609
- this.options.forEach((option) => option.setSelected(false));
610
- values
611
- .map((value) => this.getOptionByValue(value))
612
- .filter(Boolean)
613
- .forEach((option) => option.setSelected(true));
614
- }
615
- /**
616
- * Utility to ensure all indexes are valid.
617
- * @param index The index to be checked.
618
- * @returns True if the index is valid for our list of options.
619
- */
620
- isValidIndex(index) {
621
- return index >= 0 && index < this.options.length;
622
- }
623
- // Returns the index of the specified list option.
624
- getOptionIndex(option) {
625
- return this.options.toArray().indexOf(option);
626
- }
627
- selectAllOptions() {
628
- const optionsToSelect = this.options
629
- .filter((option) => !option.disabled);
630
- optionsToSelect
631
- .forEach((option) => option.setSelected(true));
632
- this.onSelectAll.emit(new McListSelectAllEvent(this, optionsToSelect));
633
- }
634
- copyActiveOption() {
635
- if (this.onCopy.observers.length) {
636
- this.onCopy.emit(new McListCopyEvent(this, this.keyManager.activeItem));
637
- }
638
- else {
639
- this.onCopyDefaultHandler();
640
- }
641
- }
642
- }
643
- /** @nocollapse */ /** @nocollapse */ McListSelection.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McListSelection, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: 'multiple', attribute: true }, { token: i3.Clipboard, optional: true }], target: i0.ɵɵFactoryTarget.Component });
644
- /** @nocollapse */ /** @nocollapse */ McListSelection.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.7", type: McListSelection, selector: "mc-list-selection", inputs: { disabled: "disabled", autoSelect: "autoSelect", noUnselectLast: "noUnselectLast", horizontal: "horizontal", tabIndex: "tabIndex", compareWith: "compareWith" }, outputs: { onSelectAll: "onSelectAll", onCopy: "onCopy", selectionChange: "selectionChange" }, host: { listeners: { "keydown": "onKeyDown($event)", "window:resize": "updateScrollSize()" }, properties: { "attr.tabindex": "-1", "attr.disabled": "disabled || null" }, classAttribute: "mc-list-selection" }, providers: [MC_SELECTION_LIST_VALUE_ACCESSOR], queries: [{ propertyName: "options", predicate: McListOption, descendants: true }], exportAs: ["mcListSelection"], usesInheritance: true, ngImport: i0, template: `
645
- <div [attr.tabindex]="tabIndex"
646
- (focus)="focus()"
647
- (blur)="blur()">
648
- <ng-content></ng-content>
649
- </div>`, isInline: true, styles: [".mc-divider{display:block;margin:0}.mc-divider.mc-divider_horizontal{border-top-width:var(--mc-divider-size-width, 1px);border-top-style:solid}.mc-divider.mc-divider_vertical{height:100%;border-right-width:var(--mc-divider-size-width, 1px);border-right-style:solid}.mc-divider.mc-divider_inset{margin-left:var(--mc-divider-size-inset-margin, 80px)}[dir=rtl] .mc-divider.mc-divider_inset{margin-left:auto;margin-right:var(--mc-divider-size-inset-margin, 80px)}.mc-no-select{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.mc-list,.mc-list-selection{display:block;outline:none}.mc-list-item,.mc-list-option{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;position:relative;display:flex;align-items:center;box-sizing:border-box;height:var(--mc-list-size-item-height, 32px);border:2px solid transparent;padding-left:var(--mc-list-size-horizontal-padding, 12px)}.mc-list-item .mc-list-text,.mc-list-option .mc-list-text{display:flex;flex-direction:column;width:100%;box-sizing:border-box;overflow:hidden;padding-right:var(--mc-list-size-horizontal-padding, 12px)}.mc-list-item .mc-list-text>*,.mc-list-option .mc-list-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.mc-list-item .mc-list-text:empty,.mc-list-option .mc-list-text:empty{display:none}.mc-list-item .mc-divider,.mc-list-option .mc-divider{position:absolute;bottom:0;left:0;width:100%;margin:0}[dir=rtl] .mc-list-item .mc-divider,[dir=rtl] .mc-list-option .mc-divider{margin-left:auto;margin-right:0}.mc-list-item .mc-divider.mc-divider_inset,.mc-list-option .mc-divider.mc-divider_inset{position:absolute}.mc-list-item.mc-progress:after,.mc-list-option.mc-progress:after{top:-2px;right:-2px;bottom:-2px;left:-2px}.mc-list-item .mc-pseudo-checkbox,.mc-list-item .mc-icon,.mc-list-option .mc-pseudo-checkbox,.mc-list-option .mc-icon{margin-right:var(--mc-list-size-icon-right-margin, 8px)}.mc-list-item .mc-option-action,.mc-list-option .mc-option-action{display:none}.mc-list-item:not([disabled]):hover .mc-option-action,.mc-list-item:not([disabled]).mc-focused .mc-option-action,.mc-list-item:not([disabled]).mc-action-button-focused .mc-option-action,.mc-list-option:not([disabled]):hover .mc-option-action,.mc-list-option:not([disabled]).mc-focused .mc-option-action,.mc-list-option:not([disabled]).mc-action-button-focused .mc-option-action{display:flex}.mc-list-option:not([disabled]):not(.mc-disabled){cursor:pointer}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
650
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McListSelection, decorators: [{
651
- type: Component,
652
- args: [{ exportAs: 'mcListSelection', selector: 'mc-list-selection', template: `
653
- <div [attr.tabindex]="tabIndex"
654
- (focus)="focus()"
655
- (blur)="blur()">
656
- <ng-content></ng-content>
657
- </div>`, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, inputs: ['disabled'], host: {
658
- class: 'mc-list-selection',
659
- '[attr.tabindex]': '-1',
660
- '[attr.disabled]': 'disabled || null',
661
- '(keydown)': 'onKeyDown($event)',
662
- '(window:resize)': 'updateScrollSize()'
663
- }, providers: [MC_SELECTION_LIST_VALUE_ACCESSOR], preserveWhitespaces: false, styles: [".mc-divider{display:block;margin:0}.mc-divider.mc-divider_horizontal{border-top-width:var(--mc-divider-size-width, 1px);border-top-style:solid}.mc-divider.mc-divider_vertical{height:100%;border-right-width:var(--mc-divider-size-width, 1px);border-right-style:solid}.mc-divider.mc-divider_inset{margin-left:var(--mc-divider-size-inset-margin, 80px)}[dir=rtl] .mc-divider.mc-divider_inset{margin-left:auto;margin-right:var(--mc-divider-size-inset-margin, 80px)}.mc-no-select{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.mc-list,.mc-list-selection{display:block;outline:none}.mc-list-item,.mc-list-option{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;position:relative;display:flex;align-items:center;box-sizing:border-box;height:var(--mc-list-size-item-height, 32px);border:2px solid transparent;padding-left:var(--mc-list-size-horizontal-padding, 12px)}.mc-list-item .mc-list-text,.mc-list-option .mc-list-text{display:flex;flex-direction:column;width:100%;box-sizing:border-box;overflow:hidden;padding-right:var(--mc-list-size-horizontal-padding, 12px)}.mc-list-item .mc-list-text>*,.mc-list-option .mc-list-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.mc-list-item .mc-list-text:empty,.mc-list-option .mc-list-text:empty{display:none}.mc-list-item .mc-divider,.mc-list-option .mc-divider{position:absolute;bottom:0;left:0;width:100%;margin:0}[dir=rtl] .mc-list-item .mc-divider,[dir=rtl] .mc-list-option .mc-divider{margin-left:auto;margin-right:0}.mc-list-item .mc-divider.mc-divider_inset,.mc-list-option .mc-divider.mc-divider_inset{position:absolute}.mc-list-item.mc-progress:after,.mc-list-option.mc-progress:after{top:-2px;right:-2px;bottom:-2px;left:-2px}.mc-list-item .mc-pseudo-checkbox,.mc-list-item .mc-icon,.mc-list-option .mc-pseudo-checkbox,.mc-list-option .mc-icon{margin-right:var(--mc-list-size-icon-right-margin, 8px)}.mc-list-item .mc-option-action,.mc-list-option .mc-option-action{display:none}.mc-list-item:not([disabled]):hover .mc-option-action,.mc-list-item:not([disabled]).mc-focused .mc-option-action,.mc-list-item:not([disabled]).mc-action-button-focused .mc-option-action,.mc-list-option:not([disabled]):hover .mc-option-action,.mc-list-option:not([disabled]).mc-focused .mc-option-action,.mc-list-option:not([disabled]).mc-action-button-focused .mc-option-action{display:flex}.mc-list-option:not([disabled]):not(.mc-disabled){cursor:pointer}\n"] }]
664
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.MultipleMode, decorators: [{
665
- type: Attribute,
666
- args: ['multiple']
667
- }] }, { type: i3.Clipboard, decorators: [{
668
- type: Optional
669
- }] }]; }, propDecorators: { options: [{
670
- type: ContentChildren,
671
- args: [McListOption, { descendants: true }]
672
- }], onSelectAll: [{
673
- type: Output
674
- }], onCopy: [{
675
- type: Output
676
- }], autoSelect: [{
677
- type: Input
678
- }], noUnselectLast: [{
679
- type: Input
680
- }], horizontal: [{
681
- type: Input
682
- }], tabIndex: [{
683
- type: Input
684
- }], selectionChange: [{
685
- type: Output
686
- }], compareWith: [{
687
- type: Input
19
+ /* tslint:disable:no-empty */
20
+ /**
21
+ * Component for list-options of selection-list. Each list-option can automatically
22
+ * generate a checkbox and can put current item into the selectionModel of selection-list
23
+ * if the current item is selected.
24
+ */
25
+ class McListOption {
26
+ constructor(elementRef, changeDetector, ngZone, listSelection, group) {
27
+ this.elementRef = elementRef;
28
+ this.changeDetector = changeDetector;
29
+ this.ngZone = ngZone;
30
+ this.listSelection = listSelection;
31
+ this.group = group;
32
+ this.hasFocus = false;
33
+ this.onFocus = new Subject();
34
+ this.onBlur = new Subject();
35
+ /**
36
+ * This is set to true after the first OnChanges cycle so we don't clear the value of `selected`
37
+ * in the first cycle.
38
+ */
39
+ this.inputsInitialized = false;
40
+ this._disabled = false;
41
+ this._selected = false;
42
+ }
43
+ get value() { return this._value; }
44
+ set value(newValue) {
45
+ if (this.selected && newValue !== this.value && this.inputsInitialized) {
46
+ this.selected = false;
47
+ }
48
+ this._value = newValue;
49
+ }
50
+ get disabled() {
51
+ const listSelectionDisabled = this.listSelection && this.listSelection.disabled;
52
+ const groupDisabled = this.group && this.group.disabled;
53
+ return listSelectionDisabled || groupDisabled || this._disabled;
54
+ }
55
+ set disabled(value) {
56
+ const newValue = toBoolean(value);
57
+ if (newValue !== this._disabled) {
58
+ this._disabled = newValue;
59
+ this.changeDetector.markForCheck();
60
+ }
61
+ }
62
+ get showCheckbox() {
63
+ return this._showCheckbox !== undefined ? this._showCheckbox : this.listSelection.showCheckbox;
64
+ }
65
+ set showCheckbox(value) {
66
+ this._showCheckbox = coerceBooleanProperty(value);
67
+ }
68
+ get selected() {
69
+ return this.listSelection.selectionModel?.isSelected(this) || false;
70
+ }
71
+ set selected(value) {
72
+ const isSelected = toBoolean(value);
73
+ if (isSelected !== this._selected) {
74
+ this.setSelected(isSelected);
75
+ }
76
+ }
77
+ get tabIndex() {
78
+ return this.disabled ? null : -1;
79
+ }
80
+ ngOnInit() {
81
+ const list = this.listSelection;
82
+ if (list._value && list._value.some((value) => list.compareWith(value, this._value))) {
83
+ this.setSelected(true);
84
+ }
85
+ const wasSelected = this._selected;
86
+ // List options that are selected at initialization can't be reported properly to the form
87
+ // control. This is because it takes some time until the selection-list knows about all
88
+ // available options. Also it can happen that the ControlValueAccessor has an initial value
89
+ // that should be used instead. Deferring the value change report to the next tick ensures
90
+ // that the form control value is not being overwritten.
91
+ Promise.resolve().then(() => {
92
+ if (this._selected || wasSelected) {
93
+ this.selected = true;
94
+ this.changeDetector.markForCheck();
95
+ }
96
+ });
97
+ this.inputsInitialized = true;
98
+ }
99
+ ngOnDestroy() {
100
+ if (this.selected) {
101
+ // We have to delay this until the next tick in order
102
+ // to avoid changed after checked errors.
103
+ Promise.resolve().then(() => this.selected = false);
104
+ }
105
+ this.listSelection.removeOptionFromList(this);
106
+ }
107
+ toggle() {
108
+ this.selected = !this.selected;
109
+ }
110
+ getLabel() {
111
+ return this.text ? this.text.nativeElement.textContent : '';
112
+ }
113
+ setSelected(selected) {
114
+ if (this._selected === selected || !this.listSelection.selectionModel) {
115
+ return;
116
+ }
117
+ this._selected = selected;
118
+ if (selected) {
119
+ this.listSelection.selectionModel.select(this);
120
+ }
121
+ else {
122
+ this.listSelection.selectionModel.deselect(this);
123
+ }
124
+ this.changeDetector.markForCheck();
125
+ }
126
+ getHeight() {
127
+ const clientRects = this.elementRef.nativeElement.getClientRects();
128
+ return clientRects.length ? clientRects[0].height : 0;
129
+ }
130
+ handleClick($event) {
131
+ if (this.disabled) {
132
+ return;
133
+ }
134
+ this.listSelection.setSelectedOptionsByClick(this, hasModifierKey($event, 'shiftKey'), hasModifierKey($event, 'ctrlKey'));
135
+ }
136
+ onKeydown($event) {
137
+ if (!this.actionButton) {
138
+ return;
139
+ }
140
+ if ($event.keyCode === TAB && !$event.shiftKey && !this.actionButton.hasFocus) {
141
+ this.actionButton.focus();
142
+ $event.preventDefault();
143
+ }
144
+ }
145
+ focus() {
146
+ if (this.disabled || this.hasFocus || this.actionButton?.hasFocus) {
147
+ return;
148
+ }
149
+ this.elementRef.nativeElement.focus();
150
+ this.onFocus.next({ option: this });
151
+ Promise.resolve().then(() => {
152
+ this.hasFocus = true;
153
+ this.changeDetector.markForCheck();
154
+ });
155
+ }
156
+ blur() {
157
+ // When animations are enabled, Angular may end up removing the option from the DOM a little
158
+ // earlier than usual, causing it to be blurred and throwing off the logic in the list
159
+ // that moves focus not the next item. To work around the issue, we defer marking the option
160
+ // as not focused until the next time the zone stabilizes.
161
+ this.ngZone.onStable
162
+ .asObservable()
163
+ .pipe(take(1))
164
+ .subscribe(() => {
165
+ this.ngZone.run(() => {
166
+ this.hasFocus = false;
167
+ if (this.actionButton?.hasFocus) {
168
+ return;
169
+ }
170
+ this.onBlur.next({ option: this });
171
+ });
172
+ });
173
+ }
174
+ getHostElement() {
175
+ return this.elementRef.nativeElement;
176
+ }
177
+ }
178
+ /** @nocollapse */ /** @nocollapse */ McListOption.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McListOption, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: forwardRef(() => McListSelection) }, { token: i1.McOptgroup, optional: true }], target: i0.ɵɵFactoryTarget.Component });
179
+ /** @nocollapse */ /** @nocollapse */ McListOption.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.7", type: McListOption, selector: "mc-list-option", inputs: { checkboxPosition: "checkboxPosition", value: "value", disabled: "disabled", showCheckbox: "showCheckbox", selected: "selected" }, host: { listeners: { "focusin": "focus()", "blur": "blur()", "click": "handleClick($event)", "keydown": "onKeydown($event)" }, properties: { "class.mc-selected": "selected", "class.mc-disabled": "disabled", "class.mc-focused": "hasFocus", "class.mc-action-button-focused": "actionButton?.active", "attr.tabindex": "tabIndex", "attr.disabled": "disabled || null" }, classAttribute: "mc-list-option" }, providers: [
180
+ { provide: MC_OPTION_ACTION_PARENT, useExisting: McListOption }
181
+ ], queries: [{ propertyName: "actionButton", first: true, predicate: McOptionActionComponent, descendants: true }, { propertyName: "tooltipTrigger", first: true, predicate: McTooltipTrigger, descendants: true }, { propertyName: "dropdownTrigger", first: true, predicate: McDropdownTrigger, descendants: true }], viewQueries: [{ propertyName: "text", first: true, predicate: ["text"], descendants: true }], exportAs: ["mcListOption"], ngImport: i0, template: "<mc-pseudo-checkbox\r\n *ngIf=\"showCheckbox\"\r\n [state]=\"selected ? 'checked' : 'unchecked'\"\r\n [disabled]=\"disabled\">\r\n</mc-pseudo-checkbox>\r\n\r\n<ng-content select=\"[mc-icon]\"></ng-content>\r\n\r\n<div class=\"mc-list-text\" #text>\r\n <ng-content></ng-content>\r\n</div>\r\n\r\n<ng-content select=\"mc-option-action\"></ng-content>\r\n", components: [{ type: i1.McPseudoCheckbox, selector: "mc-pseudo-checkbox", inputs: ["state", "disabled"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
182
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McListOption, decorators: [{
183
+ type: Component,
184
+ args: [{ exportAs: 'mcListOption', selector: 'mc-list-option', host: {
185
+ class: 'mc-list-option',
186
+ '[class.mc-selected]': 'selected',
187
+ '[class.mc-disabled]': 'disabled',
188
+ '[class.mc-focused]': 'hasFocus',
189
+ '[class.mc-action-button-focused]': 'actionButton?.active',
190
+ '[attr.tabindex]': 'tabIndex',
191
+ '[attr.disabled]': 'disabled || null',
192
+ '(focusin)': 'focus()',
193
+ '(blur)': 'blur()',
194
+ '(click)': 'handleClick($event)',
195
+ '(keydown)': 'onKeydown($event)'
196
+ }, encapsulation: ViewEncapsulation.None, preserveWhitespaces: false, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
197
+ { provide: MC_OPTION_ACTION_PARENT, useExisting: McListOption }
198
+ ], template: "<mc-pseudo-checkbox\r\n *ngIf=\"showCheckbox\"\r\n [state]=\"selected ? 'checked' : 'unchecked'\"\r\n [disabled]=\"disabled\">\r\n</mc-pseudo-checkbox>\r\n\r\n<ng-content select=\"[mc-icon]\"></ng-content>\r\n\r\n<div class=\"mc-list-text\" #text>\r\n <ng-content></ng-content>\r\n</div>\r\n\r\n<ng-content select=\"mc-option-action\"></ng-content>\r\n" }]
199
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: McListSelection, decorators: [{
200
+ type: Inject,
201
+ args: [forwardRef(() => McListSelection)]
202
+ }] }, { type: i1.McOptgroup, decorators: [{
203
+ type: Optional
204
+ }] }]; }, propDecorators: { actionButton: [{
205
+ type: ContentChild,
206
+ args: [McOptionActionComponent]
207
+ }], tooltipTrigger: [{
208
+ type: ContentChild,
209
+ args: [McTooltipTrigger]
210
+ }], dropdownTrigger: [{
211
+ type: ContentChild,
212
+ args: [McDropdownTrigger]
213
+ }], text: [{
214
+ type: ViewChild,
215
+ args: ['text', { static: false }]
216
+ }], checkboxPosition: [{
217
+ type: Input
218
+ }], value: [{
219
+ type: Input
220
+ }], disabled: [{
221
+ type: Input
222
+ }], showCheckbox: [{
223
+ type: Input
224
+ }], selected: [{
225
+ type: Input
226
+ }] } });
227
+ const MC_SELECTION_LIST_VALUE_ACCESSOR = {
228
+ provide: NG_VALUE_ACCESSOR,
229
+ useExisting: forwardRef(() => McListSelection),
230
+ multi: true
231
+ };
232
+ class McListSelectionChange {
233
+ constructor(source, option) {
234
+ this.source = source;
235
+ this.option = option;
236
+ }
237
+ }
238
+ class McListSelectAllEvent {
239
+ constructor(source, options) {
240
+ this.source = source;
241
+ this.options = options;
242
+ }
243
+ }
244
+ class McListCopyEvent {
245
+ constructor(source, option) {
246
+ this.source = source;
247
+ this.option = option;
248
+ }
249
+ }
250
+ class McListSelectionBase {
251
+ constructor(elementRef) {
252
+ this.elementRef = elementRef;
253
+ }
254
+ }
255
+ // tslint:disable-next-line:naming-convention
256
+ const McListSelectionMixinBase = mixinTabIndex(mixinDisabled(McListSelectionBase));
257
+ class McListSelection extends McListSelectionMixinBase {
258
+ constructor(elementRef, changeDetectorRef, multiple, clipboard) {
259
+ super(elementRef);
260
+ this.changeDetectorRef = changeDetectorRef;
261
+ this.clipboard = clipboard;
262
+ this.onSelectAll = new EventEmitter();
263
+ this.onCopy = new EventEmitter();
264
+ this._autoSelect = true;
265
+ this._noUnselectLast = true;
266
+ this.horizontal = false;
267
+ this._tabIndex = 0;
268
+ this.userTabIndex = null;
269
+ // Emits a change event whenever the selected state of an option changes.
270
+ this.selectionChange = new EventEmitter();
271
+ /** Emits whenever the component is destroyed. */
272
+ this.destroyed = new Subject();
273
+ /**
274
+ * Function used for comparing an option against the selected value when determining which
275
+ * options should appear as selected. The first argument is the value of an options. The second
276
+ * one is a value from the selected value. A boolean must be returned.
277
+ */
278
+ this.compareWith = (a1, a2) => a1 === a2;
279
+ // View to model callback that should be called if the list or its options lost focus.
280
+ // tslint:disable-next-line:no-empty
281
+ this.onTouched = () => { };
282
+ // View to model callback that should be called whenever the selected options change.
283
+ this.onChange = (_) => { };
284
+ if (multiple === MultipleMode.CHECKBOX || multiple === MultipleMode.KEYBOARD) {
285
+ this.multipleMode = multiple;
286
+ }
287
+ else if (multiple !== null) {
288
+ this.multipleMode = MultipleMode.CHECKBOX;
289
+ }
290
+ if (this.multipleMode === MultipleMode.CHECKBOX) {
291
+ this.autoSelect = false;
292
+ this.noUnselectLast = false;
293
+ }
294
+ this.selectionModel = new SelectionModel(this.multiple);
295
+ }
296
+ get autoSelect() {
297
+ return this._autoSelect;
298
+ }
299
+ set autoSelect(value) {
300
+ this._autoSelect = coerceBooleanProperty(value);
301
+ }
302
+ get noUnselectLast() {
303
+ return this._noUnselectLast;
304
+ }
305
+ set noUnselectLast(value) {
306
+ this._noUnselectLast = coerceBooleanProperty(value);
307
+ }
308
+ get multiple() {
309
+ return !!this.multipleMode;
310
+ }
311
+ get tabIndex() {
312
+ return this.disabled ? -1 : this._tabIndex;
313
+ }
314
+ set tabIndex(value) {
315
+ this.userTabIndex = value;
316
+ this._tabIndex = value;
317
+ }
318
+ get showCheckbox() {
319
+ return this.multipleMode === MultipleMode.CHECKBOX;
320
+ }
321
+ get optionFocusChanges() {
322
+ return merge(...this.options.map((option) => option.onFocus));
323
+ }
324
+ get optionBlurChanges() {
325
+ return merge(...this.options.map((option) => option.onBlur));
326
+ }
327
+ ngAfterContentInit() {
328
+ this.horizontal = toBoolean(this.horizontal);
329
+ this.keyManager = new FocusKeyManager(this.options)
330
+ .withTypeAhead()
331
+ .withVerticalOrientation(!this.horizontal)
332
+ .withHorizontalOrientation(this.horizontal ? 'ltr' : null);
333
+ this.keyManager.tabOut
334
+ .pipe(takeUntil(this.destroyed))
335
+ .subscribe(() => {
336
+ this._tabIndex = -1;
337
+ setTimeout(() => {
338
+ this._tabIndex = this.userTabIndex || 0;
339
+ this.changeDetectorRef.markForCheck();
340
+ });
341
+ });
342
+ if (this._value) {
343
+ this.setOptionsFromValues(this._value);
344
+ }
345
+ this.selectionModel.changed
346
+ .pipe(takeUntil(this.destroyed))
347
+ .subscribe((event) => {
348
+ for (const item of event.added) {
349
+ item.selected = true;
350
+ }
351
+ for (const item of event.removed) {
352
+ item.selected = false;
353
+ }
354
+ });
355
+ this.options.changes
356
+ .pipe(startWith(null), takeUntil(this.destroyed))
357
+ .subscribe(() => {
358
+ this.resetOptions();
359
+ // Check to see if we need to update our tab index
360
+ this.updateTabIndex();
361
+ });
362
+ this.updateScrollSize();
363
+ }
364
+ ngOnDestroy() {
365
+ this.destroyed.next();
366
+ this.destroyed.complete();
367
+ }
368
+ focus() {
369
+ if (this.options.length === 0) {
370
+ return;
371
+ }
372
+ this.keyManager.setFirstItemActive();
373
+ }
374
+ blur() {
375
+ if (!this.hasFocusedOption()) {
376
+ this.keyManager.setActiveItem(-1);
377
+ }
378
+ this.onTouched();
379
+ this.changeDetectorRef.markForCheck();
380
+ }
381
+ selectAll() {
382
+ this.options.forEach((option) => option.setSelected(true));
383
+ this.reportValueChange();
384
+ }
385
+ deselectAll() {
386
+ this.options.forEach((option) => option.setSelected(false));
387
+ this.reportValueChange();
388
+ }
389
+ updateScrollSize() {
390
+ if (this.horizontal || !this.options.first) {
391
+ return;
392
+ }
393
+ this.keyManager.withScrollSize(Math.floor(this.getHeight() / this.options.first.getHeight()));
394
+ }
395
+ setSelectedOptionsByClick(option, shiftKey, ctrlKey) {
396
+ if (shiftKey && this.multiple) {
397
+ this.selectActiveOptions();
398
+ }
399
+ else if (ctrlKey) {
400
+ if (!this.canDeselectLast(option)) {
401
+ return;
402
+ }
403
+ this.selectionModel.toggle(option);
404
+ }
405
+ else if (this.autoSelect) {
406
+ this.selectionModel.clear();
407
+ this.selectionModel.toggle(option);
408
+ }
409
+ else {
410
+ this.selectionModel.toggle(option);
411
+ }
412
+ this.emitChangeEvent(option);
413
+ this.reportValueChange();
414
+ }
415
+ setSelectedOptionsByKey(option, shiftKey, ctrlKey) {
416
+ if (shiftKey && this.multiple) {
417
+ this.selectActiveOptions();
418
+ }
419
+ else if (ctrlKey) {
420
+ if (!this.canDeselectLast(option)) {
421
+ return;
422
+ }
423
+ }
424
+ else if (this.autoSelect) {
425
+ this.options.forEach((item) => item.setSelected(false));
426
+ option.setSelected(true);
427
+ this.emitChangeEvent(option);
428
+ this.reportValueChange();
429
+ }
430
+ }
431
+ selectActiveOptions() {
432
+ const options = this.options.toArray();
433
+ let fromIndex = this.keyManager.previousActiveItemIndex;
434
+ let toIndex = this.keyManager.previousActiveItemIndex = this.keyManager.activeItemIndex;
435
+ const selectedOptionState = options[fromIndex].selected;
436
+ if (toIndex === fromIndex) {
437
+ return;
438
+ }
439
+ if (fromIndex > toIndex) {
440
+ [fromIndex, toIndex] = [toIndex, fromIndex];
441
+ }
442
+ options
443
+ .slice(fromIndex, toIndex + 1)
444
+ .filter((item) => !item.disabled)
445
+ .forEach((renderedOption) => {
446
+ if (!selectedOptionState && this.noUnselectLast && this.selectionModel.selected.length === 1) {
447
+ return;
448
+ }
449
+ renderedOption.setSelected(selectedOptionState);
450
+ });
451
+ }
452
+ // Implemented as part of ControlValueAccessor.
453
+ writeValue(values) {
454
+ this._value = values;
455
+ if (this.options) {
456
+ this.setOptionsFromValues(values || []);
457
+ }
458
+ }
459
+ // Implemented as part of ControlValueAccessor.
460
+ registerOnChange(fn) {
461
+ this.onChange = fn;
462
+ }
463
+ // Implemented as part of ControlValueAccessor.
464
+ registerOnTouched(fn) {
465
+ this.onTouched = fn;
466
+ }
467
+ // Implemented as a part of ControlValueAccessor.
468
+ setDisabledState(isDisabled) {
469
+ if (this.options) {
470
+ this.options.forEach((option) => option.disabled = isDisabled);
471
+ }
472
+ }
473
+ getSelectedOptionValues() {
474
+ return this.options.filter((option) => option.selected).map((option) => option.value);
475
+ }
476
+ // Toggles the selected state of the currently focused option.
477
+ toggleFocusedOption() {
478
+ const focusedIndex = this.keyManager.activeItemIndex;
479
+ if (focusedIndex != null && this.isValidIndex(focusedIndex)) {
480
+ const focusedOption = this.options.toArray()[focusedIndex];
481
+ if (focusedOption && this.canDeselectLast(focusedOption)) {
482
+ focusedOption.toggle();
483
+ // Emit a change event because the focused option changed its state through user interaction.
484
+ this.emitChangeEvent(focusedOption);
485
+ }
486
+ }
487
+ }
488
+ canDeselectLast(listOption) {
489
+ return !(this.noUnselectLast && this.selectionModel.selected.length === 1 && listOption.selected);
490
+ }
491
+ getHeight() {
492
+ const clientRects = this.elementRef.nativeElement.getClientRects();
493
+ return clientRects.length ? clientRects[0].height : 0;
494
+ }
495
+ // Removes an option from the selection list and updates the active item.
496
+ removeOptionFromList(option) {
497
+ if (!option.hasFocus) {
498
+ return;
499
+ }
500
+ const optionIndex = this.getOptionIndex(option);
501
+ // Check whether the option is the last item
502
+ if (optionIndex > 0) {
503
+ this.keyManager.setPreviousItemActive();
504
+ }
505
+ else if (optionIndex === 0 && this.options.length > 1) {
506
+ this.keyManager.setNextItemActive();
507
+ }
508
+ }
509
+ onKeyDown(event) {
510
+ // tslint:disable-next-line: deprecation
511
+ const keyCode = event.keyCode;
512
+ if ([SPACE, ENTER, LEFT_ARROW, RIGHT_ARROW].includes(keyCode) || isVerticalMovement(event)) {
513
+ event.preventDefault();
514
+ }
515
+ if (this.multiple && isSelectAll(event)) {
516
+ this.selectAllOptions();
517
+ event.preventDefault();
518
+ return;
519
+ }
520
+ else if (isCopy(event)) {
521
+ this.copyActiveOption();
522
+ event.preventDefault();
523
+ return;
524
+ }
525
+ else if ([SPACE, ENTER].includes(keyCode)) {
526
+ this.toggleFocusedOption();
527
+ return;
528
+ }
529
+ else if (keyCode === TAB) {
530
+ this.keyManager.tabOut.next();
531
+ return;
532
+ }
533
+ else if (keyCode === DOWN_ARROW) {
534
+ this.keyManager.setNextItemActive();
535
+ }
536
+ else if (keyCode === UP_ARROW) {
537
+ this.keyManager.setPreviousItemActive();
538
+ }
539
+ else if (keyCode === HOME) {
540
+ this.keyManager.setFirstItemActive();
541
+ }
542
+ else if (keyCode === END) {
543
+ this.keyManager.setLastItemActive();
544
+ }
545
+ else if (keyCode === PAGE_UP) {
546
+ this.keyManager.setPreviousPageItemActive();
547
+ }
548
+ else if (keyCode === PAGE_DOWN) {
549
+ this.keyManager.setNextPageItemActive();
550
+ }
551
+ if (this.keyManager.activeItem && isVerticalMovement(event)) {
552
+ this.setSelectedOptionsByKey(this.keyManager.activeItem, hasModifierKey(event, 'shiftKey'), hasModifierKey(event, 'ctrlKey'));
553
+ }
554
+ }
555
+ // Reports a value change to the ControlValueAccessor
556
+ reportValueChange() {
557
+ if (this.options) {
558
+ const value = this.getSelectedOptionValues();
559
+ this.onChange(value);
560
+ this._value = value;
561
+ }
562
+ }
563
+ // Emits a change event if the selected state of an option changed.
564
+ emitChangeEvent(option) {
565
+ this.selectionChange.emit(new McListSelectionChange(this, option));
566
+ }
567
+ updateTabIndex() {
568
+ this._tabIndex = this.userTabIndex || (this.options.length === 0 ? -1 : 0);
569
+ }
570
+ onCopyDefaultHandler() {
571
+ this.clipboard?.copy(this.keyManager.activeItem.value);
572
+ }
573
+ resetOptions() {
574
+ this.dropSubscriptions();
575
+ this.listenToOptionsFocus();
576
+ }
577
+ dropSubscriptions() {
578
+ if (this.optionFocusSubscription) {
579
+ this.optionFocusSubscription.unsubscribe();
580
+ this.optionFocusSubscription = null;
581
+ }
582
+ if (this.optionBlurSubscription) {
583
+ this.optionBlurSubscription.unsubscribe();
584
+ this.optionBlurSubscription = null;
585
+ }
586
+ }
587
+ listenToOptionsFocus() {
588
+ this.optionFocusSubscription = this.optionFocusChanges
589
+ .subscribe((event) => {
590
+ const index = this.options.toArray().indexOf(event.option);
591
+ if (this.isValidIndex(index)) {
592
+ this.keyManager.updateActiveItem(index);
593
+ }
594
+ });
595
+ this.optionBlurSubscription = this.optionBlurChanges
596
+ .subscribe(() => this.blur());
597
+ }
598
+ /** Checks whether any of the options is focused. */
599
+ hasFocusedOption() {
600
+ return this.options.some((option) => option.hasFocus);
601
+ }
602
+ // Returns the option with the specified value.
603
+ getOptionByValue(value) {
604
+ return this.options.find((option) => option.value === value);
605
+ }
606
+ // Sets the selected options based on the specified values.
607
+ setOptionsFromValues(values) {
608
+ this.options.forEach((option) => option.setSelected(false));
609
+ values
610
+ .map((value) => this.getOptionByValue(value))
611
+ .filter(Boolean)
612
+ .forEach((option) => option.setSelected(true));
613
+ }
614
+ /**
615
+ * Utility to ensure all indexes are valid.
616
+ * @param index The index to be checked.
617
+ * @returns True if the index is valid for our list of options.
618
+ */
619
+ isValidIndex(index) {
620
+ return index >= 0 && index < this.options.length;
621
+ }
622
+ // Returns the index of the specified list option.
623
+ getOptionIndex(option) {
624
+ return this.options.toArray().indexOf(option);
625
+ }
626
+ selectAllOptions() {
627
+ const optionsToSelect = this.options
628
+ .filter((option) => !option.disabled);
629
+ optionsToSelect
630
+ .forEach((option) => option.setSelected(true));
631
+ this.onSelectAll.emit(new McListSelectAllEvent(this, optionsToSelect));
632
+ }
633
+ copyActiveOption() {
634
+ if (this.onCopy.observers.length) {
635
+ this.onCopy.emit(new McListCopyEvent(this, this.keyManager.activeItem));
636
+ }
637
+ else {
638
+ this.onCopyDefaultHandler();
639
+ }
640
+ }
641
+ }
642
+ /** @nocollapse */ /** @nocollapse */ McListSelection.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McListSelection, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: 'multiple', attribute: true }, { token: i3.Clipboard, optional: true }], target: i0.ɵɵFactoryTarget.Component });
643
+ /** @nocollapse */ /** @nocollapse */ McListSelection.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.7", type: McListSelection, selector: "mc-list-selection", inputs: { disabled: "disabled", autoSelect: "autoSelect", noUnselectLast: "noUnselectLast", horizontal: "horizontal", tabIndex: "tabIndex", compareWith: "compareWith" }, outputs: { onSelectAll: "onSelectAll", onCopy: "onCopy", selectionChange: "selectionChange" }, host: { listeners: { "keydown": "onKeyDown($event)", "window:resize": "updateScrollSize()" }, properties: { "attr.tabindex": "-1", "attr.disabled": "disabled || null" }, classAttribute: "mc-list-selection" }, providers: [MC_SELECTION_LIST_VALUE_ACCESSOR], queries: [{ propertyName: "options", predicate: McListOption, descendants: true }], exportAs: ["mcListSelection"], usesInheritance: true, ngImport: i0, template: `
644
+ <div [attr.tabindex]="tabIndex"
645
+ (focus)="focus()"
646
+ (blur)="blur()">
647
+ <ng-content></ng-content>
648
+ </div>`, isInline: true, styles: [".mc-divider{display:block;margin:0}.mc-divider.mc-divider_horizontal{border-top-width:var(--mc-divider-size-width, 1px);border-top-style:solid}.mc-divider.mc-divider_vertical{height:100%;border-right-width:var(--mc-divider-size-width, 1px);border-right-style:solid}.mc-divider.mc-divider_inset{margin-left:var(--mc-divider-size-inset-margin, 80px)}[dir=rtl] .mc-divider.mc-divider_inset{margin-left:auto;margin-right:var(--mc-divider-size-inset-margin, 80px)}.mc-no-select{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.mc-list,.mc-list-selection{display:block;outline:none}.mc-list-item,.mc-list-option{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;position:relative;display:flex;align-items:center;box-sizing:border-box;height:var(--mc-list-size-item-height, 32px);border:2px solid transparent;padding-left:var(--mc-list-size-horizontal-padding, 12px)}.mc-list-item .mc-list-text,.mc-list-option .mc-list-text{display:flex;flex-direction:column;width:100%;box-sizing:border-box;overflow:hidden;padding-right:var(--mc-list-size-horizontal-padding, 12px)}.mc-list-item .mc-list-text>*,.mc-list-option .mc-list-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.mc-list-item .mc-list-text:empty,.mc-list-option .mc-list-text:empty{display:none}.mc-list-item .mc-divider,.mc-list-option .mc-divider{position:absolute;bottom:0;left:0;width:100%;margin:0}[dir=rtl] .mc-list-item .mc-divider,[dir=rtl] .mc-list-option .mc-divider{margin-left:auto;margin-right:0}.mc-list-item .mc-divider.mc-divider_inset,.mc-list-option .mc-divider.mc-divider_inset{position:absolute}.mc-list-item.mc-progress:after,.mc-list-option.mc-progress:after{top:-2px;right:-2px;bottom:-2px;left:-2px}.mc-list-item .mc-pseudo-checkbox,.mc-list-item .mc-icon,.mc-list-option .mc-pseudo-checkbox,.mc-list-option .mc-icon{margin-right:var(--mc-list-size-icon-right-margin, 8px)}.mc-list-item .mc-option-action,.mc-list-option .mc-option-action{display:none}.mc-list-item:not([disabled]):hover .mc-option-action,.mc-list-item:not([disabled]).mc-focused .mc-option-action,.mc-list-item:not([disabled]).mc-action-button-focused .mc-option-action,.mc-list-option:not([disabled]):hover .mc-option-action,.mc-list-option:not([disabled]).mc-focused .mc-option-action,.mc-list-option:not([disabled]).mc-action-button-focused .mc-option-action{display:flex}.mc-list-option:not([disabled]):not(.mc-disabled){cursor:pointer}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
649
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McListSelection, decorators: [{
650
+ type: Component,
651
+ args: [{ exportAs: 'mcListSelection', selector: 'mc-list-selection', template: `
652
+ <div [attr.tabindex]="tabIndex"
653
+ (focus)="focus()"
654
+ (blur)="blur()">
655
+ <ng-content></ng-content>
656
+ </div>`, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, inputs: ['disabled'], host: {
657
+ class: 'mc-list-selection',
658
+ '[attr.tabindex]': '-1',
659
+ '[attr.disabled]': 'disabled || null',
660
+ '(keydown)': 'onKeyDown($event)',
661
+ '(window:resize)': 'updateScrollSize()'
662
+ }, providers: [MC_SELECTION_LIST_VALUE_ACCESSOR], preserveWhitespaces: false, styles: [".mc-divider{display:block;margin:0}.mc-divider.mc-divider_horizontal{border-top-width:var(--mc-divider-size-width, 1px);border-top-style:solid}.mc-divider.mc-divider_vertical{height:100%;border-right-width:var(--mc-divider-size-width, 1px);border-right-style:solid}.mc-divider.mc-divider_inset{margin-left:var(--mc-divider-size-inset-margin, 80px)}[dir=rtl] .mc-divider.mc-divider_inset{margin-left:auto;margin-right:var(--mc-divider-size-inset-margin, 80px)}.mc-no-select{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.mc-list,.mc-list-selection{display:block;outline:none}.mc-list-item,.mc-list-option{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;position:relative;display:flex;align-items:center;box-sizing:border-box;height:var(--mc-list-size-item-height, 32px);border:2px solid transparent;padding-left:var(--mc-list-size-horizontal-padding, 12px)}.mc-list-item .mc-list-text,.mc-list-option .mc-list-text{display:flex;flex-direction:column;width:100%;box-sizing:border-box;overflow:hidden;padding-right:var(--mc-list-size-horizontal-padding, 12px)}.mc-list-item .mc-list-text>*,.mc-list-option .mc-list-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.mc-list-item .mc-list-text:empty,.mc-list-option .mc-list-text:empty{display:none}.mc-list-item .mc-divider,.mc-list-option .mc-divider{position:absolute;bottom:0;left:0;width:100%;margin:0}[dir=rtl] .mc-list-item .mc-divider,[dir=rtl] .mc-list-option .mc-divider{margin-left:auto;margin-right:0}.mc-list-item .mc-divider.mc-divider_inset,.mc-list-option .mc-divider.mc-divider_inset{position:absolute}.mc-list-item.mc-progress:after,.mc-list-option.mc-progress:after{top:-2px;right:-2px;bottom:-2px;left:-2px}.mc-list-item .mc-pseudo-checkbox,.mc-list-item .mc-icon,.mc-list-option .mc-pseudo-checkbox,.mc-list-option .mc-icon{margin-right:var(--mc-list-size-icon-right-margin, 8px)}.mc-list-item .mc-option-action,.mc-list-option .mc-option-action{display:none}.mc-list-item:not([disabled]):hover .mc-option-action,.mc-list-item:not([disabled]).mc-focused .mc-option-action,.mc-list-item:not([disabled]).mc-action-button-focused .mc-option-action,.mc-list-option:not([disabled]):hover .mc-option-action,.mc-list-option:not([disabled]).mc-focused .mc-option-action,.mc-list-option:not([disabled]).mc-action-button-focused .mc-option-action{display:flex}.mc-list-option:not([disabled]):not(.mc-disabled){cursor:pointer}\n"] }]
663
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.MultipleMode, decorators: [{
664
+ type: Attribute,
665
+ args: ['multiple']
666
+ }] }, { type: i3.Clipboard, decorators: [{
667
+ type: Optional
668
+ }] }]; }, propDecorators: { options: [{
669
+ type: ContentChildren,
670
+ args: [McListOption, { descendants: true }]
671
+ }], onSelectAll: [{
672
+ type: Output
673
+ }], onCopy: [{
674
+ type: Output
675
+ }], autoSelect: [{
676
+ type: Input
677
+ }], noUnselectLast: [{
678
+ type: Input
679
+ }], horizontal: [{
680
+ type: Input
681
+ }], tabIndex: [{
682
+ type: Input
683
+ }], selectionChange: [{
684
+ type: Output
685
+ }], compareWith: [{
686
+ type: Input
688
687
  }] } });
689
688
 
690
- // todo пока не делаем, перенесено из материала, но у нас в доках таких простых списков нет.
691
- class McList {
692
- }
693
- /** @nocollapse */ /** @nocollapse */ McList.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McList, deps: [], target: i0.ɵɵFactoryTarget.Component });
694
- /** @nocollapse */ /** @nocollapse */ McList.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.7", type: McList, selector: "mc-list", host: { classAttribute: "mc-list" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [".mc-divider{display:block;margin:0}.mc-divider.mc-divider_horizontal{border-top-width:var(--mc-divider-size-width, 1px);border-top-style:solid}.mc-divider.mc-divider_vertical{height:100%;border-right-width:var(--mc-divider-size-width, 1px);border-right-style:solid}.mc-divider.mc-divider_inset{margin-left:var(--mc-divider-size-inset-margin, 80px)}[dir=rtl] .mc-divider.mc-divider_inset{margin-left:auto;margin-right:var(--mc-divider-size-inset-margin, 80px)}.mc-no-select{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.mc-list,.mc-list-selection{display:block;outline:none}.mc-list-item,.mc-list-option{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;position:relative;display:flex;align-items:center;box-sizing:border-box;height:var(--mc-list-size-item-height, 32px);border:2px solid transparent;padding-left:var(--mc-list-size-horizontal-padding, 12px)}.mc-list-item .mc-list-text,.mc-list-option .mc-list-text{display:flex;flex-direction:column;width:100%;box-sizing:border-box;overflow:hidden;padding-right:var(--mc-list-size-horizontal-padding, 12px)}.mc-list-item .mc-list-text>*,.mc-list-option .mc-list-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.mc-list-item .mc-list-text:empty,.mc-list-option .mc-list-text:empty{display:none}.mc-list-item .mc-divider,.mc-list-option .mc-divider{position:absolute;bottom:0;left:0;width:100%;margin:0}[dir=rtl] .mc-list-item .mc-divider,[dir=rtl] .mc-list-option .mc-divider{margin-left:auto;margin-right:0}.mc-list-item .mc-divider.mc-divider_inset,.mc-list-option .mc-divider.mc-divider_inset{position:absolute}.mc-list-item.mc-progress:after,.mc-list-option.mc-progress:after{top:-2px;right:-2px;bottom:-2px;left:-2px}.mc-list-item .mc-pseudo-checkbox,.mc-list-item .mc-icon,.mc-list-option .mc-pseudo-checkbox,.mc-list-option .mc-icon{margin-right:var(--mc-list-size-icon-right-margin, 8px)}.mc-list-item .mc-option-action,.mc-list-option .mc-option-action{display:none}.mc-list-item:not([disabled]):hover .mc-option-action,.mc-list-item:not([disabled]).mc-focused .mc-option-action,.mc-list-item:not([disabled]).mc-action-button-focused .mc-option-action,.mc-list-option:not([disabled]):hover .mc-option-action,.mc-list-option:not([disabled]).mc-focused .mc-option-action,.mc-list-option:not([disabled]).mc-action-button-focused .mc-option-action{display:flex}.mc-list-option:not([disabled]):not(.mc-disabled){cursor:pointer}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
695
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McList, decorators: [{
696
- type: Component,
697
- args: [{ selector: 'mc-list', host: { class: 'mc-list' }, template: '<ng-content></ng-content>', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".mc-divider{display:block;margin:0}.mc-divider.mc-divider_horizontal{border-top-width:var(--mc-divider-size-width, 1px);border-top-style:solid}.mc-divider.mc-divider_vertical{height:100%;border-right-width:var(--mc-divider-size-width, 1px);border-right-style:solid}.mc-divider.mc-divider_inset{margin-left:var(--mc-divider-size-inset-margin, 80px)}[dir=rtl] .mc-divider.mc-divider_inset{margin-left:auto;margin-right:var(--mc-divider-size-inset-margin, 80px)}.mc-no-select{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.mc-list,.mc-list-selection{display:block;outline:none}.mc-list-item,.mc-list-option{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;position:relative;display:flex;align-items:center;box-sizing:border-box;height:var(--mc-list-size-item-height, 32px);border:2px solid transparent;padding-left:var(--mc-list-size-horizontal-padding, 12px)}.mc-list-item .mc-list-text,.mc-list-option .mc-list-text{display:flex;flex-direction:column;width:100%;box-sizing:border-box;overflow:hidden;padding-right:var(--mc-list-size-horizontal-padding, 12px)}.mc-list-item .mc-list-text>*,.mc-list-option .mc-list-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.mc-list-item .mc-list-text:empty,.mc-list-option .mc-list-text:empty{display:none}.mc-list-item .mc-divider,.mc-list-option .mc-divider{position:absolute;bottom:0;left:0;width:100%;margin:0}[dir=rtl] .mc-list-item .mc-divider,[dir=rtl] .mc-list-option .mc-divider{margin-left:auto;margin-right:0}.mc-list-item .mc-divider.mc-divider_inset,.mc-list-option .mc-divider.mc-divider_inset{position:absolute}.mc-list-item.mc-progress:after,.mc-list-option.mc-progress:after{top:-2px;right:-2px;bottom:-2px;left:-2px}.mc-list-item .mc-pseudo-checkbox,.mc-list-item .mc-icon,.mc-list-option .mc-pseudo-checkbox,.mc-list-option .mc-icon{margin-right:var(--mc-list-size-icon-right-margin, 8px)}.mc-list-item .mc-option-action,.mc-list-option .mc-option-action{display:none}.mc-list-item:not([disabled]):hover .mc-option-action,.mc-list-item:not([disabled]).mc-focused .mc-option-action,.mc-list-item:not([disabled]).mc-action-button-focused .mc-option-action,.mc-list-option:not([disabled]):hover .mc-option-action,.mc-list-option:not([disabled]).mc-focused .mc-option-action,.mc-list-option:not([disabled]).mc-action-button-focused .mc-option-action{display:flex}.mc-list-option:not([disabled]):not(.mc-disabled){cursor:pointer}\n"] }]
698
- }] });
699
- class McListItem {
700
- constructor(elementRef) {
701
- this.elementRef = elementRef;
702
- }
703
- ngAfterContentInit() {
704
- // tslint:disable-next-line:no-unused-expression
705
- new McLineSetter(this.lines, this.elementRef);
706
- }
707
- handleFocus() {
708
- this.elementRef.nativeElement.classList.add('mc-focused');
709
- }
710
- handleBlur() {
711
- this.elementRef.nativeElement.classList.remove('mc-focused');
712
- }
713
- getHostElement() {
714
- return this.elementRef.nativeElement;
715
- }
716
- }
717
- /** @nocollapse */ /** @nocollapse */ McListItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McListItem, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
718
- /** @nocollapse */ /** @nocollapse */ McListItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.7", type: McListItem, selector: "mc-list-item, a[mc-list-item]", host: { listeners: { "focus": "handleFocus()", "blur": "handleBlur()" }, classAttribute: "mc-list-item" }, queries: [{ propertyName: "lines", predicate: McLine }], ngImport: i0, template: "<ng-content select=\"[mc-list-icon], [mcListIcon]\"></ng-content>\n\n<div class=\"mc-list-text\">\n <ng-content select=\"[mc-line], [mcLine]\"></ng-content>\n</div>\n\n<ng-content></ng-content>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
719
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McListItem, decorators: [{
720
- type: Component,
721
- args: [{ selector: 'mc-list-item, a[mc-list-item]', host: {
722
- class: 'mc-list-item',
723
- '(focus)': 'handleFocus()',
724
- '(blur)': 'handleBlur()'
725
- }, encapsulation: ViewEncapsulation.None, preserveWhitespaces: false, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content select=\"[mc-list-icon], [mcListIcon]\"></ng-content>\n\n<div class=\"mc-list-text\">\n <ng-content select=\"[mc-line], [mcLine]\"></ng-content>\n</div>\n\n<ng-content></ng-content>\n" }]
726
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { lines: [{
727
- type: ContentChildren,
728
- args: [McLine]
689
+ // todo пока не делаем, перенесено из материала, но у нас в доках таких простых списков нет.
690
+ class McList {
691
+ }
692
+ /** @nocollapse */ /** @nocollapse */ McList.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McList, deps: [], target: i0.ɵɵFactoryTarget.Component });
693
+ /** @nocollapse */ /** @nocollapse */ McList.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.7", type: McList, selector: "mc-list", host: { classAttribute: "mc-list" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [".mc-divider{display:block;margin:0}.mc-divider.mc-divider_horizontal{border-top-width:var(--mc-divider-size-width, 1px);border-top-style:solid}.mc-divider.mc-divider_vertical{height:100%;border-right-width:var(--mc-divider-size-width, 1px);border-right-style:solid}.mc-divider.mc-divider_inset{margin-left:var(--mc-divider-size-inset-margin, 80px)}[dir=rtl] .mc-divider.mc-divider_inset{margin-left:auto;margin-right:var(--mc-divider-size-inset-margin, 80px)}.mc-no-select{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.mc-list,.mc-list-selection{display:block;outline:none}.mc-list-item,.mc-list-option{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;position:relative;display:flex;align-items:center;box-sizing:border-box;height:var(--mc-list-size-item-height, 32px);border:2px solid transparent;padding-left:var(--mc-list-size-horizontal-padding, 12px)}.mc-list-item .mc-list-text,.mc-list-option .mc-list-text{display:flex;flex-direction:column;width:100%;box-sizing:border-box;overflow:hidden;padding-right:var(--mc-list-size-horizontal-padding, 12px)}.mc-list-item .mc-list-text>*,.mc-list-option .mc-list-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.mc-list-item .mc-list-text:empty,.mc-list-option .mc-list-text:empty{display:none}.mc-list-item .mc-divider,.mc-list-option .mc-divider{position:absolute;bottom:0;left:0;width:100%;margin:0}[dir=rtl] .mc-list-item .mc-divider,[dir=rtl] .mc-list-option .mc-divider{margin-left:auto;margin-right:0}.mc-list-item .mc-divider.mc-divider_inset,.mc-list-option .mc-divider.mc-divider_inset{position:absolute}.mc-list-item.mc-progress:after,.mc-list-option.mc-progress:after{top:-2px;right:-2px;bottom:-2px;left:-2px}.mc-list-item .mc-pseudo-checkbox,.mc-list-item .mc-icon,.mc-list-option .mc-pseudo-checkbox,.mc-list-option .mc-icon{margin-right:var(--mc-list-size-icon-right-margin, 8px)}.mc-list-item .mc-option-action,.mc-list-option .mc-option-action{display:none}.mc-list-item:not([disabled]):hover .mc-option-action,.mc-list-item:not([disabled]).mc-focused .mc-option-action,.mc-list-item:not([disabled]).mc-action-button-focused .mc-option-action,.mc-list-option:not([disabled]):hover .mc-option-action,.mc-list-option:not([disabled]).mc-focused .mc-option-action,.mc-list-option:not([disabled]).mc-action-button-focused .mc-option-action{display:flex}.mc-list-option:not([disabled]):not(.mc-disabled){cursor:pointer}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
694
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McList, decorators: [{
695
+ type: Component,
696
+ args: [{ selector: 'mc-list', host: { class: 'mc-list' }, template: '<ng-content></ng-content>', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".mc-divider{display:block;margin:0}.mc-divider.mc-divider_horizontal{border-top-width:var(--mc-divider-size-width, 1px);border-top-style:solid}.mc-divider.mc-divider_vertical{height:100%;border-right-width:var(--mc-divider-size-width, 1px);border-right-style:solid}.mc-divider.mc-divider_inset{margin-left:var(--mc-divider-size-inset-margin, 80px)}[dir=rtl] .mc-divider.mc-divider_inset{margin-left:auto;margin-right:var(--mc-divider-size-inset-margin, 80px)}.mc-no-select{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.mc-list,.mc-list-selection{display:block;outline:none}.mc-list-item,.mc-list-option{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;position:relative;display:flex;align-items:center;box-sizing:border-box;height:var(--mc-list-size-item-height, 32px);border:2px solid transparent;padding-left:var(--mc-list-size-horizontal-padding, 12px)}.mc-list-item .mc-list-text,.mc-list-option .mc-list-text{display:flex;flex-direction:column;width:100%;box-sizing:border-box;overflow:hidden;padding-right:var(--mc-list-size-horizontal-padding, 12px)}.mc-list-item .mc-list-text>*,.mc-list-option .mc-list-text>*{margin:0;padding:0;font-weight:400;font-size:inherit}.mc-list-item .mc-list-text:empty,.mc-list-option .mc-list-text:empty{display:none}.mc-list-item .mc-divider,.mc-list-option .mc-divider{position:absolute;bottom:0;left:0;width:100%;margin:0}[dir=rtl] .mc-list-item .mc-divider,[dir=rtl] .mc-list-option .mc-divider{margin-left:auto;margin-right:0}.mc-list-item .mc-divider.mc-divider_inset,.mc-list-option .mc-divider.mc-divider_inset{position:absolute}.mc-list-item.mc-progress:after,.mc-list-option.mc-progress:after{top:-2px;right:-2px;bottom:-2px;left:-2px}.mc-list-item .mc-pseudo-checkbox,.mc-list-item .mc-icon,.mc-list-option .mc-pseudo-checkbox,.mc-list-option .mc-icon{margin-right:var(--mc-list-size-icon-right-margin, 8px)}.mc-list-item .mc-option-action,.mc-list-option .mc-option-action{display:none}.mc-list-item:not([disabled]):hover .mc-option-action,.mc-list-item:not([disabled]).mc-focused .mc-option-action,.mc-list-item:not([disabled]).mc-action-button-focused .mc-option-action,.mc-list-option:not([disabled]):hover .mc-option-action,.mc-list-option:not([disabled]).mc-focused .mc-option-action,.mc-list-option:not([disabled]).mc-action-button-focused .mc-option-action{display:flex}.mc-list-option:not([disabled]):not(.mc-disabled){cursor:pointer}\n"] }]
697
+ }] });
698
+ class McListItem {
699
+ constructor(elementRef) {
700
+ this.elementRef = elementRef;
701
+ }
702
+ ngAfterContentInit() {
703
+ // tslint:disable-next-line:no-unused-expression
704
+ new McLineSetter(this.lines, this.elementRef);
705
+ }
706
+ handleFocus() {
707
+ this.elementRef.nativeElement.classList.add('mc-focused');
708
+ }
709
+ handleBlur() {
710
+ this.elementRef.nativeElement.classList.remove('mc-focused');
711
+ }
712
+ getHostElement() {
713
+ return this.elementRef.nativeElement;
714
+ }
715
+ }
716
+ /** @nocollapse */ /** @nocollapse */ McListItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McListItem, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
717
+ /** @nocollapse */ /** @nocollapse */ McListItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.7", type: McListItem, selector: "mc-list-item, a[mc-list-item]", host: { listeners: { "focus": "handleFocus()", "blur": "handleBlur()" }, classAttribute: "mc-list-item" }, queries: [{ propertyName: "lines", predicate: McLine }], ngImport: i0, template: "<ng-content select=\"[mc-list-icon], [mcListIcon]\"></ng-content>\r\n\r\n<div class=\"mc-list-text\">\r\n <ng-content select=\"[mc-line], [mcLine]\"></ng-content>\r\n</div>\r\n\r\n<ng-content></ng-content>\r\n", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
718
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McListItem, decorators: [{
719
+ type: Component,
720
+ args: [{ selector: 'mc-list-item, a[mc-list-item]', host: {
721
+ class: 'mc-list-item',
722
+ '(focus)': 'handleFocus()',
723
+ '(blur)': 'handleBlur()'
724
+ }, encapsulation: ViewEncapsulation.None, preserveWhitespaces: false, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content select=\"[mc-list-icon], [mcListIcon]\"></ng-content>\r\n\r\n<div class=\"mc-list-text\">\r\n <ng-content select=\"[mc-line], [mcLine]\"></ng-content>\r\n</div>\r\n\r\n<ng-content></ng-content>\r\n" }]
725
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { lines: [{
726
+ type: ContentChildren,
727
+ args: [McLine]
729
728
  }] } });
730
729
 
731
- class McListModule {
732
- }
733
- /** @nocollapse */ /** @nocollapse */ McListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
734
- /** @nocollapse */ /** @nocollapse */ McListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McListModule, declarations: [McList,
735
- McListSelection,
736
- McListItem,
737
- McListOption], imports: [CommonModule,
738
- A11yModule,
739
- McPseudoCheckboxModule,
740
- McLineModule,
741
- McOptionModule], exports: [McList,
742
- McListSelection,
743
- McListItem,
744
- McListOption,
745
- McOptionModule] });
746
- /** @nocollapse */ /** @nocollapse */ McListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McListModule, imports: [[
747
- CommonModule,
748
- A11yModule,
749
- McPseudoCheckboxModule,
750
- McLineModule,
751
- McOptionModule
752
- ], McOptionModule] });
753
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McListModule, decorators: [{
754
- type: NgModule,
755
- args: [{
756
- imports: [
757
- CommonModule,
758
- A11yModule,
759
- McPseudoCheckboxModule,
760
- McLineModule,
761
- McOptionModule
762
- ],
763
- exports: [
764
- McList,
765
- McListSelection,
766
- McListItem,
767
- McListOption,
768
- McOptionModule
769
- ],
770
- declarations: [
771
- McList,
772
- McListSelection,
773
- McListItem,
774
- McListOption
775
- ]
776
- }]
730
+ class McListModule {
731
+ }
732
+ /** @nocollapse */ /** @nocollapse */ McListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
733
+ /** @nocollapse */ /** @nocollapse */ McListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McListModule, declarations: [McList,
734
+ McListSelection,
735
+ McListItem,
736
+ McListOption], imports: [CommonModule,
737
+ A11yModule,
738
+ McPseudoCheckboxModule,
739
+ McLineModule,
740
+ McOptionModule], exports: [McList,
741
+ McListSelection,
742
+ McListItem,
743
+ McListOption,
744
+ McOptionModule] });
745
+ /** @nocollapse */ /** @nocollapse */ McListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McListModule, imports: [[
746
+ CommonModule,
747
+ A11yModule,
748
+ McPseudoCheckboxModule,
749
+ McLineModule,
750
+ McOptionModule
751
+ ], McOptionModule] });
752
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McListModule, decorators: [{
753
+ type: NgModule,
754
+ args: [{
755
+ imports: [
756
+ CommonModule,
757
+ A11yModule,
758
+ McPseudoCheckboxModule,
759
+ McLineModule,
760
+ McOptionModule
761
+ ],
762
+ exports: [
763
+ McList,
764
+ McListSelection,
765
+ McListItem,
766
+ McListOption,
767
+ McOptionModule
768
+ ],
769
+ declarations: [
770
+ McList,
771
+ McListSelection,
772
+ McListItem,
773
+ McListOption
774
+ ]
775
+ }]
777
776
  }] });
778
777
 
779
- /**
780
- * Generated bundle index. Do not edit.
778
+ /**
779
+ * Generated bundle index. Do not edit.
781
780
  */
782
781
 
783
782
  export { MC_SELECTION_LIST_VALUE_ACCESSOR, McList, McListCopyEvent, McListItem, McListModule, McListOption, McListSelectAllEvent, McListSelection, McListSelectionBase, McListSelectionChange, McListSelectionMixinBase };