@ptsecurity/mosaic 11.5.0 → 12.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (630) hide show
  1. package/_theming.scss +409 -100
  2. package/_visual.scss +66 -23
  3. package/autocomplete/autocomplete-origin.directive.d.ts +3 -0
  4. package/autocomplete/autocomplete-trigger.directive.d.ts +3 -0
  5. package/autocomplete/autocomplete.component.d.ts +3 -0
  6. package/autocomplete/autocomplete.module.d.ts +10 -0
  7. package/autocomplete/package.json +0 -1
  8. package/autocomplete/ptsecurity-mosaic-autocomplete.d.ts +1 -0
  9. package/bundles/ptsecurity-mosaic-autocomplete.umd.js +178 -114
  10. package/bundles/ptsecurity-mosaic-autocomplete.umd.js.map +1 -1
  11. package/bundles/ptsecurity-mosaic-button-toggle.umd.js +107 -71
  12. package/bundles/ptsecurity-mosaic-button-toggle.umd.js.map +1 -1
  13. package/bundles/ptsecurity-mosaic-button.umd.js +106 -77
  14. package/bundles/ptsecurity-mosaic-button.umd.js.map +1 -1
  15. package/bundles/ptsecurity-mosaic-card.umd.js +74 -43
  16. package/bundles/ptsecurity-mosaic-card.umd.js.map +1 -1
  17. package/bundles/ptsecurity-mosaic-checkbox.umd.js +114 -69
  18. package/bundles/ptsecurity-mosaic-checkbox.umd.js.map +1 -1
  19. package/bundles/ptsecurity-mosaic-core.umd.js +804 -256
  20. package/bundles/ptsecurity-mosaic-core.umd.js.map +1 -1
  21. package/bundles/ptsecurity-mosaic-datepicker.umd.js +601 -421
  22. package/bundles/ptsecurity-mosaic-datepicker.umd.js.map +1 -1
  23. package/bundles/ptsecurity-mosaic-design-tokens.umd.js +108 -26
  24. package/bundles/ptsecurity-mosaic-design-tokens.umd.js.map +1 -1
  25. package/bundles/ptsecurity-mosaic-divider.umd.js +55 -28
  26. package/bundles/ptsecurity-mosaic-divider.umd.js.map +1 -1
  27. package/bundles/ptsecurity-mosaic-dropdown.umd.js +263 -187
  28. package/bundles/ptsecurity-mosaic-dropdown.umd.js.map +1 -1
  29. package/bundles/ptsecurity-mosaic-form-field.umd.js +200 -125
  30. package/bundles/ptsecurity-mosaic-form-field.umd.js.map +1 -1
  31. package/bundles/ptsecurity-mosaic-icon.umd.js +79 -41
  32. package/bundles/ptsecurity-mosaic-icon.umd.js.map +1 -1
  33. package/bundles/ptsecurity-mosaic-input.umd.js +222 -124
  34. package/bundles/ptsecurity-mosaic-input.umd.js.map +1 -1
  35. package/bundles/ptsecurity-mosaic-link.umd.js +76 -45
  36. package/bundles/ptsecurity-mosaic-link.umd.js.map +1 -1
  37. package/bundles/ptsecurity-mosaic-list.umd.js +354 -202
  38. package/bundles/ptsecurity-mosaic-list.umd.js.map +1 -1
  39. package/bundles/ptsecurity-mosaic-modal.umd.js +324 -220
  40. package/bundles/ptsecurity-mosaic-modal.umd.js.map +1 -1
  41. package/bundles/ptsecurity-mosaic-navbar.umd.js +289 -208
  42. package/bundles/ptsecurity-mosaic-navbar.umd.js.map +1 -1
  43. package/bundles/ptsecurity-mosaic-popover.umd.js +346 -640
  44. package/bundles/ptsecurity-mosaic-popover.umd.js.map +1 -1
  45. package/bundles/ptsecurity-mosaic-progress-bar.umd.js +69 -40
  46. package/bundles/ptsecurity-mosaic-progress-bar.umd.js.map +1 -1
  47. package/bundles/ptsecurity-mosaic-progress-spinner.umd.js +69 -40
  48. package/bundles/ptsecurity-mosaic-progress-spinner.umd.js.map +1 -1
  49. package/bundles/ptsecurity-mosaic-radio.umd.js +126 -81
  50. package/bundles/ptsecurity-mosaic-radio.umd.js.map +1 -1
  51. package/bundles/ptsecurity-mosaic-select.umd.js +276 -154
  52. package/bundles/ptsecurity-mosaic-select.umd.js.map +1 -1
  53. package/bundles/ptsecurity-mosaic-sidebar.umd.js +105 -68
  54. package/bundles/ptsecurity-mosaic-sidebar.umd.js.map +1 -1
  55. package/bundles/ptsecurity-mosaic-sidepanel.umd.js +236 -158
  56. package/bundles/ptsecurity-mosaic-sidepanel.umd.js.map +1 -1
  57. package/bundles/ptsecurity-mosaic-splitter.umd.js +112 -83
  58. package/bundles/ptsecurity-mosaic-splitter.umd.js.map +1 -1
  59. package/bundles/ptsecurity-mosaic-table.umd.js +77 -44
  60. package/bundles/ptsecurity-mosaic-table.umd.js.map +1 -1
  61. package/bundles/ptsecurity-mosaic-tabs.umd.js +894 -687
  62. package/bundles/ptsecurity-mosaic-tabs.umd.js.map +1 -1
  63. package/bundles/ptsecurity-mosaic-tags.umd.js +313 -209
  64. package/bundles/ptsecurity-mosaic-tags.umd.js.map +1 -1
  65. package/bundles/ptsecurity-mosaic-textarea.umd.js +107 -53
  66. package/bundles/ptsecurity-mosaic-textarea.umd.js.map +1 -1
  67. package/bundles/ptsecurity-mosaic-timepicker.umd.js +117 -72
  68. package/bundles/ptsecurity-mosaic-timepicker.umd.js.map +1 -1
  69. package/bundles/ptsecurity-mosaic-toggle.umd.js +97 -58
  70. package/bundles/ptsecurity-mosaic-toggle.umd.js.map +1 -1
  71. package/bundles/ptsecurity-mosaic-tooltip.umd.js +347 -615
  72. package/bundles/ptsecurity-mosaic-tooltip.umd.js.map +1 -1
  73. package/bundles/ptsecurity-mosaic-tree-select.umd.js +223 -118
  74. package/bundles/ptsecurity-mosaic-tree-select.umd.js.map +1 -1
  75. package/bundles/ptsecurity-mosaic-tree.umd.js +1162 -344
  76. package/bundles/ptsecurity-mosaic-tree.umd.js.map +1 -1
  77. package/bundles/ptsecurity-mosaic.umd.js +2 -2
  78. package/button/button.component.d.ts +7 -0
  79. package/button/button.module.d.ts +8 -0
  80. package/button/package.json +0 -1
  81. package/button/ptsecurity-mosaic-button.d.ts +1 -0
  82. package/button-toggle/button-toggle.component.d.ts +5 -0
  83. package/button-toggle/button-toggle.module.d.ts +7 -0
  84. package/button-toggle/package.json +0 -1
  85. package/button-toggle/ptsecurity-mosaic-button-toggle.d.ts +1 -0
  86. package/card/card.component.d.ts +3 -0
  87. package/card/card.module.d.ts +8 -0
  88. package/card/package.json +0 -1
  89. package/card/ptsecurity-mosaic-card.d.ts +1 -0
  90. package/checkbox/checkbox-module.d.ts +7 -0
  91. package/checkbox/checkbox-required-validator.d.ts +3 -0
  92. package/checkbox/checkbox.d.ts +3 -0
  93. package/checkbox/package.json +0 -1
  94. package/checkbox/ptsecurity-mosaic-checkbox.d.ts +1 -0
  95. package/core/common-behaviors/color.d.ts +3 -3
  96. package/core/common-behaviors/common-module.d.ts +5 -0
  97. package/core/common-behaviors/disabled.d.ts +4 -3
  98. package/core/common-behaviors/tabindex.d.ts +2 -1
  99. package/core/error/error-options.d.ts +5 -0
  100. package/core/formatters/date/formatter.d.ts +3 -0
  101. package/core/formatters/index.d.ts +5 -0
  102. package/core/formatters/number/formatter.d.ts +4 -0
  103. package/core/forms/forms-module.d.ts +5 -0
  104. package/core/forms/forms.directive.d.ts +5 -0
  105. package/core/highlight/highlight.pipe.d.ts +3 -0
  106. package/core/highlight/index.d.ts +6 -0
  107. package/core/line/line.d.ts +6 -0
  108. package/core/option/action.d.ts +42 -0
  109. package/core/option/index.d.ts +1 -0
  110. package/core/option/optgroup.d.ts +3 -0
  111. package/core/option/option-module.d.ts +9 -0
  112. package/core/option/option.d.ts +3 -0
  113. package/core/overlay/overlay-position-map.d.ts +0 -4
  114. package/core/package.json +0 -1
  115. package/core/pop-up/constants.d.ts +29 -0
  116. package/core/pop-up/index.d.ts +3 -0
  117. package/core/pop-up/pop-up-trigger.d.ts +70 -0
  118. package/core/pop-up/pop-up.d.ts +35 -0
  119. package/core/ptsecurity-mosaic-core.d.ts +1 -1
  120. package/core/public-api.d.ts +1 -0
  121. package/core/selection/pseudo-checkbox/pseudo-checkbox.d.ts +3 -0
  122. package/core/selection/pseudo-checkbox/pseudo-checkbox.module.d.ts +6 -0
  123. package/core/services/measure-scrollbar.service.d.ts +3 -0
  124. package/datepicker/calendar-body.component.d.ts +5 -6
  125. package/datepicker/calendar.component.d.ts +5 -0
  126. package/datepicker/datepicker-input.directive.d.ts +6 -2
  127. package/datepicker/datepicker-intl.d.ts +3 -0
  128. package/datepicker/datepicker-module.d.ts +18 -0
  129. package/datepicker/datepicker-toggle.component.d.ts +5 -0
  130. package/datepicker/datepicker.component.d.ts +5 -0
  131. package/datepicker/month-view.component.d.ts +3 -0
  132. package/datepicker/multi-year-view.component.d.ts +3 -0
  133. package/datepicker/package.json +0 -1
  134. package/datepicker/ptsecurity-mosaic-datepicker.d.ts +1 -0
  135. package/datepicker/year-view.component.d.ts +3 -0
  136. package/design-tokens/package.json +0 -1
  137. package/design-tokens/ptsecurity-mosaic-design-tokens.d.ts +1 -0
  138. package/design-tokens/tokens/components/list.json5 +0 -4
  139. package/design-tokens/tokens/components/popover.json5 +32 -4
  140. package/design-tokens/tokens/components/tooltip.json5 +49 -3
  141. package/design-tokens/tokens/components/tree.json5 +3 -3
  142. package/design-tokens/tokens/properties/globals.json5 +1 -1
  143. package/design-tokens/tokens.d.ts +56 -15
  144. package/divider/divider.component.d.ts +3 -0
  145. package/divider/divider.module.d.ts +6 -0
  146. package/divider/package.json +0 -1
  147. package/divider/ptsecurity-mosaic-divider.d.ts +1 -0
  148. package/dropdown/dropdown-content.directive.d.ts +3 -0
  149. package/dropdown/dropdown-item.component.d.ts +3 -0
  150. package/dropdown/dropdown-trigger.directive.d.ts +6 -8
  151. package/dropdown/dropdown.component.d.ts +5 -1
  152. package/dropdown/dropdown.module.d.ts +11 -0
  153. package/dropdown/package.json +0 -1
  154. package/dropdown/ptsecurity-mosaic-dropdown.d.ts +1 -0
  155. package/esm2015/autocomplete/autocomplete-origin.directive.js +11 -11
  156. package/esm2015/autocomplete/autocomplete-trigger.directive.js +53 -38
  157. package/esm2015/autocomplete/autocomplete.component.js +56 -37
  158. package/esm2015/autocomplete/autocomplete.module.js +25 -15
  159. package/esm2015/button/button.component.js +52 -56
  160. package/esm2015/button/button.module.js +35 -20
  161. package/esm2015/button-toggle/button-toggle.component.js +76 -55
  162. package/esm2015/button-toggle/button-toggle.module.js +13 -8
  163. package/esm2015/card/card.component.js +32 -30
  164. package/esm2015/card/card.module.js +23 -12
  165. package/esm2015/checkbox/checkbox-module.js +13 -8
  166. package/esm2015/checkbox/checkbox-required-validator.js +12 -8
  167. package/esm2015/checkbox/checkbox.js +61 -44
  168. package/esm2015/core/common-behaviors/color.js +2 -5
  169. package/esm2015/core/common-behaviors/common-module.js +17 -11
  170. package/esm2015/core/common-behaviors/disabled.js +1 -1
  171. package/esm2015/core/common-behaviors/tabindex.js +4 -13
  172. package/esm2015/core/error/error-options.js +12 -8
  173. package/esm2015/core/formatters/date/formatter.js +13 -10
  174. package/esm2015/core/formatters/index.js +13 -8
  175. package/esm2015/core/formatters/number/formatter.js +16 -10
  176. package/esm2015/core/forms/forms-module.js +20 -13
  177. package/esm2015/core/forms/forms.directive.js +32 -29
  178. package/esm2015/core/highlight/highlight.pipe.js +8 -4
  179. package/esm2015/core/highlight/index.js +13 -8
  180. package/esm2015/core/line/line.js +22 -14
  181. package/esm2015/core/option/action.js +131 -0
  182. package/esm2015/core/option/index.js +2 -1
  183. package/esm2015/core/option/optgroup.js +22 -19
  184. package/esm2015/core/option/option-module.js +14 -8
  185. package/esm2015/core/option/option.js +44 -35
  186. package/esm2015/core/overlay/overlay-position-map.js +16 -18
  187. package/esm2015/core/pop-up/constants.js +34 -0
  188. package/esm2015/core/pop-up/index.js +4 -0
  189. package/esm2015/core/pop-up/pop-up-trigger.js +241 -0
  190. package/esm2015/core/pop-up/pop-up.js +87 -0
  191. package/esm2015/core/ptsecurity-mosaic-core.js +1 -2
  192. package/esm2015/core/public-api.js +2 -1
  193. package/esm2015/core/selection/pseudo-checkbox/pseudo-checkbox.js +25 -21
  194. package/esm2015/core/selection/pseudo-checkbox/pseudo-checkbox.module.js +13 -8
  195. package/esm2015/core/services/measure-scrollbar.service.js +12 -12
  196. package/esm2015/datepicker/calendar-body.component.js +39 -32
  197. package/esm2015/datepicker/calendar.component.js +92 -58
  198. package/esm2015/datepicker/datepicker-input.directive.js +94 -62
  199. package/esm2015/datepicker/datepicker-intl.js +7 -5
  200. package/esm2015/datepicker/datepicker-module.js +89 -48
  201. package/esm2015/datepicker/datepicker-toggle.component.js +44 -32
  202. package/esm2015/datepicker/datepicker.component.js +88 -63
  203. package/esm2015/datepicker/month-view.component.js +48 -29
  204. package/esm2015/datepicker/multi-year-view.component.js +40 -27
  205. package/esm2015/datepicker/year-view.component.js +45 -28
  206. package/esm2015/design-tokens/tokens.js +57 -16
  207. package/esm2015/divider/divider.component.js +24 -20
  208. package/esm2015/divider/divider.module.js +13 -8
  209. package/esm2015/dropdown/dropdown-content.directive.js +13 -15
  210. package/esm2015/dropdown/dropdown-item.component.js +40 -30
  211. package/esm2015/dropdown/dropdown-trigger.directive.js +75 -67
  212. package/esm2015/dropdown/dropdown.component.js +63 -38
  213. package/esm2015/dropdown/dropdown.module.js +40 -23
  214. package/esm2015/form-field/cleaner.js +20 -11
  215. package/esm2015/form-field/form-field.js +77 -53
  216. package/esm2015/form-field/form-field.module.js +41 -24
  217. package/esm2015/form-field/hint.js +16 -13
  218. package/esm2015/form-field/prefix.js +10 -6
  219. package/esm2015/form-field/stepper.js +22 -11
  220. package/esm2015/form-field/suffix.js +10 -6
  221. package/esm2015/icon/icon.component.js +27 -22
  222. package/esm2015/icon/icon.module.js +31 -18
  223. package/esm2015/input/input-number-validators.js +48 -29
  224. package/esm2015/input/input-number.js +42 -28
  225. package/esm2015/input/input.js +94 -52
  226. package/esm2015/input/input.module.js +13 -8
  227. package/esm2015/link/link.component.js +38 -34
  228. package/esm2015/link/link.module.js +20 -11
  229. package/esm2015/list/list-selection.component.js +234 -124
  230. package/esm2015/list/list.component.js +35 -32
  231. package/esm2015/list/list.module.js +47 -25
  232. package/esm2015/modal/css-unit.pipe.js +10 -6
  233. package/esm2015/modal/modal-control.service.js +11 -8
  234. package/esm2015/modal/modal.component.js +107 -61
  235. package/esm2015/modal/modal.directive.js +43 -30
  236. package/esm2015/modal/modal.module.js +59 -31
  237. package/esm2015/modal/modal.service.js +9 -9
  238. package/esm2015/modal/ptsecurity-mosaic-modal.js +1 -3
  239. package/esm2015/navbar/navbar-item.component.js +111 -95
  240. package/esm2015/navbar/navbar.component.js +40 -30
  241. package/esm2015/navbar/navbar.module.js +66 -35
  242. package/esm2015/navbar/ptsecurity-mosaic-navbar.js +1 -2
  243. package/esm2015/navbar/vertical-navbar.component.js +68 -46
  244. package/esm2015/popover/popover-confirm.component.js +115 -0
  245. package/esm2015/popover/popover.component.js +180 -587
  246. package/esm2015/popover/popover.module.js +18 -12
  247. package/esm2015/popover/public-api.js +2 -1
  248. package/esm2015/progress-bar/progress-bar.component.js +26 -24
  249. package/esm2015/progress-bar/progress-bar.module.js +24 -15
  250. package/esm2015/progress-spinner/progress-spinner.component.js +26 -24
  251. package/esm2015/progress-spinner/progress-spinner.module.js +24 -15
  252. package/esm2015/radio/radio.component.js +87 -67
  253. package/esm2015/radio/radio.module.js +13 -8
  254. package/esm2015/select/select.component.js +181 -105
  255. package/esm2015/select/select.module.js +54 -28
  256. package/esm2015/sidebar/ptsecurity-mosaic-sidebar.js +1 -2
  257. package/esm2015/sidebar/sidebar.component.js +61 -50
  258. package/esm2015/sidebar/sidebar.module.js +25 -16
  259. package/esm2015/sidepanel/ptsecurity-mosaic-sidepanel.js +1 -2
  260. package/esm2015/sidepanel/sidepanel-container.component.js +46 -40
  261. package/esm2015/sidepanel/sidepanel-directives.js +87 -57
  262. package/esm2015/sidepanel/sidepanel.module.js +63 -30
  263. package/esm2015/sidepanel/sidepanel.service.js +20 -12
  264. package/esm2015/splitter/splitter.component.js +62 -64
  265. package/esm2015/splitter/splitter.module.js +32 -19
  266. package/esm2015/table/table.component.js +13 -9
  267. package/esm2015/table/table.module.js +23 -12
  268. package/esm2015/tabs/paginated-tab-header.js +20 -18
  269. package/esm2015/tabs/ptsecurity-mosaic-tabs.js +1 -6
  270. package/esm2015/tabs/tab-body.component.js +52 -42
  271. package/esm2015/tabs/tab-content.directive.js +8 -8
  272. package/esm2015/tabs/tab-group.component.js +145 -74
  273. package/esm2015/tabs/tab-header.component.js +50 -36
  274. package/esm2015/tabs/tab-label-wrapper.directive.js +30 -16
  275. package/esm2015/tabs/tab-label.directive.js +11 -7
  276. package/esm2015/tabs/tab-nav-bar/tab-nav-bar.js +46 -46
  277. package/esm2015/tabs/tab.component.js +67 -33
  278. package/esm2015/tabs/tabs.module.js +87 -45
  279. package/esm2015/tags/tag-input.js +48 -34
  280. package/esm2015/tags/tag-list.component.js +93 -56
  281. package/esm2015/tags/tag.component.js +90 -73
  282. package/esm2015/tags/tag.module.js +46 -29
  283. package/esm2015/textarea/textarea.component.js +70 -41
  284. package/esm2015/textarea/textarea.module.js +13 -8
  285. package/esm2015/timepicker/timepicker.directive.js +66 -54
  286. package/esm2015/timepicker/timepicker.module.js +26 -13
  287. package/esm2015/toggle/toggle.component.js +65 -47
  288. package/esm2015/toggle/toggle.module.js +13 -8
  289. package/esm2015/tooltip/tooltip.animations.js +19 -0
  290. package/esm2015/tooltip/tooltip.component.js +239 -555
  291. package/esm2015/tooltip/tooltip.module.js +38 -11
  292. package/esm2015/tree/control/base-tree-control.js +60 -0
  293. package/esm2015/tree/control/flat-tree-control.js +123 -0
  294. package/esm2015/tree/control/nested-tree-control.js +41 -0
  295. package/esm2015/tree/control/tree-control.js +2 -0
  296. package/esm2015/tree/data-source/flat-data-source.js +1 -1
  297. package/esm2015/tree/node.js +31 -0
  298. package/esm2015/tree/outlet.js +15 -0
  299. package/esm2015/tree/padding.directive.js +98 -25
  300. package/esm2015/tree/public-api.js +9 -2
  301. package/esm2015/tree/toggle.js +65 -70
  302. package/esm2015/tree/tree-base.js +243 -0
  303. package/esm2015/tree/tree-errors.js +36 -0
  304. package/esm2015/tree/tree-option.component.js +102 -56
  305. package/esm2015/tree/tree-selection.component.js +180 -115
  306. package/esm2015/tree/tree.js +23 -0
  307. package/esm2015/tree/tree.module.js +38 -12
  308. package/esm2015/tree-select/tree-select.component.js +153 -85
  309. package/esm2015/tree-select/tree-select.module.js +33 -18
  310. package/fesm2015/ptsecurity-mosaic-autocomplete.js +140 -102
  311. package/fesm2015/ptsecurity-mosaic-autocomplete.js.map +1 -1
  312. package/fesm2015/ptsecurity-mosaic-button-toggle.js +87 -63
  313. package/fesm2015/ptsecurity-mosaic-button-toggle.js.map +1 -1
  314. package/fesm2015/ptsecurity-mosaic-button.js +86 -76
  315. package/fesm2015/ptsecurity-mosaic-button.js.map +1 -1
  316. package/fesm2015/ptsecurity-mosaic-card.js +54 -42
  317. package/fesm2015/ptsecurity-mosaic-card.js.map +1 -1
  318. package/fesm2015/ptsecurity-mosaic-checkbox.js +82 -59
  319. package/fesm2015/ptsecurity-mosaic-checkbox.js.map +1 -1
  320. package/fesm2015/ptsecurity-mosaic-core.js +758 -239
  321. package/fesm2015/ptsecurity-mosaic-core.js.map +1 -1
  322. package/fesm2015/ptsecurity-mosaic-datepicker.js +546 -377
  323. package/fesm2015/ptsecurity-mosaic-datepicker.js.map +1 -1
  324. package/fesm2015/ptsecurity-mosaic-design-tokens.js +57 -16
  325. package/fesm2015/ptsecurity-mosaic-design-tokens.js.map +1 -1
  326. package/fesm2015/ptsecurity-mosaic-divider.js +34 -26
  327. package/fesm2015/ptsecurity-mosaic-divider.js.map +1 -1
  328. package/fesm2015/ptsecurity-mosaic-dropdown.js +219 -171
  329. package/fesm2015/ptsecurity-mosaic-dropdown.js.map +1 -1
  330. package/fesm2015/ptsecurity-mosaic-form-field.js +184 -119
  331. package/fesm2015/ptsecurity-mosaic-form-field.js.map +1 -1
  332. package/fesm2015/ptsecurity-mosaic-icon.js +56 -39
  333. package/fesm2015/ptsecurity-mosaic-icon.js.map +1 -1
  334. package/fesm2015/ptsecurity-mosaic-input.js +191 -116
  335. package/fesm2015/ptsecurity-mosaic-input.js.map +1 -1
  336. package/fesm2015/ptsecurity-mosaic-link.js +57 -45
  337. package/fesm2015/ptsecurity-mosaic-link.js.map +1 -1
  338. package/fesm2015/ptsecurity-mosaic-list.js +311 -179
  339. package/fesm2015/ptsecurity-mosaic-list.js.map +1 -1
  340. package/fesm2015/ptsecurity-mosaic-modal.js +243 -159
  341. package/fesm2015/ptsecurity-mosaic-modal.js.map +1 -1
  342. package/fesm2015/ptsecurity-mosaic-navbar.js +280 -205
  343. package/fesm2015/ptsecurity-mosaic-navbar.js.map +1 -1
  344. package/fesm2015/ptsecurity-mosaic-popover.js +297 -597
  345. package/fesm2015/ptsecurity-mosaic-popover.js.map +1 -1
  346. package/fesm2015/ptsecurity-mosaic-progress-bar.js +48 -38
  347. package/fesm2015/ptsecurity-mosaic-progress-bar.js.map +1 -1
  348. package/fesm2015/ptsecurity-mosaic-progress-spinner.js +48 -38
  349. package/fesm2015/ptsecurity-mosaic-progress-spinner.js.map +1 -1
  350. package/fesm2015/ptsecurity-mosaic-radio.js +99 -76
  351. package/fesm2015/ptsecurity-mosaic-radio.js.map +1 -1
  352. package/fesm2015/ptsecurity-mosaic-select.js +236 -136
  353. package/fesm2015/ptsecurity-mosaic-select.js.map +1 -1
  354. package/fesm2015/ptsecurity-mosaic-sidebar.js +85 -66
  355. package/fesm2015/ptsecurity-mosaic-sidebar.js.map +1 -1
  356. package/fesm2015/ptsecurity-mosaic-sidepanel.js +207 -139
  357. package/fesm2015/ptsecurity-mosaic-sidepanel.js.map +1 -1
  358. package/fesm2015/ptsecurity-mosaic-splitter.js +92 -82
  359. package/fesm2015/ptsecurity-mosaic-splitter.js.map +1 -1
  360. package/fesm2015/ptsecurity-mosaic-table.js +33 -19
  361. package/fesm2015/ptsecurity-mosaic-table.js.map +1 -1
  362. package/fesm2015/ptsecurity-mosaic-tabs.js +557 -387
  363. package/fesm2015/ptsecurity-mosaic-tabs.js.map +1 -1
  364. package/fesm2015/ptsecurity-mosaic-tags.js +273 -192
  365. package/fesm2015/ptsecurity-mosaic-tags.js.map +1 -1
  366. package/fesm2015/ptsecurity-mosaic-textarea.js +83 -50
  367. package/fesm2015/ptsecurity-mosaic-textarea.js.map +1 -1
  368. package/fesm2015/ptsecurity-mosaic-timepicker.js +89 -66
  369. package/fesm2015/ptsecurity-mosaic-timepicker.js.map +1 -1
  370. package/fesm2015/ptsecurity-mosaic-toggle.js +77 -55
  371. package/fesm2015/ptsecurity-mosaic-toggle.js.map +1 -1
  372. package/fesm2015/ptsecurity-mosaic-tooltip.js +293 -566
  373. package/fesm2015/ptsecurity-mosaic-tooltip.js.map +1 -1
  374. package/fesm2015/ptsecurity-mosaic-tree-select.js +188 -106
  375. package/fesm2015/ptsecurity-mosaic-tree-select.js.map +1 -1
  376. package/fesm2015/ptsecurity-mosaic-tree.js +1001 -279
  377. package/fesm2015/ptsecurity-mosaic-tree.js.map +1 -1
  378. package/form-field/cleaner.d.ts +5 -0
  379. package/form-field/form-field.d.ts +5 -0
  380. package/form-field/form-field.module.d.ts +12 -0
  381. package/form-field/hint.d.ts +3 -0
  382. package/form-field/package.json +0 -1
  383. package/form-field/prefix.d.ts +3 -0
  384. package/form-field/ptsecurity-mosaic-form-field.d.ts +1 -0
  385. package/form-field/stepper.d.ts +3 -0
  386. package/form-field/suffix.d.ts +3 -0
  387. package/icon/icon.component.d.ts +5 -0
  388. package/icon/icon.module.d.ts +8 -0
  389. package/icon/package.json +0 -1
  390. package/icon/ptsecurity-mosaic-icon.d.ts +1 -0
  391. package/input/input-number-validators.d.ts +7 -2
  392. package/input/input-number.d.ts +3 -0
  393. package/input/input.d.ts +5 -0
  394. package/input/input.module.d.ts +11 -0
  395. package/input/package.json +0 -1
  396. package/input/ptsecurity-mosaic-input.d.ts +1 -0
  397. package/link/link.component.d.ts +3 -0
  398. package/link/link.module.d.ts +7 -0
  399. package/link/package.json +0 -1
  400. package/link/ptsecurity-mosaic-link.d.ts +1 -0
  401. package/list/list-selection.component.d.ts +30 -3
  402. package/list/list.component.d.ts +5 -0
  403. package/list/list.module.d.ts +9 -0
  404. package/list/package.json +0 -1
  405. package/list/ptsecurity-mosaic-list.d.ts +1 -0
  406. package/modal/css-unit.pipe.d.ts +3 -0
  407. package/modal/modal-control.service.d.ts +3 -0
  408. package/modal/modal.component.d.ts +5 -0
  409. package/modal/modal.directive.d.ts +9 -0
  410. package/modal/modal.module.d.ts +12 -0
  411. package/modal/modal.service.d.ts +3 -0
  412. package/modal/package.json +0 -1
  413. package/modal/ptsecurity-mosaic-modal.d.ts +1 -2
  414. package/navbar/navbar-item.component.d.ts +13 -0
  415. package/navbar/navbar.component.d.ts +5 -0
  416. package/navbar/navbar.module.d.ts +11 -0
  417. package/navbar/package.json +0 -1
  418. package/navbar/ptsecurity-mosaic-navbar.d.ts +1 -1
  419. package/navbar/vertical-navbar.component.d.ts +5 -0
  420. package/package.json +8 -9
  421. package/popover/package.json +0 -1
  422. package/popover/popover-confirm.component.d.ts +33 -0
  423. package/popover/popover.component.d.ts +50 -136
  424. package/popover/popover.module.d.ts +9 -0
  425. package/popover/ptsecurity-mosaic-popover.d.ts +1 -0
  426. package/popover/public-api.d.ts +1 -0
  427. package/prebuilt-themes/dark-theme.css +1 -1
  428. package/prebuilt-themes/default-theme.css +1 -1
  429. package/prebuilt-visual/default-visual.css +1 -1
  430. package/progress-bar/package.json +0 -1
  431. package/progress-bar/progress-bar.component.d.ts +3 -0
  432. package/progress-bar/progress-bar.module.d.ts +7 -0
  433. package/progress-bar/ptsecurity-mosaic-progress-bar.d.ts +1 -0
  434. package/progress-spinner/package.json +0 -1
  435. package/progress-spinner/progress-spinner.component.d.ts +3 -0
  436. package/progress-spinner/progress-spinner.module.d.ts +7 -0
  437. package/progress-spinner/ptsecurity-mosaic-progress-spinner.d.ts +1 -0
  438. package/ptsecurity-mosaic.d.ts +1 -0
  439. package/radio/package.json +0 -1
  440. package/radio/ptsecurity-mosaic-radio.d.ts +1 -0
  441. package/radio/radio.component.d.ts +5 -0
  442. package/radio/radio.module.d.ts +8 -0
  443. package/schematics/ng-update/update-9.0.0/secondary-entry-points-migration.js +6 -3
  444. package/schematics/ng-update/update-9.0.0/secondary-entry-points-migration.js.map +1 -1
  445. package/select/package.json +0 -1
  446. package/select/ptsecurity-mosaic-select.d.ts +1 -0
  447. package/select/select.component.d.ts +11 -7
  448. package/select/select.module.d.ts +11 -0
  449. package/sidebar/package.json +0 -1
  450. package/sidebar/ptsecurity-mosaic-sidebar.d.ts +1 -1
  451. package/sidebar/sidebar.component.d.ts +7 -0
  452. package/sidebar/sidebar.module.d.ts +6 -0
  453. package/sidepanel/package.json +0 -1
  454. package/sidepanel/ptsecurity-mosaic-sidepanel.d.ts +1 -1
  455. package/sidepanel/sidepanel-container.component.d.ts +3 -0
  456. package/sidepanel/sidepanel-directives.d.ts +13 -0
  457. package/sidepanel/sidepanel.module.d.ts +13 -0
  458. package/sidepanel/sidepanel.service.d.ts +3 -0
  459. package/splitter/package.json +0 -1
  460. package/splitter/ptsecurity-mosaic-splitter.d.ts +1 -0
  461. package/splitter/splitter.component.d.ts +7 -0
  462. package/splitter/splitter.module.d.ts +7 -0
  463. package/table/package.json +0 -1
  464. package/table/ptsecurity-mosaic-table.d.ts +1 -0
  465. package/table/table.component.d.ts +3 -0
  466. package/table/table.module.d.ts +8 -0
  467. package/tabs/package.json +0 -1
  468. package/tabs/paginated-tab-header.d.ts +3 -0
  469. package/tabs/ptsecurity-mosaic-tabs.d.ts +1 -5
  470. package/tabs/tab-body.component.d.ts +5 -0
  471. package/tabs/tab-content.directive.d.ts +3 -0
  472. package/tabs/tab-group.component.d.ts +24 -4
  473. package/tabs/tab-header.component.d.ts +3 -0
  474. package/tabs/tab-label-wrapper.directive.d.ts +9 -0
  475. package/tabs/tab-label.directive.d.ts +3 -0
  476. package/tabs/tab-nav-bar/tab-nav-bar.d.ts +5 -0
  477. package/tabs/tab.component.d.ts +12 -3
  478. package/tabs/tabs.module.d.ts +18 -0
  479. package/tags/package.json +0 -1
  480. package/tags/ptsecurity-mosaic-tags.d.ts +1 -0
  481. package/tags/tag-input.d.ts +3 -0
  482. package/tags/tag-list.component.d.ts +3 -0
  483. package/tags/tag.component.d.ts +9 -0
  484. package/tags/tag.module.d.ts +9 -0
  485. package/textarea/package.json +0 -1
  486. package/textarea/ptsecurity-mosaic-textarea.d.ts +1 -0
  487. package/textarea/textarea.component.d.ts +3 -0
  488. package/textarea/textarea.module.d.ts +9 -0
  489. package/timepicker/package.json +0 -1
  490. package/timepicker/ptsecurity-mosaic-timepicker.d.ts +1 -0
  491. package/timepicker/timepicker.directive.d.ts +5 -2
  492. package/timepicker/timepicker.module.d.ts +9 -0
  493. package/toggle/package.json +0 -1
  494. package/toggle/ptsecurity-mosaic-toggle.d.ts +1 -0
  495. package/toggle/toggle.component.d.ts +3 -0
  496. package/toggle/toggle.module.d.ts +8 -0
  497. package/tooltip/package.json +0 -1
  498. package/tooltip/ptsecurity-mosaic-tooltip.d.ts +1 -0
  499. package/tooltip/tooltip.animations.d.ts +8 -0
  500. package/tooltip/tooltip.component.d.ts +74 -134
  501. package/tooltip/tooltip.module.d.ts +7 -0
  502. package/tree/control/base-tree-control.d.ts +40 -0
  503. package/tree/control/flat-tree-control.d.ts +48 -0
  504. package/tree/control/nested-tree-control.d.ts +19 -0
  505. package/tree/control/tree-control.d.ts +44 -0
  506. package/tree/data-source/flat-data-source.d.ts +2 -1
  507. package/tree/node.d.ts +34 -0
  508. package/tree/outlet.d.ts +9 -0
  509. package/tree/package.json +0 -1
  510. package/tree/padding.directive.d.ts +36 -5
  511. package/tree/ptsecurity-mosaic-tree.d.ts +1 -0
  512. package/tree/public-api.d.ts +8 -1
  513. package/tree/toggle.d.ts +20 -15
  514. package/tree/tree-base.d.ts +97 -0
  515. package/tree/tree-errors.d.ts +25 -0
  516. package/tree/tree-option.component.d.ts +15 -4
  517. package/tree/tree-selection.component.d.ts +46 -24
  518. package/tree/tree.d.ts +6 -0
  519. package/tree/tree.module.d.ts +14 -0
  520. package/tree-select/package.json +0 -1
  521. package/tree-select/ptsecurity-mosaic-tree-select.d.ts +1 -0
  522. package/tree-select/tree-select.component.d.ts +8 -8
  523. package/tree-select/tree-select.module.d.ts +11 -0
  524. package/autocomplete/ptsecurity-mosaic-autocomplete.metadata.json +0 -1
  525. package/bundles/ptsecurity-mosaic-autocomplete.umd.min.js +0 -2
  526. package/bundles/ptsecurity-mosaic-autocomplete.umd.min.js.map +0 -1
  527. package/bundles/ptsecurity-mosaic-button-toggle.umd.min.js +0 -16
  528. package/bundles/ptsecurity-mosaic-button-toggle.umd.min.js.map +0 -1
  529. package/bundles/ptsecurity-mosaic-button.umd.min.js +0 -16
  530. package/bundles/ptsecurity-mosaic-button.umd.min.js.map +0 -1
  531. package/bundles/ptsecurity-mosaic-card.umd.min.js +0 -16
  532. package/bundles/ptsecurity-mosaic-card.umd.min.js.map +0 -1
  533. package/bundles/ptsecurity-mosaic-checkbox.umd.min.js +0 -16
  534. package/bundles/ptsecurity-mosaic-checkbox.umd.min.js.map +0 -1
  535. package/bundles/ptsecurity-mosaic-core.umd.min.js +0 -17
  536. package/bundles/ptsecurity-mosaic-core.umd.min.js.map +0 -1
  537. package/bundles/ptsecurity-mosaic-datepicker.umd.min.js +0 -2
  538. package/bundles/ptsecurity-mosaic-datepicker.umd.min.js.map +0 -1
  539. package/bundles/ptsecurity-mosaic-design-tokens.umd.min.js +0 -2
  540. package/bundles/ptsecurity-mosaic-design-tokens.umd.min.js.map +0 -1
  541. package/bundles/ptsecurity-mosaic-divider.umd.min.js +0 -2
  542. package/bundles/ptsecurity-mosaic-divider.umd.min.js.map +0 -1
  543. package/bundles/ptsecurity-mosaic-dropdown.umd.min.js +0 -17
  544. package/bundles/ptsecurity-mosaic-dropdown.umd.min.js.map +0 -1
  545. package/bundles/ptsecurity-mosaic-form-field.umd.min.js +0 -17
  546. package/bundles/ptsecurity-mosaic-form-field.umd.min.js.map +0 -1
  547. package/bundles/ptsecurity-mosaic-icon.umd.min.js +0 -16
  548. package/bundles/ptsecurity-mosaic-icon.umd.min.js.map +0 -1
  549. package/bundles/ptsecurity-mosaic-input.umd.min.js +0 -16
  550. package/bundles/ptsecurity-mosaic-input.umd.min.js.map +0 -1
  551. package/bundles/ptsecurity-mosaic-link.umd.min.js +0 -16
  552. package/bundles/ptsecurity-mosaic-link.umd.min.js.map +0 -1
  553. package/bundles/ptsecurity-mosaic-list.umd.min.js +0 -16
  554. package/bundles/ptsecurity-mosaic-list.umd.min.js.map +0 -1
  555. package/bundles/ptsecurity-mosaic-modal.umd.min.js +0 -16
  556. package/bundles/ptsecurity-mosaic-modal.umd.min.js.map +0 -1
  557. package/bundles/ptsecurity-mosaic-navbar.umd.min.js +0 -16
  558. package/bundles/ptsecurity-mosaic-navbar.umd.min.js.map +0 -1
  559. package/bundles/ptsecurity-mosaic-popover.umd.min.js +0 -16
  560. package/bundles/ptsecurity-mosaic-popover.umd.min.js.map +0 -1
  561. package/bundles/ptsecurity-mosaic-progress-bar.umd.min.js +0 -16
  562. package/bundles/ptsecurity-mosaic-progress-bar.umd.min.js.map +0 -1
  563. package/bundles/ptsecurity-mosaic-progress-spinner.umd.min.js +0 -16
  564. package/bundles/ptsecurity-mosaic-progress-spinner.umd.min.js.map +0 -1
  565. package/bundles/ptsecurity-mosaic-radio.umd.min.js +0 -16
  566. package/bundles/ptsecurity-mosaic-radio.umd.min.js.map +0 -1
  567. package/bundles/ptsecurity-mosaic-select.umd.min.js +0 -16
  568. package/bundles/ptsecurity-mosaic-select.umd.min.js.map +0 -1
  569. package/bundles/ptsecurity-mosaic-sidebar.umd.min.js +0 -2
  570. package/bundles/ptsecurity-mosaic-sidebar.umd.min.js.map +0 -1
  571. package/bundles/ptsecurity-mosaic-sidepanel.umd.min.js +0 -2
  572. package/bundles/ptsecurity-mosaic-sidepanel.umd.min.js.map +0 -1
  573. package/bundles/ptsecurity-mosaic-splitter.umd.min.js +0 -2
  574. package/bundles/ptsecurity-mosaic-splitter.umd.min.js.map +0 -1
  575. package/bundles/ptsecurity-mosaic-table.umd.min.js +0 -2
  576. package/bundles/ptsecurity-mosaic-table.umd.min.js.map +0 -1
  577. package/bundles/ptsecurity-mosaic-tabs.umd.min.js +0 -16
  578. package/bundles/ptsecurity-mosaic-tabs.umd.min.js.map +0 -1
  579. package/bundles/ptsecurity-mosaic-tags.umd.min.js +0 -16
  580. package/bundles/ptsecurity-mosaic-tags.umd.min.js.map +0 -1
  581. package/bundles/ptsecurity-mosaic-textarea.umd.min.js +0 -16
  582. package/bundles/ptsecurity-mosaic-textarea.umd.min.js.map +0 -1
  583. package/bundles/ptsecurity-mosaic-timepicker.umd.min.js +0 -2
  584. package/bundles/ptsecurity-mosaic-timepicker.umd.min.js.map +0 -1
  585. package/bundles/ptsecurity-mosaic-toggle.umd.min.js +0 -16
  586. package/bundles/ptsecurity-mosaic-toggle.umd.min.js.map +0 -1
  587. package/bundles/ptsecurity-mosaic-tooltip.umd.min.js +0 -16
  588. package/bundles/ptsecurity-mosaic-tooltip.umd.min.js.map +0 -1
  589. package/bundles/ptsecurity-mosaic-tree-select.umd.min.js +0 -16
  590. package/bundles/ptsecurity-mosaic-tree-select.umd.min.js.map +0 -1
  591. package/bundles/ptsecurity-mosaic-tree.umd.min.js +0 -16
  592. package/bundles/ptsecurity-mosaic-tree.umd.min.js.map +0 -1
  593. package/bundles/ptsecurity-mosaic.umd.min.js +0 -2
  594. package/bundles/ptsecurity-mosaic.umd.min.js.map +0 -1
  595. package/button/ptsecurity-mosaic-button.metadata.json +0 -1
  596. package/button-toggle/ptsecurity-mosaic-button-toggle.metadata.json +0 -1
  597. package/card/ptsecurity-mosaic-card.metadata.json +0 -1
  598. package/checkbox/ptsecurity-mosaic-checkbox.metadata.json +0 -1
  599. package/core/ptsecurity-mosaic-core.metadata.json +0 -1
  600. package/datepicker/ptsecurity-mosaic-datepicker.metadata.json +0 -1
  601. package/design-tokens/ptsecurity-mosaic-design-tokens.metadata.json +0 -1
  602. package/divider/ptsecurity-mosaic-divider.metadata.json +0 -1
  603. package/dropdown/ptsecurity-mosaic-dropdown.metadata.json +0 -1
  604. package/esm2015/tree/node.directive.js +0 -15
  605. package/form-field/ptsecurity-mosaic-form-field.metadata.json +0 -1
  606. package/icon/ptsecurity-mosaic-icon.metadata.json +0 -1
  607. package/input/ptsecurity-mosaic-input.metadata.json +0 -1
  608. package/link/ptsecurity-mosaic-link.metadata.json +0 -1
  609. package/list/ptsecurity-mosaic-list.metadata.json +0 -1
  610. package/modal/ptsecurity-mosaic-modal.metadata.json +0 -1
  611. package/navbar/ptsecurity-mosaic-navbar.metadata.json +0 -1
  612. package/popover/ptsecurity-mosaic-popover.metadata.json +0 -1
  613. package/progress-bar/ptsecurity-mosaic-progress-bar.metadata.json +0 -1
  614. package/progress-spinner/ptsecurity-mosaic-progress-spinner.metadata.json +0 -1
  615. package/ptsecurity-mosaic.metadata.json +0 -1
  616. package/radio/ptsecurity-mosaic-radio.metadata.json +0 -1
  617. package/select/ptsecurity-mosaic-select.metadata.json +0 -1
  618. package/sidebar/ptsecurity-mosaic-sidebar.metadata.json +0 -1
  619. package/sidepanel/ptsecurity-mosaic-sidepanel.metadata.json +0 -1
  620. package/splitter/ptsecurity-mosaic-splitter.metadata.json +0 -1
  621. package/table/ptsecurity-mosaic-table.metadata.json +0 -1
  622. package/tabs/ptsecurity-mosaic-tabs.metadata.json +0 -1
  623. package/tags/ptsecurity-mosaic-tags.metadata.json +0 -1
  624. package/textarea/ptsecurity-mosaic-textarea.metadata.json +0 -1
  625. package/timepicker/ptsecurity-mosaic-timepicker.metadata.json +0 -1
  626. package/toggle/ptsecurity-mosaic-toggle.metadata.json +0 -1
  627. package/tooltip/ptsecurity-mosaic-tooltip.metadata.json +0 -1
  628. package/tree/node.directive.d.ts +0 -4
  629. package/tree/ptsecurity-mosaic-tree.metadata.json +0 -1
  630. package/tree-select/ptsecurity-mosaic-tree-select.metadata.json +0 -1
