@ptsecurity/mosaic 13.6.0 → 13.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (906) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +6 -6
  3. package/_theming.scss +7238 -7128
  4. package/_visual.scss +2724 -2694
  5. package/autocomplete/autocomplete-origin.directive.d.ts +12 -12
  6. package/autocomplete/autocomplete-trigger.directive.d.ts +167 -167
  7. package/autocomplete/autocomplete.component.d.ts +73 -73
  8. package/autocomplete/autocomplete.module.d.ts +12 -12
  9. package/autocomplete/index.d.ts +1 -1
  10. package/autocomplete/ptsecurity-mosaic-autocomplete.d.ts +5 -5
  11. package/autocomplete/public-api.d.ts +4 -4
  12. package/button/button.component.d.ts +40 -40
  13. package/button/button.module.d.ts +10 -10
  14. package/button/index.d.ts +1 -1
  15. package/button/ptsecurity-mosaic-button.d.ts +5 -5
  16. package/button/public-api.d.ts +2 -2
  17. package/button-toggle/button-toggle.component.d.ts +141 -141
  18. package/button-toggle/button-toggle.module.d.ts +9 -9
  19. package/button-toggle/index.d.ts +1 -1
  20. package/button-toggle/ptsecurity-mosaic-button-toggle.d.ts +5 -5
  21. package/button-toggle/public-api.d.ts +2 -2
  22. package/card/card.component.d.ts +26 -26
  23. package/card/card.module.d.ts +10 -10
  24. package/card/index.d.ts +1 -1
  25. package/card/ptsecurity-mosaic-card.d.ts +5 -5
  26. package/card/public-api.d.ts +2 -2
  27. package/checkbox/README.md +1 -1
  28. package/checkbox/checkbox-config.d.ts +13 -13
  29. package/checkbox/checkbox-module.d.ts +9 -9
  30. package/checkbox/checkbox-required-validator.d.ts +13 -13
  31. package/checkbox/checkbox.d.ts +140 -140
  32. package/checkbox/index.d.ts +1 -1
  33. package/checkbox/ptsecurity-mosaic-checkbox.d.ts +5 -5
  34. package/checkbox/public-api.d.ts +4 -4
  35. package/core/animation/animation.d.ts +6 -6
  36. package/core/animation/fade-animations.d.ts +2 -2
  37. package/core/animation/index.d.ts +3 -3
  38. package/core/animation/select-animations.d.ts +12 -12
  39. package/core/common-behaviors/color.d.ts +19 -19
  40. package/core/common-behaviors/common-module.d.ts +25 -25
  41. package/core/common-behaviors/constructor.d.ts +9 -9
  42. package/core/common-behaviors/disabled.d.ts +8 -8
  43. package/core/common-behaviors/error-state.d.ts +25 -25
  44. package/core/common-behaviors/index.d.ts +5 -5
  45. package/core/common-behaviors/tabindex.d.ts +8 -8
  46. package/core/error/error-options.d.ts +14 -14
  47. package/core/formatters/date/formatter.d.ts +203 -203
  48. package/core/formatters/date/templates/en-US.d.ts +74 -74
  49. package/core/formatters/date/templates/ru-RU.d.ts +74 -74
  50. package/core/formatters/index.d.ts +9 -9
  51. package/core/formatters/number/formatter.d.ts +27 -27
  52. package/core/forms/forms-module.d.ts +7 -7
  53. package/core/forms/forms.directive.d.ts +22 -22
  54. package/core/forms/index.d.ts +2 -2
  55. package/core/highlight/highlight.pipe.d.ts +7 -7
  56. package/core/highlight/index.d.ts +9 -9
  57. package/core/index.d.ts +1 -1
  58. package/core/label/label-options.d.ts +13 -13
  59. package/core/line/line.d.ts +28 -28
  60. package/core/option/action.d.ts +42 -42
  61. package/core/option/index.d.ts +4 -4
  62. package/core/option/optgroup.d.ts +16 -16
  63. package/core/option/option-module.d.ts +11 -11
  64. package/core/option/option.d.ts +115 -115
  65. package/core/overlay/overlay-position-map.d.ts +34 -34
  66. package/core/pop-up/constants.d.ts +29 -29
  67. package/core/pop-up/index.d.ts +3 -3
  68. package/core/pop-up/pop-up-trigger.d.ts +70 -70
  69. package/core/pop-up/pop-up.d.ts +36 -36
  70. package/core/ptsecurity-mosaic-core.d.ts +5 -5
  71. package/core/public-api.d.ts +17 -17
  72. package/core/select/constants.d.ts +23 -23
  73. package/core/select/errors.d.ts +19 -19
  74. package/core/select/events.d.ts +1 -1
  75. package/core/select/index.d.ts +3 -3
  76. package/core/selection/constants.d.ts +4 -4
  77. package/core/selection/index.d.ts +3 -3
  78. package/core/selection/pseudo-checkbox/pseudo-checkbox.d.ts +30 -30
  79. package/core/selection/pseudo-checkbox/pseudo-checkbox.module.d.ts +8 -8
  80. package/core/services/measure-scrollbar.service.d.ts +11 -11
  81. package/core/utils/index.d.ts +1 -1
  82. package/core/utils/public-api.d.ts +1 -1
  83. package/core/utils/utils.d.ts +2 -2
  84. package/core/validation/index.d.ts +1 -1
  85. package/core/validation/validation.d.ts +18 -18
  86. package/core/version.d.ts +2 -2
  87. package/datepicker/calendar-body.component.d.ts +63 -63
  88. package/datepicker/calendar.component.d.ts +151 -151
  89. package/datepicker/datepicker-animations.d.ts +9 -9
  90. package/datepicker/datepicker-errors.d.ts +2 -2
  91. package/datepicker/datepicker-input.directive.d.ts +178 -178
  92. package/datepicker/datepicker-intl.d.ts +32 -32
  93. package/datepicker/datepicker-module.d.ts +20 -20
  94. package/datepicker/datepicker-toggle.component.d.ts +35 -35
  95. package/datepicker/datepicker.component.d.ts +158 -158
  96. package/datepicker/index.d.ts +1 -1
  97. package/datepicker/month-view.component.d.ts +93 -93
  98. package/datepicker/multi-year-view.component.d.ts +72 -72
  99. package/datepicker/ptsecurity-mosaic-datepicker.d.ts +5 -5
  100. package/datepicker/public-api.d.ts +11 -11
  101. package/datepicker/year-view.component.d.ts +90 -90
  102. package/design-tokens/index.d.ts +1 -1
  103. package/design-tokens/legacy-2017/tokens/components/alert.json5 +83 -83
  104. package/design-tokens/legacy-2017/tokens/components/autocomplete.json5 +11 -11
  105. package/design-tokens/legacy-2017/tokens/components/badge.json5 +174 -174
  106. package/design-tokens/legacy-2017/tokens/components/button-toggle.json5 +10 -10
  107. package/design-tokens/legacy-2017/tokens/components/button.json5 +142 -142
  108. package/design-tokens/legacy-2017/tokens/components/card.json5 +51 -51
  109. package/design-tokens/legacy-2017/tokens/components/checkbox.json5 +97 -97
  110. package/design-tokens/legacy-2017/tokens/components/datepicker.json5 +64 -64
  111. package/design-tokens/legacy-2017/tokens/components/divider.json5 +14 -14
  112. package/design-tokens/legacy-2017/tokens/components/dl.json5 +38 -38
  113. package/design-tokens/legacy-2017/tokens/components/dropdown.json5 +48 -48
  114. package/design-tokens/legacy-2017/tokens/components/form-field.json5 +92 -92
  115. package/design-tokens/legacy-2017/tokens/components/forms.json5 +52 -52
  116. package/design-tokens/legacy-2017/tokens/components/icon.json5 +104 -104
  117. package/design-tokens/legacy-2017/tokens/components/input.json5 +12 -12
  118. package/design-tokens/legacy-2017/tokens/components/link.json5 +50 -50
  119. package/design-tokens/legacy-2017/tokens/components/list.json5 +13 -13
  120. package/design-tokens/legacy-2017/tokens/components/loader-overlay.json5 +23 -0
  121. package/design-tokens/legacy-2017/tokens/components/modal.json5 +81 -81
  122. package/design-tokens/legacy-2017/tokens/components/navbar.json5 +70 -70
  123. package/design-tokens/legacy-2017/tokens/components/optgroup.json5 +10 -10
  124. package/design-tokens/legacy-2017/tokens/components/option.json5 +12 -12
  125. package/design-tokens/legacy-2017/tokens/components/popover.json5 +68 -68
  126. package/design-tokens/legacy-2017/tokens/components/popup.json5 +16 -16
  127. package/design-tokens/legacy-2017/tokens/components/progress-bar.json5 +13 -13
  128. package/design-tokens/legacy-2017/tokens/components/progress-spinner.json5 +7 -7
  129. package/design-tokens/legacy-2017/tokens/components/radio.json5 +45 -44
  130. package/design-tokens/legacy-2017/tokens/components/select.json5 +24 -24
  131. package/design-tokens/legacy-2017/tokens/components/sidepanel.json5 +44 -44
  132. package/design-tokens/legacy-2017/tokens/components/table.json5 +15 -15
  133. package/design-tokens/legacy-2017/tokens/components/tabs.json5 +101 -101
  134. package/design-tokens/legacy-2017/tokens/components/tags.json5 +134 -134
  135. package/design-tokens/legacy-2017/tokens/components/textarea.json5 +12 -12
  136. package/design-tokens/legacy-2017/tokens/components/timepicker.json5 +7 -7
  137. package/design-tokens/legacy-2017/tokens/components/toggle.json5 +79 -79
  138. package/design-tokens/legacy-2017/tokens/components/tooltip.json5 +83 -83
  139. package/design-tokens/legacy-2017/tokens/components/tree.json5 +15 -15
  140. package/design-tokens/legacy-2017/tokens/properties/aliases.json5 +3 -3
  141. package/design-tokens/legacy-2017/tokens/properties/colors.json5 +119 -118
  142. package/design-tokens/legacy-2017/tokens/properties/font.json5 +12 -12
  143. package/design-tokens/legacy-2017/tokens/properties/globals.json5 +49 -49
  144. package/design-tokens/legacy-2017/tokens/properties/padding.json5 +3 -3
  145. package/design-tokens/legacy-2017/tokens/properties/palette.json5 +163 -163
  146. package/design-tokens/legacy-2017/tokens/properties/typography.json5 +175 -175
  147. package/design-tokens/legacy-2017/tokens.d.ts +7873 -7843
  148. package/design-tokens/pt-2022/tokens/components/alert.json5 +83 -83
  149. package/design-tokens/pt-2022/tokens/components/autocomplete.json5 +11 -11
  150. package/design-tokens/pt-2022/tokens/components/badge.json5 +174 -174
  151. package/design-tokens/pt-2022/tokens/components/button-toggle.json5 +10 -10
  152. package/design-tokens/pt-2022/tokens/components/button.json5 +142 -142
  153. package/design-tokens/pt-2022/tokens/components/card.json5 +51 -51
  154. package/design-tokens/pt-2022/tokens/components/checkbox.json5 +97 -97
  155. package/design-tokens/pt-2022/tokens/components/datepicker.json5 +64 -64
  156. package/design-tokens/pt-2022/tokens/components/divider.json5 +14 -14
  157. package/design-tokens/pt-2022/tokens/components/dl.json5 +38 -38
  158. package/design-tokens/pt-2022/tokens/components/dropdown.json5 +48 -48
  159. package/design-tokens/pt-2022/tokens/components/form-field.json5 +92 -92
  160. package/design-tokens/pt-2022/tokens/components/forms.json5 +52 -52
  161. package/design-tokens/pt-2022/tokens/components/icon.json5 +104 -104
  162. package/design-tokens/pt-2022/tokens/components/input.json5 +12 -12
  163. package/design-tokens/pt-2022/tokens/components/link.json5 +50 -50
  164. package/design-tokens/pt-2022/tokens/components/list.json5 +13 -13
  165. package/design-tokens/pt-2022/tokens/components/loader-overlay.json5 +23 -0
  166. package/design-tokens/pt-2022/tokens/components/modal.json5 +81 -81
  167. package/design-tokens/pt-2022/tokens/components/navbar.json5 +70 -70
  168. package/design-tokens/pt-2022/tokens/components/optgroup.json5 +10 -10
  169. package/design-tokens/pt-2022/tokens/components/option.json5 +12 -12
  170. package/design-tokens/pt-2022/tokens/components/popover.json5 +68 -68
  171. package/design-tokens/pt-2022/tokens/components/popup.json5 +16 -16
  172. package/design-tokens/pt-2022/tokens/components/progress-bar.json5 +13 -13
  173. package/design-tokens/pt-2022/tokens/components/progress-spinner.json5 +7 -7
  174. package/design-tokens/pt-2022/tokens/components/radio.json5 +45 -44
  175. package/design-tokens/pt-2022/tokens/components/select.json5 +24 -24
  176. package/design-tokens/pt-2022/tokens/components/sidepanel.json5 +44 -44
  177. package/design-tokens/pt-2022/tokens/components/table.json5 +15 -15
  178. package/design-tokens/pt-2022/tokens/components/tabs.json5 +101 -101
  179. package/design-tokens/pt-2022/tokens/components/tags.json5 +137 -137
  180. package/design-tokens/pt-2022/tokens/components/textarea.json5 +12 -12
  181. package/design-tokens/pt-2022/tokens/components/timepicker.json5 +7 -7
  182. package/design-tokens/pt-2022/tokens/components/toggle.json5 +79 -79
  183. package/design-tokens/pt-2022/tokens/components/tooltip.json5 +83 -83
  184. package/design-tokens/pt-2022/tokens/components/tree.json5 +15 -15
  185. package/design-tokens/pt-2022/tokens/properties/aliases.json5 +3 -3
  186. package/design-tokens/pt-2022/tokens/properties/colors.json5 +122 -120
  187. package/design-tokens/pt-2022/tokens/properties/font.json5 +15 -15
  188. package/design-tokens/pt-2022/tokens/properties/globals.json5 +49 -49
  189. package/design-tokens/pt-2022/tokens/properties/padding.json5 +3 -3
  190. package/design-tokens/pt-2022/tokens/properties/palette.json5 +232 -232
  191. package/design-tokens/pt-2022/tokens/properties/typography.json5 +175 -175
  192. package/design-tokens/pt-2022/tokens.d.ts +9205 -9175
  193. package/design-tokens/ptsecurity-mosaic-design-tokens.d.ts +5 -5
  194. package/design-tokens/public-api.d.ts +3 -3
  195. package/design-tokens/style-dictionary/build.js +76 -63
  196. package/design-tokens/style-dictionary/configs/css.js +13 -13
  197. package/design-tokens/style-dictionary/configs/figma.js +11 -0
  198. package/design-tokens/style-dictionary/configs/index.js +48 -48
  199. package/design-tokens/style-dictionary/configs/js.js +9 -9
  200. package/design-tokens/style-dictionary/configs/scss.js +23 -23
  201. package/design-tokens/style-dictionary/filters/color.js +7 -7
  202. package/design-tokens/style-dictionary/filters/palette.js +7 -7
  203. package/design-tokens/style-dictionary/filters/size.js +7 -7
  204. package/design-tokens/style-dictionary/filters/typography.js +7 -7
  205. package/design-tokens/style-dictionary/formats/figma.js +104 -0
  206. package/design-tokens/style-dictionary/formats/palette.js +25 -25
  207. package/design-tokens/style-dictionary/formats/typography.js +52 -52
  208. package/design-tokens/style-dictionary/transformGroups/css.js +13 -13
  209. package/design-tokens/style-dictionary/transformGroups/figma.js +21 -0
  210. package/design-tokens/style-dictionary/transformGroups/scss.js +12 -12
  211. package/design-tokens/style-dictionary/transformGroups/ts.js +11 -11
  212. package/design-tokens/style-dictionary/transforms/attribute/figma-border.js +18 -0
  213. package/design-tokens/style-dictionary/transforms/attribute/figma-color.js +25 -0
  214. package/design-tokens/style-dictionary/transforms/attribute/figma-default.js +10 -0
  215. package/design-tokens/style-dictionary/transforms/attribute/figma-font.js +31 -0
  216. package/design-tokens/style-dictionary/transforms/attribute/figma-group.js +17 -0
  217. package/design-tokens/style-dictionary/transforms/attribute/figma-opacity.js +10 -0
  218. package/design-tokens/style-dictionary/transforms/attribute/figma-shadow.js +66 -0
  219. package/design-tokens/style-dictionary/transforms/attribute/figma-sizing.js +16 -0
  220. package/design-tokens/style-dictionary/transforms/attribute/figma-spacing.js +15 -0
  221. package/design-tokens/style-dictionary/transforms/attribute/figma-typography.js +24 -0
  222. package/design-tokens/style-dictionary/transforms/attribute/palette.js +9 -9
  223. package/design-tokens/style-dictionary/transforms/attribute/prefix.js +11 -11
  224. package/design-tokens/style-dictionary/transforms/attribute/size.js +8 -8
  225. package/design-tokens/style-dictionary/transforms/attribute/typography.js +9 -9
  226. package/design-tokens/style-dictionary/transforms/value/figma-values.js +7 -0
  227. package/divider/divider.component.d.ts +11 -11
  228. package/divider/divider.module.d.ts +8 -8
  229. package/divider/index.d.ts +1 -1
  230. package/divider/ptsecurity-mosaic-divider.d.ts +5 -5
  231. package/divider/public-api.d.ts +2 -2
  232. package/dl/dl.component.d.ts +26 -26
  233. package/dl/dl.module.d.ts +10 -10
  234. package/dl/index.d.ts +1 -1
  235. package/dl/ptsecurity-mosaic-dl.d.ts +5 -5
  236. package/dl/public-api.d.ts +2 -2
  237. package/dropdown/dropdown-animations.d.ts +11 -11
  238. package/dropdown/dropdown-content.directive.d.ts +32 -32
  239. package/dropdown/dropdown-errors.d.ts +17 -17
  240. package/dropdown/dropdown-item.component.d.ts +50 -50
  241. package/dropdown/dropdown-trigger.directive.d.ts +136 -136
  242. package/dropdown/dropdown.component.d.ts +121 -121
  243. package/dropdown/dropdown.module.d.ts +13 -13
  244. package/dropdown/dropdown.types.d.ts +53 -53
  245. package/dropdown/index.d.ts +1 -1
  246. package/dropdown/ptsecurity-mosaic-dropdown.d.ts +5 -5
  247. package/dropdown/public-api.d.ts +8 -8
  248. package/esm2020/autocomplete/autocomplete-origin.directive.mjs +21 -21
  249. package/esm2020/autocomplete/autocomplete-trigger.directive.mjs +555 -555
  250. package/esm2020/autocomplete/autocomplete.component.mjs +154 -154
  251. package/esm2020/autocomplete/autocomplete.module.mjs +34 -34
  252. package/esm2020/autocomplete/index.mjs +2 -2
  253. package/esm2020/autocomplete/ptsecurity-mosaic-autocomplete.mjs +4 -4
  254. package/esm2020/autocomplete/public-api.mjs +5 -5
  255. package/esm2020/button/button.component.mjs +137 -137
  256. package/esm2020/button/button.module.mjs +38 -38
  257. package/esm2020/button/index.mjs +2 -2
  258. package/esm2020/button/ptsecurity-mosaic-button.mjs +4 -4
  259. package/esm2020/button/public-api.mjs +3 -3
  260. package/esm2020/button-toggle/button-toggle.component.mjs +362 -362
  261. package/esm2020/button-toggle/button-toggle.module.mjs +19 -19
  262. package/esm2020/button-toggle/index.mjs +2 -2
  263. package/esm2020/button-toggle/ptsecurity-mosaic-button-toggle.mjs +4 -4
  264. package/esm2020/button-toggle/public-api.mjs +3 -3
  265. package/esm2020/card/card.component.mjs +80 -80
  266. package/esm2020/card/card.module.mjs +30 -30
  267. package/esm2020/card/index.mjs +2 -2
  268. package/esm2020/card/ptsecurity-mosaic-card.mjs +4 -4
  269. package/esm2020/card/public-api.mjs +3 -3
  270. package/esm2020/checkbox/checkbox-config.mjs +6 -6
  271. package/esm2020/checkbox/checkbox-module.mjs +19 -19
  272. package/esm2020/checkbox/checkbox-required-validator.mjs +27 -27
  273. package/esm2020/checkbox/checkbox.mjs +316 -316
  274. package/esm2020/checkbox/index.mjs +2 -2
  275. package/esm2020/checkbox/ptsecurity-mosaic-checkbox.mjs +4 -4
  276. package/esm2020/checkbox/public-api.mjs +5 -5
  277. package/esm2020/core/animation/animation.mjs +8 -8
  278. package/esm2020/core/animation/fade-animations.mjs +9 -9
  279. package/esm2020/core/animation/index.mjs +4 -4
  280. package/esm2020/core/animation/select-animations.mjs +45 -45
  281. package/esm2020/core/common-behaviors/color.mjs +30 -30
  282. package/esm2020/core/common-behaviors/common-module.mjs +83 -83
  283. package/esm2020/core/common-behaviors/constructor.mjs +2 -2
  284. package/esm2020/core/common-behaviors/disabled.mjs +17 -17
  285. package/esm2020/core/common-behaviors/error-state.mjs +31 -31
  286. package/esm2020/core/common-behaviors/index.mjs +6 -6
  287. package/esm2020/core/common-behaviors/tabindex.mjs +18 -18
  288. package/esm2020/core/error/error-options.mjs +26 -26
  289. package/esm2020/core/formatters/date/formatter.mjs +359 -359
  290. package/esm2020/core/formatters/date/templates/en-US.mjs +281 -281
  291. package/esm2020/core/formatters/date/templates/ru-RU.mjs +281 -281
  292. package/esm2020/core/formatters/index.mjs +20 -20
  293. package/esm2020/core/formatters/number/formatter.mjs +105 -105
  294. package/esm2020/core/forms/forms-module.mjs +24 -24
  295. package/esm2020/core/forms/forms.directive.mjs +66 -66
  296. package/esm2020/core/forms/index.mjs +3 -3
  297. package/esm2020/core/highlight/highlight.pipe.mjs +17 -17
  298. package/esm2020/core/highlight/index.mjs +19 -19
  299. package/esm2020/core/index.mjs +2 -2
  300. package/esm2020/core/label/label-options.mjs +4 -4
  301. package/esm2020/core/line/line.mjs +70 -70
  302. package/esm2020/core/option/action.mjs +121 -121
  303. package/esm2020/core/option/index.mjs +5 -5
  304. package/esm2020/core/option/optgroup.mjs +31 -31
  305. package/esm2020/core/option/option-module.mjs +21 -21
  306. package/esm2020/core/option/option.mjs +257 -257
  307. package/esm2020/core/overlay/overlay-position-map.mjs +244 -244
  308. package/esm2020/core/pop-up/constants.mjs +34 -34
  309. package/esm2020/core/pop-up/index.mjs +4 -4
  310. package/esm2020/core/pop-up/pop-up-trigger.mjs +239 -239
  311. package/esm2020/core/pop-up/pop-up.mjs +94 -94
  312. package/esm2020/core/ptsecurity-mosaic-core.mjs +4 -4
  313. package/esm2020/core/public-api.mjs +18 -18
  314. package/esm2020/core/select/constants.mjs +27 -27
  315. package/esm2020/core/select/errors.mjs +26 -26
  316. package/esm2020/core/select/events.mjs +2 -2
  317. package/esm2020/core/select/index.mjs +4 -4
  318. package/esm2020/core/selection/constants.mjs +6 -6
  319. package/esm2020/core/selection/index.mjs +4 -4
  320. package/esm2020/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +49 -49
  321. package/esm2020/core/selection/pseudo-checkbox/pseudo-checkbox.module.mjs +18 -18
  322. package/esm2020/core/services/measure-scrollbar.service.mjs +48 -48
  323. package/esm2020/core/utils/index.mjs +2 -2
  324. package/esm2020/core/utils/public-api.mjs +2 -2
  325. package/esm2020/core/utils/utils.mjs +5 -5
  326. package/esm2020/core/validation/index.mjs +2 -2
  327. package/esm2020/core/validation/validation.mjs +118 -118
  328. package/esm2020/core/version.mjs +3 -3
  329. package/esm2020/datepicker/calendar-body.component.mjs +106 -106
  330. package/esm2020/datepicker/calendar.component.mjs +362 -362
  331. package/esm2020/datepicker/datepicker-animations.mjs +32 -32
  332. package/esm2020/datepicker/datepicker-errors.mjs +6 -6
  333. package/esm2020/datepicker/datepicker-input.directive.mjs +938 -936
  334. package/esm2020/datepicker/datepicker-intl.mjs +40 -40
  335. package/esm2020/datepicker/datepicker-module.mjs +107 -107
  336. package/esm2020/datepicker/datepicker-toggle.component.mjs +86 -86
  337. package/esm2020/datepicker/datepicker.component.mjs +404 -408
  338. package/esm2020/datepicker/index.mjs +2 -2
  339. package/esm2020/datepicker/month-view.component.mjs +257 -257
  340. package/esm2020/datepicker/multi-year-view.component.mjs +218 -218
  341. package/esm2020/datepicker/ptsecurity-mosaic-datepicker.mjs +4 -4
  342. package/esm2020/datepicker/public-api.mjs +12 -12
  343. package/esm2020/datepicker/year-view.component.mjs +253 -253
  344. package/esm2020/design-tokens/index.mjs +2 -2
  345. package/esm2020/design-tokens/legacy-2017/tokens.mjs +1167 -1137
  346. package/esm2020/design-tokens/pt-2022/tokens.mjs +1237 -1207
  347. package/esm2020/design-tokens/ptsecurity-mosaic-design-tokens.mjs +4 -4
  348. package/esm2020/design-tokens/public-api.mjs +4 -4
  349. package/esm2020/divider/divider.component.mjs +39 -39
  350. package/esm2020/divider/divider.module.mjs +18 -18
  351. package/esm2020/divider/index.mjs +2 -2
  352. package/esm2020/divider/ptsecurity-mosaic-divider.mjs +4 -4
  353. package/esm2020/divider/public-api.mjs +3 -3
  354. package/esm2020/dl/dl.component.mjs +78 -78
  355. package/esm2020/dl/dl.module.mjs +42 -42
  356. package/esm2020/dl/index.mjs +2 -2
  357. package/esm2020/dl/ptsecurity-mosaic-dl.mjs +4 -4
  358. package/esm2020/dl/public-api.mjs +3 -3
  359. package/esm2020/dropdown/dropdown-animations.mjs +41 -41
  360. package/esm2020/dropdown/dropdown-content.directive.mjs +64 -64
  361. package/esm2020/dropdown/dropdown-errors.mjs +29 -29
  362. package/esm2020/dropdown/dropdown-item.component.mjs +139 -139
  363. package/esm2020/dropdown/dropdown-trigger.directive.mjs +489 -489
  364. package/esm2020/dropdown/dropdown.component.mjs +292 -292
  365. package/esm2020/dropdown/dropdown.module.mjs +50 -50
  366. package/esm2020/dropdown/dropdown.types.mjs +24 -24
  367. package/esm2020/dropdown/index.mjs +2 -2
  368. package/esm2020/dropdown/ptsecurity-mosaic-dropdown.mjs +4 -4
  369. package/esm2020/dropdown/public-api.mjs +9 -9
  370. package/esm2020/form-field/cleaner.mjs +23 -23
  371. package/esm2020/form-field/form-field-control.mjs +5 -5
  372. package/esm2020/form-field/form-field-errors.mjs +7 -7
  373. package/esm2020/form-field/form-field.mjs +225 -225
  374. package/esm2020/form-field/form-field.module.mjs +57 -57
  375. package/esm2020/form-field/hint.mjs +34 -23
  376. package/esm2020/form-field/index.mjs +2 -2
  377. package/esm2020/form-field/password-hint.mjs +139 -139
  378. package/esm2020/form-field/prefix.mjs +13 -13
  379. package/esm2020/form-field/ptsecurity-mosaic-form-field.mjs +4 -4
  380. package/esm2020/form-field/public-api.mjs +11 -11
  381. package/esm2020/form-field/stepper.mjs +55 -55
  382. package/esm2020/form-field/suffix.mjs +13 -13
  383. package/esm2020/icon/icon.component.mjs +44 -44
  384. package/esm2020/icon/icon.module.mjs +38 -38
  385. package/esm2020/icon/index.mjs +2 -2
  386. package/esm2020/icon/ptsecurity-mosaic-icon.mjs +4 -4
  387. package/esm2020/icon/public-api.mjs +3 -3
  388. package/esm2020/index.mjs +2 -2
  389. package/esm2020/input/index.mjs +2 -2
  390. package/esm2020/input/input-errors.mjs +4 -4
  391. package/esm2020/input/input-number-validators.mjs +92 -92
  392. package/esm2020/input/input-number.mjs +163 -163
  393. package/esm2020/input/input-password.mjs +372 -372
  394. package/esm2020/input/input-value-accessor.mjs +3 -3
  395. package/esm2020/input/input.mjs +334 -334
  396. package/esm2020/input/input.module.mjs +65 -65
  397. package/esm2020/input/ptsecurity-mosaic-input.mjs +4 -4
  398. package/esm2020/input/public-api.mjs +7 -7
  399. package/esm2020/link/index.mjs +2 -2
  400. package/esm2020/link/link.component.mjs +107 -107
  401. package/esm2020/link/link.module.mjs +26 -26
  402. package/esm2020/link/ptsecurity-mosaic-link.mjs +4 -4
  403. package/esm2020/link/public-api.mjs +3 -3
  404. package/esm2020/list/index.mjs +2 -2
  405. package/esm2020/list/list-selection.component.mjs +689 -686
  406. package/esm2020/list/list.component.mjs +44 -44
  407. package/esm2020/list/list.module.mjs +55 -55
  408. package/esm2020/list/ptsecurity-mosaic-list.mjs +4 -4
  409. package/esm2020/list/public-api.mjs +4 -4
  410. package/esm2020/loader-overlay/index.mjs +2 -0
  411. package/esm2020/loader-overlay/loader-overlay.component.mjs +99 -0
  412. package/esm2020/loader-overlay/loader-overlay.module.mjs +50 -0
  413. package/esm2020/loader-overlay/ptsecurity-mosaic-loader-overlay.mjs +5 -0
  414. package/esm2020/loader-overlay/public-api.mjs +3 -0
  415. package/esm2020/modal/css-unit.pipe.mjs +17 -17
  416. package/esm2020/modal/index.mjs +2 -2
  417. package/esm2020/modal/modal-control.service.mjs +85 -85
  418. package/esm2020/modal/modal-ref.class.mjs +8 -8
  419. package/esm2020/modal/modal-util.mjs +17 -17
  420. package/esm2020/modal/modal.component.mjs +509 -501
  421. package/esm2020/modal/modal.directive.mjs +52 -52
  422. package/esm2020/modal/modal.module.mjs +72 -72
  423. package/esm2020/modal/modal.service.mjs +124 -124
  424. package/esm2020/modal/modal.type.mjs +7 -7
  425. package/esm2020/modal/ptsecurity-mosaic-modal.mjs +4 -4
  426. package/esm2020/modal/public-api.mjs +7 -7
  427. package/esm2020/navbar/index.mjs +2 -2
  428. package/esm2020/navbar/navbar-item.component.mjs +582 -582
  429. package/esm2020/navbar/navbar.component.mjs +239 -237
  430. package/esm2020/navbar/navbar.module.mjs +92 -92
  431. package/esm2020/navbar/ptsecurity-mosaic-navbar.mjs +4 -4
  432. package/esm2020/navbar/public-api.mjs +5 -5
  433. package/esm2020/navbar/vertical-navbar.animation.mjs +10 -10
  434. package/esm2020/navbar/vertical-navbar.component.mjs +114 -114
  435. package/esm2020/popover/index.mjs +2 -2
  436. package/esm2020/popover/popover-animations.mjs +16 -16
  437. package/esm2020/popover/popover-confirm.component.mjs +108 -108
  438. package/esm2020/popover/popover.component.mjs +253 -253
  439. package/esm2020/popover/popover.module.mjs +24 -24
  440. package/esm2020/popover/ptsecurity-mosaic-popover.mjs +4 -4
  441. package/esm2020/popover/public-api.mjs +5 -5
  442. package/esm2020/progress-bar/index.mjs +2 -2
  443. package/esm2020/progress-bar/progress-bar.component.mjs +42 -42
  444. package/esm2020/progress-bar/progress-bar.module.mjs +30 -30
  445. package/esm2020/progress-bar/ptsecurity-mosaic-progress-bar.mjs +4 -4
  446. package/esm2020/progress-bar/public-api.mjs +3 -3
  447. package/esm2020/progress-spinner/index.mjs +2 -2
  448. package/esm2020/progress-spinner/progress-spinner.component.mjs +46 -46
  449. package/esm2020/progress-spinner/progress-spinner.module.mjs +30 -30
  450. package/esm2020/progress-spinner/ptsecurity-mosaic-progress-spinner.mjs +4 -4
  451. package/esm2020/progress-spinner/public-api.mjs +3 -3
  452. package/esm2020/ptsecurity-mosaic.mjs +4 -4
  453. package/esm2020/public-api.mjs +2 -2
  454. package/esm2020/radio/index.mjs +2 -2
  455. package/esm2020/radio/ptsecurity-mosaic-radio.mjs +4 -4
  456. package/esm2020/radio/public-api.mjs +3 -3
  457. package/esm2020/radio/radio.component.mjs +458 -458
  458. package/esm2020/radio/radio.module.mjs +20 -20
  459. package/esm2020/select/index.mjs +2 -2
  460. package/esm2020/select/ptsecurity-mosaic-select.mjs +4 -4
  461. package/esm2020/select/public-api.mjs +4 -4
  462. package/esm2020/select/select-option.directive.mjs +65 -65
  463. package/esm2020/select/select.component.mjs +1117 -1107
  464. package/esm2020/select/select.module.mjs +73 -73
  465. package/esm2020/sidebar/index.mjs +2 -2
  466. package/esm2020/sidebar/ptsecurity-mosaic-sidebar.mjs +4 -4
  467. package/esm2020/sidebar/public-api.mjs +3 -3
  468. package/esm2020/sidebar/sidebar-animations.mjs +23 -23
  469. package/esm2020/sidebar/sidebar.component.mjs +146 -146
  470. package/esm2020/sidebar/sidebar.module.mjs +30 -30
  471. package/esm2020/sidepanel/index.mjs +2 -2
  472. package/esm2020/sidepanel/ptsecurity-mosaic-sidepanel.mjs +4 -4
  473. package/esm2020/sidepanel/public-api.mjs +7 -7
  474. package/esm2020/sidepanel/sidepanel-animations.mjs +26 -26
  475. package/esm2020/sidepanel/sidepanel-config.mjs +26 -26
  476. package/esm2020/sidepanel/sidepanel-container.component.mjs +106 -106
  477. package/esm2020/sidepanel/sidepanel-directives.mjs +159 -159
  478. package/esm2020/sidepanel/sidepanel-ref.mjs +53 -53
  479. package/esm2020/sidepanel/sidepanel.module.mjs +74 -74
  480. package/esm2020/sidepanel/sidepanel.service.mjs +167 -167
  481. package/esm2020/splitter/index.mjs +2 -2
  482. package/esm2020/splitter/ptsecurity-mosaic-splitter.mjs +4 -4
  483. package/esm2020/splitter/public-api.mjs +3 -3
  484. package/esm2020/splitter/splitter.component.mjs +482 -482
  485. package/esm2020/splitter/splitter.module.mjs +40 -40
  486. package/esm2020/table/index.mjs +2 -2
  487. package/esm2020/table/ptsecurity-mosaic-table.mjs +4 -4
  488. package/esm2020/table/public-api.mjs +3 -3
  489. package/esm2020/table/table.component.mjs +16 -16
  490. package/esm2020/table/table.module.mjs +30 -30
  491. package/esm2020/tabs/index.mjs +2 -2
  492. package/esm2020/tabs/paginated-tab-header.mjs +479 -479
  493. package/esm2020/tabs/ptsecurity-mosaic-tabs.mjs +4 -4
  494. package/esm2020/tabs/public-api.mjs +11 -11
  495. package/esm2020/tabs/tab-body.component.mjs +178 -178
  496. package/esm2020/tabs/tab-content.directive.mjs +15 -15
  497. package/esm2020/tabs/tab-group.component.mjs +350 -350
  498. package/esm2020/tabs/tab-header.component.mjs +67 -67
  499. package/esm2020/tabs/tab-label-wrapper.directive.mjs +78 -78
  500. package/esm2020/tabs/tab-label.directive.mjs +17 -17
  501. package/esm2020/tabs/tab-nav-bar/index.mjs +2 -2
  502. package/esm2020/tabs/tab-nav-bar/tab-nav-bar.mjs +110 -110
  503. package/esm2020/tabs/tab.component.mjs +133 -133
  504. package/esm2020/tabs/tabs-animations.mjs +24 -24
  505. package/esm2020/tabs/tabs.module.mjs +104 -104
  506. package/esm2020/tags/index.mjs +2 -2
  507. package/esm2020/tags/ptsecurity-mosaic-tags.mjs +4 -4
  508. package/esm2020/tags/public-api.mjs +6 -6
  509. package/esm2020/tags/tag-default-options.mjs +4 -4
  510. package/esm2020/tags/tag-input.mjs +229 -229
  511. package/esm2020/tags/tag-list.component.mjs +722 -722
  512. package/esm2020/tags/tag-text-control.mjs +2 -2
  513. package/esm2020/tags/tag.component.mjs +375 -375
  514. package/esm2020/tags/tag.module.mjs +56 -56
  515. package/esm2020/textarea/index.mjs +2 -2
  516. package/esm2020/textarea/ptsecurity-mosaic-textarea.mjs +4 -4
  517. package/esm2020/textarea/public-api.mjs +3 -3
  518. package/esm2020/textarea/textarea.component.mjs +269 -269
  519. package/esm2020/textarea/textarea.module.mjs +21 -21
  520. package/esm2020/timepicker/index.mjs +2 -2
  521. package/esm2020/timepicker/ptsecurity-mosaic-timepicker.mjs +4 -4
  522. package/esm2020/timepicker/public-api.mjs +4 -4
  523. package/esm2020/timepicker/timepicker.constants.mjs +25 -25
  524. package/esm2020/timepicker/timepicker.directive.mjs +665 -676
  525. package/esm2020/timepicker/timepicker.module.mjs +34 -34
  526. package/esm2020/toggle/index.mjs +2 -2
  527. package/esm2020/toggle/ptsecurity-mosaic-toggle.mjs +4 -4
  528. package/esm2020/toggle/public-api.mjs +3 -3
  529. package/esm2020/toggle/toggle.component.mjs +158 -158
  530. package/esm2020/toggle/toggle.module.mjs +20 -20
  531. package/esm2020/tooltip/index.mjs +2 -2
  532. package/esm2020/tooltip/ptsecurity-mosaic-tooltip.mjs +4 -4
  533. package/esm2020/tooltip/public-api.mjs +3 -3
  534. package/esm2020/tooltip/tooltip.animations.mjs +19 -19
  535. package/esm2020/tooltip/tooltip.component.mjs +295 -295
  536. package/esm2020/tooltip/tooltip.module.mjs +43 -43
  537. package/esm2020/tree/control/base-tree-control.mjs +60 -60
  538. package/esm2020/tree/control/flat-tree-control.mjs +126 -126
  539. package/esm2020/tree/control/nested-tree-control.mjs +41 -41
  540. package/esm2020/tree/control/tree-control.mjs +2 -2
  541. package/esm2020/tree/data-source/flat-data-source.mjs +162 -162
  542. package/esm2020/tree/data-source/nested-data-source.mjs +30 -30
  543. package/esm2020/tree/index.mjs +2 -2
  544. package/esm2020/tree/node.mjs +31 -31
  545. package/esm2020/tree/outlet.mjs +15 -15
  546. package/esm2020/tree/padding.directive.mjs +113 -110
  547. package/esm2020/tree/ptsecurity-mosaic-tree.mjs +4 -4
  548. package/esm2020/tree/public-api.mjs +16 -16
  549. package/esm2020/tree/toggle.mjs +80 -80
  550. package/esm2020/tree/tree-base.mjs +243 -243
  551. package/esm2020/tree/tree-errors.mjs +36 -36
  552. package/esm2020/tree/tree-option.component.mjs +248 -236
  553. package/esm2020/tree/tree-selection.component.mjs +541 -540
  554. package/esm2020/tree/tree.mjs +15 -15
  555. package/esm2020/tree/tree.module.mjs +57 -57
  556. package/esm2020/tree-select/index.mjs +2 -2
  557. package/esm2020/tree-select/ptsecurity-mosaic-tree-select.mjs +4 -4
  558. package/esm2020/tree-select/public-api.mjs +3 -3
  559. package/esm2020/tree-select/tree-select.component.mjs +939 -929
  560. package/esm2020/tree-select/tree-select.module.mjs +47 -47
  561. package/fesm2015/ptsecurity-mosaic-autocomplete.mjs +726 -726
  562. package/fesm2015/ptsecurity-mosaic-autocomplete.mjs.map +1 -1
  563. package/fesm2015/ptsecurity-mosaic-button-toggle.mjs +367 -367
  564. package/fesm2015/ptsecurity-mosaic-button-toggle.mjs.map +1 -1
  565. package/fesm2015/ptsecurity-mosaic-button.mjs +160 -160
  566. package/fesm2015/ptsecurity-mosaic-button.mjs.map +1 -1
  567. package/fesm2015/ptsecurity-mosaic-card.mjs +96 -96
  568. package/fesm2015/ptsecurity-mosaic-card.mjs.map +1 -1
  569. package/fesm2015/ptsecurity-mosaic-checkbox.mjs +348 -348
  570. package/fesm2015/ptsecurity-mosaic-checkbox.mjs.map +1 -1
  571. package/fesm2015/ptsecurity-mosaic-core.mjs +2652 -2652
  572. package/fesm2015/ptsecurity-mosaic-core.mjs.map +1 -1
  573. package/fesm2015/ptsecurity-mosaic-datepicker.mjs +2682 -2684
  574. package/fesm2015/ptsecurity-mosaic-datepicker.mjs.map +1 -1
  575. package/fesm2015/ptsecurity-mosaic-design-tokens.mjs +2433 -2343
  576. package/fesm2015/ptsecurity-mosaic-design-tokens.mjs.map +1 -1
  577. package/fesm2015/ptsecurity-mosaic-divider.mjs +48 -48
  578. package/fesm2015/ptsecurity-mosaic-divider.mjs.map +1 -1
  579. package/fesm2015/ptsecurity-mosaic-dl.mjs +108 -108
  580. package/fesm2015/ptsecurity-mosaic-dl.mjs.map +1 -1
  581. package/fesm2015/ptsecurity-mosaic-dropdown.mjs +1069 -1069
  582. package/fesm2015/ptsecurity-mosaic-dropdown.mjs.map +1 -1
  583. package/fesm2015/ptsecurity-mosaic-form-field.mjs +522 -512
  584. package/fesm2015/ptsecurity-mosaic-form-field.mjs.map +1 -1
  585. package/fesm2015/ptsecurity-mosaic-icon.mjs +73 -73
  586. package/fesm2015/ptsecurity-mosaic-icon.mjs.map +1 -1
  587. package/fesm2015/ptsecurity-mosaic-input.mjs +979 -979
  588. package/fesm2015/ptsecurity-mosaic-input.mjs.map +1 -1
  589. package/fesm2015/ptsecurity-mosaic-link.mjs +121 -121
  590. package/fesm2015/ptsecurity-mosaic-link.mjs.map +1 -1
  591. package/fesm2015/ptsecurity-mosaic-list.mjs +765 -762
  592. package/fesm2015/ptsecurity-mosaic-list.mjs.map +1 -1
  593. package/fesm2015/ptsecurity-mosaic-loader-overlay.mjs +155 -0
  594. package/fesm2015/ptsecurity-mosaic-loader-overlay.mjs.map +1 -0
  595. package/fesm2015/ptsecurity-mosaic-modal.mjs +833 -824
  596. package/fesm2015/ptsecurity-mosaic-modal.mjs.map +1 -1
  597. package/fesm2015/ptsecurity-mosaic-navbar.mjs +996 -994
  598. package/fesm2015/ptsecurity-mosaic-navbar.mjs.map +1 -1
  599. package/fesm2015/ptsecurity-mosaic-popover.mjs +364 -364
  600. package/fesm2015/ptsecurity-mosaic-popover.mjs.map +1 -1
  601. package/fesm2015/ptsecurity-mosaic-progress-bar.mjs +61 -61
  602. package/fesm2015/ptsecurity-mosaic-progress-bar.mjs.map +1 -1
  603. package/fesm2015/ptsecurity-mosaic-progress-spinner.mjs +65 -65
  604. package/fesm2015/ptsecurity-mosaic-progress-spinner.mjs.map +1 -1
  605. package/fesm2015/ptsecurity-mosaic-radio.mjs +464 -464
  606. package/fesm2015/ptsecurity-mosaic-radio.mjs.map +1 -1
  607. package/fesm2015/ptsecurity-mosaic-select.mjs +1213 -1203
  608. package/fesm2015/ptsecurity-mosaic-select.mjs.map +1 -1
  609. package/fesm2015/ptsecurity-mosaic-sidebar.mjs +185 -185
  610. package/fesm2015/ptsecurity-mosaic-sidebar.mjs.map +1 -1
  611. package/fesm2015/ptsecurity-mosaic-sidepanel.mjs +555 -555
  612. package/fesm2015/ptsecurity-mosaic-sidepanel.mjs.map +1 -1
  613. package/fesm2015/ptsecurity-mosaic-splitter.mjs +511 -511
  614. package/fesm2015/ptsecurity-mosaic-splitter.mjs.map +1 -1
  615. package/fesm2015/ptsecurity-mosaic-table.mjs +36 -36
  616. package/fesm2015/ptsecurity-mosaic-table.mjs.map +1 -1
  617. package/fesm2015/ptsecurity-mosaic-tabs.mjs +1460 -1460
  618. package/fesm2015/ptsecurity-mosaic-tabs.mjs.map +1 -1
  619. package/fesm2015/ptsecurity-mosaic-tags.mjs +1342 -1342
  620. package/fesm2015/ptsecurity-mosaic-tags.mjs.map +1 -1
  621. package/fesm2015/ptsecurity-mosaic-textarea.mjs +274 -274
  622. package/fesm2015/ptsecurity-mosaic-textarea.mjs.map +1 -1
  623. package/fesm2015/ptsecurity-mosaic-timepicker.mjs +703 -714
  624. package/fesm2015/ptsecurity-mosaic-timepicker.mjs.map +1 -1
  625. package/fesm2015/ptsecurity-mosaic-toggle.mjs +163 -163
  626. package/fesm2015/ptsecurity-mosaic-toggle.mjs.map +1 -1
  627. package/fesm2015/ptsecurity-mosaic-tooltip.mjs +344 -344
  628. package/fesm2015/ptsecurity-mosaic-tooltip.mjs.map +1 -1
  629. package/fesm2015/ptsecurity-mosaic-tree-select.mjs +954 -944
  630. package/fesm2015/ptsecurity-mosaic-tree-select.mjs.map +1 -1
  631. package/fesm2015/ptsecurity-mosaic-tree.mjs +1696 -1682
  632. package/fesm2015/ptsecurity-mosaic-tree.mjs.map +1 -1
  633. package/fesm2015/ptsecurity-mosaic.mjs +2 -2
  634. package/fesm2020/ptsecurity-mosaic-autocomplete.mjs +722 -722
  635. package/fesm2020/ptsecurity-mosaic-autocomplete.mjs.map +1 -1
  636. package/fesm2020/ptsecurity-mosaic-button-toggle.mjs +365 -365
  637. package/fesm2020/ptsecurity-mosaic-button-toggle.mjs.map +1 -1
  638. package/fesm2020/ptsecurity-mosaic-button.mjs +160 -160
  639. package/fesm2020/ptsecurity-mosaic-button.mjs.map +1 -1
  640. package/fesm2020/ptsecurity-mosaic-card.mjs +96 -96
  641. package/fesm2020/ptsecurity-mosaic-card.mjs.map +1 -1
  642. package/fesm2020/ptsecurity-mosaic-checkbox.mjs +346 -346
  643. package/fesm2020/ptsecurity-mosaic-checkbox.mjs.map +1 -1
  644. package/fesm2020/ptsecurity-mosaic-core.mjs +2681 -2681
  645. package/fesm2020/ptsecurity-mosaic-core.mjs.map +1 -1
  646. package/fesm2020/ptsecurity-mosaic-datepicker.mjs +2667 -2669
  647. package/fesm2020/ptsecurity-mosaic-datepicker.mjs.map +1 -1
  648. package/fesm2020/ptsecurity-mosaic-design-tokens.mjs +2433 -2343
  649. package/fesm2020/ptsecurity-mosaic-design-tokens.mjs.map +1 -1
  650. package/fesm2020/ptsecurity-mosaic-divider.mjs +48 -48
  651. package/fesm2020/ptsecurity-mosaic-divider.mjs.map +1 -1
  652. package/fesm2020/ptsecurity-mosaic-dl.mjs +108 -108
  653. package/fesm2020/ptsecurity-mosaic-dl.mjs.map +1 -1
  654. package/fesm2020/ptsecurity-mosaic-dropdown.mjs +1056 -1056
  655. package/fesm2020/ptsecurity-mosaic-dropdown.mjs.map +1 -1
  656. package/fesm2020/ptsecurity-mosaic-form-field.mjs +507 -497
  657. package/fesm2020/ptsecurity-mosaic-form-field.mjs.map +1 -1
  658. package/fesm2020/ptsecurity-mosaic-icon.mjs +71 -71
  659. package/fesm2020/ptsecurity-mosaic-icon.mjs.map +1 -1
  660. package/fesm2020/ptsecurity-mosaic-input.mjs +968 -968
  661. package/fesm2020/ptsecurity-mosaic-input.mjs.map +1 -1
  662. package/fesm2020/ptsecurity-mosaic-link.mjs +120 -120
  663. package/fesm2020/ptsecurity-mosaic-link.mjs.map +1 -1
  664. package/fesm2020/ptsecurity-mosaic-list.mjs +758 -755
  665. package/fesm2020/ptsecurity-mosaic-list.mjs.map +1 -1
  666. package/fesm2020/ptsecurity-mosaic-loader-overlay.mjs +153 -0
  667. package/fesm2020/ptsecurity-mosaic-loader-overlay.mjs.map +1 -0
  668. package/fesm2020/ptsecurity-mosaic-modal.mjs +828 -820
  669. package/fesm2020/ptsecurity-mosaic-modal.mjs.map +1 -1
  670. package/fesm2020/ptsecurity-mosaic-navbar.mjs +980 -978
  671. package/fesm2020/ptsecurity-mosaic-navbar.mjs.map +1 -1
  672. package/fesm2020/ptsecurity-mosaic-popover.mjs +360 -360
  673. package/fesm2020/ptsecurity-mosaic-popover.mjs.map +1 -1
  674. package/fesm2020/ptsecurity-mosaic-progress-bar.mjs +61 -61
  675. package/fesm2020/ptsecurity-mosaic-progress-bar.mjs.map +1 -1
  676. package/fesm2020/ptsecurity-mosaic-progress-spinner.mjs +65 -65
  677. package/fesm2020/ptsecurity-mosaic-progress-spinner.mjs.map +1 -1
  678. package/fesm2020/ptsecurity-mosaic-radio.mjs +462 -462
  679. package/fesm2020/ptsecurity-mosaic-radio.mjs.map +1 -1
  680. package/fesm2020/ptsecurity-mosaic-select.mjs +1208 -1198
  681. package/fesm2020/ptsecurity-mosaic-select.mjs.map +1 -1
  682. package/fesm2020/ptsecurity-mosaic-sidebar.mjs +185 -185
  683. package/fesm2020/ptsecurity-mosaic-sidebar.mjs.map +1 -1
  684. package/fesm2020/ptsecurity-mosaic-sidepanel.mjs +552 -552
  685. package/fesm2020/ptsecurity-mosaic-sidepanel.mjs.map +1 -1
  686. package/fesm2020/ptsecurity-mosaic-splitter.mjs +511 -511
  687. package/fesm2020/ptsecurity-mosaic-splitter.mjs.map +1 -1
  688. package/fesm2020/ptsecurity-mosaic-table.mjs +36 -36
  689. package/fesm2020/ptsecurity-mosaic-table.mjs.map +1 -1
  690. package/fesm2020/ptsecurity-mosaic-tabs.mjs +1445 -1445
  691. package/fesm2020/ptsecurity-mosaic-tabs.mjs.map +1 -1
  692. package/fesm2020/ptsecurity-mosaic-tags.mjs +1335 -1335
  693. package/fesm2020/ptsecurity-mosaic-tags.mjs.map +1 -1
  694. package/fesm2020/ptsecurity-mosaic-textarea.mjs +272 -272
  695. package/fesm2020/ptsecurity-mosaic-textarea.mjs.map +1 -1
  696. package/fesm2020/ptsecurity-mosaic-timepicker.mjs +700 -711
  697. package/fesm2020/ptsecurity-mosaic-timepicker.mjs.map +1 -1
  698. package/fesm2020/ptsecurity-mosaic-toggle.mjs +163 -163
  699. package/fesm2020/ptsecurity-mosaic-toggle.mjs.map +1 -1
  700. package/fesm2020/ptsecurity-mosaic-tooltip.mjs +336 -336
  701. package/fesm2020/ptsecurity-mosaic-tooltip.mjs.map +1 -1
  702. package/fesm2020/ptsecurity-mosaic-tree-select.mjs +951 -941
  703. package/fesm2020/ptsecurity-mosaic-tree-select.mjs.map +1 -1
  704. package/fesm2020/ptsecurity-mosaic-tree.mjs +1683 -1669
  705. package/fesm2020/ptsecurity-mosaic-tree.mjs.map +1 -1
  706. package/fesm2020/ptsecurity-mosaic.mjs +2 -2
  707. package/form-field/cleaner.d.ts +7 -7
  708. package/form-field/form-field-control.d.ts +37 -37
  709. package/form-field/form-field-errors.d.ts +2 -2
  710. package/form-field/form-field.d.ts +69 -69
  711. package/form-field/form-field.module.d.ts +15 -15
  712. package/form-field/hint.d.ts +14 -6
  713. package/form-field/index.d.ts +1 -1
  714. package/form-field/password-hint.d.ts +40 -40
  715. package/form-field/prefix.d.ts +5 -5
  716. package/form-field/ptsecurity-mosaic-form-field.d.ts +5 -5
  717. package/form-field/public-api.d.ts +10 -10
  718. package/form-field/stepper.d.ts +11 -11
  719. package/form-field/suffix.d.ts +5 -5
  720. package/icon/icon.component.d.ts +18 -18
  721. package/icon/icon.module.d.ts +10 -10
  722. package/icon/index.d.ts +1 -1
  723. package/icon/ptsecurity-mosaic-icon.d.ts +5 -5
  724. package/icon/public-api.d.ts +2 -2
  725. package/index.d.ts +1 -1
  726. package/input/index.d.ts +1 -1
  727. package/input/input-errors.d.ts +1 -1
  728. package/input/input-number-validators.d.ts +39 -39
  729. package/input/input-number.d.ts +33 -33
  730. package/input/input-password.d.ts +123 -123
  731. package/input/input-value-accessor.d.ts +4 -4
  732. package/input/input.d.ts +116 -116
  733. package/input/input.module.d.ts +14 -14
  734. package/input/ptsecurity-mosaic-input.d.ts +5 -5
  735. package/input/public-api.d.ts +6 -6
  736. package/link/index.d.ts +1 -1
  737. package/link/link.component.d.ts +38 -38
  738. package/link/link.module.d.ts +9 -9
  739. package/link/ptsecurity-mosaic-link.d.ts +5 -5
  740. package/link/public-api.d.ts +2 -2
  741. package/list/index.d.ts +1 -1
  742. package/list/list-selection.component.d.ts +168 -168
  743. package/list/list.component.d.ts +18 -18
  744. package/list/list.module.d.ts +11 -11
  745. package/list/ptsecurity-mosaic-list.d.ts +5 -5
  746. package/list/public-api.d.ts +3 -3
  747. package/{toggle → loader-overlay}/README.md +0 -0
  748. package/loader-overlay/index.d.ts +1 -0
  749. package/loader-overlay/loader-overlay.component.d.ts +33 -0
  750. package/loader-overlay/loader-overlay.module.d.ts +11 -0
  751. package/loader-overlay/package.json +10 -0
  752. package/loader-overlay/ptsecurity-mosaic-loader-overlay.d.ts +5 -0
  753. package/loader-overlay/public-api.d.ts +2 -0
  754. package/modal/README.md +33 -33
  755. package/modal/css-unit.pipe.d.ts +7 -7
  756. package/modal/index.d.ts +1 -1
  757. package/modal/modal-control.service.d.ts +20 -20
  758. package/modal/modal-ref.class.d.ts +36 -36
  759. package/modal/modal-util.d.ts +12 -12
  760. package/modal/modal.component.d.ts +128 -126
  761. package/modal/modal.directive.d.ts +17 -17
  762. package/modal/modal.module.d.ts +14 -14
  763. package/modal/modal.service.d.ts +33 -33
  764. package/modal/modal.type.d.ts +60 -59
  765. package/modal/ptsecurity-mosaic-modal.d.ts +5 -5
  766. package/modal/public-api.d.ts +6 -6
  767. package/navbar/README.md +41 -41
  768. package/navbar/index.d.ts +1 -1
  769. package/navbar/navbar-item.component.d.ts +161 -161
  770. package/navbar/navbar.component.d.ts +58 -58
  771. package/navbar/navbar.module.d.ts +14 -14
  772. package/navbar/ptsecurity-mosaic-navbar.d.ts +5 -5
  773. package/navbar/public-api.d.ts +4 -4
  774. package/navbar/vertical-navbar.animation.d.ts +2 -2
  775. package/navbar/vertical-navbar.component.d.ts +23 -23
  776. package/package.json +12 -4
  777. package/popover/README.md +32 -32
  778. package/popover/index.d.ts +1 -1
  779. package/popover/popover-animations.d.ts +4 -4
  780. package/popover/popover-confirm.component.d.ts +33 -33
  781. package/popover/popover.component.d.ts +74 -74
  782. package/popover/popover.module.d.ts +12 -12
  783. package/popover/ptsecurity-mosaic-popover.d.ts +5 -5
  784. package/popover/public-api.d.ts +4 -4
  785. package/prebuilt-themes/dark-theme.css +1 -1
  786. package/prebuilt-themes/default-theme.css +1 -1
  787. package/progress-bar/index.d.ts +1 -1
  788. package/progress-bar/progress-bar.component.d.ts +18 -18
  789. package/progress-bar/progress-bar.module.d.ts +9 -9
  790. package/progress-bar/ptsecurity-mosaic-progress-bar.d.ts +5 -5
  791. package/progress-bar/public-api.d.ts +2 -2
  792. package/progress-spinner/index.d.ts +1 -1
  793. package/progress-spinner/progress-spinner.component.d.ts +19 -19
  794. package/progress-spinner/progress-spinner.module.d.ts +9 -9
  795. package/progress-spinner/ptsecurity-mosaic-progress-spinner.d.ts +5 -5
  796. package/progress-spinner/public-api.d.ts +2 -2
  797. package/ptsecurity-mosaic.d.ts +5 -5
  798. package/public-api.d.ts +1 -1
  799. package/radio/index.d.ts +1 -1
  800. package/radio/ptsecurity-mosaic-radio.d.ts +5 -5
  801. package/radio/public-api.d.ts +2 -2
  802. package/radio/radio.component.d.ts +207 -207
  803. package/radio/radio.module.d.ts +10 -10
  804. package/schematics/README.md +35 -35
  805. package/select/index.d.ts +1 -1
  806. package/select/ptsecurity-mosaic-select.d.ts +5 -5
  807. package/select/public-api.d.ts +3 -3
  808. package/select/select-option.directive.d.ts +20 -20
  809. package/select/select.component.d.ts +310 -307
  810. package/select/select.module.d.ts +15 -15
  811. package/sidebar/index.d.ts +1 -1
  812. package/sidebar/ptsecurity-mosaic-sidebar.d.ts +5 -5
  813. package/sidebar/public-api.d.ts +2 -2
  814. package/sidebar/sidebar-animations.d.ts +8 -8
  815. package/sidebar/sidebar.component.d.ts +53 -53
  816. package/sidebar/sidebar.module.d.ts +8 -8
  817. package/sidepanel/index.d.ts +1 -1
  818. package/sidepanel/ptsecurity-mosaic-sidepanel.d.ts +5 -5
  819. package/sidepanel/public-api.d.ts +6 -6
  820. package/sidepanel/sidepanel-animations.d.ts +14 -14
  821. package/sidepanel/sidepanel-config.d.ts +25 -25
  822. package/sidepanel/sidepanel-container.component.d.ts +45 -45
  823. package/sidepanel/sidepanel-directives.d.ts +50 -50
  824. package/sidepanel/sidepanel-ref.d.ts +24 -24
  825. package/sidepanel/sidepanel.module.d.ts +15 -15
  826. package/sidepanel/sidepanel.service.d.ts +57 -57
  827. package/splitter/index.d.ts +1 -1
  828. package/splitter/ptsecurity-mosaic-splitter.d.ts +5 -5
  829. package/splitter/public-api.d.ts +2 -2
  830. package/splitter/splitter.component.d.ts +130 -130
  831. package/splitter/splitter.module.d.ts +9 -9
  832. package/table/index.d.ts +1 -1
  833. package/table/ptsecurity-mosaic-table.d.ts +5 -5
  834. package/table/public-api.d.ts +2 -2
  835. package/table/table.component.d.ts +5 -5
  836. package/table/table.module.d.ts +10 -10
  837. package/tabs/index.d.ts +1 -1
  838. package/tabs/paginated-tab-header.d.ts +179 -179
  839. package/tabs/ptsecurity-mosaic-tabs.d.ts +5 -5
  840. package/tabs/public-api.d.ts +10 -10
  841. package/tabs/tab-body.component.d.ts +95 -95
  842. package/tabs/tab-content.directive.d.ts +9 -9
  843. package/tabs/tab-group.component.d.ts +133 -133
  844. package/tabs/tab-header.component.d.ts +35 -35
  845. package/tabs/tab-label-wrapper.directive.d.ts +30 -30
  846. package/tabs/tab-label.directive.d.ts +9 -9
  847. package/tabs/tab-nav-bar/index.d.ts +1 -1
  848. package/tabs/tab-nav-bar/tab-nav-bar.d.ts +38 -38
  849. package/tabs/tab.component.d.ts +66 -66
  850. package/tabs/tabs-animations.d.ts +4 -4
  851. package/tabs/tabs.module.d.ts +20 -20
  852. package/tags/index.d.ts +1 -1
  853. package/tags/ptsecurity-mosaic-tags.d.ts +5 -5
  854. package/tags/public-api.d.ts +5 -5
  855. package/tags/tag-default-options.d.ts +8 -8
  856. package/tags/tag-input.d.ts +77 -77
  857. package/tags/tag-list.component.d.ts +240 -240
  858. package/tags/tag-text-control.d.ts +10 -10
  859. package/tags/tag.component.d.ts +135 -135
  860. package/tags/tag.module.d.ts +11 -11
  861. package/textarea/index.d.ts +1 -1
  862. package/textarea/ptsecurity-mosaic-textarea.d.ts +5 -5
  863. package/textarea/public-api.d.ts +2 -2
  864. package/textarea/textarea.component.d.ts +111 -111
  865. package/textarea/textarea.module.d.ts +11 -11
  866. package/timepicker/index.d.ts +1 -1
  867. package/timepicker/ptsecurity-mosaic-timepicker.d.ts +5 -5
  868. package/timepicker/public-api.d.ts +3 -3
  869. package/timepicker/timepicker.constants.d.ts +20 -20
  870. package/timepicker/timepicker.directive.d.ts +146 -147
  871. package/timepicker/timepicker.module.d.ts +11 -11
  872. package/toggle/index.d.ts +1 -1
  873. package/toggle/ptsecurity-mosaic-toggle.d.ts +5 -5
  874. package/toggle/public-api.d.ts +2 -2
  875. package/toggle/toggle.component.d.ts +54 -54
  876. package/toggle/toggle.module.d.ts +10 -10
  877. package/tooltip/index.d.ts +1 -1
  878. package/tooltip/ptsecurity-mosaic-tooltip.d.ts +5 -5
  879. package/tooltip/public-api.d.ts +2 -2
  880. package/tooltip/tooltip.animations.d.ts +8 -8
  881. package/tooltip/tooltip.component.d.ts +91 -91
  882. package/tooltip/tooltip.module.d.ts +9 -9
  883. package/tree/control/base-tree-control.d.ts +40 -40
  884. package/tree/control/flat-tree-control.d.ts +52 -52
  885. package/tree/control/nested-tree-control.d.ts +19 -19
  886. package/tree/control/tree-control.d.ts +44 -44
  887. package/tree/data-source/flat-data-source.d.ts +80 -80
  888. package/tree/data-source/nested-data-source.d.ts +15 -15
  889. package/tree/index.d.ts +1 -1
  890. package/tree/node.d.ts +34 -34
  891. package/tree/outlet.d.ts +9 -9
  892. package/tree/padding.directive.d.ts +47 -45
  893. package/tree/ptsecurity-mosaic-tree.d.ts +5 -5
  894. package/tree/public-api.d.ts +15 -15
  895. package/tree/toggle.d.ts +28 -28
  896. package/tree/tree-base.d.ts +97 -97
  897. package/tree/tree-errors.d.ts +25 -25
  898. package/tree/tree-option.component.d.ts +72 -68
  899. package/tree/tree-selection.component.d.ts +132 -132
  900. package/tree/tree.d.ts +6 -6
  901. package/tree/tree.module.d.ts +16 -16
  902. package/tree-select/index.d.ts +1 -1
  903. package/tree-select/ptsecurity-mosaic-tree-select.d.ts +5 -5
  904. package/tree-select/public-api.d.ts +2 -2
  905. package/tree-select/tree-select.component.d.ts +277 -274
  906. package/tree-select/tree-select.module.d.ts +14 -14
@@ -23,951 +23,961 @@ import { McFormFieldControl } from '@ptsecurity/mosaic/form-field';
23
23
  import { Subject, defer, merge, Subscription } from 'rxjs';
24
24
  import { filter, map, startWith, switchMap, take, distinctUntilChanged, takeUntil } from 'rxjs/operators';
25
25
 
26
- /* tslint:disable:no-empty */
27
- let nextUniqueId = 0;
28
- /** Change event object that is emitted when the select value has changed. */
29
- class McTreeSelectChange {
30
- constructor(source, value, isUserInput = false) {
31
- this.source = source;
32
- this.value = value;
33
- this.isUserInput = isUserInput;
34
- }
35
- }
36
- class McTreeSelectTrigger {
37
- }
38
- /** @nocollapse */ /** @nocollapse */ McTreeSelectTrigger.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McTreeSelectTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });
39
- /** @nocollapse */ /** @nocollapse */ McTreeSelectTrigger.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.7", type: McTreeSelectTrigger, selector: "mc-tree-select-trigger", ngImport: i0 });
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McTreeSelectTrigger, decorators: [{
41
- type: Directive,
42
- args: [{ selector: 'mc-tree-select-trigger' }]
43
- }] });
44
- class McTreeSelectFooter {
45
- }
46
- /** @nocollapse */ /** @nocollapse */ McTreeSelectFooter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McTreeSelectFooter, deps: [], target: i0.ɵɵFactoryTarget.Directive });
47
- /** @nocollapse */ /** @nocollapse */ McTreeSelectFooter.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.7", type: McTreeSelectFooter, selector: "mc-tree-select-footer", ngImport: i0 });
48
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McTreeSelectFooter, decorators: [{
49
- type: Directive,
50
- args: [{ selector: 'mc-tree-select-footer' }]
51
- }] });
52
- class McTreeSelectBase {
53
- constructor(elementRef, defaultErrorStateMatcher, parentForm, parentFormGroup, ngControl) {
54
- this.elementRef = elementRef;
55
- this.defaultErrorStateMatcher = defaultErrorStateMatcher;
56
- this.parentForm = parentForm;
57
- this.parentFormGroup = parentFormGroup;
58
- this.ngControl = ngControl;
59
- }
60
- }
61
- // tslint:disable-next-line:naming-convention
62
- const McTreeSelectMixinBase = mixinTabIndex(mixinDisabled(mixinErrorState(McTreeSelectBase)));
63
- class McTreeSelect extends McTreeSelectMixinBase {
64
- constructor(elementRef, changeDetectorRef, viewportRuler, ngZone, renderer, defaultErrorStateMatcher, scrollStrategyFactory, rawValidators, mcValidation, dir, parentForm, parentFormGroup, parentFormField, ngControl, ngModel, formControlName) {
65
- super(elementRef, defaultErrorStateMatcher, parentForm, parentFormGroup, ngControl);
66
- this.changeDetectorRef = changeDetectorRef;
67
- this.viewportRuler = viewportRuler;
68
- this.ngZone = ngZone;
69
- this.renderer = renderer;
70
- this.scrollStrategyFactory = scrollStrategyFactory;
71
- this.rawValidators = rawValidators;
72
- this.mcValidation = mcValidation;
73
- this.dir = dir;
74
- this.parentFormField = parentFormField;
75
- this.ngModel = ngModel;
76
- this.formControlName = formControlName;
77
- /** A name for this control that can be used by `mc-form-field`. */
78
- this.controlType = 'select';
79
- this.hiddenItems = 0;
80
- /** The cached font-size of the trigger element. */
81
- this.triggerFontSize = 0;
82
- /** The value of the select panel's transform-origin property. */
83
- this.transformOrigin = 'top';
84
- /** Emits when the panel element is finished transforming in. */
85
- this.panelDoneAnimatingStream = new Subject();
86
- /** Strategy that will be used to handle scrolling while the select panel is open. */
87
- this.scrollStrategy = this.scrollStrategyFactory();
88
- /**
89
- * The y-offset of the overlay panel in relation to the trigger's top start corner.
90
- * This must be adjusted to align the selected option text over the trigger text.
91
- * when the panel opens. Will change based on the y-position of the selected option.
92
- */
93
- this.offsetY = 0;
94
- /**
95
- * This position config ensures that the top "start" corner of the overlay
96
- * is aligned with with the top "start" of the origin by default (overlapping
97
- * the trigger completely). If the panel cannot fit below the trigger, it
98
- * will fall back to a position above the trigger.
99
- */
100
- this.positions = [
101
- {
102
- originX: 'start',
103
- originY: 'bottom',
104
- overlayX: 'start',
105
- overlayY: 'top'
106
- },
107
- {
108
- originX: 'start',
109
- originY: 'top',
110
- overlayX: 'start',
111
- overlayY: 'bottom'
112
- }
113
- ];
114
- this.hiddenItemsText = '...ещё';
115
- /** Event emitted when the select panel has been toggled. */
116
- this.openedChange = new EventEmitter();
117
- /** Event emitted when the select has been opened. */
118
- this.openedStream = this.openedChange.pipe(filter((o) => o), map(() => { }));
119
- /** Event emitted when the select has been closed. */
120
- this.closedStream = this.openedChange.pipe(filter((o) => !o), map(() => { }));
121
- /** Event emitted when the selected value has been changed by the user. */
122
- this.selectionChange = new EventEmitter();
123
- /**
124
- * Event that emits whenever the raw value of the select changes. This is here primarily
125
- * to facilitate the two-way binding for the `value` input.
126
- * @docs-private
127
- */
128
- this.valueChange = new EventEmitter();
129
- this.backdropClass = 'cdk-overlay-transparent-backdrop';
130
- /** Combined stream of all of the child options' change events. */
131
- this.optionSelectionChanges = defer(() => {
132
- if (this.options) {
133
- return this.options.changes.pipe(startWith(this.options), switchMap(() => merge(...this.options.map((option) => option.onSelectionChange))));
134
- }
135
- return this.ngZone.onStable
136
- .asObservable()
137
- .pipe(take(1), switchMap(() => this.optionSelectionChanges));
138
- });
139
- this._required = false;
140
- this._multiple = false;
141
- this._autoSelect = true;
142
- this._value = null;
143
- this._hasBackdrop = false;
144
- this._focused = false;
145
- this.triggerValues = [];
146
- this.closeSubscription = Subscription.EMPTY;
147
- this._panelOpen = false;
148
- /** The scroll position of the overlay panel, calculated to center the selected option. */
149
- this.scrollTop = 0;
150
- /** Unique id for this input. */
151
- this.uid = `mc-select-${nextUniqueId++}`;
152
- /** Emits whenever the component is destroyed. */
153
- this.destroy = new Subject();
154
- /** `View -> model callback called when value changes` */
155
- this.onChange = () => { };
156
- /** `View -> model callback called when select has been touched` */
157
- this.onTouched = () => { };
158
- /** Comparison function to specify which option is displayed. Defaults to object equality. */
159
- this._compareWith = (o1, o2) => o1 === o2;
160
- if (this.ngControl) {
161
- // Note: we provide the value accessor through here, instead of
162
- // the `providers` to avoid running into a circular import.
163
- this.ngControl.valueAccessor = this;
164
- }
165
- // Force setter to be called in case id was not specified.
166
- this.id = this.id;
167
- }
168
- get placeholder() {
169
- return this._placeholder;
170
- }
171
- set placeholder(value) {
172
- this._placeholder = value;
173
- this.stateChanges.next();
174
- }
175
- get required() {
176
- return this._required;
177
- }
178
- set required(value) {
179
- this._required = coerceBooleanProperty(value);
180
- this.stateChanges.next();
181
- }
182
- get multiple() {
183
- return this._multiple;
184
- }
185
- set multiple(value) {
186
- if (this.selectionModel) {
187
- throw getMcSelectDynamicMultipleError();
188
- }
189
- this._multiple = coerceBooleanProperty(value);
190
- }
191
- get autoSelect() {
192
- if (this.multiple) {
193
- return false;
194
- }
195
- return this._autoSelect;
196
- }
197
- set autoSelect(value) {
198
- this._autoSelect = coerceBooleanProperty(value);
199
- }
200
- /**
201
- * Function to compare the option values with the selected values. The first argument
202
- * is a value from an option. The second is a value from the selection. A boolean
203
- * should be returned.
204
- */
205
- get compareWith() {
206
- return this._compareWith;
207
- }
208
- set compareWith(fn) {
209
- /* tslint:disable-next-line:strict-type-predicates */
210
- if (typeof fn !== 'function') {
211
- throw getMcSelectNonFunctionValueError();
212
- }
213
- this._compareWith = fn;
214
- if (this.selectionModel) {
215
- // A different comparator means the selection could change.
216
- this.initializeSelection();
217
- }
218
- }
219
- get value() {
220
- return this.tree.getSelectedValues();
221
- }
222
- get id() {
223
- return this._id;
224
- }
225
- set id(value) {
226
- this._id = value || this.uid;
227
- this.stateChanges.next();
228
- }
229
- get hasBackdrop() {
230
- return this._hasBackdrop;
231
- }
232
- set hasBackdrop(value) {
233
- this._hasBackdrop = coerceBooleanProperty(value);
234
- }
235
- /** Whether the select is focused. */
236
- get focused() {
237
- return this._focused || this._panelOpen;
238
- }
239
- set focused(value) {
240
- this._focused = value;
241
- }
242
- get panelOpen() {
243
- return this._panelOpen;
244
- }
245
- get canShowCleaner() {
246
- return this.cleaner && this.selectionModel.hasValue();
247
- }
248
- ngOnInit() {
249
- this.stateChanges.next();
250
- // We need `distinctUntilChanged` here, because some browsers will
251
- // fire the animation end event twice for the same animation. See:
252
- // https://github.com/angular/angular/issues/24084
253
- this.panelDoneAnimatingStream
254
- .pipe(distinctUntilChanged(), takeUntil(this.destroy))
255
- .subscribe(() => {
256
- if (this.panelOpen) {
257
- this.scrollTop = 0;
258
- if (this.search) {
259
- this.search.focus();
260
- }
261
- this.openedChange.emit(true);
262
- }
263
- else {
264
- this.openedChange.emit(false);
265
- this.overlayDir.offsetX = 0;
266
- this.changeDetectorRef.markForCheck();
267
- }
268
- });
269
- }
270
- ngAfterContentInit() {
271
- if (!this.tree) {
272
- return;
273
- }
274
- if (this.mcValidation.useValidation) {
275
- setMosaicValidation(this, this.changeDetectorRef);
276
- }
277
- this.tree.resetFocusedItemOnBlur = false;
278
- this.selectionModel = this.tree.selectionModel = new SelectionModel(this.multiple);
279
- this.selectionModel.changed
280
- .subscribe(() => {
281
- this.onChange(this.selectedValues);
282
- if (this.multiple) {
283
- this.refreshTriggerValues();
284
- }
285
- });
286
- this.tree.ngAfterContentInit();
287
- this.initKeyManager();
288
- this.options = this.tree.renderedOptions;
289
- this.tree.autoSelect = this.autoSelect;
290
- if (this.tree.multipleMode === null) {
291
- this.tree.multipleMode = this.multiple ? MultipleMode.CHECKBOX : null;
292
- }
293
- if (this.multiple) {
294
- this.tree.noUnselectLast = false;
295
- }
296
- if (this.tempValues) {
297
- this.setSelectionByValue(this.tempValues);
298
- this.tempValues = null;
299
- }
300
- this.optionSelectionChanges
301
- .pipe(takeUntil(this.destroy))
302
- .subscribe((event) => {
303
- if (!this.multiple && this.panelOpen && event.isUserInput) {
304
- this.close();
305
- }
306
- });
307
- this.tree.selectionChange
308
- .pipe(takeUntil(this.destroy))
309
- .subscribe((event) => {
310
- this.onChange(this.selectedValues);
311
- this.selectionChange.emit(new McTreeSelectChange(this, event.option));
312
- if (this.search) {
313
- this.search.focus();
314
- }
315
- });
316
- this.selectionModel.changed
317
- .pipe(takeUntil(this.destroy))
318
- .subscribe((event) => {
319
- if (event.added.length) {
320
- this.tree.keyManager.setFocusOrigin('program');
321
- this.tree.keyManager.setActiveItem(this.options.find((option) => option.data === event.added[0]));
322
- }
323
- });
324
- this.updateIsEmptySearchResult();
325
- }
326
- ngAfterViewInit() {
327
- if (!this.tree) {
328
- return;
329
- }
330
- this.tags.changes
331
- .subscribe(() => {
332
- setTimeout(() => this.calculateHiddenItems(), 0);
333
- });
334
- setTimeout(() => this.calculateHiddenItems(), 0);
335
- }
336
- ngDoCheck() {
337
- if (this.ngControl) {
338
- this.updateErrorState();
339
- }
340
- }
341
- ngOnChanges(changes) {
342
- // Updating the disabled state is handled by `mixinDisabled`, but we need to additionally let
343
- // the parent form field know to run change detection when the disabled state changes.
344
- if (changes.disabled) {
345
- this.stateChanges.next();
346
- }
347
- }
348
- ngOnDestroy() {
349
- this.destroy.next();
350
- this.destroy.complete();
351
- this.stateChanges.complete();
352
- this.closeSubscription.unsubscribe();
353
- }
354
- hiddenItemsTextFormatter(hiddenItemsText, hiddenItems) {
355
- return `${hiddenItemsText} ${hiddenItems}`;
356
- }
357
- clearValue($event) {
358
- $event.stopPropagation();
359
- this.selectionModel.clear();
360
- this.tree.keyManager.setActiveItem(-1);
361
- this.setSelectionByValue([]);
362
- this.onChange(this.selectedValues);
363
- }
364
- toggle() {
365
- if (this.panelOpen) {
366
- this.close();
367
- }
368
- else {
369
- this.open();
370
- }
371
- }
372
- open() {
373
- if (this.disabled || !this.options || !this.options.length || this._panelOpen) {
374
- return;
375
- }
376
- this.triggerRect = this.trigger.nativeElement.getBoundingClientRect();
377
- // Note: The computed font-size will be a string pixel value (e.g. "16px").
378
- // `parseInt` ignores the trailing 'px' and converts this to a number.
379
- this.triggerFontSize = parseInt(getComputedStyle(this.trigger.nativeElement)['font-size']);
380
- this._panelOpen = true;
381
- setTimeout(() => this.highlightCorrectOption());
382
- this.changeDetectorRef.markForCheck();
383
- // Set the font size on the panel element once it exists.
384
- this.ngZone.onStable.asObservable()
385
- .pipe(take(1))
386
- .subscribe(() => {
387
- if (this.triggerFontSize && this.overlayDir.overlayRef && this.overlayDir.overlayRef.overlayElement) {
388
- this.overlayDir.overlayRef.overlayElement.style.fontSize = `${this.triggerFontSize}px`;
389
- }
390
- });
391
- }
392
- /** Closes the overlay panel and focuses the host element. */
393
- close() {
394
- if (!this._panelOpen) {
395
- return;
396
- }
397
- this._panelOpen = false;
398
- this.changeDetectorRef.markForCheck();
399
- this.onTouched();
400
- if (this.search) {
401
- this.search.reset();
402
- }
403
- setTimeout(() => this.focus(), 0);
404
- }
405
- /**
406
- * Sets the select's value. Part of the ControlValueAccessor interface
407
- * required to integrate with Angular's core forms API.
408
- *
409
- * @param value New value to be written to the model.
410
- */
411
- writeValue(value) {
412
- if (this.tree) {
413
- this.setSelectionByValue(value);
414
- }
415
- else {
416
- this.tempValues = value;
417
- }
418
- }
419
- /**
420
- * Saves a callback function to be invoked when the select's value
421
- * changes from user input. Part of the ControlValueAccessor interface
422
- * required to integrate with Angular's core forms API.
423
- *
424
- * @param fn Callback to be triggered when the value changes.
425
- */
426
- registerOnChange(fn) {
427
- this.onChange = fn;
428
- }
429
- /**
430
- * Saves a callback function to be invoked when the select is blurred
431
- * by the user. Part of the ControlValueAccessor interface required
432
- * to integrate with Angular's core forms API.
433
- *
434
- * @param fn Callback to be triggered when the component has been touched.
435
- */
436
- registerOnTouched(fn) {
437
- this.onTouched = fn;
438
- }
439
- /**
440
- * Disables the select. Part of the ControlValueAccessor interface required
441
- * to integrate with Angular's core forms API.
442
- *
443
- * @param isDisabled Sets whether the component is disabled.
444
- */
445
- setDisabledState(isDisabled) {
446
- this.disabled = isDisabled;
447
- this.changeDetectorRef.markForCheck();
448
- this.stateChanges.next();
449
- }
450
- get selected() {
451
- return this.multiple ? this.selectionModel.selected : this.selectionModel.selected[0];
452
- }
453
- get selectedValues() {
454
- const selectedValues = this.selectionModel.selected.map((value) => this.tree.treeControl.getValue(value));
455
- return this.multiple ? selectedValues : selectedValues[0];
456
- }
457
- get triggerValue() {
458
- if (this.empty) {
459
- return '';
460
- }
461
- return this.tree.treeControl.getViewValue(this.selected);
462
- }
463
- get empty() {
464
- return !this.selectionModel || this.selectionModel.isEmpty();
465
- }
466
- isRtl() {
467
- return this.dir ? this.dir.value === 'rtl' : false;
468
- }
469
- handleKeydown(event) {
470
- if (!this.disabled) {
471
- if (this.panelOpen) {
472
- this.handleOpenKeydown(event);
473
- }
474
- else {
475
- this.handleClosedKeydown(event);
476
- }
477
- }
478
- }
479
- onFocus() {
480
- if (!this.disabled) {
481
- this._focused = true;
482
- this.stateChanges.next();
483
- }
484
- }
485
- /**
486
- * Calls the touched callback only if the panel is closed. Otherwise, the trigger will
487
- * "blur" to the panel when it opens, causing a false positive.
488
- */
489
- onBlur() {
490
- this._focused = false;
491
- if (!this.disabled && !this.panelOpen) {
492
- this.onTouched();
493
- this.changeDetectorRef.markForCheck();
494
- this.stateChanges.next();
495
- }
496
- }
497
- /** Callback that is invoked when the overlay panel has been attached. */
498
- onAttached() {
499
- this.overlayDir.positionChange
500
- .pipe(take(1))
501
- .subscribe(() => {
502
- this.changeDetectorRef.detectChanges();
503
- this.calculateOverlayOffsetX();
504
- this.panel.nativeElement.scrollTop = this.scrollTop;
505
- this.tree.updateScrollSize();
506
- });
507
- this.closeSubscription = this.closingActions()
508
- .subscribe(() => this.close());
509
- }
510
- /** Returns the theme to be used on the panel. */
511
- getPanelTheme() {
512
- return this.parentFormField ? `mc-${this.parentFormField.color}` : '';
513
- }
514
- focus() {
515
- this.elementRef.nativeElement.focus();
516
- }
517
- /**
518
- * Implemented as part of McFormFieldControl.
519
- * @docs-private
520
- */
521
- onContainerClick() {
522
- this.focus();
523
- }
524
- /** Invoked when an option is clicked. */
525
- onRemoveSelectedOption(selectedOption, $event) {
526
- $event.stopPropagation();
527
- this.selectionModel
528
- .deselect(this.selected.find((value) => this.tree.treeControl.getValue(value) === selectedOption.value));
529
- this.onChange(this.selectedValues);
530
- }
531
- calculateHiddenItems() {
532
- if (this.customTrigger || this.empty || !this.multiple) {
533
- return;
534
- }
535
- let visibleItems = 0;
536
- const totalItemsWidth = this.getTotalItemsWidthInMatcher();
537
- let totalVisibleItemsWidth = 0;
538
- this.tags.forEach((tag) => {
539
- if (tag.nativeElement.offsetTop < tag.nativeElement.offsetHeight) {
540
- totalVisibleItemsWidth += this.getItemWidth(tag.nativeElement);
541
- visibleItems++;
542
- }
543
- });
544
- this.hiddenItems = this.selectionModel.selected.length - visibleItems;
545
- if (this.hiddenItems) {
546
- const itemsCounter = this.trigger.nativeElement.querySelector('.mc-tree-select__match-hidden-text');
547
- const matcherList = this.trigger.nativeElement.querySelector('.mc-tree-select__match-list');
548
- const itemsCounterShowed = itemsCounter.offsetTop < itemsCounter.offsetHeight;
549
- // const itemsCounterWidth: number = itemsCounter.getBoundingClientRect().width;
550
- const itemsCounterWidth = 86;
551
- const matcherListWidth = Math.floor(matcherList.getBoundingClientRect().width);
552
- const matcherWidth = matcherListWidth + (itemsCounterShowed ? itemsCounterWidth : 0);
553
- if (itemsCounterShowed && (totalItemsWidth < matcherWidth)) {
554
- this.hiddenItems = 0;
555
- }
556
- if (totalVisibleItemsWidth === matcherListWidth ||
557
- (totalVisibleItemsWidth + itemsCounterWidth) < matcherListWidth) {
558
- this.changeDetectorRef.markForCheck();
559
- return;
560
- }
561
- else if (!itemsCounterShowed && (totalItemsWidth + itemsCounterWidth) > matcherWidth) {
562
- this.hiddenItems++;
563
- }
564
- }
565
- this.changeDetectorRef.markForCheck();
566
- }
567
- closingActions() {
568
- const backdrop = this.overlayDir.overlayRef.backdropClick();
569
- const outsidePointerEvents = this.overlayDir.overlayRef.outsidePointerEvents()
570
- .pipe(filter((event) => !this.elementRef.nativeElement.contains(event.target)));
571
- const detachments = this.overlayDir.overlayRef.detachments();
572
- return merge(backdrop, outsidePointerEvents, detachments);
573
- }
574
- getTotalItemsWidthInMatcher() {
575
- const triggerClone = this.trigger.nativeElement.cloneNode(true);
576
- triggerClone.querySelector('.mc-tree-select__match-hidden-text').remove();
577
- this.renderer.setStyle(triggerClone, 'position', 'absolute');
578
- this.renderer.setStyle(triggerClone, 'visibility', 'hidden');
579
- this.renderer.setStyle(triggerClone, 'top', '-100%');
580
- this.renderer.setStyle(triggerClone, 'left', '0');
581
- this.renderer.appendChild(this.trigger.nativeElement, triggerClone);
582
- let totalItemsWidth = 0;
583
- triggerClone.querySelectorAll('mc-tag').forEach((item) => {
584
- totalItemsWidth += this.getItemWidth(item);
585
- });
586
- triggerClone.remove();
587
- return totalItemsWidth;
588
- }
589
- getItemWidth(element) {
590
- const computedStyle = window.getComputedStyle(element);
591
- const width = parseInt(computedStyle.width);
592
- const marginLeft = parseInt(computedStyle.marginLeft);
593
- const marginRight = parseInt(computedStyle.marginRight);
594
- return width + marginLeft + marginRight;
595
- }
596
- handleClosedKeydown(event) {
597
- // tslint:disable-next-line: deprecation
598
- const keyCode = event.keyCode;
599
- const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW ||
600
- keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW;
601
- const isOpenKey = keyCode === ENTER || keyCode === SPACE;
602
- // Open the select on ALT + arrow key to match the native <select>
603
- if (isOpenKey || ((this.multiple || event.altKey) && isArrowKey)) {
604
- // prevents the page from scrolling down when pressing space
605
- event.preventDefault();
606
- this.open();
607
- }
608
- else if (!this.multiple && this.tree.keyManager && this.tree.keyManager.onKeydown) {
609
- this.tree.keyManager.onKeydown(event);
610
- }
611
- }
612
- handleOpenKeydown(event) {
613
- /* tslint:disable-next-line */
614
- const keyCode = event.keyCode;
615
- const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW;
616
- if (isArrowKey && event.altKey) {
617
- // Close the select on ALT + arrow key to match the native <select>
618
- event.preventDefault();
619
- this.close();
620
- }
621
- else if (keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW) {
622
- return this.originalOnKeyDown.call(this.tree, event);
623
- }
624
- else if (keyCode === HOME) {
625
- event.preventDefault();
626
- this.tree.keyManager.setFirstItemActive();
627
- }
628
- else if (keyCode === END) {
629
- event.preventDefault();
630
- this.tree.keyManager.setLastItemActive();
631
- }
632
- else if (keyCode === PAGE_UP) {
633
- event.preventDefault();
634
- this.tree.keyManager.setPreviousPageItemActive();
635
- }
636
- else if (keyCode === PAGE_DOWN) {
637
- event.preventDefault();
638
- this.tree.keyManager.setNextPageItemActive();
639
- }
640
- else if ((keyCode === ENTER || keyCode === SPACE) && this.tree.keyManager.activeItem) {
641
- event.preventDefault();
642
- if (!this.autoSelect) {
643
- this.selectionModel.toggle(this.tree.keyManager.activeItem.data);
644
- }
645
- else {
646
- this.close();
647
- }
648
- }
649
- else if (this.multiple && keyCode === A && event.ctrlKey) {
650
- event.preventDefault();
651
- const hasDeselectedOptions = this.options.some((option) => !option.selected);
652
- this.options.forEach((option) => {
653
- if (hasDeselectedOptions && !option.disabled) {
654
- option.select();
655
- }
656
- else {
657
- option.deselect();
658
- }
659
- });
660
- }
661
- else {
662
- const previouslyFocusedIndex = this.tree.keyManager.activeItemIndex;
663
- this.tree.keyManager.setFocusOrigin('keyboard');
664
- this.tree.keyManager.onKeydown(event);
665
- if (this.multiple && isArrowKey && event.shiftKey && this.tree.keyManager.activeItem &&
666
- this.tree.keyManager.activeItemIndex !== previouslyFocusedIndex) {
667
- this.tree.keyManager.activeItem.selectViaInteraction(event);
668
- }
669
- if (this.autoSelect && this.tree.keyManager.activeItem) {
670
- this.tree.setSelectedOptionsByKey(this.tree.keyManager.activeItem, hasModifierKey(event, 'shiftKey'), hasModifierKey(event, 'ctrlKey'));
671
- }
672
- if (this.search) {
673
- this.search.focus();
674
- }
675
- }
676
- }
677
- refreshTriggerValues() {
678
- this.triggerValues = this.selectionModel.selected
679
- .map((node) => ({
680
- value: this.tree.treeControl.getValue(node),
681
- viewValue: this.tree.treeControl.getViewValue(node),
682
- disabled: this.tree.treeControl.isDisabled(node)
683
- }));
684
- this.changeDetectorRef.detectChanges();
685
- }
686
- initializeSelection() {
687
- // Defer setting the value in order to avoid the "Expression
688
- // has changed after it was checked" errors from Angular.
689
- Promise.resolve().then(() => {
690
- this.setSelectionByValue(this.ngControl ? this.ngControl.value : this._value);
691
- });
692
- }
693
- /**
694
- * Sets the selected option based on a value. If no option can be
695
- * found with the designated value, the select trigger is cleared.
696
- */
697
- setSelectionByValue(value) {
698
- if (this.multiple && value) {
699
- if (!Array.isArray(value)) {
700
- throw getMcSelectNonArrayValueError();
701
- }
702
- this.tree.setOptionsFromValues(value);
703
- this.sortValues();
704
- }
705
- else {
706
- this.tree.setOptionsFromValues([value]);
707
- }
708
- this.changeDetectorRef.detectChanges();
709
- }
710
- initKeyManager() {
711
- this.originalOnKeyDown = this.tree.onKeyDown;
712
- this.tree.onKeyDown = () => { };
713
- this.tree.keyManager.tabOut
714
- .pipe(takeUntil(this.destroy))
715
- .subscribe(() => {
716
- // Restore focus to the trigger before closing. Ensures that the focus
717
- // position won't be lost if the user got focus into the overlay.
718
- this.focus();
719
- this.close();
720
- });
721
- this.tree.keyManager.change
722
- .pipe(takeUntil(this.destroy))
723
- .subscribe(() => {
724
- if (this._panelOpen && this.panel) {
725
- this.scrollActiveOptionIntoView();
726
- }
727
- else if (!this._panelOpen && !this.multiple && this.tree.keyManager.activeItem) {
728
- this.tree.keyManager.activeItem.selectViaInteraction();
729
- }
730
- });
731
- }
732
- /** Sorts the selected values in the selected based on their order in the panel. */
733
- sortValues() {
734
- if (this.multiple) {
735
- const options = this.options.toArray();
736
- this.selectionModel.sort((a, b) => {
737
- return this.sortComparator ? this.sortComparator(a, b, options) :
738
- options.indexOf(a) - options.indexOf(b);
739
- });
740
- this.stateChanges.next();
741
- }
742
- }
743
- /**
744
- * Highlights the selected item. If no option is selected, it will highlight
745
- * the first item instead.
746
- */
747
- highlightCorrectOption() {
748
- if (this.empty || !this.tree.keyManager) {
749
- return;
750
- }
751
- const firstSelectedValue = this.multiple ? this.selectedValues[0] : this.selectedValues;
752
- const selectedOption = this.options.find((option) => option.value === firstSelectedValue);
753
- if (selectedOption) {
754
- this.tree.keyManager.setFocusOrigin('keyboard');
755
- this.tree.keyManager.setActiveItem(selectedOption);
756
- }
757
- }
758
- /** Scrolls the active option into view. */
759
- scrollActiveOptionIntoView() {
760
- this.tree.keyManager.activeItem?.focus();
761
- }
762
- /**
763
- * Sets the x-offset of the overlay panel in relation to the trigger's top start corner.
764
- * This must be adjusted to align the selected option text over the trigger text when
765
- * the panel opens. Will change based on LTR or RTL text direction. Note that the offset
766
- * can't be calculated until the panel has been attached, because we need to know the
767
- * content width in order to constrain the panel within the viewport.
768
- */
769
- calculateOverlayOffsetX() {
770
- const overlayRect = this.overlayDir.overlayRef.overlayElement.getBoundingClientRect();
771
- const viewportSize = this.viewportRuler.getViewportSize();
772
- const isRtl = this.isRtl();
773
- /* tslint:disable-next-line:no-magic-numbers */
774
- const paddingWidth = SELECT_PANEL_PADDING_X * 2;
775
- let offsetX = SELECT_PANEL_PADDING_X;
776
- // Invert the offset in LTR.
777
- if (!isRtl) {
778
- offsetX *= -1;
779
- }
780
- // Determine how much the select overflows on each side.
781
- const leftOverflow = 0 - (overlayRect.left + offsetX - (isRtl ? paddingWidth : 0));
782
- const rightOverflow = overlayRect.right + offsetX - viewportSize.width
783
- + (isRtl ? 0 : paddingWidth);
784
- // If the element overflows on either side, reduce the offset to allow it to fit.
785
- if (leftOverflow > 0) {
786
- offsetX += leftOverflow + SELECT_PANEL_VIEWPORT_PADDING;
787
- }
788
- else if (rightOverflow > 0) {
789
- offsetX -= rightOverflow + SELECT_PANEL_VIEWPORT_PADDING;
790
- }
791
- // Set the offset directly in order to avoid having to go through change detection and
792
- // potentially triggering "changed after it was checked" errors. Round the value to avoid
793
- // blurry content in some browsers.
794
- this.overlayDir.offsetX = Math.round(offsetX);
795
- this.overlayDir.overlayRef.updatePosition();
796
- }
797
- updateIsEmptySearchResult() {
798
- if (this.search) {
799
- this.search.input.ngControl.valueChanges?.subscribe((value) => {
800
- this.isEmptySearchResult = !!value && this.tree.isEmpty;
801
- this.changeDetectorRef.markForCheck();
802
- });
803
- }
804
- }
805
- }
806
- /** @nocollapse */ /** @nocollapse */ McTreeSelect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McTreeSelect, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.ViewportRuler }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i2.ErrorStateMatcher }, { token: MC_SELECT_SCROLL_STRATEGY }, { token: NG_VALIDATORS, optional: true }, { token: MC_VALIDATION, optional: true }, { token: i3.Directionality, optional: true }, { token: i4.NgForm, optional: true }, { token: i4.FormGroupDirective, optional: true }, { token: i5.McFormField, optional: true }, { token: i4.NgControl, optional: true, self: true }, { token: i4.NgModel, optional: true, self: true }, { token: i4.FormControlName, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component });
807
- /** @nocollapse */ /** @nocollapse */ McTreeSelect.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.7", type: McTreeSelect, selector: "mc-tree-select", inputs: { disabled: "disabled", tabIndex: "tabIndex", hiddenItemsText: "hiddenItemsText", panelClass: "panelClass", backdropClass: "backdropClass", errorStateMatcher: "errorStateMatcher", sortComparator: "sortComparator", placeholder: "placeholder", required: "required", multiple: "multiple", autoSelect: "autoSelect", compareWith: "compareWith", id: "id", hasBackdrop: "hasBackdrop", hiddenItemsTextFormatter: "hiddenItemsTextFormatter" }, outputs: { openedChange: "openedChange", openedStream: "opened", closedStream: "closed", selectionChange: "selectionChange", valueChange: "valueChange" }, host: { listeners: { "click": "toggle()", "keydown": "handleKeydown($event)", "focus": "onFocus()", "blur": "onBlur()", "window:resize": "calculateHiddenItems()" }, properties: { "class.mc-disabled": "disabled", "class.mc-invalid": "errorState", "attr.id": "id", "attr.tabindex": "tabIndex", "attr.disabled": "disabled || null" }, classAttribute: "mc-tree-select" }, providers: [
808
- { provide: McFormFieldControl, useExisting: McTreeSelect },
809
- { provide: McTree, useExisting: McTreeSelect }
810
- ], queries: [{ propertyName: "cleaner", first: true, predicate: ["mcSelectCleaner"], descendants: true, static: true }, { propertyName: "customTrigger", first: true, predicate: McTreeSelectTrigger, descendants: true }, { propertyName: "tree", first: true, predicate: McTreeSelection, descendants: true }, { propertyName: "search", first: true, predicate: McSelectSearch, descendants: true }], viewQueries: [{ propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true }, { propertyName: "panel", first: true, predicate: ["panel"], descendants: true }, { propertyName: "overlayDir", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "tags", predicate: McTag, descendants: true }], exportAs: ["mcTreeSelect"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div cdk-overlay-origin\r\n class=\"mc-tree-select__trigger\"\r\n [class.mc-tree-select__trigger_multiple]=\"multiple\"\r\n #origin=\"cdkOverlayOrigin\"\r\n #trigger>\r\n <div class=\"mc-tree-select__matcher\" [ngSwitch]=\"empty\">\r\n <span class=\"mc-tree-select__placeholder\" *ngSwitchCase=\"true\">{{ placeholder || '\\u00A0' }}</span>\r\n <span *ngSwitchCase=\"false\" [ngSwitch]=\"!!customTrigger\">\r\n <div *ngSwitchDefault [ngSwitch]=\"multiple\" class=\"mc-tree-select__match-container\">\r\n <span *ngSwitchCase=\"false\" class=\"mc-tree-select__matcher-text\">{{ triggerValue }}</span>\r\n <div *ngSwitchCase=\"true\" class=\"mc-tree-select__multiple-matcher\">\r\n <div class=\"mc-tree-select__match-list\">\r\n <mc-tag *ngFor=\"let triggerValue of triggerValues\"\r\n [selectable]=\"false\"\r\n [disabled]=\"triggerValue.disabled || disabled\"\r\n [class.mc-error]=\"errorState\">\r\n\r\n {{ triggerValue.viewValue }}\r\n <i mc-icon=\"mc-close-S_16\"\r\n *ngIf=\"!triggerValue.disabled && !disabled\"\r\n (click)=\"onRemoveSelectedOption(triggerValue, $event)\">\r\n </i>\r\n </mc-tag>\r\n </div>\r\n <div class=\"mc-tree-select__match-hidden-text\" [style.display]=\"hiddenItems > 0 ? 'block' : 'none'\">\r\n {{ hiddenItemsTextFormatter(hiddenItemsText, hiddenItems) }}\r\n </div>\r\n </div>\r\n </div>\r\n <ng-content select=\"mc-tree-select-trigger\" *ngSwitchCase=\"true\"></ng-content>\r\n </span>\r\n </div>\r\n\r\n <div class=\"mc-select__cleaner\" *ngIf=\"canShowCleaner\" (click)=\"clearValue($event)\">\r\n <ng-content select=\"mc-cleaner\"></ng-content>\r\n </div>\r\n\r\n <div class=\"mc-tree-select__arrow-wrapper\">\r\n <i class=\"mc-tree-select__arrow\" mc-icon=\"mc-angle-down-S_16\"></i>\r\n </div>\r\n</div>\r\n\r\n<ng-template\r\n cdk-connected-overlay\r\n cdkConnectedOverlayLockPosition\r\n [cdkConnectedOverlayHasBackdrop]=\"hasBackdrop\"\r\n [cdkConnectedOverlayBackdropClass]=\"backdropClass\"\r\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\r\n [cdkConnectedOverlayOrigin]=\"origin\"\r\n [cdkConnectedOverlayOpen]=\"panelOpen\"\r\n [cdkConnectedOverlayPositions]=\"positions\"\r\n [cdkConnectedOverlayMinWidth]=\"triggerRect?.width!\"\r\n [cdkConnectedOverlayOffsetY]=\"offsetY\"\r\n (backdropClick)=\"close()\"\r\n (attach)=\"onAttached()\"\r\n (detach)=\"close()\">\r\n\r\n <div #panel\r\n class=\"mc-tree-select__panel {{ getPanelTheme() }}\"\r\n [ngClass]=\"panelClass\"\r\n [style.transformOrigin]=\"transformOrigin\"\r\n [style.font-size.px]=\"triggerFontSize\"\r\n (keydown)=\"handleKeydown($event)\">\r\n\r\n <div *ngIf=\"search\" class=\"mc-select__search-container\">\r\n <ng-content select=\"[mcSelectSearch]\"></ng-content>\r\n </div>\r\n\r\n <div *ngIf=\"isEmptySearchResult\" class=\"mc-select__no-options-message\">\r\n <ng-content select=\"[mc-select-search-empty-result]\"></ng-content>\r\n </div>\r\n\r\n <div #optionsContainer\r\n class=\"mc-tree-select__content\"\r\n [@fadeInContent]=\"'showing'\"\r\n (@fadeInContent.done)=\"panelDoneAnimatingStream.next($event.toState)\">\r\n <ng-content select=\"mc-tree-selection\"></ng-content>\r\n </div>\r\n\r\n <ng-content select=\"[mc-tree-selection-footer]\"></ng-content>\r\n </div>\r\n</ng-template>\r\n", styles: [".mc-option{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;position:relative;max-width:100%;height:var(--mc-option-size-height, 32px);border:var(--mc-option-size-border-width, 2px) solid transparent;cursor:pointer;outline:none;padding-left:var(--mc-option-size-horizontal-padding, 12px);padding-right:var(--mc-option-size-horizontal-padding, 12px);-webkit-tap-highlight-color:transparent}.mc-option.mc-disabled{cursor:default}.mc-option .mc-pseudo-checkbox{margin-right:8px}.mc-option .mc-option-overlay{position:absolute;top:calc(-1 * var(--mc-option-size-border-width, 2px));left:calc(-1 * var(--mc-option-size-border-width, 2px));right:calc(-1 * var(--mc-option-size-border-width, 2px));bottom:calc(-1 * var(--mc-option-size-border-width, 2px));pointer-events:none;border-radius:inherit}.mc-option-text{display:inline-block;flex-grow:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.mc-tree-select{box-sizing:border-box;display:inline-block;width:100%;outline:none}.mc-tree-select.mc-disabled .mc-tree-select__trigger{-webkit-user-select:none;user-select:none;cursor:default}.mc-tree-select__trigger{display:flex;box-sizing:border-box;position:relative;height:var(--mc-form-field-size-height, 32px);cursor:pointer;padding-left:calc(var(--mc-select-size-left-padding, 12px) - var(--mc-form-field-size-border-width, 1px));padding-right:calc(var(--mc-select-size-right-padding, 6px) - var(--mc-form-field-size-border-width, 1px))}.mc-tree-select__trigger.mc-tree-select__trigger_multiple{padding-left:calc(var(--mc-select-size-left-padding-multiple, 12px) - var(--mc-form-field-size-border-width, 1px))}.mc-tree-select__trigger.mc-tree-select__trigger_multiple .mc-tree-select__placeholder{margin-left:8px}.mc-tree-select__trigger.mc-tree-select__trigger_multiple .mc-tag.mc-disabled .mc-tag__text{margin-right:7px}.mc-tree-select__matcher{display:flex;align-items:center;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mc-tree-select__matcher>span{width:100%}.mc-tree-select__multiple-matcher{display:flex;width:100%}.mc-tree-select__match-list{display:flex;flex-wrap:wrap;overflow:hidden;max-height:calc(var(--mc-form-field-size-height, 32px) - var(--mc-form-field-size-border-width, 1px) * 2)}.mc-tree-select__match-list .mc-tag{margin-right:4px}.mc-tree-select__match-container{display:flex;flex-direction:row;justify-content:space-between;width:100%}.mc-tree-select__match-container .mc-tree-select__match-hidden-text{flex:0 0 70px;align-self:center;padding:0 8px;text-align:right}.mc-tree-select__match-item{display:flex;border:1px solid transparent;border-radius:3px;padding-left:7px;margin-right:4px;max-width:100%}.mc-tree-select__arrow-wrapper{align-self:center}.mc-form-field-appearance-fill .mc-tree-select__arrow-wrapper,.mc-form-field-appearance-standard .mc-tree-select__arrow-wrapper{transform:translateY(-50%)}.mc-form-field-appearance-outline .mc-tree-select__arrow-wrapper{transform:translateY(-25%)}.mc-tree-select__panel{min-width:100%;border-width:var(--mc-select-panel-size-border-width, 1px);border-style:solid;border-bottom-left-radius:var(--mc-select-panel-size-border-radius, 4px);border-bottom-right-radius:var(--mc-select-panel-size-border-radius, 4px)}.mc-tree-select__panel .mc-optgroup-label,.mc-tree-select__panel .mc-tree-select-option{font-size:inherit;line-height:var(--mc-option-size-height, 32px);height:var(--mc-option-size-height, 32px)}.mc-tree-select__content{max-height:var(--mc-select-panel-size-max-height, 232px);overflow:auto}.mc-tree-select__content .mc-tree-selection{height:100%}.mc-form-field-type-select:not(.mc-disabled) .mc-form-field-flex{cursor:pointer}.mc-select__no-options-message{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;position:relative;max-width:100%;height:var(--mc-option-size-height, 32px);cursor:default;outline:none;padding-left:var(--mc-option-size-horizontal-padding, 12px);padding-right:var(--mc-option-size-horizontal-padding, 12px)}.mc-select__search-container{border-bottom-width:1px;border-bottom-style:solid}\n"], components: [{ type: i6.McTag, selector: "mc-tag, [mc-tag], mc-basic-tag, [mc-basic-tag]", inputs: ["color", "selected", "value", "selectable", "removable", "disabled"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["mcTag"] }, { type: i7.McIcon, selector: "[mc-icon]", inputs: ["color"] }], directives: [{ type: i1.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { type: i8.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i8.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i8.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.McIconCSSStyler, selector: "[mc-icon]" }, { type: i1.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], animations: [
811
- mcSelectAnimations.transformPanel,
812
- mcSelectAnimations.fadeInContent
813
- ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
814
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McTreeSelect, decorators: [{
815
- type: Component,
816
- args: [{ selector: 'mc-tree-select', exportAs: 'mcTreeSelect', inputs: ['disabled', 'tabIndex'], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
817
- class: 'mc-tree-select',
818
- '[class.mc-disabled]': 'disabled',
819
- '[class.mc-invalid]': 'errorState',
820
- '[attr.id]': 'id',
821
- '[attr.tabindex]': 'tabIndex',
822
- '[attr.disabled]': 'disabled || null',
823
- '(click)': 'toggle()',
824
- '(keydown)': 'handleKeydown($event)',
825
- '(focus)': 'onFocus()',
826
- '(blur)': 'onBlur()',
827
- '(window:resize)': 'calculateHiddenItems()'
828
- }, animations: [
829
- mcSelectAnimations.transformPanel,
830
- mcSelectAnimations.fadeInContent
831
- ], providers: [
832
- { provide: McFormFieldControl, useExisting: McTreeSelect },
833
- { provide: McTree, useExisting: McTreeSelect }
834
- ], template: "<div cdk-overlay-origin\r\n class=\"mc-tree-select__trigger\"\r\n [class.mc-tree-select__trigger_multiple]=\"multiple\"\r\n #origin=\"cdkOverlayOrigin\"\r\n #trigger>\r\n <div class=\"mc-tree-select__matcher\" [ngSwitch]=\"empty\">\r\n <span class=\"mc-tree-select__placeholder\" *ngSwitchCase=\"true\">{{ placeholder || '\\u00A0' }}</span>\r\n <span *ngSwitchCase=\"false\" [ngSwitch]=\"!!customTrigger\">\r\n <div *ngSwitchDefault [ngSwitch]=\"multiple\" class=\"mc-tree-select__match-container\">\r\n <span *ngSwitchCase=\"false\" class=\"mc-tree-select__matcher-text\">{{ triggerValue }}</span>\r\n <div *ngSwitchCase=\"true\" class=\"mc-tree-select__multiple-matcher\">\r\n <div class=\"mc-tree-select__match-list\">\r\n <mc-tag *ngFor=\"let triggerValue of triggerValues\"\r\n [selectable]=\"false\"\r\n [disabled]=\"triggerValue.disabled || disabled\"\r\n [class.mc-error]=\"errorState\">\r\n\r\n {{ triggerValue.viewValue }}\r\n <i mc-icon=\"mc-close-S_16\"\r\n *ngIf=\"!triggerValue.disabled && !disabled\"\r\n (click)=\"onRemoveSelectedOption(triggerValue, $event)\">\r\n </i>\r\n </mc-tag>\r\n </div>\r\n <div class=\"mc-tree-select__match-hidden-text\" [style.display]=\"hiddenItems > 0 ? 'block' : 'none'\">\r\n {{ hiddenItemsTextFormatter(hiddenItemsText, hiddenItems) }}\r\n </div>\r\n </div>\r\n </div>\r\n <ng-content select=\"mc-tree-select-trigger\" *ngSwitchCase=\"true\"></ng-content>\r\n </span>\r\n </div>\r\n\r\n <div class=\"mc-select__cleaner\" *ngIf=\"canShowCleaner\" (click)=\"clearValue($event)\">\r\n <ng-content select=\"mc-cleaner\"></ng-content>\r\n </div>\r\n\r\n <div class=\"mc-tree-select__arrow-wrapper\">\r\n <i class=\"mc-tree-select__arrow\" mc-icon=\"mc-angle-down-S_16\"></i>\r\n </div>\r\n</div>\r\n\r\n<ng-template\r\n cdk-connected-overlay\r\n cdkConnectedOverlayLockPosition\r\n [cdkConnectedOverlayHasBackdrop]=\"hasBackdrop\"\r\n [cdkConnectedOverlayBackdropClass]=\"backdropClass\"\r\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\r\n [cdkConnectedOverlayOrigin]=\"origin\"\r\n [cdkConnectedOverlayOpen]=\"panelOpen\"\r\n [cdkConnectedOverlayPositions]=\"positions\"\r\n [cdkConnectedOverlayMinWidth]=\"triggerRect?.width!\"\r\n [cdkConnectedOverlayOffsetY]=\"offsetY\"\r\n (backdropClick)=\"close()\"\r\n (attach)=\"onAttached()\"\r\n (detach)=\"close()\">\r\n\r\n <div #panel\r\n class=\"mc-tree-select__panel {{ getPanelTheme() }}\"\r\n [ngClass]=\"panelClass\"\r\n [style.transformOrigin]=\"transformOrigin\"\r\n [style.font-size.px]=\"triggerFontSize\"\r\n (keydown)=\"handleKeydown($event)\">\r\n\r\n <div *ngIf=\"search\" class=\"mc-select__search-container\">\r\n <ng-content select=\"[mcSelectSearch]\"></ng-content>\r\n </div>\r\n\r\n <div *ngIf=\"isEmptySearchResult\" class=\"mc-select__no-options-message\">\r\n <ng-content select=\"[mc-select-search-empty-result]\"></ng-content>\r\n </div>\r\n\r\n <div #optionsContainer\r\n class=\"mc-tree-select__content\"\r\n [@fadeInContent]=\"'showing'\"\r\n (@fadeInContent.done)=\"panelDoneAnimatingStream.next($event.toState)\">\r\n <ng-content select=\"mc-tree-selection\"></ng-content>\r\n </div>\r\n\r\n <ng-content select=\"[mc-tree-selection-footer]\"></ng-content>\r\n </div>\r\n</ng-template>\r\n", styles: [".mc-option{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;position:relative;max-width:100%;height:var(--mc-option-size-height, 32px);border:var(--mc-option-size-border-width, 2px) solid transparent;cursor:pointer;outline:none;padding-left:var(--mc-option-size-horizontal-padding, 12px);padding-right:var(--mc-option-size-horizontal-padding, 12px);-webkit-tap-highlight-color:transparent}.mc-option.mc-disabled{cursor:default}.mc-option .mc-pseudo-checkbox{margin-right:8px}.mc-option .mc-option-overlay{position:absolute;top:calc(-1 * var(--mc-option-size-border-width, 2px));left:calc(-1 * var(--mc-option-size-border-width, 2px));right:calc(-1 * var(--mc-option-size-border-width, 2px));bottom:calc(-1 * var(--mc-option-size-border-width, 2px));pointer-events:none;border-radius:inherit}.mc-option-text{display:inline-block;flex-grow:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.mc-tree-select{box-sizing:border-box;display:inline-block;width:100%;outline:none}.mc-tree-select.mc-disabled .mc-tree-select__trigger{-webkit-user-select:none;user-select:none;cursor:default}.mc-tree-select__trigger{display:flex;box-sizing:border-box;position:relative;height:var(--mc-form-field-size-height, 32px);cursor:pointer;padding-left:calc(var(--mc-select-size-left-padding, 12px) - var(--mc-form-field-size-border-width, 1px));padding-right:calc(var(--mc-select-size-right-padding, 6px) - var(--mc-form-field-size-border-width, 1px))}.mc-tree-select__trigger.mc-tree-select__trigger_multiple{padding-left:calc(var(--mc-select-size-left-padding-multiple, 12px) - var(--mc-form-field-size-border-width, 1px))}.mc-tree-select__trigger.mc-tree-select__trigger_multiple .mc-tree-select__placeholder{margin-left:8px}.mc-tree-select__trigger.mc-tree-select__trigger_multiple .mc-tag.mc-disabled .mc-tag__text{margin-right:7px}.mc-tree-select__matcher{display:flex;align-items:center;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mc-tree-select__matcher>span{width:100%}.mc-tree-select__multiple-matcher{display:flex;width:100%}.mc-tree-select__match-list{display:flex;flex-wrap:wrap;overflow:hidden;max-height:calc(var(--mc-form-field-size-height, 32px) - var(--mc-form-field-size-border-width, 1px) * 2)}.mc-tree-select__match-list .mc-tag{margin-right:4px}.mc-tree-select__match-container{display:flex;flex-direction:row;justify-content:space-between;width:100%}.mc-tree-select__match-container .mc-tree-select__match-hidden-text{flex:0 0 70px;align-self:center;padding:0 8px;text-align:right}.mc-tree-select__match-item{display:flex;border:1px solid transparent;border-radius:3px;padding-left:7px;margin-right:4px;max-width:100%}.mc-tree-select__arrow-wrapper{align-self:center}.mc-form-field-appearance-fill .mc-tree-select__arrow-wrapper,.mc-form-field-appearance-standard .mc-tree-select__arrow-wrapper{transform:translateY(-50%)}.mc-form-field-appearance-outline .mc-tree-select__arrow-wrapper{transform:translateY(-25%)}.mc-tree-select__panel{min-width:100%;border-width:var(--mc-select-panel-size-border-width, 1px);border-style:solid;border-bottom-left-radius:var(--mc-select-panel-size-border-radius, 4px);border-bottom-right-radius:var(--mc-select-panel-size-border-radius, 4px)}.mc-tree-select__panel .mc-optgroup-label,.mc-tree-select__panel .mc-tree-select-option{font-size:inherit;line-height:var(--mc-option-size-height, 32px);height:var(--mc-option-size-height, 32px)}.mc-tree-select__content{max-height:var(--mc-select-panel-size-max-height, 232px);overflow:auto}.mc-tree-select__content .mc-tree-selection{height:100%}.mc-form-field-type-select:not(.mc-disabled) .mc-form-field-flex{cursor:pointer}.mc-select__no-options-message{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;position:relative;max-width:100%;height:var(--mc-option-size-height, 32px);cursor:default;outline:none;padding-left:var(--mc-option-size-horizontal-padding, 12px);padding-right:var(--mc-option-size-horizontal-padding, 12px)}.mc-select__search-container{border-bottom-width:1px;border-bottom-style:solid}\n"] }]
835
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.ViewportRuler }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i2.ErrorStateMatcher }, { type: undefined, decorators: [{
836
- type: Inject,
837
- args: [MC_SELECT_SCROLL_STRATEGY]
838
- }] }, { type: undefined, decorators: [{
839
- type: Optional
840
- }, {
841
- type: Inject,
842
- args: [NG_VALIDATORS]
843
- }] }, { type: undefined, decorators: [{
844
- type: Optional
845
- }, {
846
- type: Inject,
847
- args: [MC_VALIDATION]
848
- }] }, { type: i3.Directionality, decorators: [{
849
- type: Optional
850
- }] }, { type: i4.NgForm, decorators: [{
851
- type: Optional
852
- }] }, { type: i4.FormGroupDirective, decorators: [{
853
- type: Optional
854
- }] }, { type: i5.McFormField, decorators: [{
855
- type: Optional
856
- }] }, { type: i4.NgControl, decorators: [{
857
- type: Optional
858
- }, {
859
- type: Self
860
- }] }, { type: i4.NgModel, decorators: [{
861
- type: Optional
862
- }, {
863
- type: Self
864
- }] }, { type: i4.FormControlName, decorators: [{
865
- type: Optional
866
- }, {
867
- type: Self
868
- }] }]; }, propDecorators: { trigger: [{
869
- type: ViewChild,
870
- args: ['trigger', { static: false }]
871
- }], panel: [{
872
- type: ViewChild,
873
- args: ['panel', { static: false }]
874
- }], overlayDir: [{
875
- type: ViewChild,
876
- args: [CdkConnectedOverlay, { static: false }]
877
- }], tags: [{
878
- type: ViewChildren,
879
- args: [McTag]
880
- }], cleaner: [{
881
- type: ContentChild,
882
- args: ['mcSelectCleaner', { static: true }]
883
- }], customTrigger: [{
884
- type: ContentChild,
885
- args: [McTreeSelectTrigger, { static: false }]
886
- }], tree: [{
887
- type: ContentChild,
888
- args: [McTreeSelection, { static: false }]
889
- }], search: [{
890
- type: ContentChild,
891
- args: [McSelectSearch, { static: false }]
892
- }], hiddenItemsText: [{
893
- type: Input
894
- }], openedChange: [{
895
- type: Output
896
- }], openedStream: [{
897
- type: Output,
898
- args: ['opened']
899
- }], closedStream: [{
900
- type: Output,
901
- args: ['closed']
902
- }], selectionChange: [{
903
- type: Output
904
- }], valueChange: [{
905
- type: Output
906
- }], panelClass: [{
907
- type: Input
908
- }], backdropClass: [{
909
- type: Input
910
- }], errorStateMatcher: [{
911
- type: Input
912
- }], sortComparator: [{
913
- type: Input
914
- }], placeholder: [{
915
- type: Input
916
- }], required: [{
917
- type: Input
918
- }], multiple: [{
919
- type: Input
920
- }], autoSelect: [{
921
- type: Input
922
- }], compareWith: [{
923
- type: Input
924
- }], id: [{
925
- type: Input
926
- }], hasBackdrop: [{
927
- type: Input
928
- }], hiddenItemsTextFormatter: [{
929
- type: Input
26
+ /* tslint:disable:no-empty */
27
+ let nextUniqueId = 0;
28
+ /** Change event object that is emitted when the select value has changed. */
29
+ class McTreeSelectChange {
30
+ constructor(source, value, isUserInput = false) {
31
+ this.source = source;
32
+ this.value = value;
33
+ this.isUserInput = isUserInput;
34
+ }
35
+ }
36
+ class McTreeSelectTrigger {
37
+ }
38
+ /** @nocollapse */ /** @nocollapse */ McTreeSelectTrigger.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McTreeSelectTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });
39
+ /** @nocollapse */ /** @nocollapse */ McTreeSelectTrigger.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: McTreeSelectTrigger, selector: "mc-tree-select-trigger", ngImport: i0 });
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McTreeSelectTrigger, decorators: [{
41
+ type: Directive,
42
+ args: [{ selector: 'mc-tree-select-trigger' }]
43
+ }] });
44
+ class McTreeSelectFooter {
45
+ }
46
+ /** @nocollapse */ /** @nocollapse */ McTreeSelectFooter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McTreeSelectFooter, deps: [], target: i0.ɵɵFactoryTarget.Directive });
47
+ /** @nocollapse */ /** @nocollapse */ McTreeSelectFooter.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: McTreeSelectFooter, selector: "mc-tree-select-footer", ngImport: i0 });
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McTreeSelectFooter, decorators: [{
49
+ type: Directive,
50
+ args: [{ selector: 'mc-tree-select-footer' }]
51
+ }] });
52
+ class McTreeSelectBase {
53
+ constructor(elementRef, defaultErrorStateMatcher, parentForm, parentFormGroup, ngControl) {
54
+ this.elementRef = elementRef;
55
+ this.defaultErrorStateMatcher = defaultErrorStateMatcher;
56
+ this.parentForm = parentForm;
57
+ this.parentFormGroup = parentFormGroup;
58
+ this.ngControl = ngControl;
59
+ }
60
+ }
61
+ // tslint:disable-next-line:naming-convention
62
+ const McTreeSelectMixinBase = mixinTabIndex(mixinDisabled(mixinErrorState(McTreeSelectBase)));
63
+ class McTreeSelect extends McTreeSelectMixinBase {
64
+ constructor(elementRef, changeDetectorRef, viewportRuler, ngZone, renderer, defaultErrorStateMatcher, scrollStrategyFactory, rawValidators, mcValidation, dir, parentForm, parentFormGroup, parentFormField, ngControl, ngModel, formControlName) {
65
+ super(elementRef, defaultErrorStateMatcher, parentForm, parentFormGroup, ngControl);
66
+ this.changeDetectorRef = changeDetectorRef;
67
+ this.viewportRuler = viewportRuler;
68
+ this.ngZone = ngZone;
69
+ this.renderer = renderer;
70
+ this.scrollStrategyFactory = scrollStrategyFactory;
71
+ this.rawValidators = rawValidators;
72
+ this.mcValidation = mcValidation;
73
+ this.dir = dir;
74
+ this.parentFormField = parentFormField;
75
+ this.ngModel = ngModel;
76
+ this.formControlName = formControlName;
77
+ /** A name for this control that can be used by `mc-form-field`. */
78
+ this.controlType = 'select';
79
+ this.hiddenItems = 0;
80
+ /** The cached font-size of the trigger element. */
81
+ this.triggerFontSize = 0;
82
+ /** The value of the select panel's transform-origin property. */
83
+ this.transformOrigin = 'top';
84
+ /** Emits when the panel element is finished transforming in. */
85
+ this.panelDoneAnimatingStream = new Subject();
86
+ /** Strategy that will be used to handle scrolling while the select panel is open. */
87
+ this.scrollStrategy = this.scrollStrategyFactory();
88
+ /**
89
+ * The y-offset of the overlay panel in relation to the trigger's top start corner.
90
+ * This must be adjusted to align the selected option text over the trigger text.
91
+ * when the panel opens. Will change based on the y-position of the selected option.
92
+ */
93
+ this.offsetY = 0;
94
+ /**
95
+ * This position config ensures that the top "start" corner of the overlay
96
+ * is aligned with with the top "start" of the origin by default (overlapping
97
+ * the trigger completely). If the panel cannot fit below the trigger, it
98
+ * will fall back to a position above the trigger.
99
+ */
100
+ this.positions = [
101
+ {
102
+ originX: 'start',
103
+ originY: 'bottom',
104
+ overlayX: 'start',
105
+ overlayY: 'top'
106
+ },
107
+ {
108
+ originX: 'start',
109
+ originY: 'top',
110
+ overlayX: 'start',
111
+ overlayY: 'bottom'
112
+ }
113
+ ];
114
+ this.hiddenItemsText = '...ещё';
115
+ /** Event emitted when the select panel has been toggled. */
116
+ this.openedChange = new EventEmitter();
117
+ /** Event emitted when the select has been opened. */
118
+ this.openedStream = this.openedChange.pipe(filter((o) => o), map(() => { }));
119
+ /** Event emitted when the select has been closed. */
120
+ this.closedStream = this.openedChange.pipe(filter((o) => !o), map(() => { }));
121
+ /** Event emitted when the selected value has been changed by the user. */
122
+ this.selectionChange = new EventEmitter();
123
+ /**
124
+ * Event that emits whenever the raw value of the select changes. This is here primarily
125
+ * to facilitate the two-way binding for the `value` input.
126
+ * @docs-private
127
+ */
128
+ this.valueChange = new EventEmitter();
129
+ this.backdropClass = 'cdk-overlay-transparent-backdrop';
130
+ /** Combined stream of all of the child options' change events. */
131
+ this.optionSelectionChanges = defer(() => {
132
+ if (this.options) {
133
+ return this.options.changes.pipe(startWith(this.options), switchMap(() => merge(...this.options.map((option) => option.onSelectionChange))));
134
+ }
135
+ return this.ngZone.onStable
136
+ .asObservable()
137
+ .pipe(take(1), switchMap(() => this.optionSelectionChanges));
138
+ });
139
+ this._required = false;
140
+ this._multiple = false;
141
+ this._autoSelect = true;
142
+ this._value = null;
143
+ this._hasBackdrop = false;
144
+ this._disabled = false;
145
+ this._focused = false;
146
+ this.triggerValues = [];
147
+ this.closeSubscription = Subscription.EMPTY;
148
+ this._panelOpen = false;
149
+ /** The scroll position of the overlay panel, calculated to center the selected option. */
150
+ this.scrollTop = 0;
151
+ /** Unique id for this input. */
152
+ this.uid = `mc-select-${nextUniqueId++}`;
153
+ /** Emits whenever the component is destroyed. */
154
+ this.destroy = new Subject();
155
+ /** `View -> model callback called when value changes` */
156
+ this.onChange = () => { };
157
+ /** `View -> model callback called when select has been touched` */
158
+ this.onTouched = () => { };
159
+ /** Comparison function to specify which option is displayed. Defaults to object equality. */
160
+ this._compareWith = (o1, o2) => o1 === o2;
161
+ if (this.ngControl) {
162
+ // Note: we provide the value accessor through here, instead of
163
+ // the `providers` to avoid running into a circular import.
164
+ this.ngControl.valueAccessor = this;
165
+ }
166
+ // Force setter to be called in case id was not specified.
167
+ this.id = this.id;
168
+ }
169
+ get placeholder() {
170
+ return this._placeholder;
171
+ }
172
+ set placeholder(value) {
173
+ this._placeholder = value;
174
+ this.stateChanges.next();
175
+ }
176
+ get required() {
177
+ return this._required;
178
+ }
179
+ set required(value) {
180
+ this._required = coerceBooleanProperty(value);
181
+ this.stateChanges.next();
182
+ }
183
+ get multiple() {
184
+ return this._multiple;
185
+ }
186
+ set multiple(value) {
187
+ if (this.selectionModel) {
188
+ throw getMcSelectDynamicMultipleError();
189
+ }
190
+ this._multiple = coerceBooleanProperty(value);
191
+ }
192
+ get autoSelect() {
193
+ if (this.multiple) {
194
+ return false;
195
+ }
196
+ return this._autoSelect;
197
+ }
198
+ set autoSelect(value) {
199
+ this._autoSelect = coerceBooleanProperty(value);
200
+ }
201
+ /**
202
+ * Function to compare the option values with the selected values. The first argument
203
+ * is a value from an option. The second is a value from the selection. A boolean
204
+ * should be returned.
205
+ */
206
+ get compareWith() {
207
+ return this._compareWith;
208
+ }
209
+ set compareWith(fn) {
210
+ /* tslint:disable-next-line:strict-type-predicates */
211
+ if (typeof fn !== 'function') {
212
+ throw getMcSelectNonFunctionValueError();
213
+ }
214
+ this._compareWith = fn;
215
+ if (this.selectionModel) {
216
+ // A different comparator means the selection could change.
217
+ this.initializeSelection();
218
+ }
219
+ }
220
+ get value() {
221
+ return this.tree.getSelectedValues();
222
+ }
223
+ get id() {
224
+ return this._id;
225
+ }
226
+ set id(value) {
227
+ this._id = value || this.uid;
228
+ this.stateChanges.next();
229
+ }
230
+ get hasBackdrop() {
231
+ return this._hasBackdrop;
232
+ }
233
+ set hasBackdrop(value) {
234
+ this._hasBackdrop = coerceBooleanProperty(value);
235
+ }
236
+ get disabled() {
237
+ return this._disabled;
238
+ }
239
+ set disabled(value) {
240
+ this._disabled = coerceBooleanProperty(value);
241
+ if (this.parentFormField) {
242
+ this._disabled ? this.parentFormField.stopFocusMonitor() : this.parentFormField.runFocusMonitor();
243
+ }
244
+ }
245
+ /** Whether the select is focused. */
246
+ get focused() {
247
+ return this._focused || this._panelOpen;
248
+ }
249
+ set focused(value) {
250
+ this._focused = value;
251
+ }
252
+ get panelOpen() {
253
+ return this._panelOpen;
254
+ }
255
+ get canShowCleaner() {
256
+ return !this.disabled && this.cleaner && this.selectionModel.hasValue();
257
+ }
258
+ ngOnInit() {
259
+ this.stateChanges.next();
260
+ // We need `distinctUntilChanged` here, because some browsers will
261
+ // fire the animation end event twice for the same animation. See:
262
+ // https://github.com/angular/angular/issues/24084
263
+ this.panelDoneAnimatingStream
264
+ .pipe(distinctUntilChanged(), takeUntil(this.destroy))
265
+ .subscribe(() => {
266
+ if (this.panelOpen) {
267
+ this.scrollTop = 0;
268
+ if (this.search) {
269
+ this.search.focus();
270
+ }
271
+ this.openedChange.emit(true);
272
+ }
273
+ else {
274
+ this.openedChange.emit(false);
275
+ this.overlayDir.offsetX = 0;
276
+ this.changeDetectorRef.markForCheck();
277
+ }
278
+ });
279
+ }
280
+ ngAfterContentInit() {
281
+ if (!this.tree) {
282
+ return;
283
+ }
284
+ if (this.mcValidation.useValidation) {
285
+ setMosaicValidation(this, this.changeDetectorRef);
286
+ }
287
+ this.tree.resetFocusedItemOnBlur = false;
288
+ this.selectionModel = this.tree.selectionModel = new SelectionModel(this.multiple);
289
+ this.selectionModel.changed
290
+ .subscribe(() => {
291
+ this.onChange(this.selectedValues);
292
+ if (this.multiple) {
293
+ this.refreshTriggerValues();
294
+ }
295
+ });
296
+ this.tree.ngAfterContentInit();
297
+ this.initKeyManager();
298
+ this.options = this.tree.renderedOptions;
299
+ this.tree.autoSelect = this.autoSelect;
300
+ if (this.tree.multipleMode === null) {
301
+ this.tree.multipleMode = this.multiple ? MultipleMode.CHECKBOX : null;
302
+ }
303
+ if (this.multiple) {
304
+ this.tree.noUnselectLast = false;
305
+ }
306
+ if (this.tempValues) {
307
+ this.setSelectionByValue(this.tempValues);
308
+ this.tempValues = null;
309
+ }
310
+ this.optionSelectionChanges
311
+ .pipe(takeUntil(this.destroy))
312
+ .subscribe((event) => {
313
+ if (!this.multiple && this.panelOpen && event.isUserInput) {
314
+ this.close();
315
+ }
316
+ });
317
+ this.tree.selectionChange
318
+ .pipe(takeUntil(this.destroy))
319
+ .subscribe((event) => {
320
+ this.onChange(this.selectedValues);
321
+ this.selectionChange.emit(new McTreeSelectChange(this, event.option));
322
+ if (this.search) {
323
+ this.search.focus();
324
+ }
325
+ });
326
+ this.selectionModel.changed
327
+ .pipe(takeUntil(this.destroy))
328
+ .subscribe((event) => {
329
+ if (event.added.length) {
330
+ this.tree.keyManager.setFocusOrigin('program');
331
+ this.tree.keyManager.setActiveItem(this.options.find((option) => option.data === event.added[0]));
332
+ }
333
+ });
334
+ this.updateIsEmptySearchResult();
335
+ }
336
+ ngAfterViewInit() {
337
+ if (!this.tree) {
338
+ return;
339
+ }
340
+ this.tags.changes
341
+ .subscribe(() => {
342
+ setTimeout(() => this.calculateHiddenItems(), 0);
343
+ });
344
+ setTimeout(() => this.calculateHiddenItems(), 0);
345
+ }
346
+ ngDoCheck() {
347
+ if (this.ngControl) {
348
+ this.updateErrorState();
349
+ }
350
+ }
351
+ ngOnChanges(changes) {
352
+ // Updating the disabled state is handled by `mixinDisabled`, but we need to additionally let
353
+ // the parent form field know to run change detection when the disabled state changes.
354
+ if (changes.disabled) {
355
+ this.stateChanges.next();
356
+ }
357
+ }
358
+ ngOnDestroy() {
359
+ this.destroy.next();
360
+ this.destroy.complete();
361
+ this.stateChanges.complete();
362
+ this.closeSubscription.unsubscribe();
363
+ }
364
+ hiddenItemsTextFormatter(hiddenItemsText, hiddenItems) {
365
+ return `${hiddenItemsText} ${hiddenItems}`;
366
+ }
367
+ clearValue($event) {
368
+ $event.stopPropagation();
369
+ this.selectionModel.clear();
370
+ this.tree.keyManager.setActiveItem(-1);
371
+ this.setSelectionByValue([]);
372
+ this.onChange(this.selectedValues);
373
+ }
374
+ toggle() {
375
+ if (this.panelOpen) {
376
+ this.close();
377
+ }
378
+ else {
379
+ this.open();
380
+ }
381
+ }
382
+ open() {
383
+ if (this.disabled || !this.options || !this.options.length || this._panelOpen) {
384
+ return;
385
+ }
386
+ this.triggerRect = this.trigger.nativeElement.getBoundingClientRect();
387
+ // Note: The computed font-size will be a string pixel value (e.g. "16px").
388
+ // `parseInt` ignores the trailing 'px' and converts this to a number.
389
+ this.triggerFontSize = parseInt(getComputedStyle(this.trigger.nativeElement)['font-size']);
390
+ this._panelOpen = true;
391
+ setTimeout(() => this.highlightCorrectOption());
392
+ this.changeDetectorRef.markForCheck();
393
+ // Set the font size on the panel element once it exists.
394
+ this.ngZone.onStable.asObservable()
395
+ .pipe(take(1))
396
+ .subscribe(() => {
397
+ if (this.triggerFontSize && this.overlayDir.overlayRef && this.overlayDir.overlayRef.overlayElement) {
398
+ this.overlayDir.overlayRef.overlayElement.style.fontSize = `${this.triggerFontSize}px`;
399
+ }
400
+ });
401
+ }
402
+ /** Closes the overlay panel and focuses the host element. */
403
+ close() {
404
+ if (!this._panelOpen) {
405
+ return;
406
+ }
407
+ this._panelOpen = false;
408
+ this.changeDetectorRef.markForCheck();
409
+ this.onTouched();
410
+ if (this.search) {
411
+ this.search.reset();
412
+ }
413
+ setTimeout(() => this.focus(), 0);
414
+ }
415
+ /**
416
+ * Sets the select's value. Part of the ControlValueAccessor interface
417
+ * required to integrate with Angular's core forms API.
418
+ *
419
+ * @param value New value to be written to the model.
420
+ */
421
+ writeValue(value) {
422
+ if (this.tree) {
423
+ this.setSelectionByValue(value);
424
+ }
425
+ else {
426
+ this.tempValues = value;
427
+ }
428
+ }
429
+ /**
430
+ * Saves a callback function to be invoked when the select's value
431
+ * changes from user input. Part of the ControlValueAccessor interface
432
+ * required to integrate with Angular's core forms API.
433
+ *
434
+ * @param fn Callback to be triggered when the value changes.
435
+ */
436
+ registerOnChange(fn) {
437
+ this.onChange = fn;
438
+ }
439
+ /**
440
+ * Saves a callback function to be invoked when the select is blurred
441
+ * by the user. Part of the ControlValueAccessor interface required
442
+ * to integrate with Angular's core forms API.
443
+ *
444
+ * @param fn Callback to be triggered when the component has been touched.
445
+ */
446
+ registerOnTouched(fn) {
447
+ this.onTouched = fn;
448
+ }
449
+ /**
450
+ * Disables the select. Part of the ControlValueAccessor interface required
451
+ * to integrate with Angular's core forms API.
452
+ *
453
+ * @param isDisabled Sets whether the component is disabled.
454
+ */
455
+ setDisabledState(isDisabled) {
456
+ this.disabled = isDisabled;
457
+ this.changeDetectorRef.markForCheck();
458
+ this.stateChanges.next();
459
+ }
460
+ get selected() {
461
+ return this.multiple ? this.selectionModel.selected : this.selectionModel.selected[0];
462
+ }
463
+ get selectedValues() {
464
+ const selectedValues = this.selectionModel.selected.map((value) => this.tree.treeControl.getValue(value));
465
+ return this.multiple ? selectedValues : selectedValues[0];
466
+ }
467
+ get triggerValue() {
468
+ if (this.empty) {
469
+ return '';
470
+ }
471
+ return this.tree.treeControl.getViewValue(this.selected);
472
+ }
473
+ get empty() {
474
+ return !this.selectionModel || this.selectionModel.isEmpty();
475
+ }
476
+ isRtl() {
477
+ return this.dir ? this.dir.value === 'rtl' : false;
478
+ }
479
+ handleKeydown(event) {
480
+ if (!this.disabled) {
481
+ if (this.panelOpen) {
482
+ this.handleOpenKeydown(event);
483
+ }
484
+ else {
485
+ this.handleClosedKeydown(event);
486
+ }
487
+ }
488
+ }
489
+ onFocus() {
490
+ if (!this.disabled) {
491
+ this._focused = true;
492
+ this.stateChanges.next();
493
+ }
494
+ }
495
+ /**
496
+ * Calls the touched callback only if the panel is closed. Otherwise, the trigger will
497
+ * "blur" to the panel when it opens, causing a false positive.
498
+ */
499
+ onBlur() {
500
+ this._focused = false;
501
+ if (!this.disabled && !this.panelOpen) {
502
+ this.onTouched();
503
+ this.changeDetectorRef.markForCheck();
504
+ this.stateChanges.next();
505
+ }
506
+ }
507
+ /** Callback that is invoked when the overlay panel has been attached. */
508
+ onAttached() {
509
+ this.overlayDir.positionChange
510
+ .pipe(take(1))
511
+ .subscribe(() => {
512
+ this.changeDetectorRef.detectChanges();
513
+ this.calculateOverlayOffsetX();
514
+ this.panel.nativeElement.scrollTop = this.scrollTop;
515
+ this.tree.updateScrollSize();
516
+ });
517
+ this.closeSubscription = this.closingActions()
518
+ .subscribe(() => this.close());
519
+ }
520
+ /** Returns the theme to be used on the panel. */
521
+ getPanelTheme() {
522
+ return this.parentFormField ? `mc-${this.parentFormField.color}` : '';
523
+ }
524
+ focus() {
525
+ this.elementRef.nativeElement.focus();
526
+ }
527
+ /**
528
+ * Implemented as part of McFormFieldControl.
529
+ * @docs-private
530
+ */
531
+ onContainerClick() {
532
+ this.focus();
533
+ }
534
+ /** Invoked when an option is clicked. */
535
+ onRemoveSelectedOption(selectedOption, $event) {
536
+ $event.stopPropagation();
537
+ this.selectionModel
538
+ .deselect(this.selected.find((value) => this.tree.treeControl.getValue(value) === selectedOption.value));
539
+ this.onChange(this.selectedValues);
540
+ }
541
+ calculateHiddenItems() {
542
+ if (this.customTrigger || this.empty || !this.multiple) {
543
+ return;
544
+ }
545
+ let visibleItems = 0;
546
+ const totalItemsWidth = this.getTotalItemsWidthInMatcher();
547
+ let totalVisibleItemsWidth = 0;
548
+ this.tags.forEach((tag) => {
549
+ if (tag.nativeElement.offsetTop < tag.nativeElement.offsetHeight) {
550
+ totalVisibleItemsWidth += this.getItemWidth(tag.nativeElement);
551
+ visibleItems++;
552
+ }
553
+ });
554
+ this.hiddenItems = this.selectionModel.selected.length - visibleItems;
555
+ if (this.hiddenItems) {
556
+ const itemsCounter = this.trigger.nativeElement.querySelector('.mc-tree-select__match-hidden-text');
557
+ const matcherList = this.trigger.nativeElement.querySelector('.mc-tree-select__match-list');
558
+ const itemsCounterShowed = itemsCounter.offsetTop < itemsCounter.offsetHeight;
559
+ // const itemsCounterWidth: number = itemsCounter.getBoundingClientRect().width;
560
+ const itemsCounterWidth = 86;
561
+ const matcherListWidth = Math.floor(matcherList.getBoundingClientRect().width);
562
+ const matcherWidth = matcherListWidth + (itemsCounterShowed ? itemsCounterWidth : 0);
563
+ if (itemsCounterShowed && (totalItemsWidth < matcherWidth)) {
564
+ this.hiddenItems = 0;
565
+ }
566
+ if (totalVisibleItemsWidth === matcherListWidth ||
567
+ (totalVisibleItemsWidth + itemsCounterWidth) < matcherListWidth) {
568
+ this.changeDetectorRef.markForCheck();
569
+ return;
570
+ }
571
+ else if (!itemsCounterShowed && (totalItemsWidth + itemsCounterWidth) > matcherWidth) {
572
+ this.hiddenItems++;
573
+ }
574
+ }
575
+ this.changeDetectorRef.markForCheck();
576
+ }
577
+ closingActions() {
578
+ const backdrop = this.overlayDir.overlayRef.backdropClick();
579
+ const outsidePointerEvents = this.overlayDir.overlayRef.outsidePointerEvents()
580
+ .pipe(filter((event) => !this.elementRef.nativeElement.contains(event.target)));
581
+ const detachments = this.overlayDir.overlayRef.detachments();
582
+ return merge(backdrop, outsidePointerEvents, detachments);
583
+ }
584
+ getTotalItemsWidthInMatcher() {
585
+ const triggerClone = this.trigger.nativeElement.cloneNode(true);
586
+ triggerClone.querySelector('.mc-tree-select__match-hidden-text').remove();
587
+ this.renderer.setStyle(triggerClone, 'position', 'absolute');
588
+ this.renderer.setStyle(triggerClone, 'visibility', 'hidden');
589
+ this.renderer.setStyle(triggerClone, 'top', '-100%');
590
+ this.renderer.setStyle(triggerClone, 'left', '0');
591
+ this.renderer.appendChild(this.trigger.nativeElement, triggerClone);
592
+ let totalItemsWidth = 0;
593
+ triggerClone.querySelectorAll('mc-tag').forEach((item) => {
594
+ totalItemsWidth += this.getItemWidth(item);
595
+ });
596
+ triggerClone.remove();
597
+ return totalItemsWidth;
598
+ }
599
+ getItemWidth(element) {
600
+ const computedStyle = window.getComputedStyle(element);
601
+ const width = parseInt(computedStyle.width);
602
+ const marginLeft = parseInt(computedStyle.marginLeft);
603
+ const marginRight = parseInt(computedStyle.marginRight);
604
+ return width + marginLeft + marginRight;
605
+ }
606
+ handleClosedKeydown(event) {
607
+ // tslint:disable-next-line: deprecation
608
+ const keyCode = event.keyCode;
609
+ const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW ||
610
+ keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW;
611
+ const isOpenKey = keyCode === ENTER || keyCode === SPACE;
612
+ // Open the select on ALT + arrow key to match the native <select>
613
+ if (isOpenKey || ((this.multiple || event.altKey) && isArrowKey)) {
614
+ // prevents the page from scrolling down when pressing space
615
+ event.preventDefault();
616
+ this.open();
617
+ }
618
+ else if (!this.multiple && this.tree.keyManager && this.tree.keyManager.onKeydown) {
619
+ this.tree.keyManager.onKeydown(event);
620
+ }
621
+ }
622
+ handleOpenKeydown(event) {
623
+ /* tslint:disable-next-line */
624
+ const keyCode = event.keyCode;
625
+ const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW;
626
+ if (isArrowKey && event.altKey) {
627
+ // Close the select on ALT + arrow key to match the native <select>
628
+ event.preventDefault();
629
+ this.close();
630
+ }
631
+ else if (keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW) {
632
+ return this.originalOnKeyDown.call(this.tree, event);
633
+ }
634
+ else if (keyCode === HOME) {
635
+ event.preventDefault();
636
+ this.tree.keyManager.setFirstItemActive();
637
+ }
638
+ else if (keyCode === END) {
639
+ event.preventDefault();
640
+ this.tree.keyManager.setLastItemActive();
641
+ }
642
+ else if (keyCode === PAGE_UP) {
643
+ event.preventDefault();
644
+ this.tree.keyManager.setPreviousPageItemActive();
645
+ }
646
+ else if (keyCode === PAGE_DOWN) {
647
+ event.preventDefault();
648
+ this.tree.keyManager.setNextPageItemActive();
649
+ }
650
+ else if ((keyCode === ENTER || keyCode === SPACE) && this.tree.keyManager.activeItem) {
651
+ event.preventDefault();
652
+ if (!this.autoSelect) {
653
+ this.selectionModel.toggle(this.tree.keyManager.activeItem.data);
654
+ }
655
+ else {
656
+ this.close();
657
+ }
658
+ }
659
+ else if (this.multiple && keyCode === A && event.ctrlKey) {
660
+ event.preventDefault();
661
+ const hasDeselectedOptions = this.options.some((option) => !option.selected);
662
+ this.options.forEach((option) => {
663
+ if (hasDeselectedOptions && !option.disabled) {
664
+ option.select();
665
+ }
666
+ else {
667
+ option.deselect();
668
+ }
669
+ });
670
+ }
671
+ else {
672
+ const previouslyFocusedIndex = this.tree.keyManager.activeItemIndex;
673
+ this.tree.keyManager.setFocusOrigin('keyboard');
674
+ this.tree.keyManager.onKeydown(event);
675
+ if (this.multiple && isArrowKey && event.shiftKey && this.tree.keyManager.activeItem &&
676
+ this.tree.keyManager.activeItemIndex !== previouslyFocusedIndex) {
677
+ this.tree.keyManager.activeItem.selectViaInteraction(event);
678
+ }
679
+ if (this.autoSelect && this.tree.keyManager.activeItem) {
680
+ this.tree.setSelectedOptionsByKey(this.tree.keyManager.activeItem, hasModifierKey(event, 'shiftKey'), hasModifierKey(event, 'ctrlKey'));
681
+ }
682
+ if (this.search) {
683
+ this.search.focus();
684
+ }
685
+ }
686
+ }
687
+ refreshTriggerValues() {
688
+ this.triggerValues = this.selectionModel.selected
689
+ .map((node) => ({
690
+ value: this.tree.treeControl.getValue(node),
691
+ viewValue: this.tree.treeControl.getViewValue(node),
692
+ disabled: this.tree.treeControl.isDisabled(node)
693
+ }));
694
+ this.changeDetectorRef.detectChanges();
695
+ }
696
+ initializeSelection() {
697
+ // Defer setting the value in order to avoid the "Expression
698
+ // has changed after it was checked" errors from Angular.
699
+ Promise.resolve().then(() => {
700
+ this.setSelectionByValue(this.ngControl ? this.ngControl.value : this._value);
701
+ });
702
+ }
703
+ /**
704
+ * Sets the selected option based on a value. If no option can be
705
+ * found with the designated value, the select trigger is cleared.
706
+ */
707
+ setSelectionByValue(value) {
708
+ if (this.multiple && value) {
709
+ if (!Array.isArray(value)) {
710
+ throw getMcSelectNonArrayValueError();
711
+ }
712
+ this.tree.setOptionsFromValues(value);
713
+ this.sortValues();
714
+ }
715
+ else {
716
+ this.tree.setOptionsFromValues([value]);
717
+ }
718
+ this.changeDetectorRef.detectChanges();
719
+ }
720
+ initKeyManager() {
721
+ this.originalOnKeyDown = this.tree.onKeyDown;
722
+ this.tree.onKeyDown = () => { };
723
+ this.tree.keyManager.tabOut
724
+ .pipe(takeUntil(this.destroy))
725
+ .subscribe(() => {
726
+ // Restore focus to the trigger before closing. Ensures that the focus
727
+ // position won't be lost if the user got focus into the overlay.
728
+ this.focus();
729
+ this.close();
730
+ });
731
+ this.tree.keyManager.change
732
+ .pipe(takeUntil(this.destroy))
733
+ .subscribe(() => {
734
+ if (this._panelOpen && this.panel) {
735
+ this.scrollActiveOptionIntoView();
736
+ }
737
+ else if (!this._panelOpen && !this.multiple && this.tree.keyManager.activeItem) {
738
+ this.tree.keyManager.activeItem.selectViaInteraction();
739
+ }
740
+ });
741
+ }
742
+ /** Sorts the selected values in the selected based on their order in the panel. */
743
+ sortValues() {
744
+ if (this.multiple) {
745
+ const options = this.options.toArray();
746
+ this.selectionModel.sort((a, b) => {
747
+ return this.sortComparator ? this.sortComparator(a, b, options) :
748
+ options.indexOf(a) - options.indexOf(b);
749
+ });
750
+ this.stateChanges.next();
751
+ }
752
+ }
753
+ /**
754
+ * Highlights the selected item. If no option is selected, it will highlight
755
+ * the first item instead.
756
+ */
757
+ highlightCorrectOption() {
758
+ if (this.empty || !this.tree.keyManager) {
759
+ return;
760
+ }
761
+ const firstSelectedValue = this.multiple ? this.selectedValues[0] : this.selectedValues;
762
+ const selectedOption = this.options.find((option) => option.value === firstSelectedValue);
763
+ if (selectedOption) {
764
+ this.tree.keyManager.setFocusOrigin('keyboard');
765
+ this.tree.keyManager.setActiveItem(selectedOption);
766
+ }
767
+ }
768
+ /** Scrolls the active option into view. */
769
+ scrollActiveOptionIntoView() {
770
+ this.tree.keyManager.activeItem?.focus();
771
+ }
772
+ /**
773
+ * Sets the x-offset of the overlay panel in relation to the trigger's top start corner.
774
+ * This must be adjusted to align the selected option text over the trigger text when
775
+ * the panel opens. Will change based on LTR or RTL text direction. Note that the offset
776
+ * can't be calculated until the panel has been attached, because we need to know the
777
+ * content width in order to constrain the panel within the viewport.
778
+ */
779
+ calculateOverlayOffsetX() {
780
+ const overlayRect = this.overlayDir.overlayRef.overlayElement.getBoundingClientRect();
781
+ const viewportSize = this.viewportRuler.getViewportSize();
782
+ const isRtl = this.isRtl();
783
+ /* tslint:disable-next-line:no-magic-numbers */
784
+ const paddingWidth = SELECT_PANEL_PADDING_X * 2;
785
+ let offsetX = SELECT_PANEL_PADDING_X;
786
+ // Invert the offset in LTR.
787
+ if (!isRtl) {
788
+ offsetX *= -1;
789
+ }
790
+ // Determine how much the select overflows on each side.
791
+ const leftOverflow = 0 - (overlayRect.left + offsetX - (isRtl ? paddingWidth : 0));
792
+ const rightOverflow = overlayRect.right + offsetX - viewportSize.width
793
+ + (isRtl ? 0 : paddingWidth);
794
+ // If the element overflows on either side, reduce the offset to allow it to fit.
795
+ if (leftOverflow > 0) {
796
+ offsetX += leftOverflow + SELECT_PANEL_VIEWPORT_PADDING;
797
+ }
798
+ else if (rightOverflow > 0) {
799
+ offsetX -= rightOverflow + SELECT_PANEL_VIEWPORT_PADDING;
800
+ }
801
+ // Set the offset directly in order to avoid having to go through change detection and
802
+ // potentially triggering "changed after it was checked" errors. Round the value to avoid
803
+ // blurry content in some browsers.
804
+ this.overlayDir.offsetX = Math.round(offsetX);
805
+ this.overlayDir.overlayRef.updatePosition();
806
+ }
807
+ updateIsEmptySearchResult() {
808
+ if (this.search) {
809
+ this.search.input.ngControl.valueChanges?.subscribe((value) => {
810
+ this.isEmptySearchResult = !!value && this.tree.isEmpty;
811
+ this.changeDetectorRef.markForCheck();
812
+ });
813
+ }
814
+ }
815
+ }
816
+ /** @nocollapse */ /** @nocollapse */ McTreeSelect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McTreeSelect, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.ViewportRuler }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i2.ErrorStateMatcher }, { token: MC_SELECT_SCROLL_STRATEGY }, { token: NG_VALIDATORS, optional: true }, { token: MC_VALIDATION, optional: true }, { token: i3.Directionality, optional: true }, { token: i4.NgForm, optional: true }, { token: i4.FormGroupDirective, optional: true }, { token: i5.McFormField, optional: true }, { token: i4.NgControl, optional: true, self: true }, { token: i4.NgModel, optional: true, self: true }, { token: i4.FormControlName, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component });
817
+ /** @nocollapse */ /** @nocollapse */ McTreeSelect.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: McTreeSelect, selector: "mc-tree-select", inputs: { disabled: "disabled", tabIndex: "tabIndex", hiddenItemsText: "hiddenItemsText", panelClass: "panelClass", backdropClass: "backdropClass", errorStateMatcher: "errorStateMatcher", sortComparator: "sortComparator", placeholder: "placeholder", required: "required", multiple: "multiple", autoSelect: "autoSelect", compareWith: "compareWith", id: "id", hasBackdrop: "hasBackdrop", hiddenItemsTextFormatter: "hiddenItemsTextFormatter" }, outputs: { openedChange: "openedChange", openedStream: "opened", closedStream: "closed", selectionChange: "selectionChange", valueChange: "valueChange" }, host: { listeners: { "click": "toggle()", "keydown": "handleKeydown($event)", "focus": "onFocus()", "blur": "onBlur()", "window:resize": "calculateHiddenItems()" }, properties: { "class.mc-disabled": "disabled", "class.mc-invalid": "errorState", "attr.id": "id", "attr.tabindex": "tabIndex", "attr.disabled": "disabled || null" }, classAttribute: "mc-tree-select" }, providers: [
818
+ { provide: McFormFieldControl, useExisting: McTreeSelect },
819
+ { provide: McTree, useExisting: McTreeSelect }
820
+ ], queries: [{ propertyName: "cleaner", first: true, predicate: ["mcSelectCleaner"], descendants: true, static: true }, { propertyName: "customTrigger", first: true, predicate: McTreeSelectTrigger, descendants: true }, { propertyName: "tree", first: true, predicate: McTreeSelection, descendants: true }, { propertyName: "search", first: true, predicate: McSelectSearch, descendants: true }], viewQueries: [{ propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true }, { propertyName: "panel", first: true, predicate: ["panel"], descendants: true }, { propertyName: "overlayDir", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "tags", predicate: McTag, descendants: true }], exportAs: ["mcTreeSelect"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div cdk-overlay-origin\n class=\"mc-tree-select__trigger\"\n [class.mc-tree-select__trigger_multiple]=\"multiple\"\n #origin=\"cdkOverlayOrigin\"\n #trigger>\n <div class=\"mc-tree-select__matcher\" [ngSwitch]=\"empty\">\n <span class=\"mc-tree-select__placeholder\" *ngSwitchCase=\"true\">{{ placeholder || '\\u00A0' }}</span>\n <span *ngSwitchCase=\"false\" [ngSwitch]=\"!!customTrigger\">\n <div *ngSwitchDefault [ngSwitch]=\"multiple\" class=\"mc-tree-select__match-container\">\n <span *ngSwitchCase=\"false\" class=\"mc-tree-select__matcher-text\">{{ triggerValue }}</span>\n <div *ngSwitchCase=\"true\" class=\"mc-tree-select__multiple-matcher\">\n <div class=\"mc-tree-select__match-list\">\n <mc-tag *ngFor=\"let triggerValue of triggerValues\"\n [selectable]=\"false\"\n [disabled]=\"triggerValue.disabled || disabled\"\n [class.mc-error]=\"errorState\">\n\n {{ triggerValue.viewValue }}\n <i mc-icon=\"mc-close-S_16\" mcTagRemove\n *ngIf=\"!triggerValue.disabled && !disabled\"\n (click)=\"onRemoveSelectedOption(triggerValue, $event)\">\n </i>\n </mc-tag>\n </div>\n <div class=\"mc-tree-select__match-hidden-text\" [style.display]=\"hiddenItems > 0 ? 'block' : 'none'\">\n {{ hiddenItemsTextFormatter(hiddenItemsText, hiddenItems) }}\n </div>\n </div>\n </div>\n <ng-content select=\"mc-tree-select-trigger\" *ngSwitchCase=\"true\"></ng-content>\n </span>\n </div>\n\n <div class=\"mc-select__cleaner\" *ngIf=\"canShowCleaner\" (click)=\"clearValue($event)\">\n <ng-content select=\"mc-cleaner\"></ng-content>\n </div>\n\n <div class=\"mc-tree-select__arrow-wrapper\">\n <i class=\"mc-tree-select__arrow\" mc-icon=\"mc-angle-down-S_16\"></i>\n </div>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayHasBackdrop]=\"hasBackdrop\"\n [cdkConnectedOverlayBackdropClass]=\"backdropClass\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayMinWidth]=\"triggerRect?.width!\"\n [cdkConnectedOverlayOffsetY]=\"offsetY\"\n (backdropClick)=\"close()\"\n (attach)=\"onAttached()\"\n (detach)=\"close()\">\n\n <div #panel\n class=\"mc-tree-select__panel {{ getPanelTheme() }}\"\n [ngClass]=\"panelClass\"\n [style.transformOrigin]=\"transformOrigin\"\n [style.font-size.px]=\"triggerFontSize\"\n (keydown)=\"handleKeydown($event)\">\n\n <div *ngIf=\"search\" class=\"mc-select__search-container\">\n <ng-content select=\"[mcSelectSearch]\"></ng-content>\n </div>\n\n <div *ngIf=\"isEmptySearchResult\" class=\"mc-select__no-options-message\">\n <ng-content select=\"[mc-select-search-empty-result]\"></ng-content>\n </div>\n\n <div #optionsContainer\n class=\"mc-tree-select__content\"\n [@fadeInContent]=\"'showing'\"\n (@fadeInContent.done)=\"panelDoneAnimatingStream.next($event.toState)\">\n <ng-content select=\"mc-tree-selection\"></ng-content>\n </div>\n\n <ng-content select=\"[mc-tree-selection-footer]\"></ng-content>\n </div>\n</ng-template>\n", styles: [".mc-option{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;position:relative;max-width:100%;height:var(--mc-option-size-height, 32px);border:var(--mc-option-size-border-width, 2px) solid transparent;cursor:pointer;outline:none;padding-left:var(--mc-option-size-horizontal-padding, 12px);padding-right:var(--mc-option-size-horizontal-padding, 12px);-webkit-tap-highlight-color:transparent}.mc-option.mc-disabled{cursor:default}.mc-option .mc-pseudo-checkbox{margin-right:8px}.mc-option .mc-option-overlay{position:absolute;top:calc(-1 * var(--mc-option-size-border-width, 2px));left:calc(-1 * var(--mc-option-size-border-width, 2px));right:calc(-1 * var(--mc-option-size-border-width, 2px));bottom:calc(-1 * var(--mc-option-size-border-width, 2px));pointer-events:none;border-radius:inherit}.mc-option-text{display:inline-block;flex-grow:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.mc-tree-select{box-sizing:border-box;display:inline-block;width:100%;outline:none}.mc-tree-select.mc-disabled .mc-tree-select__trigger{-webkit-user-select:none;user-select:none;cursor:default}.mc-tree-select__trigger{display:flex;box-sizing:border-box;position:relative;height:var(--mc-form-field-size-height, 32px);cursor:pointer;padding-left:calc(var(--mc-select-size-left-padding, 12px) - var(--mc-form-field-size-border-width, 1px));padding-right:calc(var(--mc-select-size-right-padding, 6px) - var(--mc-form-field-size-border-width, 1px))}.mc-tree-select__trigger.mc-tree-select__trigger_multiple{padding-left:calc(var(--mc-select-size-left-padding-multiple, 12px) - var(--mc-form-field-size-border-width, 1px))}.mc-tree-select__trigger.mc-tree-select__trigger_multiple .mc-tree-select__placeholder{margin-left:8px}.mc-tree-select__trigger.mc-tree-select__trigger_multiple .mc-tag.mc-disabled .mc-tag__text{margin-right:7px}.mc-tree-select__matcher{display:flex;align-items:center;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mc-tree-select__matcher>span{width:100%}.mc-tree-select__multiple-matcher{display:flex;width:100%}.mc-tree-select__match-list{display:flex;flex-wrap:wrap;overflow:hidden;max-height:calc(var(--mc-form-field-size-height, 32px) - var(--mc-form-field-size-border-width, 1px) * 2)}.mc-tree-select__match-list .mc-tag{margin-right:4px}.mc-tree-select__match-container{display:flex;flex-direction:row;justify-content:space-between;width:100%}.mc-tree-select__match-container .mc-tree-select__match-hidden-text{flex:0 0 70px;align-self:center;padding:0 8px;text-align:right}.mc-tree-select__match-item{display:flex;border:1px solid transparent;border-radius:3px;padding-left:7px;margin-right:4px;max-width:100%}.mc-tree-select__arrow-wrapper{align-self:center}.mc-form-field-appearance-fill .mc-tree-select__arrow-wrapper,.mc-form-field-appearance-standard .mc-tree-select__arrow-wrapper{transform:translateY(-50%)}.mc-form-field-appearance-outline .mc-tree-select__arrow-wrapper{transform:translateY(-25%)}.mc-tree-select__panel{min-width:100%;border-width:var(--mc-select-panel-size-border-width, 1px);border-style:solid;border-bottom-left-radius:var(--mc-select-panel-size-border-radius, 4px);border-bottom-right-radius:var(--mc-select-panel-size-border-radius, 4px)}.mc-tree-select__panel .mc-optgroup-label,.mc-tree-select__panel .mc-tree-select-option{font-size:inherit;line-height:var(--mc-option-size-height, 32px);height:var(--mc-option-size-height, 32px)}.mc-tree-select__content{max-height:var(--mc-select-panel-size-max-height, 232px);overflow:auto}.mc-tree-select__content .mc-tree-selection{height:100%}.mc-form-field-type-select:not(.mc-disabled) .mc-form-field-flex{cursor:pointer}.mc-select__no-options-message{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;position:relative;max-width:100%;height:var(--mc-option-size-height, 32px);cursor:default;outline:none;padding-left:var(--mc-option-size-horizontal-padding, 12px);padding-right:var(--mc-option-size-horizontal-padding, 12px)}.mc-select__search-container{border-bottom-width:1px;border-bottom-style:solid}\n"], components: [{ type: i6.McTag, selector: "mc-tag, [mc-tag], mc-basic-tag, [mc-basic-tag]", inputs: ["color", "selected", "value", "selectable", "removable", "disabled"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["mcTag"] }, { type: i7.McIcon, selector: "[mc-icon]", inputs: ["color"] }], directives: [{ type: i1.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { type: i8.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i8.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i8.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.McIconCSSStyler, selector: "[mc-icon]" }, { type: i6.McTagRemove, selector: "[mcTagRemove]" }, { type: i1.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], animations: [
821
+ mcSelectAnimations.transformPanel,
822
+ mcSelectAnimations.fadeInContent
823
+ ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
824
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McTreeSelect, decorators: [{
825
+ type: Component,
826
+ args: [{ selector: 'mc-tree-select', exportAs: 'mcTreeSelect', inputs: ['disabled', 'tabIndex'], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
827
+ class: 'mc-tree-select',
828
+ '[class.mc-disabled]': 'disabled',
829
+ '[class.mc-invalid]': 'errorState',
830
+ '[attr.id]': 'id',
831
+ '[attr.tabindex]': 'tabIndex',
832
+ '[attr.disabled]': 'disabled || null',
833
+ '(click)': 'toggle()',
834
+ '(keydown)': 'handleKeydown($event)',
835
+ '(focus)': 'onFocus()',
836
+ '(blur)': 'onBlur()',
837
+ '(window:resize)': 'calculateHiddenItems()'
838
+ }, animations: [
839
+ mcSelectAnimations.transformPanel,
840
+ mcSelectAnimations.fadeInContent
841
+ ], providers: [
842
+ { provide: McFormFieldControl, useExisting: McTreeSelect },
843
+ { provide: McTree, useExisting: McTreeSelect }
844
+ ], template: "<div cdk-overlay-origin\n class=\"mc-tree-select__trigger\"\n [class.mc-tree-select__trigger_multiple]=\"multiple\"\n #origin=\"cdkOverlayOrigin\"\n #trigger>\n <div class=\"mc-tree-select__matcher\" [ngSwitch]=\"empty\">\n <span class=\"mc-tree-select__placeholder\" *ngSwitchCase=\"true\">{{ placeholder || '\\u00A0' }}</span>\n <span *ngSwitchCase=\"false\" [ngSwitch]=\"!!customTrigger\">\n <div *ngSwitchDefault [ngSwitch]=\"multiple\" class=\"mc-tree-select__match-container\">\n <span *ngSwitchCase=\"false\" class=\"mc-tree-select__matcher-text\">{{ triggerValue }}</span>\n <div *ngSwitchCase=\"true\" class=\"mc-tree-select__multiple-matcher\">\n <div class=\"mc-tree-select__match-list\">\n <mc-tag *ngFor=\"let triggerValue of triggerValues\"\n [selectable]=\"false\"\n [disabled]=\"triggerValue.disabled || disabled\"\n [class.mc-error]=\"errorState\">\n\n {{ triggerValue.viewValue }}\n <i mc-icon=\"mc-close-S_16\" mcTagRemove\n *ngIf=\"!triggerValue.disabled && !disabled\"\n (click)=\"onRemoveSelectedOption(triggerValue, $event)\">\n </i>\n </mc-tag>\n </div>\n <div class=\"mc-tree-select__match-hidden-text\" [style.display]=\"hiddenItems > 0 ? 'block' : 'none'\">\n {{ hiddenItemsTextFormatter(hiddenItemsText, hiddenItems) }}\n </div>\n </div>\n </div>\n <ng-content select=\"mc-tree-select-trigger\" *ngSwitchCase=\"true\"></ng-content>\n </span>\n </div>\n\n <div class=\"mc-select__cleaner\" *ngIf=\"canShowCleaner\" (click)=\"clearValue($event)\">\n <ng-content select=\"mc-cleaner\"></ng-content>\n </div>\n\n <div class=\"mc-tree-select__arrow-wrapper\">\n <i class=\"mc-tree-select__arrow\" mc-icon=\"mc-angle-down-S_16\"></i>\n </div>\n</div>\n\n<ng-template\n cdk-connected-overlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayHasBackdrop]=\"hasBackdrop\"\n [cdkConnectedOverlayBackdropClass]=\"backdropClass\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayMinWidth]=\"triggerRect?.width!\"\n [cdkConnectedOverlayOffsetY]=\"offsetY\"\n (backdropClick)=\"close()\"\n (attach)=\"onAttached()\"\n (detach)=\"close()\">\n\n <div #panel\n class=\"mc-tree-select__panel {{ getPanelTheme() }}\"\n [ngClass]=\"panelClass\"\n [style.transformOrigin]=\"transformOrigin\"\n [style.font-size.px]=\"triggerFontSize\"\n (keydown)=\"handleKeydown($event)\">\n\n <div *ngIf=\"search\" class=\"mc-select__search-container\">\n <ng-content select=\"[mcSelectSearch]\"></ng-content>\n </div>\n\n <div *ngIf=\"isEmptySearchResult\" class=\"mc-select__no-options-message\">\n <ng-content select=\"[mc-select-search-empty-result]\"></ng-content>\n </div>\n\n <div #optionsContainer\n class=\"mc-tree-select__content\"\n [@fadeInContent]=\"'showing'\"\n (@fadeInContent.done)=\"panelDoneAnimatingStream.next($event.toState)\">\n <ng-content select=\"mc-tree-selection\"></ng-content>\n </div>\n\n <ng-content select=\"[mc-tree-selection-footer]\"></ng-content>\n </div>\n</ng-template>\n", styles: [".mc-option{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;position:relative;max-width:100%;height:var(--mc-option-size-height, 32px);border:var(--mc-option-size-border-width, 2px) solid transparent;cursor:pointer;outline:none;padding-left:var(--mc-option-size-horizontal-padding, 12px);padding-right:var(--mc-option-size-horizontal-padding, 12px);-webkit-tap-highlight-color:transparent}.mc-option.mc-disabled{cursor:default}.mc-option .mc-pseudo-checkbox{margin-right:8px}.mc-option .mc-option-overlay{position:absolute;top:calc(-1 * var(--mc-option-size-border-width, 2px));left:calc(-1 * var(--mc-option-size-border-width, 2px));right:calc(-1 * var(--mc-option-size-border-width, 2px));bottom:calc(-1 * var(--mc-option-size-border-width, 2px));pointer-events:none;border-radius:inherit}.mc-option-text{display:inline-block;flex-grow:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.mc-tree-select{box-sizing:border-box;display:inline-block;width:100%;outline:none}.mc-tree-select.mc-disabled .mc-tree-select__trigger{-webkit-user-select:none;user-select:none;cursor:default}.mc-tree-select__trigger{display:flex;box-sizing:border-box;position:relative;height:var(--mc-form-field-size-height, 32px);cursor:pointer;padding-left:calc(var(--mc-select-size-left-padding, 12px) - var(--mc-form-field-size-border-width, 1px));padding-right:calc(var(--mc-select-size-right-padding, 6px) - var(--mc-form-field-size-border-width, 1px))}.mc-tree-select__trigger.mc-tree-select__trigger_multiple{padding-left:calc(var(--mc-select-size-left-padding-multiple, 12px) - var(--mc-form-field-size-border-width, 1px))}.mc-tree-select__trigger.mc-tree-select__trigger_multiple .mc-tree-select__placeholder{margin-left:8px}.mc-tree-select__trigger.mc-tree-select__trigger_multiple .mc-tag.mc-disabled .mc-tag__text{margin-right:7px}.mc-tree-select__matcher{display:flex;align-items:center;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mc-tree-select__matcher>span{width:100%}.mc-tree-select__multiple-matcher{display:flex;width:100%}.mc-tree-select__match-list{display:flex;flex-wrap:wrap;overflow:hidden;max-height:calc(var(--mc-form-field-size-height, 32px) - var(--mc-form-field-size-border-width, 1px) * 2)}.mc-tree-select__match-list .mc-tag{margin-right:4px}.mc-tree-select__match-container{display:flex;flex-direction:row;justify-content:space-between;width:100%}.mc-tree-select__match-container .mc-tree-select__match-hidden-text{flex:0 0 70px;align-self:center;padding:0 8px;text-align:right}.mc-tree-select__match-item{display:flex;border:1px solid transparent;border-radius:3px;padding-left:7px;margin-right:4px;max-width:100%}.mc-tree-select__arrow-wrapper{align-self:center}.mc-form-field-appearance-fill .mc-tree-select__arrow-wrapper,.mc-form-field-appearance-standard .mc-tree-select__arrow-wrapper{transform:translateY(-50%)}.mc-form-field-appearance-outline .mc-tree-select__arrow-wrapper{transform:translateY(-25%)}.mc-tree-select__panel{min-width:100%;border-width:var(--mc-select-panel-size-border-width, 1px);border-style:solid;border-bottom-left-radius:var(--mc-select-panel-size-border-radius, 4px);border-bottom-right-radius:var(--mc-select-panel-size-border-radius, 4px)}.mc-tree-select__panel .mc-optgroup-label,.mc-tree-select__panel .mc-tree-select-option{font-size:inherit;line-height:var(--mc-option-size-height, 32px);height:var(--mc-option-size-height, 32px)}.mc-tree-select__content{max-height:var(--mc-select-panel-size-max-height, 232px);overflow:auto}.mc-tree-select__content .mc-tree-selection{height:100%}.mc-form-field-type-select:not(.mc-disabled) .mc-form-field-flex{cursor:pointer}.mc-select__no-options-message{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;position:relative;max-width:100%;height:var(--mc-option-size-height, 32px);cursor:default;outline:none;padding-left:var(--mc-option-size-horizontal-padding, 12px);padding-right:var(--mc-option-size-horizontal-padding, 12px)}.mc-select__search-container{border-bottom-width:1px;border-bottom-style:solid}\n"] }]
845
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.ViewportRuler }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i2.ErrorStateMatcher }, { type: undefined, decorators: [{
846
+ type: Inject,
847
+ args: [MC_SELECT_SCROLL_STRATEGY]
848
+ }] }, { type: undefined, decorators: [{
849
+ type: Optional
850
+ }, {
851
+ type: Inject,
852
+ args: [NG_VALIDATORS]
853
+ }] }, { type: undefined, decorators: [{
854
+ type: Optional
855
+ }, {
856
+ type: Inject,
857
+ args: [MC_VALIDATION]
858
+ }] }, { type: i3.Directionality, decorators: [{
859
+ type: Optional
860
+ }] }, { type: i4.NgForm, decorators: [{
861
+ type: Optional
862
+ }] }, { type: i4.FormGroupDirective, decorators: [{
863
+ type: Optional
864
+ }] }, { type: i5.McFormField, decorators: [{
865
+ type: Optional
866
+ }] }, { type: i4.NgControl, decorators: [{
867
+ type: Optional
868
+ }, {
869
+ type: Self
870
+ }] }, { type: i4.NgModel, decorators: [{
871
+ type: Optional
872
+ }, {
873
+ type: Self
874
+ }] }, { type: i4.FormControlName, decorators: [{
875
+ type: Optional
876
+ }, {
877
+ type: Self
878
+ }] }]; }, propDecorators: { trigger: [{
879
+ type: ViewChild,
880
+ args: ['trigger', { static: false }]
881
+ }], panel: [{
882
+ type: ViewChild,
883
+ args: ['panel', { static: false }]
884
+ }], overlayDir: [{
885
+ type: ViewChild,
886
+ args: [CdkConnectedOverlay, { static: false }]
887
+ }], tags: [{
888
+ type: ViewChildren,
889
+ args: [McTag]
890
+ }], cleaner: [{
891
+ type: ContentChild,
892
+ args: ['mcSelectCleaner', { static: true }]
893
+ }], customTrigger: [{
894
+ type: ContentChild,
895
+ args: [McTreeSelectTrigger, { static: false }]
896
+ }], tree: [{
897
+ type: ContentChild,
898
+ args: [McTreeSelection, { static: false }]
899
+ }], search: [{
900
+ type: ContentChild,
901
+ args: [McSelectSearch, { static: false }]
902
+ }], hiddenItemsText: [{
903
+ type: Input
904
+ }], openedChange: [{
905
+ type: Output
906
+ }], openedStream: [{
907
+ type: Output,
908
+ args: ['opened']
909
+ }], closedStream: [{
910
+ type: Output,
911
+ args: ['closed']
912
+ }], selectionChange: [{
913
+ type: Output
914
+ }], valueChange: [{
915
+ type: Output
916
+ }], panelClass: [{
917
+ type: Input
918
+ }], backdropClass: [{
919
+ type: Input
920
+ }], errorStateMatcher: [{
921
+ type: Input
922
+ }], sortComparator: [{
923
+ type: Input
924
+ }], placeholder: [{
925
+ type: Input
926
+ }], required: [{
927
+ type: Input
928
+ }], multiple: [{
929
+ type: Input
930
+ }], autoSelect: [{
931
+ type: Input
932
+ }], compareWith: [{
933
+ type: Input
934
+ }], id: [{
935
+ type: Input
936
+ }], hasBackdrop: [{
937
+ type: Input
938
+ }], hiddenItemsTextFormatter: [{
939
+ type: Input
930
940
  }] } });