@@ -1,8 +1,36 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/cdk/a11y'), require('@angular/cdk/portal'), require('@angular/common'), require('@angular/core'), require('@ptsecurity/mosaic/core'), require('@ptsecurity/mosaic/icon'), require('@ptsecurity/mosaic/tooltip'), require('@angular/cdk/bidi'), require('rxjs'), require('rxjs/operators'), require('@angular/animations'), require('@angular/cdk/coercion'), require('@angular/cdk/platform'), require('@angular/cdk/scrolling'), require('@angular/platform-browser/animations'), require('@angular/cdk/keycodes'), require('@ptsecurity/cdk/keycodes')) :
3
- typeof define === 'function' && define.amd ? define('@ptsecurity/mosaic/tabs', ['exports', '@angular/cdk/a11y', '@angular/cdk/portal', '@angular/common', '@angular/core', '@ptsecurity/mosaic/core', '@ptsecurity/mosaic/icon', '@ptsecurity/mosaic/tooltip', '@angular/cdk/bidi', 'rxjs', 'rxjs/operators', '@angular/animations', '@angular/cdk/coercion', '@angular/cdk/platform', '@angular/cdk/scrolling', '@angular/platform-browser/animations', '@angular/cdk/keycodes', '@ptsecurity/cdk/keycodes'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.ptsecurity = global.ptsecurity || {}, global.ptsecurity.mosaic = global.ptsecurity.mosaic || {}, global.ptsecurity.mosaic.tabs = {}), global.ng.cdk.a11y, global.ng.cdk.portal, global.ng.common, global.ng.core, global.ptsecurity.mosaic.core, global.ptsecurity.mosaic.icon, global.ptsecurity.mosaic.tooltip, global.ng.cdk.bidi, global.rxjs, global.rxjs.operators, global.ng.animations, global.ng.cdk.coercion, global.ng.cdk.platform, global.ng.cdk.scrolling, global.ng.platformBrowser.animations, global.ng.cdk.keycodes, global.mc.cdk.keycodes));
5
- }(this, (function (exports, a11y, portal, common, core, core$1, icon, tooltip, bidi, rxjs, operators, animations, coercion, platform, scrolling, animations$1, keycodes, keycodes$1) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/cdk/a11y'), require('@angular/cdk/portal'), require('@angular/common'), require('@angular/core'), require('@ptsecurity/mosaic/core'), require('@ptsecurity/mosaic/icon'), require('@ptsecurity/mosaic/tooltip'), require('rxjs'), require('rxjs/operators'), require('@angular/animations'), require('@angular/cdk/bidi'), require('@angular/cdk/coercion'), require('@angular/platform-browser/animations'), require('@angular/cdk/keycodes'), require('@angular/cdk/platform'), require('@ptsecurity/cdk/keycodes'), require('@angular/cdk/scrolling')) :
3
+ typeof define === 'function' && define.amd ? define('@ptsecurity/mosaic/tabs', ['exports', '@angular/cdk/a11y', '@angular/cdk/portal', '@angular/common', '@angular/core', '@ptsecurity/mosaic/core', '@ptsecurity/mosaic/icon', '@ptsecurity/mosaic/tooltip', 'rxjs', 'rxjs/operators', '@angular/animations', '@angular/cdk/bidi', '@angular/cdk/coercion', '@angular/platform-browser/animations', '@angular/cdk/keycodes', '@angular/cdk/platform', '@ptsecurity/cdk/keycodes', '@angular/cdk/scrolling'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.ptsecurity = global.ptsecurity || {}, global.ptsecurity.mosaic = global.ptsecurity.mosaic || {}, global.ptsecurity.mosaic.tabs = {}), global.ng.cdk.a11y, global.ng.cdk.portal, global.ng.common, global.ng.core, global.ptsecurity.mosaic.core, global.ptsecurity.mosaic.icon, global.ptsecurity.mosaic.tooltip, global.rxjs, global.rxjs.operators, global.ng.animations, global.ng.cdk.bidi, global.ng.cdk.coercion, global.ng.platformBrowser.animations, global.ng.cdk.keycodes, global.ng.cdk.platform, global.mc.cdk.keycodes, global.ng.cdk.scrolling));
5
+ })(this, (function (exports, i1, i7, i3$1, i0, core, i4, i6, rxjs, operators, animations, i3, coercion, animations$1, keycodes, i2, keycodes$1, i1$1) { 'use strict';
6
+
7
+ function _interopNamespace(e) {
8
+ if (e && e.__esModule) return e;
9
+ var n = Object.create(null);
10
+ if (e) {
11
+ Object.keys(e).forEach(function (k) {
12
+ if (k !== 'default') {
13
+ var d = Object.getOwnPropertyDescriptor(e, k);
14
+ Object.defineProperty(n, k, d.get ? d : {
15
+ enumerable: true,
16
+ get: function () { return e[k]; }
17
+ });
18
+ }
19
+ });
20
+ }
21
+ n["default"] = e;
22
+ return Object.freeze(n);
23
+ }
24
+
25
+ var i1__namespace$1 = /*#__PURE__*/_interopNamespace(i1);
26
+ var i7__namespace = /*#__PURE__*/_interopNamespace(i7);
27
+ var i3__namespace$1 = /*#__PURE__*/_interopNamespace(i3$1);
28
+ var i0__namespace = /*#__PURE__*/_interopNamespace(i0);
29
+ var i4__namespace = /*#__PURE__*/_interopNamespace(i4);
30
+ var i6__namespace = /*#__PURE__*/_interopNamespace(i6);
31
+ var i3__namespace = /*#__PURE__*/_interopNamespace(i3);
32
+ var i2__namespace = /*#__PURE__*/_interopNamespace(i2);
33
+ var i1__namespace = /*#__PURE__*/_interopNamespace(i1$1);
6
34
 
7
35
  /*! *****************************************************************************
8
36
  Copyright (c) Microsoft Corporation.
@@ -355,13 +383,13 @@
355
383
  this.elementRef = elementRef;
356
384
  this.dir = dir;
357
385
  /** Event emitted when the tab begins to animate towards the center as the active tab. */
358
- this.onCentering = new core.EventEmitter();
386
+ this.onCentering = new i0.EventEmitter();
359
387
  /** Event emitted before the centering of the tab begins. */
360
- this.beforeCentering = new core.EventEmitter();
388
+ this.beforeCentering = new i0.EventEmitter();
361
389
  /** Event emitted before the centering of the tab begins. */
362
- this.afterLeavingCenter = new core.EventEmitter();
390
+ this.afterLeavingCenter = new i0.EventEmitter();
363
391
  /** Event emitted when the tab completes its animation towards the center. */
364
- this.onCentered = new core.EventEmitter(true);
392
+ this.onCentered = new i0.EventEmitter(true);
365
393
  // Note that the default value will always be overwritten by `McTabBody`, but we need one
366
394
  // anyway to prevent the animations module from throwing an error if the body is used on its own.
367
395
  /** Duration for the tab's animation. */
@@ -447,36 +475,46 @@
447
475
  };
448
476
  return McTabBody;
449
477
  }());
450
- McTabBody.decorators = [
451
- { type: core.Component, args: [{
452
- selector: 'mc-tab-body',
453
- template: "<div class=\"mc-tab-body__content\"\n #content\n [@translateTab]=\"{\n value: bodyPosition,\n params: {animationDuration: animationDuration}\n }\"\n (@translateTab.start)=\"onTranslateTabStarted($event)\"\n (@translateTab.done)=\"onTranslateTabComplete($event)\">\n <ng-template mcTabBodyHost></ng-template>\n</div>\n",
454
- encapsulation: core.ViewEncapsulation.None,
455
- changeDetection: core.ChangeDetectionStrategy.OnPush,
456
- animations: [mcTabsAnimations.translateTab],
457
- host: {
458
- class: 'mc-tab-body'
459
- },
460
- styles: [".mc-tab-body__content{height:100%;overflow:auto}.mc-tab-body__content .mc-tab-group_dynamic-height{overflow:hidden}"]
461
- },] }
462
- ];
463
- /** @nocollapse */
464
- McTabBody.ctorParameters = function () { return [
465
- { type: core.ElementRef },
466
- { type: bidi.Directionality, decorators: [{ type: core.Optional }] },
467
- { type: core.ChangeDetectorRef }
468
- ]; };
469
- McTabBody.propDecorators = {
470
- position: [{ type: core.Input }],
471
- onCentering: [{ type: core.Output }],
472
- beforeCentering: [{ type: core.Output }],
473
- afterLeavingCenter: [{ type: core.Output }],
474
- onCentered: [{ type: core.Output }],
475
- portalHost: [{ type: core.ViewChild, args: [portal.CdkPortalOutlet, { static: false },] }],
476
- content: [{ type: core.Input, args: ['content',] }],
477
- origin: [{ type: core.Input }],
478
- animationDuration: [{ type: core.Input }]
479
- };
478
+ /** @nocollapse */ McTabBody.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: McTabBody, deps: [{ token: i0__namespace.ElementRef }, { token: i3__namespace.Directionality, optional: true }, { token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
479
+ /** @nocollapse */ McTabBody.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: McTabBody, selector: "mc-tab-body", inputs: { position: "position", content: "content", origin: "origin", animationDuration: "animationDuration" }, outputs: { onCentering: "onCentering", beforeCentering: "beforeCentering", afterLeavingCenter: "afterLeavingCenter", onCentered: "onCentered" }, host: { classAttribute: "mc-tab-body" }, viewQueries: [{ propertyName: "portalHost", first: true, predicate: i7.CdkPortalOutlet, descendants: true }], ngImport: i0__namespace, template: "<div class=\"mc-tab-body__content\"\n #content\n [@translateTab]=\"{\n value: bodyPosition,\n params: {animationDuration: animationDuration}\n }\"\n (@translateTab.start)=\"onTranslateTabStarted($event)\"\n (@translateTab.done)=\"onTranslateTabComplete($event)\">\n <ng-template mcTabBodyHost></ng-template>\n</div>\n", styles: [".mc-tab-body__content{height:100%;overflow:auto}.mc-tab-body__content .mc-tab-group_dynamic-height{overflow:hidden}\n"], directives: [{ type: i0__namespace.forwardRef(function () { return McTabBodyPortal; }), selector: "[mcTabBodyHost]" }], animations: [mcTabsAnimations.translateTab], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush, encapsulation: i0__namespace.ViewEncapsulation.None });
480
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: McTabBody, decorators: [{
481
+ type: i0.Component,
482
+ args: [{
483
+ selector: 'mc-tab-body',
484
+ templateUrl: 'tab-body.html',
485
+ styleUrls: ['tab-body.scss'],
486
+ encapsulation: i0.ViewEncapsulation.None,
487
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
488
+ animations: [mcTabsAnimations.translateTab],
489
+ host: {
490
+ class: 'mc-tab-body'
491
+ }
492
+ }]
493
+ }], ctorParameters: function () {
494
+ return [{ type: i0__namespace.ElementRef }, { type: i3__namespace.Directionality, decorators: [{
495
+ type: i0.Optional
496
+ }] }, { type: i0__namespace.ChangeDetectorRef }];
497
+ }, propDecorators: { position: [{
498
+ type: i0.Input
499
+ }], onCentering: [{
500
+ type: i0.Output
501
+ }], beforeCentering: [{
502
+ type: i0.Output
503
+ }], afterLeavingCenter: [{
504
+ type: i0.Output
505
+ }], onCentered: [{
506
+ type: i0.Output
507
+ }], portalHost: [{
508
+ type: i0.ViewChild,
509
+ args: [i7.CdkPortalOutlet, { static: false }]
510
+ }], content: [{
511
+ type: i0.Input,
512
+ args: ['content']
513
+ }], origin: [{
514
+ type: i0.Input
515
+ }], animationDuration: [{
516
+ type: i0.Input
517
+ }] } });
480
518
  /**
481
519
  * The portal host directive for the contents of the tab.
482
520
  * @docs-private
@@ -513,18 +551,20 @@
513
551
  this.leavingSub.unsubscribe();
514
552
  };
515
553
  return McTabBodyPortal;
516
- }(portal.CdkPortalOutlet));
517
- McTabBodyPortal.decorators = [
518
- { type: core.Directive, args: [{
519
- selector: '[mcTabBodyHost]'
520
- },] }
521
- ];
522
- /** @nocollapse */
523
- McTabBodyPortal.ctorParameters = function () { return [
524
- { type: core.ComponentFactoryResolver },
525
- { type: core.ViewContainerRef },
526
- { type: McTabBody, decorators: [{ type: core.Inject, args: [core.forwardRef(function () { return McTabBody; }),] }] }
527
- ]; };
554
+ }(i7.CdkPortalOutlet));
555
+ /** @nocollapse */ McTabBodyPortal.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: McTabBodyPortal, deps: [{ token: i0__namespace.ComponentFactoryResolver }, { token: i0__namespace.ViewContainerRef }, { token: i0.forwardRef(function () { return McTabBody; }) }], target: i0__namespace.ɵɵFactoryTarget.Directive });
556
+ /** @nocollapse */ McTabBodyPortal.ɵdir = i0__namespace.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: McTabBodyPortal, selector: "[mcTabBodyHost]", usesInheritance: true, ngImport: i0__namespace });
557
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: McTabBodyPortal, decorators: [{
558
+ type: i0.Directive,
559
+ args: [{
560
+ selector: '[mcTabBodyHost]'
561
+ }]
562
+ }], ctorParameters: function () {
563
+ return [{ type: i0__namespace.ComponentFactoryResolver }, { type: i0__namespace.ViewContainerRef }, { type: McTabBody, decorators: [{
564
+ type: i0.Inject,
565
+ args: [i0.forwardRef(function () { return McTabBody; })]
566
+ }] }];
567
+ } });
528
568
 
529
569
  /** Decorates the `ng-template` tags and reads out the template from it. */
530
570
  var McTabContent = /** @class */ (function () {
@@ -533,15 +573,14 @@
533
573
  }
534
574
  return McTabContent;
535
575
  }());
536
- McTabContent.decorators = [
537
- { type: core.Directive, args: [{ selector: '[mcTabContent]' },] }
538
- ];
539
- /** @nocollapse */
540
- McTabContent.ctorParameters = function () { return [
541
- { type: core.TemplateRef }
542
- ]; };
576
+ /** @nocollapse */ McTabContent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: McTabContent, deps: [{ token: i0__namespace.TemplateRef }], target: i0__namespace.ɵɵFactoryTarget.Directive });
577
+ /** @nocollapse */ McTabContent.ɵdir = i0__namespace.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: McTabContent, selector: "[mcTabContent]", ngImport: i0__namespace });
578
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: McTabContent, decorators: [{
579
+ type: i0.Directive,
580
+ args: [{ selector: '[mcTabContent]' }]
581
+ }], ctorParameters: function () { return [{ type: i0__namespace.TemplateRef }]; } });
543
582
 
544
- var MC_TAB_LABEL = new core.InjectionToken('McTabLabel');
583
+ var MC_TAB_LABEL = new i0.InjectionToken('McTabLabel');
545
584
  /** Used to flag tab labels for use with the portal directive */
546
585
  var McTabLabel = /** @class */ (function (_super) {
547
586
  __extends(McTabLabel, _super);
@@ -549,13 +588,16 @@
549
588
  return _super !== null && _super.apply(this, arguments) || this;
550
589
  }
551
590
  return McTabLabel;
552
- }(portal.CdkPortal));
553
- McTabLabel.decorators = [
554
- { type: core.Directive, args: [{
555
- selector: '[mc-tab-label], [mcTabLabel]',
556
- providers: [{ provide: MC_TAB_LABEL, useExisting: McTabLabel }]
557
- },] }
558
- ];
591
+ }(i7.CdkPortal));
592
+ /** @nocollapse */ McTabLabel.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: McTabLabel, deps: null, target: i0__namespace.ɵɵFactoryTarget.Directive });
593
+ /** @nocollapse */ McTabLabel.ɵdir = i0__namespace.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: McTabLabel, selector: "[mc-tab-label], [mcTabLabel]", providers: [{ provide: MC_TAB_LABEL, useExisting: McTabLabel }], usesInheritance: true, ngImport: i0__namespace });
594
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: McTabLabel, decorators: [{
595
+ type: i0.Directive,
596
+ args: [{
597
+ selector: '[mc-tab-label], [mcTabLabel]',
598
+ providers: [{ provide: MC_TAB_LABEL, useExisting: McTabLabel }]
599
+ }]
600
+ }] });
559
601
 