931
941
 
932
- class McTreeSelectModule {
933
- }
934
- /** @nocollapse */ /** @nocollapse */ McTreeSelectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McTreeSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
935
- /** @nocollapse */ /** @nocollapse */ McTreeSelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McTreeSelectModule, declarations: [McTreeSelect, McTreeSelectTrigger, McTreeSelectFooter], imports: [CommonModule,
936
- OverlayModule,
937
- McTreeModule,
938
- McIconModule,
939
- McTagsModule,
940
- McPseudoCheckboxModule,
941
- McSelectModule], exports: [McTreeSelect, McTreeSelectTrigger, McTreeSelectFooter, CommonModule] });
942
- /** @nocollapse */ /** @nocollapse */ McTreeSelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McTreeSelectModule, providers: [MC_SELECT_SCROLL_STRATEGY_PROVIDER], imports: [[
943
- CommonModule,
944
- OverlayModule,
945
- McTreeModule,
946
- McIconModule,
947
- McTagsModule,
948
- McPseudoCheckboxModule,
949
- McSelectModule
950
- ], CommonModule] });
951
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McTreeSelectModule, decorators: [{
952
- type: NgModule,
953
- args: [{
954
- imports: [
955
- CommonModule,
956
- OverlayModule,
957
- McTreeModule,
958
- McIconModule,
959
- McTagsModule,
960
- McPseudoCheckboxModule,
961
- McSelectModule
962
- ],
963
- exports: [McTreeSelect, McTreeSelectTrigger, McTreeSelectFooter, CommonModule],
964
- declarations: [McTreeSelect, McTreeSelectTrigger, McTreeSelectFooter],
965
- providers: [MC_SELECT_SCROLL_STRATEGY_PROVIDER]
966
- }]
942
+ class McTreeSelectModule {
943
+ }
944
+ /** @nocollapse */ /** @nocollapse */ McTreeSelectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McTreeSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
945
+ /** @nocollapse */ /** @nocollapse */ McTreeSelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McTreeSelectModule, declarations: [McTreeSelect, McTreeSelectTrigger, McTreeSelectFooter], imports: [CommonModule,
946
+ OverlayModule,
947
+ McTreeModule,
948
+ McIconModule,
949
+ McTagsModule,
950
+ McPseudoCheckboxModule,
951
+ McSelectModule], exports: [McTreeSelect, McTreeSelectTrigger, McTreeSelectFooter, CommonModule] });
952
+ /** @nocollapse */ /** @nocollapse */ McTreeSelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McTreeSelectModule, providers: [MC_SELECT_SCROLL_STRATEGY_PROVIDER], imports: [[
953
+ CommonModule,
954
+ OverlayModule,
955
+ McTreeModule,
956
+ McIconModule,
957
+ McTagsModule,
958
+ McPseudoCheckboxModule,
959
+ McSelectModule
960
+ ], CommonModule] });
961
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McTreeSelectModule, decorators: [{
962
+ type: NgModule,
963
+ args: [{
964
+ imports: [
965
+ CommonModule,
966
+ OverlayModule,
967
+ McTreeModule,
968
+ McIconModule,
969
+ McTagsModule,
970
+ McPseudoCheckboxModule,
971
+ McSelectModule
972
+ ],
973
+ exports: [McTreeSelect, McTreeSelectTrigger, McTreeSelectFooter, CommonModule],
974
+ declarations: [McTreeSelect, McTreeSelectTrigger, McTreeSelectFooter],
975
+ providers: [MC_SELECT_SCROLL_STRATEGY_PROVIDER]
976
+ }]
967
977
  }] });
968
978
 
969
- /**
970
- * Generated bundle index. Do not edit.
979
+ /**
980
+ * Generated bundle index. Do not edit.
971
981
  */
972
982
 
973
983
  export { McTreeSelect, McTreeSelectChange, McTreeSelectFooter, McTreeSelectModule, McTreeSelectTrigger };