560
602
  var McTabBase = /** @class */ (function () {
561
603
  function McTabBase() {
@@ -563,17 +605,17 @@
563
605
  return McTabBase;
564
606
  }());
565
607
  // tslint:disable-next-line:naming-convention
566
- var McTabMixinBase = core$1.mixinDisabled(McTabBase);
608
+ var McTabMixinBase = core.mixinDisabled(McTabBase);
567
609
  var McTab = /** @class */ (function (_super) {
568
610
  __extends(McTab, _super);
569
611
  function McTab(viewContainerRef) {
570
612
  var _this = _super.call(this) || this;
571
613
  _this.viewContainerRef = viewContainerRef;
614
+ _this._tooltipTitle = '';
615
+ _this.tooltipPlacement = core.PopUpPlacements.Right;
572
616
  /** Plain text label for the tab, used when there is no template label. */
573
617
  _this.textLabel = '';
574
618
  _this.empty = false;
575
- _this.tooltipTitle = '';
576
- _this.tooltipPlacement = '';
577
619
  /** Emits whenever the internal state of the tab changes. */
578
620
  _this.stateChanges = new rxjs.Subject();
579
621
  /**
@@ -590,6 +632,7 @@
590
632
  * Whether the tab is currently active.
591
633
  */
592
634
  _this.isActive = false;
635
+ _this._overflowTooltipTitle = '';
593
636
  /** Portal that will be the hosted content of the tab */
594
637
  _this.contentPortal = null;
595
638
  return _this;
@@ -603,8 +646,42 @@
603
646
  configurable: true
604
647
  });
605
648
  Object.defineProperty(McTab.prototype, "templateLabel", {
606
- get: function () { return this._templateLabel; },
607
- set: function (value) { this.setTemplateLabelInput(value); },
649
+ get: function () {
650
+ return this._templateLabel;
651
+ },
652
+ set: function (value) {
653
+ this.setTemplateLabelInput(value);
654
+ },
655
+ enumerable: false,
656
+ configurable: true
657
+ });
658
+ Object.defineProperty(McTab.prototype, "tooltipTitle", {
659
+ get: function () {
660
+ return this.overflowTooltipTitle + this._tooltipTitle;
661
+ },
662
+ set: function (value) {
663
+ this._tooltipTitle = value;
664
+ },
665
+ enumerable: false,
666
+ configurable: true
667
+ });
668
+ Object.defineProperty(McTab.prototype, "isOverflown", {
669
+ get: function () {
670
+ return !!this._overflowTooltipTitle;
671
+ },
672
+ enumerable: false,
673
+ configurable: true
674
+ });
675
+ Object.defineProperty(McTab.prototype, "overflowTooltipTitle", {
676
+ get: function () {
677
+ if (this.isOverflown) {
678
+ return this._overflowTooltipTitle + "\n";
679
+ }
680
+ return '';
681
+ },
682
+ set: function (value) {
683
+ this._overflowTooltipTitle = value;
684
+ },
608
685
  enumerable: false,
609
686
  configurable: true
610
687
  });
@@ -617,7 +694,7 @@
617
694
  this.stateChanges.complete();
618
695
  };
619
696
  McTab.prototype.ngOnInit = function () {
620
- this.contentPortal = new portal.TemplatePortal(this.explicitContent || this.implicitContent, this.viewContainerRef);
697
+ this.contentPortal = new i7.TemplatePortal(this.explicitContent || this.implicitContent, this.viewContainerRef);
621
698
  };
622
699
  /**
623
700
  * This has been extracted to a util because of TS 4 and VE.
@@ -636,478 +713,174 @@
636
713
  };
637
714
  return McTab;
638
715
  }(McTabMixinBase));
639
- McTab.decorators = [
640
- { type: core.Component, args: [{
641
- selector: 'mc-tab',
642
- exportAs: 'mcTab',
643
- // Create a template for the content of the <mc-tab> so that we can grab a reference to this
644
- // TemplateRef and use it in a Portal to render the tab content in the appropriate place in the
645
- // tab-group.
646
- template: '<ng-template><ng-content></ng-content></ng-template>',
647
- inputs: ['disabled'],
648
- changeDetection: core.ChangeDetectionStrategy.OnPush,
649
- encapsulation: core.ViewEncapsulation.None
650
- },] }
651
- ];
652
- /** @nocollapse */
653
- McTab.ctorParameters = function () { return [
654
- { type: core.ViewContainerRef }
655
- ]; };
656
- McTab.propDecorators = {
657
- templateLabel: [{ type: core.ContentChild, args: [MC_TAB_LABEL,] }],
658
- explicitContent: [{ type: core.ContentChild, args: [McTabContent, { read: core.TemplateRef, static: true },] }],
659
- implicitContent: [{ type: core.ViewChild, args: [core.TemplateRef, { static: true },] }],
660
- textLabel: [{ type: core.Input, args: ['label',] }],
661
- empty: [{ type: core.Input }],
662
- tooltipTitle: [{ type: core.Input }],
663
- tooltipPlacement: [{ type: core.Input }],
664
- tabId: [{ type: core.Input, args: ['tabId',] }]
665
- };
716
+ /** @nocollapse */ McTab.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: McTab, deps: [{ token: i0__namespace.ViewContainerRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
717
+ /** @nocollapse */ McTab.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: McTab, selector: "mc-tab", inputs: { disabled: "disabled", tooltipTitle: "tooltipTitle", tooltipPlacement: "tooltipPlacement", textLabel: ["label", "textLabel"], empty: "empty", tabId: "tabId" }, queries: [{ propertyName: "templateLabel", first: true, predicate: MC_TAB_LABEL, descendants: true }, { propertyName: "explicitContent", first: true, predicate: McTabContent, descendants: true, read: i0.TemplateRef, static: true }], viewQueries: [{ propertyName: "implicitContent", first: true, predicate: i0.TemplateRef, descendants: true, static: true }], exportAs: ["mcTab"], usesInheritance: true, usesOnChanges: true, ngImport: i0__namespace, template: '<ng-template><ng-content></ng-content></ng-template>', isInline: true, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush, encapsulation: i0__namespace.ViewEncapsulation.None });
718
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: McTab, decorators: [{
719
+ type: i0.Component,
720
+ args: [{
721
+ selector: 'mc-tab',
722
+ exportAs: 'mcTab',
723
+ // Create a template for the content of the <mc-tab> so that we can grab a reference to this
724
+ // TemplateRef and use it in a Portal to render the tab content in the appropriate place in the
725
+ // tab-group.
726
+ template: '<ng-template><ng-content></ng-content></ng-template>',
727
+ inputs: ['disabled'],
728
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
729
+ encapsulation: i0.ViewEncapsulation.None
730
+ }]
731
+ }], ctorParameters: function () { return [{ type: i0__namespace.ViewContainerRef }]; }, propDecorators: { templateLabel: [{
732
+ type: i0.ContentChild,
733
+ args: [MC_TAB_LABEL]
734
+ }], explicitContent: [{
735
+ type: i0.ContentChild,
736
+ args: [McTabContent, { read: i0.TemplateRef, static: true }]
737
+ }], implicitContent: [{
738
+ type: i0.ViewChild,
739
+ args: [i0.TemplateRef, { static: true }]
740
+ }], tooltipTitle: [{
741
+ type: i0.Input
742
+ }], tooltipPlacement: [{
743
+ type: i0.Input
744
+ }], textLabel: [{
745
+ type: i0.Input,
746
+ args: ['label']
747
+ }], empty: [{
748
+ type: i0.Input
749
+ }], tabId: [{
750
+ type: i0.Input,
751
+ args: ['tabId']
752
+ }] } });
666
753
 
667
- var McOldTabsCssStyler = /** @class */ (function () {
668
- function McOldTabsCssStyler() {
669
- }
670
- return McOldTabsCssStyler;
671
- }());
672
- McOldTabsCssStyler.decorators = [
673
- { type: core.Directive, args: [{
674
- selector: 'mc-tab-group[mc-old-tabs]',
675
- host: { class: 'mc-tab-group_old' }
676
- },] }
677
- ];
678
- var McAlignTabsCenterCssStyler = /** @class */ (function () {
679
- function McAlignTabsCenterCssStyler() {
680
- }
681
- return McAlignTabsCenterCssStyler;
682
- }());
683
- McAlignTabsCenterCssStyler.decorators = [
684
- { type: core.Directive, args: [{
685
- selector: 'mc-tab-group[mc-align-tabs-center], [mc-tab-nav-bar][mc-align-tabs-center]',
686
- host: { class: 'mc-tab-group_align-labels-center' }
687
- },] }
688
- ];
689
- var McAlignTabsEndCssStyler = /** @class */ (function () {
690
- function McAlignTabsEndCssStyler() {
691
- }
692
- return McAlignTabsEndCssStyler;
693
- }());
694
- McAlignTabsEndCssStyler.decorators = [
695
- { type: core.Directive, args: [{
696
- selector: 'mc-tab-group[mc-align-tabs-end], [mc-tab-nav-bar][mc-align-tabs-end]',
697
- host: { class: 'mc-tab-group_align-labels-end' }
698
- },] }
699
- ];
700
- var McStretchTabsCssStyler = /** @class */ (function () {
701
- function McStretchTabsCssStyler() {
702
- }
703
- return McStretchTabsCssStyler;
704
- }());
705
- McStretchTabsCssStyler.decorators = [
706
- { type: core.Directive, args: [{
707
- selector: 'mc-tab-group[mc-stretch-tabs], [mc-tab-nav-bar][mc-stretch-tabs]',
708
- host: { class: 'mc-tab-group_stretch-labels' }
709
- },] }
710
- ];
711
- var McVerticalTabsCssStyler = /** @class */ (function () {
712
- function McVerticalTabsCssStyler() {
713
- }
714
- return McVerticalTabsCssStyler;
715
- }());
716
- McVerticalTabsCssStyler.decorators = [
717
- { type: core.Directive, args: [{
718
- selector: 'mc-tab-group[vertical], [mc-tab-nav-bar][vertical]',
719
- host: { class: 'mc-tab-group_vertical' }
720
- },] }
721
- ];
722
- /** Used to generate unique ID's for each tab component */
723
- var nextId = 0;
724
- /** A simple change event emitted on focus or selection changes. */
725
- var McTabChangeEvent = /** @class */ (function () {
726
- function McTabChangeEvent() {
727
- }
728
- return McTabChangeEvent;
729
- }());
730
- /** Injection token that can be used to provide the default options the tabs module. */
731
- var MC_TABS_CONFIG = new core.InjectionToken('MC_TABS_CONFIG');
732
- // Boilerplate for applying mixins to McTabGroup.
733
- /** @docs-private */
734
- var McTabGroupBase = /** @class */ (function () {
735
- // tslint:disable-next-line:naming-convention
736
- function McTabGroupBase(_elementRef) {
737
- this._elementRef = _elementRef;
738
- }
739
- return McTabGroupBase;
740
- }());
741
- // tslint:disable-next-line:naming-convention
742
- var McTabGroupMixinBase = core$1.mixinDisabled(McTabGroupBase);
754
+ /* tslint:disable:naming-convention */
755
+ /** Config used to bind passive event listeners */
756
+ var passiveEventListenerOptions = i2.normalizePassiveListenerOptions({ passive: true });
743
757
  /**
744
- * Tab-group component. Supports basic tab pairs (label + content) and includes
745
- * keyboard navigation.
758
+ * The distance in pixels that will be overshot when scrolling a tab label into view. This helps
759
+ * provide a small affordance to the label next to it.
746
760
  */
747
- var McTabGroup = /** @class */ (function (_super) {
748
- __extends(McTabGroup, _super);
749
- function McTabGroup(elementRef, changeDetectorRef, lightTabs, vertical, defaultConfig) {
750
- var _this = _super.call(this, elementRef) || this;
751
- _this.changeDetectorRef = changeDetectorRef;
752
- /** Position of the tab header. */
753
- _this.headerPosition = 'above';
754
- /** Output to enable support for two-way binding on `[(selectedIndex)]` */
755
- _this.selectedIndexChange = new core.EventEmitter();
756
- /** Event emitted when focus has changed within a tab group. */
757
- _this.focusChange = new core.EventEmitter();
758
- /** Event emitted when the body animation has completed */
759
- _this.animationDone = new core.EventEmitter();
760
- /** Event emitted when the tab selection has changed. */
761
- _this.selectedTabChange = new core.EventEmitter(true);
762
- /** The tab index that should be selected after the content has been checked. */
763
- _this.indexToSelect = 0;
764
- /** Snapshot of the height of the tab body wrapper before another tab is activated. */
765
- _this.tabBodyWrapperHeight = 0;
766
- /** Subscription to tabs being added/removed. */
767
- _this.tabsSubscription = rxjs.Subscription.EMPTY;
768
- /** Subscription to changes in the tab labels. */
769
- _this.tabLabelSubscription = rxjs.Subscription.EMPTY;
770
- _this._dynamicHeight = false;
771
- _this._selectedIndex = null;
772
- _this.oldTab = coercion.coerceBooleanProperty(lightTabs);
773
- _this.vertical = coercion.coerceBooleanProperty(vertical);
774
- _this.groupId = nextId++;
775
- _this.animationDuration = (defaultConfig === null || defaultConfig === void 0 ? void 0 : defaultConfig.animationDuration) || '0ms';
776
- return _this;
761
+ var EXAGGERATED_OVERSCROLL = 60;
762
+ /**
763
+ * Amount of milliseconds to wait before starting to scroll the header automatically.
764
+ * Set a little conservatively in order to handle fake events dispatched on touch devices.
765
+ */
766
+ var HEADER_SCROLL_DELAY = 650;
767
+ /**
768
+ * Interval in milliseconds at which to scroll the header
769
+ * while the user is holding their pointer.
770
+ */
771
+ var HEADER_SCROLL_INTERVAL = 100;
772
+ var VIEWPORT_THROTTLE_TIME = 150;
773
+ var SCROLL_DISTANCE = 0.8;
774
+ /**
775
+ * Base class for a tab header that supported pagination.
776
+ * @docs-private
777
+ */
778
+ var McPaginatedTabHeader = /** @class */ (function () {
779
+ function McPaginatedTabHeader(elementRef, changeDetectorRef, viewportRuler, ngZone, platform, dir, animationMode) {
780
+ var _this = this;
781
+ this.elementRef = elementRef;
782
+ this.changeDetectorRef = changeDetectorRef;
783
+ this.viewportRuler = viewportRuler;
784
+ this.ngZone = ngZone;
785
+ this.platform = platform;
786
+ this.dir = dir;
787
+ this.animationMode = animationMode;
788
+ this._selectedIndex = 0;
789
+ /** The distance in pixels that the tab labels should be translated to the left. */
790
+ this._scrollDistance = 0;
791
+ /** Event emitted when the option is selected. */
792
+ this.selectFocusedIndex = new i0.EventEmitter();
793
+ /** Event emitted when a label is focused. */
794
+ this.indexFocused = new i0.EventEmitter();
795
+ /** Whether the controls for pagination should be displayed */
796
+ this.showPaginationControls = false;
797
+ /** Whether the tab list can be scrolled more towards the end of the tab label list. */
798
+ this.disableScrollAfter = true;
799
+ /** Whether the tab list can be scrolled more towards the beginning of the tab label list. */
800
+ this.disableScrollBefore = true;
801
+ /**
802
+ * Whether pagination should be disabled. This can be used to avoid unnecessary
803
+ * layout recalculations if it's known that pagination won't be required.
804
+ */
805
+ this.disablePagination = false;
806
+ /** Emits when the component is destroyed. */
807
+ this.destroyed = new rxjs.Subject();
808
+ this.vertical = false;
809
+ /** Stream that will stop the automated scrolling. */
810
+ this.stopScrolling = new rxjs.Subject();
811
+ /** Whether the header should scroll to the selected index after the view has been checked. */
812
+ this.selectedIndexChanged = false;
813
+ // Bind the `mouseleave` event on the outside since it doesn't change anything in the view.
814
+ ngZone.runOutsideAngular(function () {
815
+ rxjs.fromEvent(elementRef.nativeElement, 'mouseleave')
816
+ .pipe(operators.takeUntil(_this.destroyed))
817
+ .subscribe(function () { return _this.stopInterval(); });
818
+ });
777
819
  }
778
- Object.defineProperty(McTabGroup.prototype, "dynamicHeight", {
779
- /** Whether the tab group should grow to the size of the active tab. */
780
- get: function () { return this._dynamicHeight; },
820
+ Object.defineProperty(McPaginatedTabHeader.prototype, "selectedIndex", {
821
+ /** The index of the active tab. */
822
+ get: function () {
823
+ return this._selectedIndex;
824
+ },
781
825
  set: function (value) {
782
- this._dynamicHeight = coercion.coerceBooleanProperty(value);
826
+ var _a;
827
+ var coercedValue = coercion.coerceNumberProperty(value);
828
+ this.selectedIndexChanged = this._selectedIndex !== coercedValue;
829
+ this._selectedIndex = coercedValue;
830
+ (_a = this.keyManager) === null || _a === void 0 ? void 0 : _a.updateActiveItem(coercedValue);
783
831
  },
784
832
  enumerable: false,
785
833
  configurable: true
786
834
  });
787
- Object.defineProperty(McTabGroup.prototype, "selectedIndex", {
788
- /** The index of the active tab. */
789
- get: function () { return this._selectedIndex; },
835
+ Object.defineProperty(McPaginatedTabHeader.prototype, "focusIndex", {
836
+ /** Tracks which element has focus; used for keyboard navigation */
837
+ get: function () {
838
+ return this.keyManager ? this.keyManager.activeItemIndex : 0;
839
+ },
840
+ /** When the focus index is set, we must manually send focus to the correct label */
790
841
  set: function (value) {
791
- this.indexToSelect = coercion.coerceNumberProperty(value, null);
842
+ if (!this.isValidIndex(value) || this.focusIndex === value || !this.keyManager) {
843
+ return;
844
+ }
845
+ this.keyManager.setActiveItem(value);
792
846
  },
793
847
  enumerable: false,
794
848
  configurable: true
795
849
  });
796
- /**
797
- * After the content is checked, this component knows what tabs have been defined
798
- * and what the selected index should be. This is where we can know exactly what position
799
- * each tab should be in according to the new selected index, and additionally we know how
800
- * a new selected tab should transition in (from the left or right).
801
- */
802
- McTabGroup.prototype.ngAfterContentChecked = function () {
850
+ Object.defineProperty(McPaginatedTabHeader.prototype, "scrollDistance", {
851
+ /** Sets the distance in pixels that the tab header should be transformed in the X-axis. */
852
+ get: function () {
853
+ return this._scrollDistance;
854
+ },
855
+ set: function (v) {
856
+ this._scrollDistance = Math.max(0, Math.min(this.getMaxScrollDistance(), v));
857
+ // Mark that the scroll distance has changed so that after the view is checked, the CSS
858
+ // transformation can move the header.
859
+ this.scrollDistanceChanged = true;
860
+ this.checkScrollingControls();
861
+ },
862
+ enumerable: false,
863
+ configurable: true
864
+ });
865
+ /** Called when the user has selected an item via the keyboard. */
866
+ McPaginatedTabHeader.prototype.ngAfterViewInit = function () {
803
867
  var _this = this;
804
- // Don't clamp the `indexToSelect` immediately in the setter because it can happen that
805
- // the amount of tabs changes before the actual change detection runs.
806
- var indexToSelect = this.indexToSelect = this.clampTabIndex(this.indexToSelect);
807
- // If there is a change in selected index, emit a change event. Should not trigger if
808
- // the selected index has not yet been initialized.
809
- if (this._selectedIndex !== indexToSelect) {
810
- var isFirstRun_1 = this._selectedIndex == null;
811
- if (!isFirstRun_1) {
812
- this.selectedTabChange.emit(this.createChangeEvent(indexToSelect));
813
- }
814
- // Changing these values after change detection has run
815
- // since the checked content may contain references to them.
816
- Promise.resolve().then(function () {
817
- _this.tabs.forEach(function (tab, index) { return tab.isActive = index === indexToSelect; });
818
- if (!isFirstRun_1) {
819
- _this.selectedIndexChange.emit(indexToSelect);
820
- }
821
- });
822
- }
823
- // Setup the position for each tab and optionally setup an origin on the next selected tab.
824
- this.tabs.forEach(function (tab, index) {
825
- tab.position = index - indexToSelect;
826
- // If there is already a selected tab, then set up an origin for the next selected tab
827
- // if it doesn't have one already.
828
- if (_this._selectedIndex != null && tab.position === 0 && !tab.origin) {
829
- tab.origin = indexToSelect - _this._selectedIndex;
830
- }
831
- });
832
- if (this._selectedIndex !== indexToSelect) {
833
- this._selectedIndex = indexToSelect;
834
- this.changeDetectorRef.markForCheck();
835
- }
868
+ // We need to handle these events manually, because we want to bind passive event listeners.
869
+ rxjs.fromEvent(this.previousPaginator.nativeElement, 'touchstart', passiveEventListenerOptions)
870
+ .pipe(operators.takeUntil(this.destroyed))
871
+ .subscribe(function () { return _this.handlePaginatorPress('before'); });
872
+ rxjs.fromEvent(this.nextPaginator.nativeElement, 'touchstart', passiveEventListenerOptions)
873
+ .pipe(operators.takeUntil(this.destroyed))
874
+ .subscribe(function () { return _this.handlePaginatorPress('after'); });
836
875
  };
837
- McTabGroup.prototype.ngAfterContentInit = function () {
838
- var _this = this;
839
- this.subscribeToTabLabels();
840
- // Subscribe to changes in the amount of tabs, in order to be
841
- // able to re-render the content as new tabs are added or removed.
842
- this.tabsSubscription = this.tabs.changes.subscribe(function () {
843
- var indexToSelect = _this.clampTabIndex(_this.indexToSelect);
844
- // Maintain the previously-selected tab if a new tab is added or removed and there is no
845
- // explicit change that selects a different tab.
846
- if (indexToSelect === _this._selectedIndex) {
847
- var tabs = _this.tabs.toArray();
848
- for (var i = 0; i < tabs.length; i++) {
849
- if (tabs[i].isActive) {
850
- // Assign both to the `_indexToSelect` and `_selectedIndex` so we don't fire a changed
851
- // event, otherwise the consumer may end up in an infinite loop in some edge cases like
852
- // adding a tab within the `selectedIndexChange` event.
853
- _this.indexToSelect = _this._selectedIndex = i;
854
- break;
855
- }
856
- }
857
- }
858
- _this.subscribeToTabLabels();
859
- _this.changeDetectorRef.markForCheck();
860
- });
861
- };
862
- McTabGroup.prototype.ngOnDestroy = function () {
863
- this.tabsSubscription.unsubscribe();
864
- this.tabLabelSubscription.unsubscribe();
865
- };
866
- McTabGroup.prototype.focusChanged = function (index) {
867
- this.focusChange.emit(this.createChangeEvent(index));
868
- };
869
- /** Returns a unique id for each tab label element */
870
- McTabGroup.prototype.getTabLabelId = function (i) {
871
- return "mc-tab-label-" + this.groupId + "-" + i;
872
- };
873
- /** Returns a unique id for each tab content element */
874
- McTabGroup.prototype.getTabContentId = function (i) {
875
- return "mc-tab-content-" + this.groupId + "-" + i;
876
- };
877
- /**
878
- * Sets the height of the body wrapper to the height of the activating tab if dynamic
879
- * height property is true.
880
- */
881
- McTabGroup.prototype.setTabBodyWrapperHeight = function (tabHeight) {
882
- if (!this._dynamicHeight || !this.tabBodyWrapperHeight) {
883
- return;
884
- }
885
- var wrapper = this.tabBodyWrapper.nativeElement;
886
- wrapper.style.height = this.tabBodyWrapperHeight + "px";
887
- // This conditional forces the browser to paint the height so that
888
- // the animation to the new height can have an origin.
889
- if (this.tabBodyWrapper.nativeElement.offsetHeight) {
890
- wrapper.style.height = tabHeight + "px";
891
- }
892
- };
893
- /** Removes the height of the tab body wrapper. */
894
- McTabGroup.prototype.removeTabBodyWrapperHeight = function () {
895
- this.tabBodyWrapperHeight = this.tabBodyWrapper.nativeElement.clientHeight;
896
- this.tabBodyWrapper.nativeElement.style.height = '';
897
- this.animationDone.emit();
898
- };
899
- /** Handle click events, setting new selected index if appropriate. */
900
- McTabGroup.prototype.handleClick = function (tab, tabHeader, index) {
901
- if (tab.disabled) {
902
- return;
903
- }
904
- this.selectedIndex = tabHeader.focusIndex = index;
905
- };
906
- /** Retrieves the tabindex for the tab. */
907
- McTabGroup.prototype.getTabIndex = function (tab, index) {
908
- if (tab.disabled) {
909
- return null;
910
- }
911
- return this.selectedIndex === index ? 0 : -1;
912
- };
913
- McTabGroup.prototype.createChangeEvent = function (index) {
914
- var event = new McTabChangeEvent();
915
- event.index = index;
916
- if (this.tabs && this.tabs.length) {
917
- event.tab = this.tabs.toArray()[index];
918
- }
919
- return event;
920
- };
921
- /**
922
- * Subscribes to changes in the tab labels. This is needed, because the @Input for the label is
923
- * on the McTab component, whereas the data binding is inside the McTabGroup. In order for the
924
- * binding to be updated, we need to subscribe to changes in it and trigger change detection
925
- * manually.
926
- */
927
- McTabGroup.prototype.subscribeToTabLabels = function () {
928
- var _this = this;
929
- if (this.tabLabelSubscription) {
930
- this.tabLabelSubscription.unsubscribe();
931
- }
932
- this.tabLabelSubscription = rxjs.merge.apply(void 0, __spread(this.tabs.map(function (tab) { return tab.stateChanges; }))).subscribe(function () { return _this.changeDetectorRef.markForCheck(); });
933
- };
934
- /** Clamps the given index to the bounds of 0 and the tabs length. */
935
- McTabGroup.prototype.clampTabIndex = function (index) {
936
- // Note the `|| 0`, which ensures that values like NaN can't get through
937
- // and which would otherwise throw the component into an infinite loop
938
- // (since Mch.max(NaN, 0) === NaN).
939
- return Math.min(this.tabs.length - 1, Math.max(index || 0, 0));
940
- };
941
- return McTabGroup;
942
- }(McTabGroupMixinBase));
943
- McTabGroup.decorators = [
944
- { type: core.Component, args: [{
945
- selector: 'mc-tab-group',
946
- exportAs: 'mcTabGroup',
947
- template: "<mc-tab-header\n #tabHeader\n [vertical]=\"vertical\"\n [selectedIndex]=\"selectedIndex\"\n (indexFocused)=\"focusChanged($event)\"\n (selectFocusedIndex)=\"selectedIndex = $event\">\n\n <div class=\"mc-tab-label\"\n mcTabLabelWrapper\n cdkMonitorElementFocus\n [attr.tabindex]=\"getTabIndex(tab, i)\"\n [class.mc-tab-label_old]=\"oldTab\"\n [class.mc-tab-label_horizontal]=\"!vertical && !oldTab\"\n [class.mc-tab-label_vertical]=\"vertical && !oldTab\"\n [class.mc-tab-label_empty]=\"tab.empty\"\n [class.mc-active]=\"selectedIndex == i\"\n *ngFor=\"let tab of tabs; let i = index\"\n [id]=\"getTabLabelId(i)\"\n [disabled]=\"tab.disabled\"\n (click)=\"handleClick(tab, tabHeader, i)\"\n\n [mcTooltip]=\"tab.tooltipTitle\"\n [mcTooltipDisabled]=\"!tab.empty\"\n [mcTrigger]=\"'hover, focus'\"\n [mcPlacement]=\"tab.tooltipPlacement\">\n\n <div class=\"mc-tab-label__content\"\n [class.mc-tab-label__template]=\"tab.templateLabel\">\n <!-- If there is a label template, use it. -->\n <ng-template [ngIf]=\"tab.templateLabel\">\n <ng-template [cdkPortalOutlet]=\"tab.templateLabel\"></ng-template>\n </ng-template>\n\n <!-- If there is not a label template, fall back to the text label. -->\n <ng-template [ngIf]=\"!tab.templateLabel\">{{ tab.textLabel }}</ng-template>\n </div>\n\n <div class=\"mc-tab-overlay\"></div>\n </div>\n</mc-tab-header>\n\n<div class=\"mc-tab-body__wrapper\" #tabBodyWrapper>\n <mc-tab-body\n *ngFor=\"let tab of tabs; let i = index\"\n [id]=\"getTabContentId(i)\"\n [class.mc-tab-body__active]=\"selectedIndex == i\"\n [content]=\"tab.content\"\n [position]=\"tab.position\"\n [origin]=\"tab.origin\"\n [animationDuration]=\"animationDuration\"\n (onCentered)=\"removeTabBodyWrapperHeight()\"\n (onCentering)=\"setTabBodyWrapperHeight($event)\">\n </mc-tab-body>\n</div>\n",
948
- encapsulation: core.ViewEncapsulation.None,
949
- changeDetection: core.ChangeDetectionStrategy.OnPush,
950
- inputs: ['disabled'],
951
- host: {
952
- class: 'mc-tab-group',
953
- '[class.mc-tab-group_dynamic-height]': 'dynamicHeight',
954
- '[class.mc-tab-group_inverted-header]': 'headerPosition === "below"'
955
- },
956
- styles: [".mc-tab-group{display:flex;flex-direction:column;box-sizing:border-box;text-align:center;white-space:nowrap}.mc-tab-group.mc-tab-group_inverted-header{flex-direction:column-reverse}.mc-tab-group_vertical{flex-direction:row}.mc-tab-group_vertical .mc-tab-header__content{overflow-y:auto;padding-top:8px;padding-bottom:1px;border-right-width:var(--mc-tabs-size-border-width,1px);border-right-style:solid}.mc-tab-body__wrapper{display:flex;overflow:hidden;position:relative}.mc-tab-body{top:0;left:0;right:0;bottom:0;position:absolute;display:block;overflow:hidden;flex-basis:100%}.mc-tab-body.mc-tab-body__active{overflow-x:hidden;overflow-y:auto;position:relative;z-index:1;flex-grow:1}.mc-tab-group.mc-tab-group_dynamic-height .mc-tab-body.mc-tab-body__active{overflow-y:hidden}"]
957
- },] }
958
- ];
959
- /** @nocollapse */
960
- McTabGroup.ctorParameters = function () { return [
961
- { type: core.ElementRef },
962
- { type: core.ChangeDetectorRef },
963
- { type: String, decorators: [{ type: core.Attribute, args: ['mc-old-tabs',] }] },
964
- { type: String, decorators: [{ type: core.Attribute, args: ['vertical',] }] },
965
- { type: undefined, decorators: [{ type: core.Inject, args: [MC_TABS_CONFIG,] }, { type: core.Optional }] }
966
- ]; };
967
- McTabGroup.propDecorators = {
968
- tabs: [{ type: core.ContentChildren, args: [McTab,] }],
969
- tabBodyWrapper: [{ type: core.ViewChild, args: ['tabBodyWrapper', { static: false },] }],
970
- tabHeader: [{ type: core.ViewChild, args: ['tabHeader', { static: false },] }],
971
- dynamicHeight: [{ type: core.Input }],
972
- selectedIndex: [{ type: core.Input }],
973
- headerPosition: [{ type: core.Input }],
974
- animationDuration: [{ type: core.Input }],
975
- selectedIndexChange: [{ type: core.Output }],
976
- focusChange: [{ type: core.Output }],
977
- animationDone: [{ type: core.Output }],
978
- selectedTabChange: [{ type: core.Output }]
979
- };
980
-
981
- /* tslint:disable:naming-convention */
982
- /** Config used to bind passive event listeners */
983
- var passiveEventListenerOptions = platform.normalizePassiveListenerOptions({ passive: true });
984
- /**
985
- * The distance in pixels that will be overshot when scrolling a tab label into view. This helps
986
- * provide a small affordance to the label next to it.
987
- */
988
- var EXAGGERATED_OVERSCROLL = 60;
989
- /**
990
- * Amount of milliseconds to wait before starting to scroll the header automatically.
991
- * Set a little conservatively in order to handle fake events dispatched on touch devices.
992
- */
993
- var HEADER_SCROLL_DELAY = 650;
994
- /**
995
- * Interval in milliseconds at which to scroll the header
996
- * while the user is holding their pointer.
997
- */
998
- var HEADER_SCROLL_INTERVAL = 100;
999
- var VIEWPORT_THROTTLE_TIME = 150;
1000
- var SCROLL_DISTANCE = 0.8;
1001
- /**
1002
- * Base class for a tab header that supported pagination.
1003
- * @docs-private
1004
- */
1005
- var McPaginatedTabHeader = /** @class */ (function () {
1006
- function McPaginatedTabHeader(elementRef, changeDetectorRef, viewportRuler, ngZone, platform, dir, animationMode) {
1007
- var _this = this;
1008
- this.elementRef = elementRef;
1009
- this.changeDetectorRef = changeDetectorRef;
1010
- this.viewportRuler = viewportRuler;
1011
- this.ngZone = ngZone;
1012
- this.platform = platform;
1013
- this.dir = dir;
1014
- this.animationMode = animationMode;
1015
- this._selectedIndex = 0;
1016
- /** The distance in pixels that the tab labels should be translated to the left. */
1017
- this._scrollDistance = 0;
1018
- /** Event emitted when the option is selected. */
1019
- this.selectFocusedIndex = new core.EventEmitter();
1020
- /** Event emitted when a label is focused. */
1021
- this.indexFocused = new core.EventEmitter();
1022
- /** Whether the controls for pagination should be displayed */
1023
- this.showPaginationControls = false;
1024
- /** Whether the tab list can be scrolled more towards the end of the tab label list. */
1025
- this.disableScrollAfter = true;
1026
- /** Whether the tab list can be scrolled more towards the beginning of the tab label list. */
1027
- this.disableScrollBefore = true;
1028
- /**
1029
- * Whether pagination should be disabled. This can be used to avoid unnecessary
1030
- * layout recalculations if it's known that pagination won't be required.
1031
- */
1032
- this.disablePagination = false;
1033
- /** Emits when the component is destroyed. */
1034
- this.destroyed = new rxjs.Subject();
1035
- this.vertical = false;
1036
- /** Stream that will stop the automated scrolling. */
1037
- this.stopScrolling = new rxjs.Subject();
1038
- /** Whether the header should scroll to the selected index after the view has been checked. */
1039
- this.selectedIndexChanged = false;
1040
- // Bind the `mouseleave` event on the outside since it doesn't change anything in the view.
1041
- ngZone.runOutsideAngular(function () {
1042
- rxjs.fromEvent(elementRef.nativeElement, 'mouseleave')
1043
- .pipe(operators.takeUntil(_this.destroyed))
1044
- .subscribe(function () { return _this.stopInterval(); });
1045
- });
1046
- }
1047
- Object.defineProperty(McPaginatedTabHeader.prototype, "selectedIndex", {
1048
- /** The index of the active tab. */
1049
- get: function () {
1050
- return this._selectedIndex;
1051
- },
1052
- set: function (value) {
1053
- var _a;
1054
- var coercedValue = coercion.coerceNumberProperty(value);
1055
- this.selectedIndexChanged = this._selectedIndex !== coercedValue;
1056
- this._selectedIndex = coercedValue;
1057
- (_a = this.keyManager) === null || _a === void 0 ? void 0 : _a.updateActiveItem(coercedValue);
1058
- },
1059
- enumerable: false,
1060
- configurable: true
1061
- });
1062
- Object.defineProperty(McPaginatedTabHeader.prototype, "focusIndex", {
1063
- /** Tracks which element has focus; used for keyboard navigation */
1064
- get: function () {
1065
- return this.keyManager ? this.keyManager.activeItemIndex : 0;
1066
- },
1067
- /** When the focus index is set, we must manually send focus to the correct label */
1068
- set: function (value) {
1069
- if (!this.isValidIndex(value) || this.focusIndex === value || !this.keyManager) {
1070
- return;
1071
- }
1072
- this.keyManager.setActiveItem(value);
1073
- },
1074
- enumerable: false,
1075
- configurable: true
1076
- });
1077
- Object.defineProperty(McPaginatedTabHeader.prototype, "scrollDistance", {
1078
- /** Sets the distance in pixels that the tab header should be transformed in the X-axis. */
1079
- get: function () {
1080
- return this._scrollDistance;
1081
- },
1082
- set: function (v) {
1083
- this._scrollDistance = Math.max(0, Math.min(this.getMaxScrollDistance(), v));
1084
- // Mark that the scroll distance has changed so that after the view is checked, the CSS
1085
- // transformation can move the header.
1086
- this.scrollDistanceChanged = true;
1087
- this.checkScrollingControls();
1088
- },
1089
- enumerable: false,
1090
- configurable: true
1091
- });
1092
- /** Called when the user has selected an item via the keyboard. */
1093
- McPaginatedTabHeader.prototype.ngAfterViewInit = function () {
1094
- var _this = this;
1095
- // We need to handle these events manually, because we want to bind passive event listeners.
1096
- rxjs.fromEvent(this.previousPaginator.nativeElement, 'touchstart', passiveEventListenerOptions)
1097
- .pipe(operators.takeUntil(this.destroyed))
1098
- .subscribe(function () { return _this.handlePaginatorPress('before'); });
1099
- rxjs.fromEvent(this.nextPaginator.nativeElement, 'touchstart', passiveEventListenerOptions)
1100
- .pipe(operators.takeUntil(this.destroyed))
1101
- .subscribe(function () { return _this.handlePaginatorPress('after'); });
1102
- };
1103
- McPaginatedTabHeader.prototype.ngAfterContentInit = function () {
876
+ McPaginatedTabHeader.prototype.ngAfterContentInit = function () {
1104
877
  var _this = this;
1105
878
  var dirChange = this.dir ? this.dir.change : rxjs.of('ltr');
1106
879
  var resize = this.viewportRuler.change(VIEWPORT_THROTTLE_TIME);
1107
880
  var realign = function () {
1108
881
  _this.updatePagination();
1109
882
  };
1110
- this.keyManager = new a11y.FocusKeyManager(this.items)
883
+ this.keyManager = new i1.FocusKeyManager(this.items)
1111
884
  .withHorizontalOrientation(this.getLayoutDirection());
1112
885
  this.keyManager.updateActiveItem(this._selectedIndex);
1113
886
  // Defer the first call in order to allow for slower browsers to lay out the elements.
@@ -1353,7 +1126,7 @@
1353
1126
  * should be called sparingly.
1354
1127
  */
1355
1128
  McPaginatedTabHeader.prototype.checkPaginationEnabled = function () {
1356
- if (this.disablePagination) {
1129
+ if (this.disablePagination || this.vertical) {
1357
1130
  this.showPaginationControls = false;
1358
1131
  }
1359
1132
  else {
@@ -1448,22 +1221,22 @@
1448
1221
  };
1449
1222
  return McPaginatedTabHeader;
1450
1223
  }());
1451
- McPaginatedTabHeader.decorators = [
1452
- { type: core.Directive }
1453
- ];
1454
- /** @nocollapse */
1455
- McPaginatedTabHeader.ctorParameters = function () { return [
1456
- { type: core.ElementRef },
1457
- { type: core.ChangeDetectorRef },
1458
- { type: scrolling.ViewportRuler },
1459
- { type: core.NgZone },
1460
- { type: platform.Platform },
1461
- { type: bidi.Directionality, decorators: [{ type: core.Optional }] },
1462
- { type: String, decorators: [{ type: core.Optional }, { type: core.Inject, args: [animations$1.ANIMATION_MODULE_TYPE,] }] }
1463
- ]; };
1464
- McPaginatedTabHeader.propDecorators = {
1465
- disablePagination: [{ type: core.Input }]
1466
- };
1224
+ /** @nocollapse */ McPaginatedTabHeader.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: McPaginatedTabHeader, deps: [{ token: i0__namespace.ElementRef }, { token: i0__namespace.ChangeDetectorRef }, { token: i1__namespace.ViewportRuler }, { token: i0__namespace.NgZone }, { token: i2__namespace.Platform }, { token: i3__namespace.Directionality, optional: true }, { token: animations$1.ANIMATION_MODULE_TYPE, optional: true }], target: i0__namespace.ɵɵFactoryTarget.Directive });
1225
+ /** @nocollapse */ McPaginatedTabHeader.ɵdir = i0__namespace.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: McPaginatedTabHeader, inputs: { disablePagination: "disablePagination" }, ngImport: i0__namespace });
1226
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: McPaginatedTabHeader, decorators: [{
1227
+ type: i0.Directive
1228
+ }], ctorParameters: function () {
1229
+ return [{ type: i0__namespace.ElementRef }, { type: i0__namespace.ChangeDetectorRef }, { type: i1__namespace.ViewportRuler }, { type: i0__namespace.NgZone }, { type: i2__namespace.Platform }, { type: i3__namespace.Directionality, decorators: [{
1230
+ type: i0.Optional
1231
+ }] }, { type: undefined, decorators: [{
1232
+ type: i0.Optional
1233
+ }, {
1234
+ type: i0.Inject,
1235
+ args: [animations$1.ANIMATION_MODULE_TYPE]
1236
+ }] }];
1237
+ }, propDecorators: { disablePagination: [{
1238
+ type: i0.Input
1239
+ }] } });
1467
1240
 
1468
1241
  // Boilerplate for applying mixins to McTabLabelWrapper.
1469
1242
  /** @docs-private */
@@ -1473,7 +1246,7 @@
1473
1246
  return McTabLabelWrapperBase;
1474
1247
  }());
1475
1248
  // tslint:disable-next-line:naming-convention
1476
- var McTabLabelWrapperMixinBase = core$1.mixinDisabled(McTabLabelWrapperBase);
1249
+ var McTabLabelWrapperMixinBase = core.mixinDisabled(McTabLabelWrapperBase);
1477
1250
  /**
1478
1251
  * Used in the `mc-tab-group` view to display tab labels.
1479
1252
  * @docs-private
@@ -1499,6 +1272,15 @@
1499
1272
  McTabLabelWrapper.prototype.getOffsetWidth = function () {
1500
1273
  return this.elementRef.nativeElement.offsetWidth;
1501
1274
  };
1275
+ McTabLabelWrapper.prototype.checkOverflow = function () {
1276
+ this.tab.overflowTooltipTitle = this.isOverflown() ? this.getInnerText() : '';
1277
+ };
1278
+ McTabLabelWrapper.prototype.isOverflown = function () {
1279
+ return this.labelContent.nativeElement.scrollWidth > this.labelContent.nativeElement.clientWidth;
1280
+ };
1281
+ McTabLabelWrapper.prototype.getInnerText = function () {
1282
+ return this.labelContent.nativeElement.innerText;
1283
+ };
1502
1284
  McTabLabelWrapper.prototype.addClassModifierForIcons = function (icons) {
1503
1285
  var twoIcons = 2;
1504
1286
  var _a = __read(icons, 2), firstIconElement = _a[0], secondIconElement = _a[1];
@@ -1518,20 +1300,23 @@
1518
1300
  };
1519
1301
  return McTabLabelWrapper;
1520
1302
  }(McTabLabelWrapperMixinBase));
1521
- McTabLabelWrapper.decorators = [
1522
- { type: core.Directive, args: [{
1523
- selector: '[mcTabLabelWrapper]',
1524
- inputs: ['disabled'],
1525
- host: {
1526
- '[attr.disabled]': 'disabled || null'
1527
- }
1528
- },] }
1529
- ];
1530
- /** @nocollapse */
1531
- McTabLabelWrapper.ctorParameters = function () { return [
1532
- { type: core.ElementRef },
1533
- { type: core.Renderer2 }
1534
- ]; };
1303
+ /** @nocollapse */ McTabLabelWrapper.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: McTabLabelWrapper, deps: [{ token: i0__namespace.ElementRef }, { token: i0__namespace.Renderer2 }], target: i0__namespace.ɵɵFactoryTarget.Directive });
1304
+ /** @nocollapse */ McTabLabelWrapper.ɵdir = i0__namespace.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: McTabLabelWrapper, selector: "[mcTabLabelWrapper]", inputs: { disabled: "disabled", tab: "tab" }, host: { properties: { "attr.disabled": "disabled || null" } }, queries: [{ propertyName: "labelContent", first: true, predicate: ["labelContent"], descendants: true }], usesInheritance: true, ngImport: i0__namespace });
1305
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: McTabLabelWrapper, decorators: [{
1306
+ type: i0.Directive,
1307
+ args: [{
1308
+ selector: '[mcTabLabelWrapper]',
1309
+ inputs: ['disabled'],
1310
+ host: {
1311
+ '[attr.disabled]': 'disabled || null'
1312
+ }
1313
+ }]
1314
+ }], ctorParameters: function () { return [{ type: i0__namespace.ElementRef }, { type: i0__namespace.Renderer2 }]; }, propDecorators: { labelContent: [{
1315
+ type: i0.ContentChild,
1316
+ args: ['labelContent']
1317
+ }], tab: [{
1318
+ type: i0.Input
1319
+ }] } });
1535
1320
 
1536
1321
  /**
1537
1322
  * The header of the tab group which displays a list of all the tabs in the tab group.
@@ -1555,41 +1340,430 @@
1555
1340
  };
1556
1341
  return McTabHeader;
1557
1342
  }(McPaginatedTabHeader));
1558
- McTabHeader.decorators = [
1559
- { type: core.Component, args: [{
1560
- selector: 'mc-tab-header',
1561
- template: "<div class=\"mc-tab-header__pagination mc-tab-header__pagination_before mc-elevation-z4\"\n #previousPaginator\n [class.mc-disabled]=\"disableScrollBefore\"\n (click)=\"handlePaginatorClick('before')\"\n (mousedown)=\"handlePaginatorPress('before', $event)\"\n (touchend)=\"stopInterval()\">\n\n <i mc-icon=\"mc-angle-left-M_16\"></i>\n</div>\n\n<div class=\"mc-tab-header__content\"\n #tabListContainer\n (keydown)=\"handleKeydown($event)\">\n\n <div class=\"mc-tab-list\"\n #tabList\n (cdkObserveContent)=\"onContentChanges()\">\n <div class=\"mc-tab-list__content\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n\n<div class=\"mc-tab-header__pagination mc-tab-header__pagination_after mc-elevation-z4\"\n #nextPaginator\n [class.mc-disabled]=\"disableScrollAfter\"\n (mousedown)=\"handlePaginatorPress('after', $event)\"\n (click)=\"handlePaginatorClick('after')\"\n (touchend)=\"stopInterval()\">\n\n <i mc-icon=\"mc-angle-right-M_16\"></i>\n</div>\n",
1562
- inputs: ['selectedIndex'],
1563
- outputs: ['selectFocusedIndex', 'indexFocused'],
1564
- encapsulation: core.ViewEncapsulation.None,
1565
- changeDetection: core.ChangeDetectionStrategy.Default,
1566
- host: {
1567
- class: 'mc-tab-header',
1568
- '[class.mc-tab-header_vertical]': 'vertical',
1569
- '[class.mc-tab-header__pagination-controls_enabled]': 'showPaginationControls',
1570
- '[class.mc-tab-header_rtl]': 'getLayoutDirection() == \'rtl\''
1571
- },
1572
- styles: [".mc-tab-label.cdk-keyboard-focused:after{display:block;content:\"\";position:absolute;top:0;right:calc(-1 * var(--mc-tabs-size-border-width, 1px));bottom:calc(-1 * var(--mc-tabs-size-border-width, 1px));left:calc(-1 * var(--mc-tabs-size-border-width, 1px))}.mc-tab-label_horizontal.cdk-keyboard-focused:after,.mc-tab-label_old.cdk-keyboard-focused:after{border-style:solid;border-top-left-radius:var(--mc-tabs-size-border-radius,3px);border-top-right-radius:var(--mc-tabs-size-border-radius,3px);border-bottom:solid transparent;border-width:calc(var(--mc-tabs-size-border-width, 1px) * 2)}.mc-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.mc-tab-list__content{display:flex}.mc-tab-group_align-labels-center .mc-tab-list__content{justify-content:center}.mc-tab-group_align-labels-end .mc-tab-list__content{justify-content:flex-end}.mc-tab-header_vertical .mc-tab-list__content{flex-direction:column}.mc-tab-header__pagination{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative;display:none;justify-content:center;align-items:center;cursor:pointer;z-index:2;-webkit-tap-highlight-color:transparent;touch-action:none;padding-left:12px;padding-right:12px;border-bottom-style:solid;border-bottom-width:var(--mc-tabs-size-border-width,1px)}.mc-tab-header__pagination.mc-tab-header__pagination_before{border-right-style:solid;border-right-width:var(--mc-tabs-size-border-width,1px)}.mc-tab-header__pagination.mc-tab-header__pagination_after{border-left-style:solid;border-left-width:var(--mc-tabs-size-border-width,1px)}.mc-tab-header__pagination-controls_enabled .mc-tab-header__pagination{display:flex}.mc-tab-header__content{display:flex;flex-grow:1;z-index:1;overflow:hidden}.mc-tab-list{flex-grow:1;position:relative;transition:transform .5s cubic-bezier(.35,0,.25,1)}.mc-tab-label{position:relative;box-sizing:border-box;display:inline-flex;justify-content:center;align-items:center;height:var(--mc-tabs-size-height,40px);text-align:center;white-space:nowrap;cursor:pointer;padding-right:var(--mc-tabs-size-padding-horizontal,16px);padding-left:var(--mc-tabs-size-padding-horizontal,16px);outline:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mc-tab-label .mc-tab-overlay{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none}.mc-tab-label.mc-active{cursor:default}.mc-tab-label.mc-active:before{display:block;content:\"\";position:absolute}.mc-tab-label.mc-active[disabled] .mc-tab-overlay{bottom:-1px}.mc-tab-label.cdk-keyboard-focused{z-index:1}.mc-tab-label:first-child.cdk-keyboard-focused:after{left:0}.mc-tab-label:last-child.cdk-keyboard-focused:after{right:0}.mc-tab-label[disabled]{pointer-events:none}.mc-tab-label .mc-tab-label__template{display:flex;flex-direction:row;align-items:baseline}.mc-tab-label .mc-tab-label__template>.mc-icon.mc-icon_left{margin-right:var(--mc-tabs-size-label-icon-margin,8px)}.mc-tab-label .mc-tab-label__template>.mc-icon.mc-icon_right{margin-left:var(--mc-tabs-size-label-icon-margin,8px)}.mc-tab-label_old{border-bottom-width:var(--mc-tabs-size-border-width,1px);border-top-width:var(--mc-tabs-size-border-width,1px);border-bottom-style:solid;border-top-style:solid;border-top-left-radius:var(--mc-tabs-size-border-radius,3px);border-top-right-radius:var(--mc-tabs-size-border-radius,3px);border-left:transparent;border-right:transparent}.mc-tab-label_old.mc-active{border-width:var(--mc-tabs-size-border-width,1px);border-style:solid;padding-right:calc(var(--mc-tabs-size-padding-horizontal, 16px) - var(--mc-tabs-size-border-width, 1px));padding-left:calc(var(--mc-tabs-size-padding-horizontal, 16px) - var(--mc-tabs-size-border-width, 1px))}.mc-tab-label_old.mc-active.cdk-keyboard-focused:after{right:calc(-2 * var(--mc-tabs-size-border-width, 1px));left:calc(-2 * var(--mc-tabs-size-border-width, 1px))}.mc-tab-label_old.cdk-keyboard-focused:after{top:-1px}.mc-tab-label_old .mc-tab-overlay{top:-1px;border-top-left-radius:var(--mc-tabs-size-border-radius,3px);border-top-right-radius:var(--mc-tabs-size-border-radius,3px)}.mc-tab-label_horizontal{border-bottom-width:var(--mc-tabs-size-border-width,1px);border-bottom-style:solid}.mc-tab-label_horizontal.mc-active:before{bottom:calc(-1 * var(--mc-tabs-size-border-width, 1px));left:0;right:0;height:var(--mc-tabs-size-highlight-height,4px)}.mc-tab-label_vertical{justify-content:flex-start}.mc-tab-label_vertical.mc-active:before{top:0;bottom:0;left:calc(-1 * var(--mc-tabs-size-border-width, 1px));width:var(--mc-tabs-size-highlight-height,5px)}.mc-tab-label_vertical.cdk-keyboard-focused:after{right:0;left:0;border-width:calc(var(--mc-tabs-size-border-width, 1px) * 2);border-style:solid}.mc-tab-group_stretch-labels .mc-tab-label,.mc-tab-group_stretch-labels .mc-tab-label_old{flex-basis:0;flex-grow:1}"]
1573
- },] }
1574
- ];
1575
- /** @nocollapse */
1576
- McTabHeader.ctorParameters = function () { return [
1577
- { type: core.ElementRef },
1578
- { type: core.ChangeDetectorRef },
1579
- { type: scrolling.ViewportRuler },
1580
- { type: core.NgZone },
1581
- { type: platform.Platform },
1582
- { type: bidi.Directionality, decorators: [{ type: core.Optional }] },
1583
- { type: String, decorators: [{ type: core.Optional }, { type: core.Inject, args: [animations$1.ANIMATION_MODULE_TYPE,] }] }
1584
- ]; };
1585
- McTabHeader.propDecorators = {
1586
- vertical: [{ type: core.Input }],
1587
- items: [{ type: core.ContentChildren, args: [McTabLabelWrapper, { descendants: false },] }],
1588
- tabListContainer: [{ type: core.ViewChild, args: ['tabListContainer', { static: true },] }],
1589
- tabList: [{ type: core.ViewChild, args: ['tabList', { static: true },] }],
1590
- nextPaginator: [{ type: core.ViewChild, args: ['nextPaginator',] }],
1591
- previousPaginator: [{ type: core.ViewChild, args: ['previousPaginator',] }]
1592
- };
1343
+ /** @nocollapse */ McTabHeader.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: McTabHeader, deps: [{ token: i0__namespace.ElementRef }, { token: i0__namespace.ChangeDetectorRef }, { token: i1__namespace.ViewportRuler }, { token: i0__namespace.NgZone }, { token: i2__namespace.Platform }, { token: i3__namespace.Directionality, optional: true }, { token: animations$1.ANIMATION_MODULE_TYPE, optional: true }], target: i0__namespace.ɵɵFactoryTarget.Component });
1344
+ /** @nocollapse */ McTabHeader.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: McTabHeader, selector: "mc-tab-header", inputs: { selectedIndex: "selectedIndex", vertical: "vertical" }, outputs: { selectFocusedIndex: "selectFocusedIndex", indexFocused: "indexFocused" }, host: { properties: { "class.mc-tab-header_vertical": "vertical", "class.mc-tab-header__pagination-controls_enabled": "showPaginationControls", "class.mc-tab-header_rtl": "getLayoutDirection() == 'rtl'" }, classAttribute: "mc-tab-header" }, queries: [{ propertyName: "items", predicate: McTabLabelWrapper }], viewQueries: [{ propertyName: "tabListContainer", first: true, predicate: ["tabListContainer"], descendants: true, static: true }, { propertyName: "tabList", first: true, predicate: ["tabList"], descendants: true, static: true }, { propertyName: "nextPaginator", first: true, predicate: ["nextPaginator"], descendants: true }, { propertyName: "previousPaginator", first: true, predicate: ["previousPaginator"], descendants: true }], usesInheritance: true, ngImport: i0__namespace, template: "<div class=\"mc-tab-header__pagination mc-tab-header__pagination_before\"\n #previousPaginator\n [class.mc-disabled]=\"disableScrollBefore\"\n (click)=\"handlePaginatorClick('before')\"\n (mousedown)=\"handlePaginatorPress('before', $event)\"\n (touchend)=\"stopInterval()\">\n\n <i mc-icon=\"mc-angle-left-M_16\"></i>\n</div>\n\n<div class=\"mc-tab-header__content\"\n #tabListContainer\n (keydown)=\"handleKeydown($event)\">\n\n <div class=\"mc-tab-list\"\n #tabList\n (cdkObserveContent)=\"onContentChanges()\">\n <div class=\"mc-tab-list__content\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n\n<div class=\"mc-tab-header__pagination mc-tab-header__pagination_after\"\n #nextPaginator\n [class.mc-disabled]=\"disableScrollAfter\"\n (mousedown)=\"handlePaginatorPress('after', $event)\"\n (click)=\"handlePaginatorClick('after')\"\n (touchend)=\"stopInterval()\">\n\n <i mc-icon=\"mc-angle-right-M_16\"></i>\n</div>\n", styles: [".mc-tab-label.cdk-keyboard-focused:after{display:block;content:\"\";position:absolute;top:0;right:calc(-1 * 1px);right:calc(-1 * var(--mc-tabs-size-border-width, 1px));bottom:calc(-1 * 1px);bottom:calc(-1 * var(--mc-tabs-size-border-width, 1px));left:calc(-1 * 1px);left:calc(-1 * var(--mc-tabs-size-border-width, 1px))}.mc-tab-label_horizontal.cdk-keyboard-focused:after,.mc-tab-label_old.cdk-keyboard-focused:after{border-width:calc(1px * 2);border-width:calc(var(--mc-tabs-size-border-width, 1px) * 2);border-style:solid;border-top-left-radius:3px;border-top-left-radius:var(--mc-tabs-size-border-radius, 3px);border-top-right-radius:3px;border-top-right-radius:var(--mc-tabs-size-border-radius, 3px);border-bottom-color:transparent}.mc-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.mc-tab-list__content{display:flex}.mc-tab-group_align-labels-center .mc-tab-list__content{justify-content:center}.mc-tab-group_align-labels-end .mc-tab-list__content{justify-content:flex-end}.mc-tab-header_vertical .mc-tab-list__content{flex-direction:column}.mc-tab-header__pagination{-webkit-user-select:none;user-select:none;position:relative;display:none;justify-content:center;align-items:center;cursor:pointer;z-index:2;-webkit-tap-highlight-color:transparent;touch-action:none;padding-left:12px;padding-right:12px;border-bottom-style:solid;border-bottom-width:1px;border-bottom-width:var(--mc-tabs-size-border-width, 1px)}.mc-tab-header__pagination.mc-tab-header__pagination_before{border-right-style:solid;border-right-width:1px;border-right-width:var(--mc-tabs-size-border-width, 1px)}.mc-tab-header__pagination.mc-tab-header__pagination_after{border-left-style:solid;border-left-width:1px;border-left-width:var(--mc-tabs-size-border-width, 1px)}.mc-tab-header__pagination-controls_enabled .mc-tab-header__pagination{display:flex}.mc-tab-header__content{display:flex;flex-grow:1;z-index:1;overflow:hidden}.mc-tab-list{position:relative;width:100%;transition:transform .5s cubic-bezier(.35,0,.25,1)}.mc-tab-label{position:relative;box-sizing:border-box;display:inline-flex;justify-content:center;align-items:center;height:40px;height:var(--mc-tabs-size-height, 40px);text-align:center;white-space:nowrap;cursor:pointer;padding-right:16px;padding-right:var(--mc-tabs-size-padding-horizontal, 16px);padding-left:16px;padding-left:var(--mc-tabs-size-padding-horizontal, 16px);outline:none;-webkit-user-select:none;user-select:none}.mc-tab-label .mc-tab-overlay{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none}.mc-tab-label.mc-active{cursor:default}.mc-tab-label.mc-active:before{display:block;content:\"\";position:absolute}.mc-tab-label.mc-active[disabled] .mc-tab-overlay{bottom:-1px}.mc-tab-label.cdk-keyboard-focused{z-index:1}.mc-tab-label:first-child.cdk-keyboard-focused:after{left:0}.mc-tab-label:last-child.cdk-keyboard-focused:after{right:0}.mc-tab-label[disabled]{pointer-events:none}.mc-tab-label .mc-tab-label__content>.mc-icon.mc-icon_left{margin-right:8px;margin-right:var(--mc-tabs-size-label-icon-margin, 8px)}.mc-tab-label .mc-tab-label__content>.mc-icon.mc-icon_right{margin-left:8px;margin-left:var(--mc-tabs-size-label-icon-margin, 8px)}.mc-tab-label.mc-tab-label_vertical .mc-tab-label__content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mc-tab-label_old{border-bottom-width:1px;border-bottom-width:var(--mc-tabs-size-border-width, 1px);border-bottom-style:solid;border-width:1px;border-width:var(--mc-tabs-size-border-width, 1px);border-style:solid;border-top-left-radius:3px;border-top-left-radius:var(--mc-tabs-size-border-radius, 3px);border-top-right-radius:3px;border-top-right-radius:var(--mc-tabs-size-border-radius, 3px);border-left:none;border-left-color:transparent;border-right:none;border-right-color:transparent}.mc-tab-label_old.mc-active{border-width:1px;border-width:var(--mc-tabs-size-border-width, 1px);border-style:solid;padding-right:calc(16px - 1px);padding-right:calc(var(--mc-tabs-size-padding-horizontal, 16px) - var(--mc-tabs-size-border-width, 1px));padding-left:calc(16px - 1px);padding-left:calc(var(--mc-tabs-size-padding-horizontal, 16px) - var(--mc-tabs-size-border-width, 1px))}.mc-tab-label_old.mc-active.cdk-keyboard-focused:after{right:calc(-2 * 1px);right:calc(-2 * var(--mc-tabs-size-border-width, 1px));left:calc(-2 * 1px);left:calc(-2 * var(--mc-tabs-size-border-width, 1px))}.mc-tab-label_old.cdk-keyboard-focused:after{top:-1px}.mc-tab-label_old .mc-tab-overlay{top:-1px;border-top-left-radius:3px;border-top-left-radius:var(--mc-tabs-size-border-radius, 3px);border-top-right-radius:3px;border-top-right-radius:var(--mc-tabs-size-border-radius, 3px)}.mc-tab-label_horizontal{border-bottom-width:1px;border-bottom-width:var(--mc-tabs-size-border-width, 1px);border-bottom-style:solid}.mc-tab-label_horizontal.mc-active:before{bottom:calc(-1 * 1px);bottom:calc(-1 * var(--mc-tabs-size-border-width, 1px));left:0;right:0;height:4px;height:var(--mc-tabs-size-highlight-height, 4px)}.mc-tab-label_vertical{justify-content:flex-start}.mc-tab-label_vertical.mc-active:before{top:0;bottom:0;left:calc(-1 * 1px);left:calc(-1 * var(--mc-tabs-size-border-width, 1px));width:5px;width:var(--mc-tabs-size-highlight-height, 5px)}.mc-tab-label_vertical.cdk-keyboard-focused:after{right:0;left:0;border-width:calc(1px * 2);border-width:calc(var(--mc-tabs-size-border-width, 1px) * 2);border-style:solid}.mc-tab-group_stretch-labels .mc-tab-label,.mc-tab-group_stretch-labels .mc-tab-label_old{flex-basis:0;flex-grow:1}\n"], components: [{ type: i4__namespace.McIcon, selector: "[mc-icon]", inputs: ["color"] }], directives: [{ type: i4__namespace.McIconCSSStyler, selector: "[mc-icon]" }], changeDetection: i0__namespace.ChangeDetectionStrategy.Default, encapsulation: i0__namespace.ViewEncapsulation.None });
1345
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: McTabHeader, decorators: [{
1346
+ type: i0.Component,
1347
+ args: [{
1348
+ selector: 'mc-tab-header',
1349
+ templateUrl: 'tab-header.html',
1350
+ styleUrls: ['tab-header.scss'],
1351
+ inputs: ['selectedIndex'],
1352
+ outputs: ['selectFocusedIndex', 'indexFocused'],
1353
+ encapsulation: i0.ViewEncapsulation.None,
1354
+ changeDetection: i0.ChangeDetectionStrategy.Default,
1355
+ host: {
1356
+ class: 'mc-tab-header',
1357
+ '[class.mc-tab-header_vertical]': 'vertical',
1358
+ '[class.mc-tab-header__pagination-controls_enabled]': 'showPaginationControls',
1359
+ '[class.mc-tab-header_rtl]': 'getLayoutDirection() == \'rtl\''
1360
+ }
1361
+ }]
1362
+ }], ctorParameters: function () {
1363
+ return [{ type: i0__namespace.ElementRef }, { type: i0__namespace.ChangeDetectorRef }, { type: i1__namespace.ViewportRuler }, { type: i0__namespace.NgZone }, { type: i2__namespace.Platform }, { type: i3__namespace.Directionality, decorators: [{
1364
+ type: i0.Optional
1365
+ }] }, { type: undefined, decorators: [{
1366
+ type: i0.Optional
1367
+ }, {
1368
+ type: i0.Inject,
1369
+ args: [animations$1.ANIMATION_MODULE_TYPE]
1370
+ }] }];
1371
+ }, propDecorators: { vertical: [{
1372
+ type: i0.Input
1373
+ }], items: [{
1374
+ type: i0.ContentChildren,
1375
+ args: [McTabLabelWrapper, { descendants: false }]
1376
+ }], tabListContainer: [{
1377
+ type: i0.ViewChild,
1378
+ args: ['tabListContainer', { static: true }]
1379
+ }], tabList: [{
1380
+ type: i0.ViewChild,
1381
+ args: ['tabList', { static: true }]
1382
+ }], nextPaginator: [{
1383
+ type: i0.ViewChild,
1384
+ args: ['nextPaginator']
1385
+ }], previousPaginator: [{
1386
+ type: i0.ViewChild,
1387
+ args: ['previousPaginator']
1388
+ }] } });
1389
+
1390
+ var McOldTabsCssStyler = /** @class */ (function () {
1391
+ function McOldTabsCssStyler() {
1392
+ }
1393
+ return McOldTabsCssStyler;
1394
+ }());
1395
+ /** @nocollapse */ McOldTabsCssStyler.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: McOldTabsCssStyler, deps: [], target: i0__namespace.ɵɵFactoryTarget.Directive });
1396
+ /** @nocollapse */ McOldTabsCssStyler.ɵdir = i0__namespace.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: McOldTabsCssStyler, selector: "mc-tab-group[mc-old-tabs]", host: { classAttribute: "mc-tab-group_old" }, ngImport: i0__namespace });
1397
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: McOldTabsCssStyler, decorators: [{
1398
+ type: i0.Directive,
1399
+ args: [{
1400
+ selector: 'mc-tab-group[mc-old-tabs]',
1401
+ host: { class: 'mc-tab-group_old' }
1402
+ }]
1403
+ }] });
1404
+ var McAlignTabsCenterCssStyler = /** @class */ (function () {
1405
+ function McAlignTabsCenterCssStyler() {
1406
+ }
1407
+ return McAlignTabsCenterCssStyler;
1408
+ }());
1409
+ /** @nocollapse */ McAlignTabsCenterCssStyler.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: McAlignTabsCenterCssStyler, deps: [], target: i0__namespace.ɵɵFactoryTarget.Directive });
1410
+ /** @nocollapse */ McAlignTabsCenterCssStyler.ɵdir = i0__namespace.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: McAlignTabsCenterCssStyler, selector: "mc-tab-group[mc-align-tabs-center], [mc-tab-nav-bar][mc-align-tabs-center]", host: { classAttribute: "mc-tab-group_align-labels-center" }, ngImport: i0__namespace });
1411
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: McAlignTabsCenterCssStyler, decorators: [{
1412
+ type: i0.Directive,
1413
+ args: [{
1414
+ selector: 'mc-tab-group[mc-align-tabs-center], [mc-tab-nav-bar][mc-align-tabs-center]',
1415
+ host: { class: 'mc-tab-group_align-labels-center' }
1416
+ }]
1417
+ }] });
1418
+ var McAlignTabsEndCssStyler = /** @class */ (function () {
1419
+ function McAlignTabsEndCssStyler() {
1420
+ }
1421
+ return McAlignTabsEndCssStyler;
1422
+ }());
1423
+ /** @nocollapse */ McAlignTabsEndCssStyler.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: McAlignTabsEndCssStyler, deps: [], target: i0__namespace.ɵɵFactoryTarget.Directive });
1424
+ /** @nocollapse */ McAlignTabsEndCssStyler.ɵdir = i0__namespace.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: McAlignTabsEndCssStyler, selector: "mc-tab-group[mc-align-tabs-end], [mc-tab-nav-bar][mc-align-tabs-end]", host: { classAttribute: "mc-tab-group_align-labels-end" }, ngImport: i0__namespace });
1425
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: McAlignTabsEndCssStyler, decorators: [{
1426
+ type: i0.Directive,
1427
+ args: [{
1428
+ selector: 'mc-tab-group[mc-align-tabs-end], [mc-tab-nav-bar][mc-align-tabs-end]',
1429
+ host: { class: 'mc-tab-group_align-labels-end' }
1430
+ }]
1431
+ }] });
1432
+ var McStretchTabsCssStyler = /** @class */ (function () {
1433
+ function McStretchTabsCssStyler() {
1434
+ }
1435
+ return McStretchTabsCssStyler;
1436
+ }());
1437
+ /** @nocollapse */ McStretchTabsCssStyler.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: McStretchTabsCssStyler, deps: [], target: i0__namespace.ɵɵFactoryTarget.Directive });
1438
+ /** @nocollapse */ McStretchTabsCssStyler.ɵdir = i0__namespace.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: McStretchTabsCssStyler, selector: "mc-tab-group[mc-stretch-tabs], [mc-tab-nav-bar][mc-stretch-tabs]", host: { classAttribute: "mc-tab-group_stretch-labels" }, ngImport: i0__namespace });
1439
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: McStretchTabsCssStyler, decorators: [{
1440
+ type: i0.Directive,
1441
+ args: [{
1442
+ selector: 'mc-tab-group[mc-stretch-tabs], [mc-tab-nav-bar][mc-stretch-tabs]',
1443
+ host: { class: 'mc-tab-group_stretch-labels' }
1444
+ }]
1445
+ }] });
1446
+ var McVerticalTabsCssStyler = /** @class */ (function () {
1447
+ function McVerticalTabsCssStyler() {
1448
+ }
1449
+ return McVerticalTabsCssStyler;
1450
+ }());
1451
+ /** @nocollapse */ McVerticalTabsCssStyler.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: McVerticalTabsCssStyler, deps: [], target: i0__namespace.ɵɵFactoryTarget.Directive });
1452
+ /** @nocollapse */ McVerticalTabsCssStyler.ɵdir = i0__namespace.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: McVerticalTabsCssStyler, selector: "mc-tab-group[vertical], [mc-tab-nav-bar][vertical]", host: { classAttribute: "mc-tab-group_vertical" }, ngImport: i0__namespace });
1453
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: McVerticalTabsCssStyler, decorators: [{
1454
+ type: i0.Directive,
1455
+ args: [{
1456
+ selector: 'mc-tab-group[vertical], [mc-tab-nav-bar][vertical]',
1457
+ host: { class: 'mc-tab-group_vertical' }
1458
+ }]
1459
+ }] });
1460
+ /** Used to generate unique ID's for each tab component */
1461
+ var nextId = 0;
1462
+ /** A simple change event emitted on focus or selection changes. */
1463
+ var McTabChangeEvent = /** @class */ (function () {
1464
+ function McTabChangeEvent() {
1465
+ }
1466
+ return McTabChangeEvent;
1467
+ }());
1468
+ /** Injection token that can be used to provide the default options the tabs module. */
1469
+ var MC_TABS_CONFIG = new i0.InjectionToken('MC_TABS_CONFIG');
1470
+ // Boilerplate for applying mixins to McTabGroup.
1471
+ /** @docs-private */
1472
+ var McTabGroupBase = /** @class */ (function () {
1473
+ // tslint:disable-next-line:naming-convention
1474
+ function McTabGroupBase(_elementRef) {
1475
+ this._elementRef = _elementRef;
1476
+ }
1477
+ return McTabGroupBase;
1478
+ }());
1479
+ // tslint:disable-next-line:naming-convention
1480
+ var McTabGroupMixinBase = core.mixinDisabled(McTabGroupBase);
1481
+ /**
1482
+ * Tab-group component. Supports basic tab pairs (label + content) and includes
1483
+ * keyboard navigation.
1484
+ */
1485
+ var McTabGroup = /** @class */ (function (_super) {
1486
+ __extends(McTabGroup, _super);
1487
+ function McTabGroup(elementRef, changeDetectorRef, lightTabs, vertical, defaultConfig) {
1488
+ var _this = _super.call(this, elementRef) || this;
1489
+ _this.changeDetectorRef = changeDetectorRef;
1490
+ _this.resizeStream = new rxjs.Subject();
1491
+ _this._dynamicHeight = false;
1492
+ _this._selectedIndex = null;
1493
+ /** Position of the tab header. */
1494
+ _this.headerPosition = 'above';
1495
+ /** Output to enable support for two-way binding on `[(selectedIndex)]` */
1496
+ _this.selectedIndexChange = new i0.EventEmitter();
1497
+ /** Event emitted when focus has changed within a tab group. */
1498
+ _this.focusChange = new i0.EventEmitter();
1499
+ /** Event emitted when the body animation has completed */
1500
+ _this.animationDone = new i0.EventEmitter();
1501
+ /** Event emitted when the tab selection has changed. */
1502
+ _this.selectedTabChange = new i0.EventEmitter(true);
1503
+ /** The tab index that should be selected after the content has been checked. */
1504
+ _this.indexToSelect = 0;
1505
+ /** Snapshot of the height of the tab body wrapper before another tab is activated. */
1506
+ _this.tabBodyWrapperHeight = 0;
1507
+ /** Subscription to tabs being added/removed. */
1508
+ _this.tabsSubscription = rxjs.Subscription.EMPTY;
1509
+ /** Subscription to changes in the tab labels. */
1510
+ _this.tabLabelSubscription = rxjs.Subscription.EMPTY;
1511
+ _this.resizeSubscription = rxjs.Subscription.EMPTY;
1512
+ _this.resizeDebounceInterval = 100;
1513
+ _this.checkOverflow = function () {
1514
+ _this.tabHeader.items
1515
+ .forEach(function (headerTab) { return headerTab.checkOverflow(); });
1516
+ };
1517
+ _this.oldTab = coercion.coerceBooleanProperty(lightTabs);
1518
+ _this.vertical = coercion.coerceBooleanProperty(vertical);
1519
+ _this.groupId = nextId++;
1520
+ _this.animationDuration = (defaultConfig === null || defaultConfig === void 0 ? void 0 : defaultConfig.animationDuration) || '0ms';
1521
+ _this.subscribeToResize();
1522
+ return _this;
1523
+ }
1524
+ Object.defineProperty(McTabGroup.prototype, "dynamicHeight", {
1525
+ /** Whether the tab group should grow to the size of the active tab. */
1526
+ get: function () {
1527
+ return this._dynamicHeight;
1528
+ },
1529
+ set: function (value) {
1530
+ this._dynamicHeight = coercion.coerceBooleanProperty(value);
1531
+ },
1532
+ enumerable: false,
1533
+ configurable: true
1534
+ });
1535
+ Object.defineProperty(McTabGroup.prototype, "selectedIndex", {
1536
+ /** The index of the active tab. */
1537
+ get: function () {
1538
+ return this._selectedIndex;
1539
+ },
1540
+ set: function (value) {
1541
+ this.indexToSelect = coercion.coerceNumberProperty(value, null);
1542
+ },
1543
+ enumerable: false,
1544
+ configurable: true
1545
+ });
1546
+ /**
1547
+ * After the content is checked, this component knows what tabs have been defined
1548
+ * and what the selected index should be. This is where we can know exactly what position
1549
+ * each tab should be in according to the new selected index, and additionally we know how
1550
+ * a new selected tab should transition in (from the left or right).
1551
+ */
1552
+ McTabGroup.prototype.ngAfterContentChecked = function () {
1553
+ var _this = this;
1554
+ // Don't clamp the `indexToSelect` immediately in the setter because it can happen that
1555
+ // the amount of tabs changes before the actual change detection runs.
1556
+ var indexToSelect = this.indexToSelect = this.clampTabIndex(this.indexToSelect);
1557
+ // If there is a change in selected index, emit a change event. Should not trigger if
1558
+ // the selected index has not yet been initialized.
1559
+ if (this._selectedIndex !== indexToSelect) {
1560
+ var isFirstRun_1 = this._selectedIndex == null;
1561
+ if (!isFirstRun_1) {
1562
+ this.selectedTabChange.emit(this.createChangeEvent(indexToSelect));
1563
+ }
1564
+ // Changing these values after change detection has run
1565
+ // since the checked content may contain references to them.
1566
+ Promise.resolve().then(function () {
1567
+ _this.tabs.forEach(function (tab, index) { return tab.isActive = index === indexToSelect; });
1568
+ if (!isFirstRun_1) {
1569
+ _this.selectedIndexChange.emit(indexToSelect);
1570
+ }
1571
+ });
1572
+ }
1573
+ // Setup the position for each tab and optionally setup an origin on the next selected tab.
1574
+ this.tabs.forEach(function (tab, index) {
1575
+ tab.position = index - indexToSelect;
1576
+ // If there is already a selected tab, then set up an origin for the next selected tab
1577
+ // if it doesn't have one already.
1578
+ if (_this._selectedIndex != null && tab.position === 0 && !tab.origin) {
1579
+ tab.origin = indexToSelect - _this._selectedIndex;
1580
+ }
1581
+ });
1582
+ if (this._selectedIndex !== indexToSelect) {
1583
+ this._selectedIndex = indexToSelect;
1584
+ this.changeDetectorRef.markForCheck();
1585
+ }
1586
+ };
1587
+ McTabGroup.prototype.ngAfterContentInit = function () {
1588
+ var _this = this;
1589
+ this.subscribeToTabLabels();
1590
+ // Subscribe to changes in the amount of tabs, in order to be
1591
+ // able to re-render the content as new tabs are added or removed.
1592
+ this.tabsSubscription = this.tabs.changes
1593
+ .subscribe(function () {
1594
+ var indexToSelect = _this.clampTabIndex(_this.indexToSelect);
1595
+ // Maintain the previously-selected tab if a new tab is added or removed and there is no
1596
+ // explicit change that selects a different tab.
1597
+ if (indexToSelect === _this._selectedIndex) {
1598
+ var tabs = _this.tabs.toArray();
1599
+ for (var i = 0; i < tabs.length; i++) {
1600
+ if (tabs[i].isActive) {
1601
+ // Assign both to the `_indexToSelect` and `_selectedIndex` so we don't fire a changed
1602
+ // event, otherwise the consumer may end up in an infinite loop in some edge cases like
1603
+ // adding a tab within the `selectedIndexChange` event.
1604
+ _this.indexToSelect = _this._selectedIndex = i;
1605
+ break;
1606
+ }
1607
+ }
1608
+ }
1609
+ _this.subscribeToTabLabels();
1610
+ _this.changeDetectorRef.markForCheck();
1611
+ });
1612
+ };
1613
+ McTabGroup.prototype.ngAfterViewInit = function () {
1614
+ this.checkOverflow();
1615
+ };
1616
+ McTabGroup.prototype.ngOnDestroy = function () {
1617
+ this.tabsSubscription.unsubscribe();
1618
+ this.tabLabelSubscription.unsubscribe();
1619
+ this.resizeSubscription.unsubscribe();
1620
+ };
1621
+ McTabGroup.prototype.focusChanged = function (index) {
1622
+ this.focusChange.emit(this.createChangeEvent(index));
1623
+ };
1624
+ /** Returns a unique id for each tab label element */
1625
+ McTabGroup.prototype.getTabLabelId = function (i) {
1626
+ return "mc-tab-label-" + this.groupId + "-" + i;
1627
+ };
1628
+ /** Returns a unique id for each tab content element */
1629
+ McTabGroup.prototype.getTabContentId = function (i) {
1630
+ return "mc-tab-content-" + this.groupId + "-" + i;
1631
+ };
1632
+ /**
1633
+ * Sets the height of the body wrapper to the height of the activating tab if dynamic
1634
+ * height property is true.
1635
+ */
1636
+ McTabGroup.prototype.setTabBodyWrapperHeight = function (tabHeight) {
1637
+ if (!this._dynamicHeight || !this.tabBodyWrapperHeight) {
1638
+ return;
1639
+ }
1640
+ var wrapper = this.tabBodyWrapper.nativeElement;
1641
+ wrapper.style.height = this.tabBodyWrapperHeight + "px";
1642
+ // This conditional forces the browser to paint the height so that
1643
+ // the animation to the new height can have an origin.
1644
+ if (this.tabBodyWrapper.nativeElement.offsetHeight) {
1645
+ wrapper.style.height = tabHeight + "px";
1646
+ }
1647
+ };
1648
+ /** Removes the height of the tab body wrapper. */
1649
+ McTabGroup.prototype.removeTabBodyWrapperHeight = function () {
1650
+ this.tabBodyWrapperHeight = this.tabBodyWrapper.nativeElement.clientHeight;
1651
+ this.tabBodyWrapper.nativeElement.style.height = '';
1652
+ this.animationDone.emit();
1653
+ };
1654
+ /** Handle click events, setting new selected index if appropriate. */
1655
+ McTabGroup.prototype.handleClick = function (tab, tabHeader, index) {
1656
+ if (tab.disabled) {
1657
+ return;
1658
+ }
1659
+ this.selectedIndex = tabHeader.focusIndex = index;
1660
+ };
1661
+ /** Retrieves the tabindex for the tab. */
1662
+ McTabGroup.prototype.getTabIndex = function (tab, index) {
1663
+ if (tab.disabled) {
1664
+ return null;
1665
+ }
1666
+ return this.selectedIndex === index ? 0 : -1;
1667
+ };
1668
+ McTabGroup.prototype.createChangeEvent = function (index) {
1669
+ var event = new McTabChangeEvent();
1670
+ event.index = index;
1671
+ if (this.tabs && this.tabs.length) {
1672
+ event.tab = this.tabs.toArray()[index];
1673
+ }
1674
+ return event;
1675
+ };
1676
+ /**
1677
+ * Subscribes to changes in the tab labels. This is needed, because the @Input for the label is
1678
+ * on the McTab component, whereas the data binding is inside the McTabGroup. In order for the
1679
+ * binding to be updated, we need to subscribe to changes in it and trigger change detection
1680
+ * manually.
1681
+ */
1682
+ McTabGroup.prototype.subscribeToTabLabels = function () {
1683
+ var _this = this;
1684
+ if (this.tabLabelSubscription) {
1685
+ this.tabLabelSubscription.unsubscribe();
1686
+ }
1687
+ this.tabLabelSubscription = rxjs.merge.apply(void 0, __spreadArray([], __read(this.tabs.map(function (tab) { return tab.stateChanges; })))).subscribe(function () { return _this.changeDetectorRef.markForCheck(); });
1688
+ };
1689
+ McTabGroup.prototype.subscribeToResize = function () {
1690
+ if (!this.vertical) {
1691
+ return;
1692
+ }
1693
+ if (this.resizeSubscription) {
1694
+ this.resizeSubscription.unsubscribe();
1695
+ }
1696
+ this.resizeSubscription = this.resizeStream
1697
+ .pipe(operators.debounceTime(this.resizeDebounceInterval))
1698
+ .subscribe(this.checkOverflow);
1699
+ };
1700
+ /** Clamps the given index to the bounds of 0 and the tabs length. */
1701
+ McTabGroup.prototype.clampTabIndex = function (index) {
1702
+ // Note the `|| 0`, which ensures that values like NaN can't get through
1703
+ // and which would otherwise throw the component into an infinite loop
1704
+ // (since Mch.max(NaN, 0) === NaN).
1705
+ return Math.min(this.tabs.length - 1, Math.max(index || 0, 0));
1706
+ };
1707
+ return McTabGroup;
1708
+ }(McTabGroupMixinBase));
1709
+ /** @nocollapse */ McTabGroup.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: McTabGroup, deps: [{ token: i0__namespace.ElementRef }, { token: i0__namespace.ChangeDetectorRef }, { token: 'mc-old-tabs', attribute: true }, { token: 'vertical', attribute: true }, { token: MC_TABS_CONFIG, optional: true }], target: i0__namespace.ɵɵFactoryTarget.Component });
1710
+ /** @nocollapse */ McTabGroup.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: McTabGroup, selector: "mc-tab-group", inputs: { disabled: "disabled", dynamicHeight: "dynamicHeight", selectedIndex: "selectedIndex", headerPosition: "headerPosition", animationDuration: "animationDuration" }, outputs: { selectedIndexChange: "selectedIndexChange", focusChange: "focusChange", animationDone: "animationDone", selectedTabChange: "selectedTabChange" }, host: { listeners: { "window:resize": "resizeStream.next()" }, properties: { "class.mc-tab-group_dynamic-height": "dynamicHeight", "class.mc-tab-group_inverted-header": "headerPosition === \"below\"" }, classAttribute: "mc-tab-group" }, queries: [{ propertyName: "tabs", predicate: McTab }], viewQueries: [{ propertyName: "tabBodyWrapper", first: true, predicate: ["tabBodyWrapper"], descendants: true }, { propertyName: "tabHeader", first: true, predicate: ["tabHeader"], descendants: true }], exportAs: ["mcTabGroup"], usesInheritance: true, ngImport: i0__namespace, template: "<mc-tab-header\n #tabHeader\n [vertical]=\"vertical\"\n [selectedIndex]=\"selectedIndex\"\n (indexFocused)=\"focusChanged($event)\"\n (selectFocusedIndex)=\"selectedIndex = $event\">\n\n <div class=\"mc-tab-label\"\n mcTabLabelWrapper\n cdkMonitorElementFocus\n [attr.tabindex]=\"getTabIndex(tab, i)\"\n [class.mc-tab-label_old]=\"oldTab\"\n [class.mc-tab-label_horizontal]=\"!vertical && !oldTab\"\n [class.mc-tab-label_vertical]=\"vertical && !oldTab\"\n [class.mc-tab-label_empty]=\"tab.empty\"\n [class.mc-active]=\"selectedIndex == i\"\n *ngFor=\"let tab of tabs; let i = index\"\n [tab]=\"tab\"\n [id]=\"getTabLabelId(i)\"\n [disabled]=\"tab.disabled\"\n (click)=\"handleClick(tab, tabHeader, i)\"\n\n [mcTooltip]=\"tab.tooltipTitle\"\n [mcTooltipDisabled]=\"!tab.empty && !tab.isOverflown\"\n [mcTrigger]=\"'hover, focus'\"\n [mcPlacement]=\"tab.tooltipPlacement\">\n\n <div #labelContent class=\"mc-tab-label__content\"\n [class.mc-tab-label__template]=\"tab.templateLabel\">\n <!-- If there is a label template, use it. -->\n <ng-template [ngIf]=\"tab.templateLabel\">\n <ng-template [cdkPortalOutlet]=\"tab.templateLabel\"></ng-template>\n </ng-template>\n\n <!-- If there is not a label template, fall back to the text label. -->\n <ng-template [ngIf]=\"!tab.templateLabel\">{{ tab.textLabel }}</ng-template>\n </div>\n\n <div class=\"mc-tab-overlay\"></div>\n </div>\n</mc-tab-header>\n\n<div class=\"mc-tab-body__wrapper\" #tabBodyWrapper>\n <mc-tab-body\n *ngFor=\"let tab of tabs; let i = index\"\n [id]=\"getTabContentId(i)\"\n [class.mc-tab-body__active]=\"selectedIndex == i\"\n [content]=\"tab.content!\"\n [position]=\"tab.position!\"\n [origin]=\"tab.origin!\"\n [animationDuration]=\"animationDuration\"\n (onCentered)=\"removeTabBodyWrapperHeight()\"\n (onCentering)=\"setTabBodyWrapperHeight($event)\">\n </mc-tab-body>\n</div>\n", styles: [".mc-tab-group{display:flex;flex-direction:column;box-sizing:border-box;text-align:center;white-space:nowrap}.mc-tab-group.mc-tab-group_inverted-header{flex-direction:column-reverse}.mc-tab-group_vertical{flex-direction:row}.mc-tab-group_vertical .mc-tab-header__content{overflow-y:auto;padding-top:8px;padding-bottom:1px;border-right-width:1px;border-right-width:var(--mc-tabs-size-border-width, 1px);border-right-style:solid}.mc-tab-body__wrapper{display:flex;overflow:hidden;position:relative}.mc-tab-body{top:0;left:0;right:0;bottom:0;position:absolute;display:block;overflow:hidden;flex-basis:100%}.mc-tab-body.mc-tab-body__active{overflow-x:hidden;overflow-y:auto;position:relative;z-index:1;flex-grow:1}.mc-tab-group.mc-tab-group_dynamic-height .mc-tab-body.mc-tab-body__active{overflow-y:hidden}\n"], components: [{ type: McTabHeader, selector: "mc-tab-header", inputs: ["selectedIndex", "vertical"], outputs: ["selectFocusedIndex", "indexFocused"] }, { type: McTabBody, selector: "mc-tab-body", inputs: ["position", "content", "origin", "animationDuration"], outputs: ["onCentering", "beforeCentering", "afterLeavingCenter", "onCentered"] }], directives: [{ type: i3__namespace$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: McTabLabelWrapper, selector: "[mcTabLabelWrapper]", inputs: ["disabled", "tab"] }, { type: i1__namespace$1.CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"] }, { type: i6__namespace.McTooltipTrigger, selector: "[mcTooltip]", inputs: ["mcVisible", "mcPlacement", "mcPlacementPriority", "mcTooltip", "mcTooltipDisabled", "mcEnterDelay", "mcLeaveDelay", "mcTrigger", "mcTooltipClass"], outputs: ["mcPlacementChange", "mcVisibleChange"], exportAs: ["mcTooltip"] }, { type: i3__namespace$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7__namespace.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush, encapsulation: i0__namespace.ViewEncapsulation.None });
1711
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: McTabGroup, decorators: [{
1712
+ type: i0.Component,
1713
+ args: [{
1714
+ selector: 'mc-tab-group',
1715
+ exportAs: 'mcTabGroup',
1716
+ templateUrl: 'tab-group.html',
1717
+ styleUrls: ['tab-group.scss'],
1718
+ encapsulation: i0.ViewEncapsulation.None,
1719
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
1720
+ inputs: ['disabled'],
1721
+ host: {
1722
+ class: 'mc-tab-group',
1723
+ '[class.mc-tab-group_dynamic-height]': 'dynamicHeight',
1724
+ '[class.mc-tab-group_inverted-header]': 'headerPosition === "below"',
1725
+ '(window:resize)': 'resizeStream.next()'
1726
+ }
1727
+ }]
1728
+ }], ctorParameters: function () {
1729
+ return [{ type: i0__namespace.ElementRef }, { type: i0__namespace.ChangeDetectorRef }, { type: undefined, decorators: [{
1730
+ type: i0.Attribute,
1731
+ args: ['mc-old-tabs']
1732
+ }] }, { type: undefined, decorators: [{
1733
+ type: i0.Attribute,
1734
+ args: ['vertical']
1735
+ }] }, { type: undefined, decorators: [{
1736
+ type: i0.Inject,
1737
+ args: [MC_TABS_CONFIG]
1738
+ }, {
1739
+ type: i0.Optional
1740
+ }] }];
1741
+ }, propDecorators: { tabs: [{
1742
+ type: i0.ContentChildren,
1743
+ args: [McTab]
1744
+ }], tabBodyWrapper: [{
1745
+ type: i0.ViewChild,
1746
+ args: ['tabBodyWrapper', { static: false }]
1747
+ }], tabHeader: [{
1748
+ type: i0.ViewChild,
1749
+ args: ['tabHeader', { static: false }]
1750
+ }], dynamicHeight: [{
1751
+ type: i0.Input
1752
+ }], selectedIndex: [{
1753
+ type: i0.Input
1754
+ }], headerPosition: [{
1755
+ type: i0.Input
1756
+ }], animationDuration: [{
1757
+ type: i0.Input
1758
+ }], selectedIndexChange: [{
1759
+ type: i0.Output
1760
+ }], focusChange: [{
1761
+ type: i0.Output
1762
+ }], animationDone: [{
1763
+ type: i0.Output
1764
+ }], selectedTabChange: [{
1765
+ type: i0.Output
1766
+ }] } });
1593
1767
 
1594
1768
  // Boilerplate for applying mixins to McTabLink.
1595
1769
  var McTabLinkBase = /** @class */ (function () {
@@ -1598,7 +1772,7 @@
1598
1772
  return McTabLinkBase;
1599
1773
  }());
1600
1774
  // tslint:disable-next-line:naming-convention
1601
- var McTabLinkMixinBase = core$1.mixinTabIndex(core$1.mixinDisabled(McTabLinkBase));
1775
+ var McTabLinkMixinBase = core.mixinTabIndex(core.mixinDisabled(McTabLinkBase));
1602
1776
  /**
1603
1777
  * Link inside of a `mc-tab-nav-bar`.
1604
1778
  */
@@ -1653,31 +1827,27 @@
1653
1827
  };
1654
1828
  return McTabLink;
1655
1829
  }(McTabLinkMixinBase));
1656
- McTabLink.decorators = [
1657
- { type: core.Component, args: [{
1658
- selector: 'a[mc-tab-link], a[mcTabLink]',
1659
- exportAs: 'mcTabLink',
1660
- template: '<ng-content></ng-content><div class="mc-tab-overlay"></div>',
1661
- inputs: ['disabled', 'tabIndex'],
1662
- host: {
1663
- class: 'mc-tab-link',
1664
- '[class.mc-active]': 'active',
1665
- '[class.mc-tab-label_vertical]': 'vertical',
1666
- '[class.mc-tab-label_horizontal]': '!vertical',
1667
- '[attr.tabindex]': 'tabIndex',
1668
- '[attr.disabled]': 'disabled || null'
1669
- }
1670
- },] }
1671
- ];
1672
- /** @nocollapse */
1673
- McTabLink.ctorParameters = function () { return [
1674
- { type: core.ElementRef },
1675
- { type: a11y.FocusMonitor },
1676
- { type: core.Renderer2 }
1677
- ]; };
1678
- McTabLink.propDecorators = {
1679
- active: [{ type: core.Input }]
1680
- };
1830
+ /** @nocollapse */ McTabLink.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: McTabLink, deps: [{ token: i0__namespace.ElementRef }, { token: i1__namespace$1.FocusMonitor }, { token: i0__namespace.Renderer2 }], target: i0__namespace.ɵɵFactoryTarget.Component });
1831
+ /** @nocollapse */ McTabLink.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: McTabLink, selector: "a[mc-tab-link], a[mcTabLink]", inputs: { disabled: "disabled", tabIndex: "tabIndex", active: "active" }, host: { properties: { "class.mc-active": "active", "class.mc-tab-label_vertical": "vertical", "class.mc-tab-label_horizontal": "!vertical", "attr.tabindex": "tabIndex", "attr.disabled": "disabled || null" }, classAttribute: "mc-tab-link" }, exportAs: ["mcTabLink"], usesInheritance: true, ngImport: i0__namespace, template: '<ng-content></ng-content><div class="mc-tab-overlay"></div>', isInline: true });
1832
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: McTabLink, decorators: [{
1833
+ type: i0.Component,
1834
+ args: [{
1835
+ selector: 'a[mc-tab-link], a[mcTabLink]',
1836
+ exportAs: 'mcTabLink',
1837
+ template: '<ng-content></ng-content><div class="mc-tab-overlay"></div>',
1838
+ inputs: ['disabled', 'tabIndex'],
1839
+ host: {
1840
+ class: 'mc-tab-link',
1841
+ '[class.mc-active]': 'active',
1842
+ '[class.mc-tab-label_vertical]': 'vertical',
1843
+ '[class.mc-tab-label_horizontal]': '!vertical',
1844
+ '[attr.tabindex]': 'tabIndex',
1845
+ '[attr.disabled]': 'disabled || null'
1846
+ }
1847
+ }]
1848
+ }], ctorParameters: function () { return [{ type: i0__namespace.ElementRef }, { type: i1__namespace$1.FocusMonitor }, { type: i0__namespace.Renderer2 }]; }, propDecorators: { active: [{
1849
+ type: i0.Input
1850
+ }] } });
1681
1851
  /**
1682
1852
  * Navigation component matching the styles of the tab group header.
1683
1853
  */
@@ -1695,76 +1865,121 @@
1695
1865
  };
1696
1866
  return McTabNav;
1697
1867
  }());
1698
- McTabNav.decorators = [
1699
- { type: core.Component, args: [{
1700
- selector: '[mc-tab-nav-bar]',
1701
- exportAs: 'mcTabNavBar, mcTabNav',
1702
- template: '<ng-content></ng-content>',
1703
- host: {
1704
- class: 'mc-tab-nav-bar'
1705
- },
1706
- encapsulation: core.ViewEncapsulation.None,
1707
- changeDetection: core.ChangeDetectionStrategy.OnPush,
1708
- styles: [".mc-tab-link.cdk-keyboard-focused:after{display:block;content:\"\";position:absolute;top:0;right:calc(-1 * var(--mc-tabs-size-border-width, 1px));bottom:calc(-1 * var(--mc-tabs-size-border-width, 1px));left:calc(-1 * var(--mc-tabs-size-border-width, 1px))}.mc-tab-link{vertical-align:top;text-decoration:none;-webkit-tap-highlight-color:transparent;position:relative;box-sizing:border-box;display:inline-flex;justify-content:center;align-items:center;height:var(--mc-tabs-size-height,40px);text-align:center;white-space:nowrap;cursor:pointer;padding-right:var(--mc-tabs-size-padding-horizontal,16px);padding-left:var(--mc-tabs-size-padding-horizontal,16px);outline:none}.mc-tab-link .mc-tab-overlay{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none}.mc-tab-link.mc-active{cursor:default}.mc-tab-link.mc-active:before{display:block;content:\"\";position:absolute}.mc-tab-link.mc-active[disabled] .mc-tab-overlay{bottom:-1px}.mc-tab-link.cdk-keyboard-focused{z-index:1}.mc-tab-link:first-child.cdk-keyboard-focused:after{left:0}.mc-tab-link:last-child.cdk-keyboard-focused:after{right:0}.mc-tab-link[disabled]{pointer-events:none}.mc-tab-link .mc-tab-label__template{display:flex;flex-direction:row;align-items:baseline}.mc-tab-link .mc-tab-label__template>.mc-icon.mc-icon_left{margin-right:var(--mc-tabs-size-label-icon-margin,8px)}.mc-tab-link .mc-tab-label__template>.mc-icon.mc-icon_right{margin-left:var(--mc-tabs-size-label-icon-margin,8px)}.mc-tab-link .mc-tab-group_stretch-labels .mc-tab-link{flex-basis:0;flex-grow:1}.mc-tab-link>.mc-icon.mc-icon_left{margin-right:var(--mc-tabs-size-label-icon-margin,8px)}.mc-tab-link>.mc-icon.mc-icon_right{margin-left:var(--mc-tabs-size-label-icon-margin,8px)}.mc-tab-nav-bar{display:flex;flex-grow:1;position:relative;padding:1px 1px 0}.mc-tab-nav-bar .mc-tab-group_align-labels-center{justify-content:center}.mc-tab-nav-bar .mc-tab-group_align-labels-end{justify-content:flex-end}.mc-tab-nav-bar.mc-tab-group_vertical{flex-direction:column;flex-grow:0}"]
1709
- },] }
1710
- ];
1711
- /** @nocollapse */
1712
- McTabNav.ctorParameters = function () { return [
1713
- { type: String, decorators: [{ type: core.Attribute, args: ['vertical',] }] }
1714
- ]; };
1715
- McTabNav.propDecorators = {
1716
- links: [{ type: core.ContentChildren, args: [McTabLink,] }]
1717
- };
1868
+ /** @nocollapse */ McTabNav.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: McTabNav, deps: [{ token: 'vertical', attribute: true }], target: i0__namespace.ɵɵFactoryTarget.Component });
1869
+ /** @nocollapse */ McTabNav.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: McTabNav, selector: "[mc-tab-nav-bar]", host: { classAttribute: "mc-tab-nav-bar" }, queries: [{ propertyName: "links", predicate: McTabLink }], exportAs: ["mcTabNavBar", "mcTabNav"], ngImport: i0__namespace, template: '<ng-content></ng-content>', isInline: true, styles: [".mc-tab-link.cdk-keyboard-focused:after{display:block;content:\"\";position:absolute;top:0;right:calc(-1 * 1px);right:calc(-1 * var(--mc-tabs-size-border-width, 1px));bottom:calc(-1 * 1px);bottom:calc(-1 * var(--mc-tabs-size-border-width, 1px));left:calc(-1 * 1px);left:calc(-1 * var(--mc-tabs-size-border-width, 1px))}.mc-tab-link{vertical-align:top;text-decoration:none;-webkit-tap-highlight-color:transparent;position:relative;box-sizing:border-box;display:inline-flex;justify-content:center;align-items:center;height:40px;height:var(--mc-tabs-size-height, 40px);text-align:center;white-space:nowrap;cursor:pointer;padding-right:16px;padding-right:var(--mc-tabs-size-padding-horizontal, 16px);padding-left:16px;padding-left:var(--mc-tabs-size-padding-horizontal, 16px);outline:none}.mc-tab-link .mc-tab-overlay{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none}.mc-tab-link.mc-active{cursor:default}.mc-tab-link.mc-active:before{display:block;content:\"\";position:absolute}.mc-tab-link.mc-active[disabled] .mc-tab-overlay{bottom:-1px}.mc-tab-link.cdk-keyboard-focused{z-index:1}.mc-tab-link:first-child.cdk-keyboard-focused:after{left:0}.mc-tab-link:last-child.cdk-keyboard-focused:after{right:0}.mc-tab-link[disabled]{pointer-events:none}.mc-tab-link .mc-tab-label__content>.mc-icon.mc-icon_left{margin-right:8px;margin-right:var(--mc-tabs-size-label-icon-margin, 8px)}.mc-tab-link .mc-tab-label__content>.mc-icon.mc-icon_right{margin-left:8px;margin-left:var(--mc-tabs-size-label-icon-margin, 8px)}.mc-tab-link.mc-tab-label_vertical .mc-tab-label__content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mc-tab-link .mc-tab-group_stretch-labels .mc-tab-link{flex-basis:0;flex-grow:1}.mc-tab-link>.mc-icon.mc-icon_left{margin-right:8px;margin-right:var(--mc-tabs-size-label-icon-margin, 8px)}.mc-tab-link>.mc-icon.mc-icon_right{margin-left:8px;margin-left:var(--mc-tabs-size-label-icon-margin, 8px)}.mc-tab-nav-bar{display:flex;flex-grow:1;position:relative;padding:1px 1px 0}.mc-tab-nav-bar .mc-tab-group_align-labels-center{justify-content:center}.mc-tab-nav-bar .mc-tab-group_align-labels-end{justify-content:flex-end}.mc-tab-nav-bar.mc-tab-group_vertical{flex-direction:column;flex-grow:0}\n"], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush, encapsulation: i0__namespace.ViewEncapsulation.None });
1870
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: McTabNav, decorators: [{
1871
+ type: i0.Component,
1872
+ args: [{
1873
+ selector: '[mc-tab-nav-bar]',
1874
+ exportAs: 'mcTabNavBar, mcTabNav',
1875
+ template: '<ng-content></ng-content>',
1876
+ styleUrls: ['tab-nav-bar.scss'],
1877
+ host: {
1878
+ class: 'mc-tab-nav-bar'
1879
+ },
1880
+ encapsulation: i0.ViewEncapsulation.None,
1881
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
1882
+ }]
1883
+ }], ctorParameters: function () {
1884
+ return [{ type: undefined, decorators: [{
1885
+ type: i0.Attribute,
1886
+ args: ['vertical']
1887
+ }] }];
1888
+ }, propDecorators: { links: [{
1889
+ type: i0.ContentChildren,
1890
+ args: [McTabLink]
1891
+ }] } });
1718
1892
 
1719
1893
  var McTabsModule = /** @class */ (function () {
1720
1894
  function McTabsModule() {
1721
1895
  }
1722
1896
  return McTabsModule;
1723
1897
  }());
1724
- McTabsModule.decorators = [
1725
- { type: core.NgModule, args: [{
1726
- imports: [
1727
- common.CommonModule,
1728
- portal.PortalModule,
1729
- a11y.A11yModule,
1730
- core$1.McCommonModule,
1731
- icon.McIconModule,
1732
- tooltip.McToolTipModule
1733
- ],
1734
- // Don't export all components because some are only to be used internally.
1735
- exports: [
1736
- core$1.McCommonModule,
1737
- McTabGroup,
1738
- McTabLabel,
1739
- McTab,
1740
- McTabNav,
1741
- McTabLink,
1742
- McTabContent,
1743
- McOldTabsCssStyler,
1744
- McAlignTabsCenterCssStyler,
1745
- McAlignTabsEndCssStyler,
1746
- McStretchTabsCssStyler,
1747
- McVerticalTabsCssStyler
1748
- ],
1749
- declarations: [
1750
- McTabGroup,
1751
- McTabLabel,
1752
- McTab,
1753
- McTabLabelWrapper,
1754
- McTabNav,
1755
- McTabLink,
1756
- McTabBody,
1757
- McTabBodyPortal,
1758
- McTabHeader,
1759
- McTabContent,
1760
- McOldTabsCssStyler,
1761
- McAlignTabsCenterCssStyler,
1762
- McAlignTabsEndCssStyler,
1763
- McStretchTabsCssStyler,
1764
- McVerticalTabsCssStyler
1765
- ]
1766
- },] }
1767
- ];
1898
+ /** @nocollapse */ McTabsModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: McTabsModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
1899
+ /** @nocollapse */ McTabsModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: McTabsModule, declarations: [McTabGroup,
1900
+ McTabLabel,
1901
+ McTab,
1902
+ McTabLabelWrapper,
1903
+ McTabNav,
1904
+ McTabLink,
1905
+ McTabBody,
1906
+ McTabBodyPortal,
1907
+ McTabHeader,
1908
+ McTabContent,
1909
+ McOldTabsCssStyler,
1910
+ McAlignTabsCenterCssStyler,
1911
+ McAlignTabsEndCssStyler,
1912
+ McStretchTabsCssStyler,
1913
+ McVerticalTabsCssStyler], imports: [i3$1.CommonModule,
1914
+ i7.PortalModule,
1915
+ i1.A11yModule,
1916
+ core.McCommonModule,
1917
+ i4.McIconModule,
1918
+ i6.McToolTipModule], exports: [core.McCommonModule,
1919
+ McTabGroup,
1920
+ McTabLabel,
1921
+ McTab,
1922
+ McTabNav,
1923
+ McTabLink,
1924
+ McTabContent,
1925
+ McOldTabsCssStyler,
1926
+ McAlignTabsCenterCssStyler,
1927
+ McAlignTabsEndCssStyler,
1928
+ McStretchTabsCssStyler,
1929
+ McVerticalTabsCssStyler] });
1930
+ /** @nocollapse */ McTabsModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: McTabsModule, imports: [[
1931
+ i3$1.CommonModule,
1932
+ i7.PortalModule,
1933
+ i1.A11yModule,
1934
+ core.McCommonModule,
1935
+ i4.McIconModule,
1936
+ i6.McToolTipModule
1937
+ ], core.McCommonModule] });
1938
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: McTabsModule, decorators: [{
1939
+ type: i0.NgModule,
1940
+ args: [{
1941
+ imports: [
1942
+ i3$1.CommonModule,
1943
+ i7.PortalModule,
1944
+ i1.A11yModule,
1945
+ core.McCommonModule,
1946
+ i4.McIconModule,
1947
+ i6.McToolTipModule
1948
+ ],
1949
+ // Don't export all components because some are only to be used internally.
1950
+ exports: [
1951
+ core.McCommonModule,
1952
+ McTabGroup,
1953
+ McTabLabel,
1954
+ McTab,
1955
+ McTabNav,
1956
+ McTabLink,
1957
+ McTabContent,
1958
+ McOldTabsCssStyler,
1959
+ McAlignTabsCenterCssStyler,
1960
+ McAlignTabsEndCssStyler,
1961
+ McStretchTabsCssStyler,
1962
+ McVerticalTabsCssStyler
1963
+ ],
1964
+ declarations: [
1965
+ McTabGroup,
1966
+ McTabLabel,
1967
+ McTab,
1968
+ McTabLabelWrapper,
1969
+ McTabNav,
1970
+ McTabLink,
1971
+ McTabBody,
1972
+ McTabBodyPortal,
1973
+ McTabHeader,
1974
+ McTabContent,
1975
+ McOldTabsCssStyler,
1976
+ McAlignTabsCenterCssStyler,
1977
+ McAlignTabsEndCssStyler,
1978
+ McStretchTabsCssStyler,
1979
+ McVerticalTabsCssStyler
1980
+ ]
1981
+ }]
1982
+ }] });
1768
1983
 
1769
1984
  /**
1770
1985
  * Generated bundle index. Do not edit.
@@ -1791,16 +2006,8 @@
1791
2006
  exports.McTabsModule = McTabsModule;
1792
2007
  exports.McVerticalTabsCssStyler = McVerticalTabsCssStyler;
1793
2008
  exports.mcTabsAnimations = mcTabsAnimations;
1794
- exports.ɵa = McTabLabelWrapperBase;
1795
- exports.ɵb = McTabLabelWrapperMixinBase;
1796
- exports.ɵc = McTabBase;
1797
- exports.ɵd = McTabMixinBase;
1798
- exports.ɵe = MC_TAB_LABEL;
1799
- exports.ɵf = McTabLinkBase;
1800
- exports.ɵg = McTabLinkMixinBase;
1801
- exports.ɵh = McPaginatedTabHeader;
1802
2009
 
1803
2010
  Object.defineProperty(exports, '__esModule', { value: true });
1804
2011
 
1805
- })));
2012
+ }));
1806
2013
  //# sourceMappingURL=ptsecurity-mosaic-tabs.umd.js.map