@testgorilla/tgo-ui 11.22.3 → 12.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (225) hide show
  1. package/fesm2022/testgorilla-tgo-ui-components-accordion.mjs +335 -229
  2. package/fesm2022/testgorilla-tgo-ui-components-accordion.mjs.map +1 -1
  3. package/fesm2022/testgorilla-tgo-ui-components-ai-audio-circle.mjs +547 -465
  4. package/fesm2022/testgorilla-tgo-ui-components-ai-audio-circle.mjs.map +1 -1
  5. package/fesm2022/testgorilla-tgo-ui-components-ai-caveat.mjs +160 -75
  6. package/fesm2022/testgorilla-tgo-ui-components-ai-caveat.mjs.map +1 -1
  7. package/fesm2022/testgorilla-tgo-ui-components-ai-feedback.mjs +678 -278
  8. package/fesm2022/testgorilla-tgo-ui-components-ai-feedback.mjs.map +1 -1
  9. package/fesm2022/testgorilla-tgo-ui-components-alert-banner.mjs +337 -274
  10. package/fesm2022/testgorilla-tgo-ui-components-alert-banner.mjs.map +1 -1
  11. package/fesm2022/testgorilla-tgo-ui-components-audio-waveform.mjs +351 -192
  12. package/fesm2022/testgorilla-tgo-ui-components-audio-waveform.mjs.map +1 -1
  13. package/fesm2022/testgorilla-tgo-ui-components-autocomplete-v2.mjs +1950 -960
  14. package/fesm2022/testgorilla-tgo-ui-components-autocomplete-v2.mjs.map +1 -1
  15. package/fesm2022/testgorilla-tgo-ui-components-autocomplete.mjs +1206 -1044
  16. package/fesm2022/testgorilla-tgo-ui-components-autocomplete.mjs.map +1 -1
  17. package/fesm2022/testgorilla-tgo-ui-components-avatar.mjs +328 -182
  18. package/fesm2022/testgorilla-tgo-ui-components-avatar.mjs.map +1 -1
  19. package/fesm2022/testgorilla-tgo-ui-components-badge.mjs +383 -203
  20. package/fesm2022/testgorilla-tgo-ui-components-badge.mjs.map +1 -1
  21. package/fesm2022/testgorilla-tgo-ui-components-breadcrumb.mjs +553 -261
  22. package/fesm2022/testgorilla-tgo-ui-components-breadcrumb.mjs.map +1 -1
  23. package/fesm2022/testgorilla-tgo-ui-components-button.mjs +709 -739
  24. package/fesm2022/testgorilla-tgo-ui-components-button.mjs.map +1 -1
  25. package/fesm2022/testgorilla-tgo-ui-components-card.mjs +219 -184
  26. package/fesm2022/testgorilla-tgo-ui-components-card.mjs.map +1 -1
  27. package/fesm2022/testgorilla-tgo-ui-components-checkbox.mjs +515 -458
  28. package/fesm2022/testgorilla-tgo-ui-components-checkbox.mjs.map +1 -1
  29. package/fesm2022/testgorilla-tgo-ui-components-checklist.mjs +423 -162
  30. package/fesm2022/testgorilla-tgo-ui-components-checklist.mjs.map +1 -1
  31. package/fesm2022/testgorilla-tgo-ui-components-core.mjs +10784 -10996
  32. package/fesm2022/testgorilla-tgo-ui-components-core.mjs.map +1 -1
  33. package/fesm2022/testgorilla-tgo-ui-components-datepicker.mjs +810 -533
  34. package/fesm2022/testgorilla-tgo-ui-components-datepicker.mjs.map +1 -1
  35. package/fesm2022/testgorilla-tgo-ui-components-device-control.mjs +473 -116
  36. package/fesm2022/testgorilla-tgo-ui-components-device-control.mjs.map +1 -1
  37. package/fesm2022/testgorilla-tgo-ui-components-dialog.mjs +1149 -540
  38. package/fesm2022/testgorilla-tgo-ui-components-dialog.mjs.map +1 -1
  39. package/fesm2022/testgorilla-tgo-ui-components-divider.mjs +148 -84
  40. package/fesm2022/testgorilla-tgo-ui-components-divider.mjs.map +1 -1
  41. package/fesm2022/testgorilla-tgo-ui-components-donut-chart.mjs +239 -142
  42. package/fesm2022/testgorilla-tgo-ui-components-donut-chart.mjs.map +1 -1
  43. package/fesm2022/testgorilla-tgo-ui-components-dropdown.mjs +599 -467
  44. package/fesm2022/testgorilla-tgo-ui-components-dropdown.mjs.map +1 -1
  45. package/fesm2022/testgorilla-tgo-ui-components-elevation-shadow.mjs +126 -70
  46. package/fesm2022/testgorilla-tgo-ui-components-elevation-shadow.mjs.map +1 -1
  47. package/fesm2022/testgorilla-tgo-ui-components-empty-state.mjs +324 -329
  48. package/fesm2022/testgorilla-tgo-ui-components-empty-state.mjs.map +1 -1
  49. package/fesm2022/testgorilla-tgo-ui-components-field.mjs +969 -648
  50. package/fesm2022/testgorilla-tgo-ui-components-field.mjs.map +1 -1
  51. package/fesm2022/testgorilla-tgo-ui-components-file-upload.mjs +553 -419
  52. package/fesm2022/testgorilla-tgo-ui-components-file-upload.mjs.map +1 -1
  53. package/fesm2022/testgorilla-tgo-ui-components-filter-button.mjs +847 -452
  54. package/fesm2022/testgorilla-tgo-ui-components-filter-button.mjs.map +1 -1
  55. package/fesm2022/testgorilla-tgo-ui-components-gaussian-chart.mjs +398 -302
  56. package/fesm2022/testgorilla-tgo-ui-components-gaussian-chart.mjs.map +1 -1
  57. package/fesm2022/testgorilla-tgo-ui-components-icon-label.mjs +162 -95
  58. package/fesm2022/testgorilla-tgo-ui-components-icon-label.mjs.map +1 -1
  59. package/fesm2022/testgorilla-tgo-ui-components-icon.mjs +1825 -1795
  60. package/fesm2022/testgorilla-tgo-ui-components-icon.mjs.map +1 -1
  61. package/fesm2022/testgorilla-tgo-ui-components-infinite-scroll-table.mjs +1018 -672
  62. package/fesm2022/testgorilla-tgo-ui-components-infinite-scroll-table.mjs.map +1 -1
  63. package/fesm2022/testgorilla-tgo-ui-components-inline-field.mjs +758 -368
  64. package/fesm2022/testgorilla-tgo-ui-components-inline-field.mjs.map +1 -1
  65. package/fesm2022/testgorilla-tgo-ui-components-logo.mjs +204 -212
  66. package/fesm2022/testgorilla-tgo-ui-components-logo.mjs.map +1 -1
  67. package/fesm2022/testgorilla-tgo-ui-components-media-card.mjs +183 -48
  68. package/fesm2022/testgorilla-tgo-ui-components-media-card.mjs.map +1 -1
  69. package/fesm2022/testgorilla-tgo-ui-components-media-dialog.mjs +243 -79
  70. package/fesm2022/testgorilla-tgo-ui-components-media-dialog.mjs.map +1 -1
  71. package/fesm2022/testgorilla-tgo-ui-components-multi-input.mjs +751 -361
  72. package/fesm2022/testgorilla-tgo-ui-components-multi-input.mjs.map +1 -1
  73. package/fesm2022/testgorilla-tgo-ui-components-navbar.mjs +1122 -385
  74. package/fesm2022/testgorilla-tgo-ui-components-navbar.mjs.map +1 -1
  75. package/fesm2022/testgorilla-tgo-ui-components-overflow-menu.mjs +689 -413
  76. package/fesm2022/testgorilla-tgo-ui-components-overflow-menu.mjs.map +1 -1
  77. package/fesm2022/testgorilla-tgo-ui-components-page-header.mjs +227 -92
  78. package/fesm2022/testgorilla-tgo-ui-components-page-header.mjs.map +1 -1
  79. package/fesm2022/testgorilla-tgo-ui-components-paginator.mjs +174 -113
  80. package/fesm2022/testgorilla-tgo-ui-components-paginator.mjs.map +1 -1
  81. package/fesm2022/testgorilla-tgo-ui-components-password-criteria.mjs +367 -165
  82. package/fesm2022/testgorilla-tgo-ui-components-password-criteria.mjs.map +1 -1
  83. package/fesm2022/testgorilla-tgo-ui-components-password-strength.mjs +253 -118
  84. package/fesm2022/testgorilla-tgo-ui-components-password-strength.mjs.map +1 -1
  85. package/fesm2022/testgorilla-tgo-ui-components-phone-input.mjs +730 -444
  86. package/fesm2022/testgorilla-tgo-ui-components-phone-input.mjs.map +1 -1
  87. package/fesm2022/testgorilla-tgo-ui-components-popover.mjs +533 -221
  88. package/fesm2022/testgorilla-tgo-ui-components-popover.mjs.map +1 -1
  89. package/fesm2022/testgorilla-tgo-ui-components-popup-tip.mjs +274 -76
  90. package/fesm2022/testgorilla-tgo-ui-components-popup-tip.mjs.map +1 -1
  91. package/fesm2022/testgorilla-tgo-ui-components-progress-bar.mjs +184 -124
  92. package/fesm2022/testgorilla-tgo-ui-components-progress-bar.mjs.map +1 -1
  93. package/fesm2022/testgorilla-tgo-ui-components-prompt.mjs +1223 -574
  94. package/fesm2022/testgorilla-tgo-ui-components-prompt.mjs.map +1 -1
  95. package/fesm2022/testgorilla-tgo-ui-components-radial-progress.mjs +249 -160
  96. package/fesm2022/testgorilla-tgo-ui-components-radial-progress.mjs.map +1 -1
  97. package/fesm2022/testgorilla-tgo-ui-components-radio-button.mjs +447 -439
  98. package/fesm2022/testgorilla-tgo-ui-components-radio-button.mjs.map +1 -1
  99. package/fesm2022/testgorilla-tgo-ui-components-rating.mjs +226 -150
  100. package/fesm2022/testgorilla-tgo-ui-components-rating.mjs.map +1 -1
  101. package/fesm2022/testgorilla-tgo-ui-components-scale-table.mjs +255 -67
  102. package/fesm2022/testgorilla-tgo-ui-components-scale-table.mjs.map +1 -1
  103. package/fesm2022/testgorilla-tgo-ui-components-scale.mjs +205 -162
  104. package/fesm2022/testgorilla-tgo-ui-components-scale.mjs.map +1 -1
  105. package/fesm2022/testgorilla-tgo-ui-components-segmented-bar.mjs +245 -153
  106. package/fesm2022/testgorilla-tgo-ui-components-segmented-bar.mjs.map +1 -1
  107. package/fesm2022/testgorilla-tgo-ui-components-segmented-button.mjs +274 -140
  108. package/fesm2022/testgorilla-tgo-ui-components-segmented-button.mjs.map +1 -1
  109. package/fesm2022/testgorilla-tgo-ui-components-segmented-toggle.mjs +319 -147
  110. package/fesm2022/testgorilla-tgo-ui-components-segmented-toggle.mjs.map +1 -1
  111. package/fesm2022/testgorilla-tgo-ui-components-selectable-card.mjs +286 -84
  112. package/fesm2022/testgorilla-tgo-ui-components-selectable-card.mjs.map +1 -1
  113. package/fesm2022/testgorilla-tgo-ui-components-side-navigation.mjs +660 -208
  114. package/fesm2022/testgorilla-tgo-ui-components-side-navigation.mjs.map +1 -1
  115. package/fesm2022/testgorilla-tgo-ui-components-side-panel.mjs +579 -320
  116. package/fesm2022/testgorilla-tgo-ui-components-side-panel.mjs.map +1 -1
  117. package/fesm2022/testgorilla-tgo-ui-components-side-sheet.mjs +419 -200
  118. package/fesm2022/testgorilla-tgo-ui-components-side-sheet.mjs.map +1 -1
  119. package/fesm2022/testgorilla-tgo-ui-components-skeleton.mjs +132 -80
  120. package/fesm2022/testgorilla-tgo-ui-components-skeleton.mjs.map +1 -1
  121. package/fesm2022/testgorilla-tgo-ui-components-slider.mjs +741 -390
  122. package/fesm2022/testgorilla-tgo-ui-components-slider.mjs.map +1 -1
  123. package/fesm2022/testgorilla-tgo-ui-components-snackbar.mjs +455 -329
  124. package/fesm2022/testgorilla-tgo-ui-components-snackbar.mjs.map +1 -1
  125. package/fesm2022/testgorilla-tgo-ui-components-spider-chart.mjs +543 -514
  126. package/fesm2022/testgorilla-tgo-ui-components-spider-chart.mjs.map +1 -1
  127. package/fesm2022/testgorilla-tgo-ui-components-spinner.mjs +193 -104
  128. package/fesm2022/testgorilla-tgo-ui-components-spinner.mjs.map +1 -1
  129. package/fesm2022/testgorilla-tgo-ui-components-stepper.mjs +760 -524
  130. package/fesm2022/testgorilla-tgo-ui-components-stepper.mjs.map +1 -1
  131. package/fesm2022/testgorilla-tgo-ui-components-table.mjs +714 -415
  132. package/fesm2022/testgorilla-tgo-ui-components-table.mjs.map +1 -1
  133. package/fesm2022/testgorilla-tgo-ui-components-tabs.mjs +847 -438
  134. package/fesm2022/testgorilla-tgo-ui-components-tabs.mjs.map +1 -1
  135. package/fesm2022/testgorilla-tgo-ui-components-tag.mjs +535 -275
  136. package/fesm2022/testgorilla-tgo-ui-components-tag.mjs.map +1 -1
  137. package/fesm2022/testgorilla-tgo-ui-components-toggle.mjs +316 -246
  138. package/fesm2022/testgorilla-tgo-ui-components-toggle.mjs.map +1 -1
  139. package/fesm2022/testgorilla-tgo-ui-components-tooltip.mjs +404 -284
  140. package/fesm2022/testgorilla-tgo-ui-components-tooltip.mjs.map +1 -1
  141. package/fesm2022/testgorilla-tgo-ui-components-universal-skills.mjs +664 -383
  142. package/fesm2022/testgorilla-tgo-ui-components-universal-skills.mjs.map +1 -1
  143. package/fesm2022/testgorilla-tgo-ui-components-validation-error.mjs +201 -112
  144. package/fesm2022/testgorilla-tgo-ui-components-validation-error.mjs.map +1 -1
  145. package/fesm2022/testgorilla-tgo-ui-components-write-with-ai.mjs +1014 -458
  146. package/fesm2022/testgorilla-tgo-ui-components-write-with-ai.mjs.map +1 -1
  147. package/fesm2022/testgorilla-tgo-ui.mjs +147 -155
  148. package/fesm2022/testgorilla-tgo-ui.mjs.map +1 -1
  149. package/mcp/catalog.json +1 -1
  150. package/package.json +16 -17
  151. package/projects/tgo-canopy-ui/theme/_palette.scss +23 -18
  152. package/types/testgorilla-tgo-ui-components-accordion.d.ts +214 -158
  153. package/types/testgorilla-tgo-ui-components-ai-audio-circle.d.ts +93 -69
  154. package/types/testgorilla-tgo-ui-components-ai-caveat.d.ts +37 -34
  155. package/types/testgorilla-tgo-ui-components-ai-feedback.d.ts +126 -86
  156. package/types/testgorilla-tgo-ui-components-alert-banner.d.ts +260 -185
  157. package/types/testgorilla-tgo-ui-components-audio-waveform.d.ts +96 -67
  158. package/types/testgorilla-tgo-ui-components-autocomplete-v2.d.ts +455 -256
  159. package/types/testgorilla-tgo-ui-components-autocomplete.d.ts +545 -390
  160. package/types/testgorilla-tgo-ui-components-avatar.d.ts +128 -102
  161. package/types/testgorilla-tgo-ui-components-badge.d.ts +191 -139
  162. package/types/testgorilla-tgo-ui-components-breadcrumb.d.ts +100 -62
  163. package/types/testgorilla-tgo-ui-components-button.d.ts +479 -340
  164. package/types/testgorilla-tgo-ui-components-card.d.ts +153 -114
  165. package/types/testgorilla-tgo-ui-components-checkbox.d.ts +299 -223
  166. package/types/testgorilla-tgo-ui-components-checklist.d.ts +149 -97
  167. package/types/testgorilla-tgo-ui-components-core.d.ts +307 -295
  168. package/types/testgorilla-tgo-ui-components-datepicker.d.ts +404 -299
  169. package/types/testgorilla-tgo-ui-components-device-control.d.ts +151 -81
  170. package/types/testgorilla-tgo-ui-components-dialog.d.ts +442 -329
  171. package/types/testgorilla-tgo-ui-components-divider.d.ts +64 -51
  172. package/types/testgorilla-tgo-ui-components-donut-chart.d.ts +41 -37
  173. package/types/testgorilla-tgo-ui-components-dropdown.d.ts +335 -241
  174. package/types/testgorilla-tgo-ui-components-elevation-shadow.d.ts +48 -43
  175. package/types/testgorilla-tgo-ui-components-empty-state.d.ts +317 -215
  176. package/types/testgorilla-tgo-ui-components-field.d.ts +559 -388
  177. package/types/testgorilla-tgo-ui-components-file-upload.d.ts +230 -168
  178. package/types/testgorilla-tgo-ui-components-filter-button.d.ts +263 -206
  179. package/types/testgorilla-tgo-ui-components-gaussian-chart.d.ts +107 -94
  180. package/types/testgorilla-tgo-ui-components-icon-label.d.ts +84 -61
  181. package/types/testgorilla-tgo-ui-components-icon.d.ts +137 -110
  182. package/types/testgorilla-tgo-ui-components-infinite-scroll-table.d.ts +429 -303
  183. package/types/testgorilla-tgo-ui-components-inline-field.d.ts +338 -254
  184. package/types/testgorilla-tgo-ui-components-logo.d.ts +119 -101
  185. package/types/testgorilla-tgo-ui-components-media-card.d.ts +51 -35
  186. package/types/testgorilla-tgo-ui-components-media-dialog.d.ts +40 -45
  187. package/types/testgorilla-tgo-ui-components-multi-input.d.ts +283 -194
  188. package/types/testgorilla-tgo-ui-components-navbar.d.ts +326 -208
  189. package/types/testgorilla-tgo-ui-components-overflow-menu.d.ts +276 -204
  190. package/types/testgorilla-tgo-ui-components-page-header.d.ts +67 -50
  191. package/types/testgorilla-tgo-ui-components-paginator.d.ts +103 -70
  192. package/types/testgorilla-tgo-ui-components-password-criteria.d.ts +67 -58
  193. package/types/testgorilla-tgo-ui-components-password-strength.d.ts +66 -57
  194. package/types/testgorilla-tgo-ui-components-phone-input.d.ts +217 -175
  195. package/types/testgorilla-tgo-ui-components-popover.d.ts +94 -53
  196. package/types/testgorilla-tgo-ui-components-popup-tip.d.ts +81 -44
  197. package/types/testgorilla-tgo-ui-components-progress-bar.d.ts +115 -84
  198. package/types/testgorilla-tgo-ui-components-prompt.d.ts +315 -219
  199. package/types/testgorilla-tgo-ui-components-radial-progress.d.ts +146 -107
  200. package/types/testgorilla-tgo-ui-components-radio-button.d.ts +296 -219
  201. package/types/testgorilla-tgo-ui-components-rating.d.ts +134 -95
  202. package/types/testgorilla-tgo-ui-components-scale-table.d.ts +67 -47
  203. package/types/testgorilla-tgo-ui-components-scale.d.ts +91 -66
  204. package/types/testgorilla-tgo-ui-components-segmented-bar.d.ts +118 -89
  205. package/types/testgorilla-tgo-ui-components-segmented-button.d.ts +107 -80
  206. package/types/testgorilla-tgo-ui-components-segmented-toggle.d.ts +138 -105
  207. package/types/testgorilla-tgo-ui-components-selectable-card.d.ts +90 -56
  208. package/types/testgorilla-tgo-ui-components-side-navigation.d.ts +183 -107
  209. package/types/testgorilla-tgo-ui-components-side-panel.d.ts +156 -145
  210. package/types/testgorilla-tgo-ui-components-side-sheet.d.ts +98 -89
  211. package/types/testgorilla-tgo-ui-components-skeleton.d.ts +50 -33
  212. package/types/testgorilla-tgo-ui-components-slider.d.ts +278 -198
  213. package/types/testgorilla-tgo-ui-components-snackbar.d.ts +211 -159
  214. package/types/testgorilla-tgo-ui-components-spider-chart.d.ts +140 -121
  215. package/types/testgorilla-tgo-ui-components-spinner.d.ts +93 -72
  216. package/types/testgorilla-tgo-ui-components-stepper.d.ts +480 -338
  217. package/types/testgorilla-tgo-ui-components-table.d.ts +280 -233
  218. package/types/testgorilla-tgo-ui-components-tabs.d.ts +282 -183
  219. package/types/testgorilla-tgo-ui-components-tag.d.ts +266 -193
  220. package/types/testgorilla-tgo-ui-components-toggle.d.ts +180 -132
  221. package/types/testgorilla-tgo-ui-components-tooltip.d.ts +142 -105
  222. package/types/testgorilla-tgo-ui-components-universal-skills.d.ts +165 -144
  223. package/types/testgorilla-tgo-ui-components-validation-error.d.ts +70 -51
  224. package/types/testgorilla-tgo-ui-components-write-with-ai.d.ts +210 -133
  225. package/types/testgorilla-tgo-ui.d.ts +52 -45
@@ -1,441 +1,850 @@
1
- import * as i0 from '@angular/core';
2
- import { input, EventEmitter, signal, effect, untracked, booleanAttribute, ViewChild, Output, Input, HostBinding, Optional, Inject, ChangeDetectionStrategy, Component, inject, TemplateRef, DestroyRef, Directive, NgModule } from '@angular/core';
3
- import { hasModifierKey, SPACE, ENTER } from '@angular/cdk/keycodes';
4
- import { NgClass, NgTemplateOutlet, AsyncPipe, CommonModule } from '@angular/common';
5
- import { MatTabGroup, MatTab, MatTabLabel, MatTabsModule } from '@angular/material/tabs';
6
- import { IS_MOBILE_TOKEN, UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';
7
- import { IconComponent, IconComponentModule } from '@testgorilla/tgo-ui/components/icon';
8
- import { SkeletonComponent } from '@testgorilla/tgo-ui/components/skeleton';
9
- import { SpinnerComponent } from '@testgorilla/tgo-ui/components/spinner';
10
- import * as i1 from 'rxjs';
11
-
1
+ import * as i0 from "@angular/core";
2
+ import { ChangeDetectionStrategy, Component, DestroyRef, Directive, EventEmitter, HostBinding, Inject, Input, NgModule, Optional, Output, TemplateRef, ViewChild, booleanAttribute, effect, inject, input, signal, untracked } from "@angular/core";
3
+ import { ENTER, SPACE, hasModifierKey } from "@angular/cdk/keycodes";
4
+ import { AsyncPipe, CommonModule, NgClass, NgTemplateOutlet } from "@angular/common";
5
+ import { MatTab, MatTabGroup, MatTabLabel, MatTabsModule } from "@angular/material/tabs";
6
+ import { IS_MOBILE_TOKEN, UiTranslatePipe } from "@testgorilla/tgo-ui/components/core";
7
+ import { IconComponent, IconComponentModule } from "@testgorilla/tgo-ui/components/icon";
8
+ import { SkeletonComponent } from "@testgorilla/tgo-ui/components/skeleton";
9
+ import { SpinnerComponent } from "@testgorilla/tgo-ui/components/spinner";
10
+ import * as i1 from "rxjs";
12
11
  const TAB_HEADER_SIZE = {
13
- BIG: 'big',
14
- MEDIUM: 'medium',
15
- SMALL: 'small',
12
+ BIG: "big",
13
+ MEDIUM: "medium",
14
+ SMALL: "small"
16
15
  };
17
-
18
- class TabsComponent {
19
- constructor(defaultAppTheme, isMobile$, cdr) {
20
- this.defaultAppTheme = defaultAppTheme;
21
- this.isMobile$ = isMobile$;
22
- this.cdr = cdr;
23
- /**
24
- * Color of the Tabs.
25
- * Defaults to Test Gorilla primary color.
26
- *
27
- * @type {string}
28
- * @memberof TabsComponent
29
- */
30
- this.companyColor = '#46A997';
31
- /**
32
- * Type the Tabs.
33
- * Defaults underlined.
34
- *
35
- * @type {TabsType}
36
- * @memberof TabsComponent
37
- */
38
- this.type = 'underlined';
39
- /**
40
- * Animation duration when switching tabs
41
- *
42
- * @type {number}
43
- * @memberof TabsComponent
44
- */
45
- this.animationDuration = 300;
46
- /**
47
- * Sets the padding for content and header
48
- *
49
- * @type {number}
50
- * @memberof TabsComponent
51
- */
52
- this.headerContentPadding = '32px';
53
- /**
54
- * Sets the dynamic height of the tab
55
- * @type {boolean}
56
- * @memberof TabsComponent
57
- */
58
- this.dynamicHeight = true;
59
- /**
60
- *
61
- * Defines the application theme
62
- *
63
- * @type {ApplicationTheme}
64
- * @memberof TabsComponent
65
- */
66
- this.applicationTheme = 'light';
67
- this.tabHeaderSize = input(TAB_HEADER_SIZE.BIG, ...(ngDevMode ? [{ debugName: "tabHeaderSize" }] : /* istanbul ignore next */ []));
68
- this.isLoading = input(false, ...(ngDevMode ? [{ debugName: "isLoading" }] : /* istanbul ignore next */ []));
69
- /**
70
- * Name of the tab to show. Applied as tabs register, so a tab requested before the
71
- * projected `ng-template uiTab` children exist — a deep link, a query param — is still
72
- * honoured on first paint, with no need to call `selectTab()` from a lifecycle hook.
73
- *
74
- * This is a request, not live state: it is applied when the value changes and once more as
75
- * soon as the named tab registers, but a later click or a change to the tab list will not
76
- * snap the selection back to it. An unknown name is a no-op — while tabs are still
77
- * registering every name is unknown, so it cannot warn or throw. Bind a name the consumer
78
- * has already validated.
79
- *
80
- * Applying it does not emit `selectedTab` / `selectedTabIndex` (the consumer supplied the
81
- * value, so echoing it back would double-handle it) and does not consult the current tab's
82
- * `canLeave` — declarative selection is the consumer's own decision, so it owns any
83
- * guarding around the value it binds. User-driven switches still honour `canLeave`.
84
- */
85
- this.selectedTabName = input(null, ...(ngDevMode ? [{ debugName: "selectedTabName" }] : /* istanbul ignore next */ []));
86
- this.testId = input(null, ...(ngDevMode ? [{ debugName: "testId" }] : /* istanbul ignore next */ []));
87
- this.selectedTabIndex = new EventEmitter();
88
- this.selectedTab = new EventEmitter();
89
- this.tabs = [];
90
- this.tabIndex = signal(0, ...(ngDevMode ? [{ debugName: "tabIndex" }] : /* istanbul ignore next */ []));
91
- this.tabIndexMap = {};
92
- // Counter for default ordering when order is not specified
93
- this.insertionCounter = 0;
94
- this.tabTransitionInProgress = false;
95
- this.requestedTabName = null;
96
- if (defaultAppTheme) {
97
- this.applicationTheme = defaultAppTheme;
98
- }
99
- effect(() => {
100
- const requestedTabName = this.selectedTabName();
101
- // Untracked because applying reads `tabIndex`: tracking it would re-run this effect on
102
- // every selection change and re-arm the request, snapping the user back to the bound tab.
103
- untracked(() => {
104
- this.requestedTabName = requestedTabName;
105
- this.applyRequestedTabName();
106
- });
107
- });
108
- }
109
- ngAfterViewInit() {
110
- setTimeout(() => {
111
- /* eslint-disable no-underscore-dangle -- overriding MatTabGroup internals (_tabHeader/_handleKeydown/_keyManager/_handleClick) to gate tab transitions */
112
- const group = this.tabGroup;
113
- const tabHeader = group._tabHeader;
114
- tabHeader._handleKeydown = async (event) => {
115
- if (hasModifierKey(event) || this.tabTransitionInProgress) {
116
- return;
117
- }
118
- // eslint-disable-next-line @typescript-eslint/no-deprecated -- KeyboardEvent.keyCode is deprecated in favor of .key; migrating this keyboard-nav handler is behaviour-sensitive and out of scope for this lint pass
119
- switch (event.keyCode) {
120
- case ENTER:
121
- case SPACE:
122
- this.tabTransitionInProgress = true;
123
- try {
124
- const tabLabel = event.target.innerText;
125
- const currentTab = this.tabs[this.tabIndex()];
126
- const nextTab = this.tabs.find(tab => tab.tabLabel === tabLabel);
127
- if (!nextTab) {
128
- return;
129
- }
130
- const canLeave = (await currentTab.canLeave?.({ currentTab, nextTab })) ?? true;
131
- if (currentTab.tabName !== nextTab.tabName && canLeave) {
132
- const nextTabIndex = this.tabIndexMap[nextTab.tabName];
133
- this.tabIndex.set(nextTabIndex);
134
- this.selectedTabIndex.emit(nextTabIndex);
135
- this.selectedTab.emit(nextTab);
136
- }
137
- }
138
- finally {
139
- this.tabTransitionInProgress = false;
140
- }
141
- break;
142
- default:
143
- tabHeader._keyManager.onKeydown(event);
144
- }
145
- };
146
- group._handleClick = async (tab, _tabHeader, index) => {
147
- if (tab.disabled || index === this.tabIndex() || this.tabTransitionInProgress) {
148
- return;
149
- }
150
- this.tabTransitionInProgress = true;
151
- try {
152
- const currentTab = this.tabs[this.tabIndex()];
153
- const nextTab = this.tabs[index];
154
- const canLeave = (await currentTab.canLeave?.({ currentTab, nextTab })) ?? true;
155
- if (this.tabIndex() !== index && canLeave) {
156
- this.tabIndex.set(index);
157
- this.selectedTabIndex.emit(index);
158
- this.selectedTab.emit(nextTab);
159
- }
160
- }
161
- finally {
162
- this.tabTransitionInProgress = false;
163
- }
164
- };
165
- /* eslint-enable no-underscore-dangle */
166
- });
167
- }
168
- addTab(tab) {
169
- // If no explicit order is provided, use the insertion counter
170
- tab.order ??= this.insertionCounter++;
171
- const activeTabName = this.activeTabName;
172
- // Add the tab and sort the tabs array
173
- this.tabs.push(tab);
174
- this.sortTabs();
175
- // Tabs register from projected children; the looped array mutates outside
176
- // this component's own change detection.
177
- this.cdr.markForCheck();
178
- // Update the index map
179
- this.updateTabIndexMap();
180
- this.reconcileTabIndex(activeTabName);
181
- this.applyRequestedTabName();
182
- }
183
- sortTabs() {
184
- // Sort by the order property (lowest first)
185
- this.tabs.sort((a, b) => {
186
- const orderA = a.order ?? Infinity;
187
- const orderB = b.order ?? Infinity;
188
- return orderA - orderB;
189
- });
190
- }
191
- updateTabIndexMap() {
192
- // Update the index map after sorting
193
- this.tabs.forEach((tab, index) => {
194
- this.tabIndexMap[tab.tabName] = index;
195
- });
196
- }
197
- get activeTabName() {
198
- return this.tabs[this.tabIndex()]?.tabName;
199
- }
200
- /**
201
- * `tabIndex` stores a position, but the selection it stands for is a tab identity, and
202
- * adding, removing or re-ordering tabs shifts positions. Without re-resolving the index
203
- * from the name, `tabIndex` keeps pointing at whatever tab now sits at that position —
204
- * MatTabGroup re-derives its own selection from the active tab, so the body stays correct
205
- * while this component's `aria-selected` and click gating silently drift onto a different
206
- * tab. Falls back to clamping when the active tab is the one that went away.
207
- */
208
- reconcileTabIndex(activeTabName) {
209
- const resolvedIndex = activeTabName === undefined ? undefined : this.tabIndexMap[activeTabName];
210
- const nextIndex = resolvedIndex ?? Math.min(this.tabIndex(), Math.max(this.tabs.length - 1, 0));
211
- if (nextIndex !== this.tabIndex()) {
212
- this.tabIndex.set(nextIndex);
213
- }
214
- }
215
- /**
216
- * Applies `selectedTabName` once the named tab is known, then clears the request so later
217
- * clicks and tab list changes are not overridden by a stale value. Stays armed while the
218
- * name is unresolved, because a requested tab can register after the input is set — either
219
- * with the rest of a subtree that renders late, or later still if it is behind its own
220
- * condition — so `addTab()` retries until it resolves.
221
- *
222
- * Silent by design — see the doc on `selectedTabName`.
223
- */
224
- applyRequestedTabName() {
225
- if (this.requestedTabName === null) {
226
- return;
227
- }
228
- const index = this.tabIndexMap[this.requestedTabName];
229
- if (index === undefined) {
230
- return;
231
- }
232
- this.requestedTabName = null;
233
- if (index !== this.tabIndex()) {
234
- this.tabIndex.set(index);
235
- }
236
- }
237
- onTabChange(index) {
238
- const selectedTab = this.tabs[index];
239
- const newIndex = this.tabIndexMap[selectedTab.tabName];
240
- if (this.tabIndex() === newIndex) {
241
- return;
242
- }
243
- this.tabIndex.set(newIndex);
244
- this.selectedTabIndex.emit(index);
245
- this.selectedTab.emit(selectedTab);
246
- }
247
- selectTab(tabName) {
248
- const index = this.tabIndexMap[tabName];
249
- if (index !== undefined) {
250
- this.tabIndex.set(index);
251
- this.selectedTabIndex.emit(index);
252
- this.selectedTab.emit(this.tabs[index]);
253
- }
254
- }
255
- indexOf(tabName) {
256
- return this.tabIndexMap[tabName] ?? -1;
257
- }
258
- trackByTabName(index, tab) {
259
- return tab.tabName;
260
- }
261
- removeTab(tabName) {
262
- const index = this.tabIndexMap[tabName];
263
- if (index !== undefined) {
264
- const activeTabName = this.activeTabName;
265
- this.tabs.splice(index, 1);
266
- delete this.tabIndexMap[tabName];
267
- this.updateTabIndexMap();
268
- this.reconcileTabIndex(activeTabName);
269
- this.cdr.markForCheck();
270
- }
271
- }
272
- updateTab(tabName, tab) {
273
- const index = this.tabIndexMap[tabName];
274
- if (index !== undefined) {
275
- this.tabs[index] = { ...this.tabs[index], ...tab };
276
- // Re-sort if the order changed
277
- if (tab.order !== undefined) {
278
- const activeTabName = this.activeTabName;
279
- this.sortTabs();
280
- this.updateTabIndexMap();
281
- this.reconcileTabIndex(activeTabName);
282
- }
283
- // Driven by TabDirective effects (projected content) — outside this
284
- // component's own change detection, like addTab/removeTab.
285
- this.cdr.markForCheck();
286
- }
287
- }
288
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: TabsComponent, deps: [{ token: 'CANOPYUI_DEFAULT_APPLICATION_THEME', optional: true }, { token: IS_MOBILE_TOKEN }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
289
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.25", type: TabsComponent, isStandalone: true, selector: "ui-tabs", inputs: { companyColor: { classPropertyName: "companyColor", publicName: "companyColor", isSignal: false, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: false, isRequired: false, transformFunction: null }, animationDuration: { classPropertyName: "animationDuration", publicName: "animationDuration", isSignal: false, isRequired: false, transformFunction: null }, headerContentPadding: { classPropertyName: "headerContentPadding", publicName: "headerContentPadding", isSignal: false, isRequired: false, transformFunction: (value) => `${value}px` }, dynamicHeight: { classPropertyName: "dynamicHeight", publicName: "dynamicHeight", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, applicationTheme: { classPropertyName: "applicationTheme", publicName: "applicationTheme", isSignal: false, isRequired: false, transformFunction: null }, tabHeaderSize: { classPropertyName: "tabHeaderSize", publicName: "tabHeaderSize", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, selectedTabName: { classPropertyName: "selectedTabName", publicName: "selectedTabName", isSignal: true, isRequired: false, transformFunction: null }, testId: { classPropertyName: "testId", publicName: "testId", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedTabIndex: "selectedTabIndex", selectedTab: "selectedTab" }, host: { properties: { "style.--color": "this.companyColor", "style.--header-content-padding": "this.headerContentPadding" } }, viewQueries: [{ propertyName: "tabGroup", first: true, predicate: ["tabGroup"], descendants: true, static: true }], ngImport: i0, template: "<mat-tab-group\n #tabGroup\n headerPosition=\"above\"\n class=\"tabs-container\"\n [ngClass]=\"['tabs-type-' + ((isMobile$ | async) ? 'underlined' : type), 'tabs-header-size-' + tabHeaderSize()]\"\n [class.tabs-container-loading]=\"isLoading()\"\n [attr.theme]=\"applicationTheme\"\n [dynamicHeight]=\"dynamicHeight\"\n [selectedIndex]=\"tabIndex()\"\n [animationDuration]=\"animationDuration\"\n (selectedIndexChange)=\"onTabChange($event)\"\n role=\"tablist\"\n [attr.data-testid]=\"testId()\"\n>\n @for (tab of tabs; track trackByTabName(i, tab); let i = $index) {\n <mat-tab [disabled]=\"tab.disabled ?? false\" [attr.aria-label]=\"tab?.ariaLabel\">\n <ng-template mat-tab-label>\n <a\n data-test-role=\"tab-link\"\n [attr.data-testid]=\"tab.testId ?? tab.tabName\"\n class=\"tab-name\"\n [href]=\"tab?.linkUrl ? tab.linkUrl : '#'\"\n (click)=\"$event.preventDefault()\"\n [attr.aria-selected]=\"i === tabIndex()\"\n [attr.aria-label]=\"\n tab.tabLabel +\n (tab.isLabelLoading ? ', ' + ('COMMON.LOADING' | uiTranslate | async) : '') +\n (i === tabIndex() ? ', ' + ('TABS.SELECTED' | uiTranslate | async) : '')\n \"\n role=\"tab\"\n >\n @if (isLoading()) {\n <ui-skeleton\n [count]=\"1\"\n [theme]=\"tab.skeletonTheme ?? {}\"\n [isAiTheme]=\"!!tab.isSkeletonAiTheme\"\n ></ui-skeleton>\n } @else {\n @if (tab?.iconLeft) {\n <ui-icon\n color=\"rebrand-black\"\n [size]=\"'24'\"\n [tabindex]=\"1\"\n class=\"left-icon\"\n [name]=\"tab.iconLeft!\"\n ></ui-icon>\n }\n <span class=\"label\">{{ tab.tabLabel }}</span>\n @if (tab.isLabelLoading) {\n <span class=\"label-spinner\" aria-hidden=\"true\">\n <ui-spinner size=\"small\" [isLoader]=\"false\" [applicationTheme]=\"applicationTheme\"></ui-spinner>\n </span>\n }\n @if (tab?.iconRight) {\n <ui-icon color=\"rebrand-black\" [size]=\"'24'\" class=\"right-icon\" [name]=\"tab.iconRight!\"></ui-icon>\n }\n }\n </a>\n </ng-template>\n <div role=\"tabpanel\" [attr.id]=\"'tabpanel-' + i\" [attr.aria-labelledby]=\"'tab-' + i\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplateRef\"></ng-container>\n </div>\n </mat-tab>\n }\n</mat-tab-group>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}:host ::ng-deep .mat-mdc-tab-group,:host .mat-mdc-tab-nav-bar{--mdc-tab-indicator-active-indicator-color: var(--color);--mat-tab-header-active-label-text-color: var(--color);--mat-tab-header-active-ripple-color: transparent;--mat-tab-header-inactive-ripple-color: var(--color);--mat-tab-header-active-focus-label-text-color: var(--color);--mat-tab-header-active-focus-indicator-color: var(--color)}:host ::ng-deep .tabs-type-filled mat-tab-header{border-bottom:unset!important;border-right:1px solid #d3d3d3}:host ::ng-deep mat-tab-group{width:100%;height:100%}:host ::ng-deep mat-tab-group .mdc-tab.cdk-keyboard-focused{position:relative}:host ::ng-deep mat-tab-group .mdc-tab.cdk-keyboard-focused:after{content:\"\";position:absolute;inset:-2px;z-index:10;border-radius:4px;outline:2px solid #242424;animation:focus-ring-animation-main .4s forwards}::ng-deep .tabs-container .mdc-tab-indicator__content{border-color:#276678!important}::ng-deep .tabs-container .tab-name{text-decoration:none!important;display:flex;justify-content:center;align-content:center;color:#242424;outline:unset;font-size:16px;line-height:24px;width:100%}::ng-deep .tabs-container .tab-name .left-icon{margin-right:8px}::ng-deep .tabs-container .tab-name .right-icon{margin-left:8px}::ng-deep .tabs-container .tab-name .label-spinner{display:flex;align-items:center;margin-left:8px}::ng-deep .tabs-container .tab-name .left-icon:focus,::ng-deep .tabs-container .tab-name .right-icon:focus{height:24px;outline:1px dashed #888888}::ng-deep .tabs-container ::ng-deep .mdc-tab{min-width:0;padding:0}::ng-deep .tabs-container ::ng-deep .mdc-tab:hover{background:#f6f6f6}::ng-deep .tabs-container.tabs-type-underlined .tab-name{padding:16px 24px}::ng-deep .tabs-container.tabs-type-underlined .mdc-tab--active .tab-name .label{text-shadow:-.5px 0 #242424,.5px 0 #242424}::ng-deep .tabs-container.tabs-type-underlined ::ng-deep .mat-mdc-tab-header{padding:0 var(--header-content-padding)}::ng-deep .tabs-container.tabs-type-underlined ::ng-deep .mat-mdc-tab-header-pagination-chevron{border-color:#242424}::ng-deep .tabs-container.tabs-type-underlined ::ng-deep .mdc-tab{flex-grow:0!important;margin-left:1px}::ng-deep .tabs-container.tabs-type-underlined.tabs-header-size-big ::ng-deep .mdc-tab{height:64px!important}::ng-deep .tabs-container.tabs-type-underlined.tabs-header-size-small ::ng-deep .mdc-tab{height:32px!important}::ng-deep .tabs-container.tabs-type-underlined.tabs-header-size-medium ::ng-deep .mdc-tab{height:56px!important}::ng-deep .tabs-container.tabs-type-filled .mdc-tab--active{background-color:#e9f0f1!important}::ng-deep .tabs-container.tabs-type-filled .mdc-tab--active .tab-name .label{text-shadow:-.5px 0 black,.5px 0 black}::ng-deep .tabs-container.tabs-type-filled{--mat-tab-header-active-ripple-color: var(--color);display:flex;flex-direction:row}::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mat-mdc-tab-header{padding:var(--header-content-padding) 0}::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mat-mdc-tab-label-container{padding:4px;overflow:auto!important}::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mat-mdc-tab-labels{flex-direction:column;padding-top:2px}::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mdc-tab{flex-grow:0!important}::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mdc-tab__content,::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mdc-tab__text-label{width:100%}::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mdc-tab__text-label{margin:-1px 1px 1px}::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mdc-tab--active ::ng-deep .mdc-tab-indicator:after{content:\"\";position:absolute;left:0;top:8px;width:4px;height:32px;border-radius:0 8px 8px 0;background:#276678}::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mdc-tab-indicator__content{display:none}::ng-deep .tabs-container.tabs-type-filled .tab-name{padding:12px var(--header-content-padding)}::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mdc-tab{position:relative;height:48px!important;min-height:48px!important}::ng-deep .tabs-container ::ng-deep .mat-mdc-tab-body-wrapper{width:100%}::ng-deep .tabs-container ::ng-deep .mat-mdc-tab-body{padding:var(--header-content-padding)}@media(max-width:600px){::ng-deep .tabs-container ::ng-deep .mat-mdc-tab-body{padding:24px}::ng-deep .tabs-container ::ng-deep .mat-mdc-tab-header{position:relative;padding:0!important}::ng-deep .tabs-container ::ng-deep .mat-mdc-tab-header .mat-mdc-tab-header-pagination-disabled{visibility:hidden!important}::ng-deep .tabs-container ::ng-deep .mat-mdc-tab-header:after{content:\"\";position:absolute;bottom:0;left:0;width:100%;height:1px;background:#d3d3d3}::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mat-mdc-tab-header{padding:24px 0}}::ng-deep .mat-mdc-tab-group:not(.tabs-type-filled)[theme=light],::ng-deep .mat-mdc-tab-group:not(.tabs-type-filled)[theme=dark]{--mat-tab-header-inactive-ripple-color: none !important}::ng-deep .mat-mdc-tab-group:not(.tabs-type-filled)[theme=light] .mdc-tab-indicator .mdc-tab-indicator__content.mdc-tab-indicator__content--underline,::ng-deep .mat-mdc-tab-group:not(.tabs-type-filled)[theme=dark] .mdc-tab-indicator .mdc-tab-indicator__content.mdc-tab-indicator__content--underline{border-color:#d410aa!important}::ng-deep .mat-mdc-tab-group:not(.tabs-type-filled)[theme=light] .mdc-tab:hover,::ng-deep .mat-mdc-tab-group:not(.tabs-type-filled)[theme=dark] .mdc-tab:hover{background:none!important;border-bottom:2px solid #242424}::ng-deep .mat-mdc-tab-group:not(.tabs-type-filled)[theme=light] .mdc-tab:hover .mdc-tab-indicator,::ng-deep .mat-mdc-tab-group:not(.tabs-type-filled)[theme=dark] .mdc-tab:hover .mdc-tab-indicator{display:none}::ng-deep .tabs-container-loading .mat-mdc-tab.mat-mdc-tab-disabled{opacity:1}::ng-deep .tabs-container-loading .mat-mdc-tab.mat-mdc-tab-disabled.mdc-tab-indicator--active .mdc-tab-indicator__content{opacity:.4}::ng-deep .mat-mdc-tab-group.tabs-type-filled{--mat-tab-header-active-ripple-color: unset !important}::ng-deep .mat-mdc-tab-group.tabs-type-filled .tab-name{color:#242424}::ng-deep .mat-mdc-tab-group.tabs-type-filled[theme=light],::ng-deep .mat-mdc-tab-group.tabs-type-filled[theme=dark]{--mat-tab-header-inactive-ripple-color: none !important}::ng-deep .mat-mdc-tab-group.tabs-type-filled[theme=light] .mdc-tab-indicator .mdc-tab-indicator__content.mdc-tab-indicator__content--underline,::ng-deep .mat-mdc-tab-group.tabs-type-filled[theme=dark] .mdc-tab-indicator .mdc-tab-indicator__content.mdc-tab-indicator__content--underline{border-color:#d410aa!important}::ng-deep .mat-mdc-tab-group.tabs-type-filled[theme=light] .mdc-tab--active,::ng-deep .mat-mdc-tab-group.tabs-type-filled[theme=dark] .mdc-tab--active{background-color:#f4f4f4!important}::ng-deep .mat-mdc-tab-group.tabs-type-filled[theme=light] .mdc-tab--active .mdc-tab-indicator:after,::ng-deep .mat-mdc-tab-group.tabs-type-filled[theme=dark] .mdc-tab--active .mdc-tab-indicator:after{background-color:#d410aa!important}::ng-deep .mat-mdc-tab-group.tabs-type-filled[theme=light] .mdc-tab:hover,::ng-deep .mat-mdc-tab-group.tabs-type-filled[theme=dark] .mdc-tab:hover{background:#fff2fc!important}\n"], dependencies: [{ kind: "component", type: MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "directive", type: MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: SkeletonComponent, selector: "ui-skeleton", inputs: ["count", "theme", "appearance", "isAiTheme", "applicationTheme"] }, { kind: "component", type: SpinnerComponent, selector: "ui-spinner", inputs: ["size", "isLoader", "text", "applicationTheme", "iconName", "iconSize"] }, { kind: "component", type: IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color", "filled", "toggleIconStyle", "applicationTheme", "useFullIconName"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: UiTranslatePipe, name: "uiTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
290
- }
291
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: TabsComponent, decorators: [{
292
- type: Component,
293
- args: [{ selector: 'ui-tabs', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
294
- MatTabGroup,
295
- NgClass,
296
- MatTab,
297
- MatTabLabel,
298
- SkeletonComponent,
299
- SpinnerComponent,
300
- IconComponent,
301
- NgTemplateOutlet,
302
- AsyncPipe,
303
- UiTranslatePipe,
304
- ], template: "<mat-tab-group\n #tabGroup\n headerPosition=\"above\"\n class=\"tabs-container\"\n [ngClass]=\"['tabs-type-' + ((isMobile$ | async) ? 'underlined' : type), 'tabs-header-size-' + tabHeaderSize()]\"\n [class.tabs-container-loading]=\"isLoading()\"\n [attr.theme]=\"applicationTheme\"\n [dynamicHeight]=\"dynamicHeight\"\n [selectedIndex]=\"tabIndex()\"\n [animationDuration]=\"animationDuration\"\n (selectedIndexChange)=\"onTabChange($event)\"\n role=\"tablist\"\n [attr.data-testid]=\"testId()\"\n>\n @for (tab of tabs; track trackByTabName(i, tab); let i = $index) {\n <mat-tab [disabled]=\"tab.disabled ?? false\" [attr.aria-label]=\"tab?.ariaLabel\">\n <ng-template mat-tab-label>\n <a\n data-test-role=\"tab-link\"\n [attr.data-testid]=\"tab.testId ?? tab.tabName\"\n class=\"tab-name\"\n [href]=\"tab?.linkUrl ? tab.linkUrl : '#'\"\n (click)=\"$event.preventDefault()\"\n [attr.aria-selected]=\"i === tabIndex()\"\n [attr.aria-label]=\"\n tab.tabLabel +\n (tab.isLabelLoading ? ', ' + ('COMMON.LOADING' | uiTranslate | async) : '') +\n (i === tabIndex() ? ', ' + ('TABS.SELECTED' | uiTranslate | async) : '')\n \"\n role=\"tab\"\n >\n @if (isLoading()) {\n <ui-skeleton\n [count]=\"1\"\n [theme]=\"tab.skeletonTheme ?? {}\"\n [isAiTheme]=\"!!tab.isSkeletonAiTheme\"\n ></ui-skeleton>\n } @else {\n @if (tab?.iconLeft) {\n <ui-icon\n color=\"rebrand-black\"\n [size]=\"'24'\"\n [tabindex]=\"1\"\n class=\"left-icon\"\n [name]=\"tab.iconLeft!\"\n ></ui-icon>\n }\n <span class=\"label\">{{ tab.tabLabel }}</span>\n @if (tab.isLabelLoading) {\n <span class=\"label-spinner\" aria-hidden=\"true\">\n <ui-spinner size=\"small\" [isLoader]=\"false\" [applicationTheme]=\"applicationTheme\"></ui-spinner>\n </span>\n }\n @if (tab?.iconRight) {\n <ui-icon color=\"rebrand-black\" [size]=\"'24'\" class=\"right-icon\" [name]=\"tab.iconRight!\"></ui-icon>\n }\n }\n </a>\n </ng-template>\n <div role=\"tabpanel\" [attr.id]=\"'tabpanel-' + i\" [attr.aria-labelledby]=\"'tab-' + i\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplateRef\"></ng-container>\n </div>\n </mat-tab>\n }\n</mat-tab-group>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}:host ::ng-deep .mat-mdc-tab-group,:host .mat-mdc-tab-nav-bar{--mdc-tab-indicator-active-indicator-color: var(--color);--mat-tab-header-active-label-text-color: var(--color);--mat-tab-header-active-ripple-color: transparent;--mat-tab-header-inactive-ripple-color: var(--color);--mat-tab-header-active-focus-label-text-color: var(--color);--mat-tab-header-active-focus-indicator-color: var(--color)}:host ::ng-deep .tabs-type-filled mat-tab-header{border-bottom:unset!important;border-right:1px solid #d3d3d3}:host ::ng-deep mat-tab-group{width:100%;height:100%}:host ::ng-deep mat-tab-group .mdc-tab.cdk-keyboard-focused{position:relative}:host ::ng-deep mat-tab-group .mdc-tab.cdk-keyboard-focused:after{content:\"\";position:absolute;inset:-2px;z-index:10;border-radius:4px;outline:2px solid #242424;animation:focus-ring-animation-main .4s forwards}::ng-deep .tabs-container .mdc-tab-indicator__content{border-color:#276678!important}::ng-deep .tabs-container .tab-name{text-decoration:none!important;display:flex;justify-content:center;align-content:center;color:#242424;outline:unset;font-size:16px;line-height:24px;width:100%}::ng-deep .tabs-container .tab-name .left-icon{margin-right:8px}::ng-deep .tabs-container .tab-name .right-icon{margin-left:8px}::ng-deep .tabs-container .tab-name .label-spinner{display:flex;align-items:center;margin-left:8px}::ng-deep .tabs-container .tab-name .left-icon:focus,::ng-deep .tabs-container .tab-name .right-icon:focus{height:24px;outline:1px dashed #888888}::ng-deep .tabs-container ::ng-deep .mdc-tab{min-width:0;padding:0}::ng-deep .tabs-container ::ng-deep .mdc-tab:hover{background:#f6f6f6}::ng-deep .tabs-container.tabs-type-underlined .tab-name{padding:16px 24px}::ng-deep .tabs-container.tabs-type-underlined .mdc-tab--active .tab-name .label{text-shadow:-.5px 0 #242424,.5px 0 #242424}::ng-deep .tabs-container.tabs-type-underlined ::ng-deep .mat-mdc-tab-header{padding:0 var(--header-content-padding)}::ng-deep .tabs-container.tabs-type-underlined ::ng-deep .mat-mdc-tab-header-pagination-chevron{border-color:#242424}::ng-deep .tabs-container.tabs-type-underlined ::ng-deep .mdc-tab{flex-grow:0!important;margin-left:1px}::ng-deep .tabs-container.tabs-type-underlined.tabs-header-size-big ::ng-deep .mdc-tab{height:64px!important}::ng-deep .tabs-container.tabs-type-underlined.tabs-header-size-small ::ng-deep .mdc-tab{height:32px!important}::ng-deep .tabs-container.tabs-type-underlined.tabs-header-size-medium ::ng-deep .mdc-tab{height:56px!important}::ng-deep .tabs-container.tabs-type-filled .mdc-tab--active{background-color:#e9f0f1!important}::ng-deep .tabs-container.tabs-type-filled .mdc-tab--active .tab-name .label{text-shadow:-.5px 0 black,.5px 0 black}::ng-deep .tabs-container.tabs-type-filled{--mat-tab-header-active-ripple-color: var(--color);display:flex;flex-direction:row}::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mat-mdc-tab-header{padding:var(--header-content-padding) 0}::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mat-mdc-tab-label-container{padding:4px;overflow:auto!important}::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mat-mdc-tab-labels{flex-direction:column;padding-top:2px}::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mdc-tab{flex-grow:0!important}::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mdc-tab__content,::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mdc-tab__text-label{width:100%}::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mdc-tab__text-label{margin:-1px 1px 1px}::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mdc-tab--active ::ng-deep .mdc-tab-indicator:after{content:\"\";position:absolute;left:0;top:8px;width:4px;height:32px;border-radius:0 8px 8px 0;background:#276678}::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mdc-tab-indicator__content{display:none}::ng-deep .tabs-container.tabs-type-filled .tab-name{padding:12px var(--header-content-padding)}::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mdc-tab{position:relative;height:48px!important;min-height:48px!important}::ng-deep .tabs-container ::ng-deep .mat-mdc-tab-body-wrapper{width:100%}::ng-deep .tabs-container ::ng-deep .mat-mdc-tab-body{padding:var(--header-content-padding)}@media(max-width:600px){::ng-deep .tabs-container ::ng-deep .mat-mdc-tab-body{padding:24px}::ng-deep .tabs-container ::ng-deep .mat-mdc-tab-header{position:relative;padding:0!important}::ng-deep .tabs-container ::ng-deep .mat-mdc-tab-header .mat-mdc-tab-header-pagination-disabled{visibility:hidden!important}::ng-deep .tabs-container ::ng-deep .mat-mdc-tab-header:after{content:\"\";position:absolute;bottom:0;left:0;width:100%;height:1px;background:#d3d3d3}::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mat-mdc-tab-header{padding:24px 0}}::ng-deep .mat-mdc-tab-group:not(.tabs-type-filled)[theme=light],::ng-deep .mat-mdc-tab-group:not(.tabs-type-filled)[theme=dark]{--mat-tab-header-inactive-ripple-color: none !important}::ng-deep .mat-mdc-tab-group:not(.tabs-type-filled)[theme=light] .mdc-tab-indicator .mdc-tab-indicator__content.mdc-tab-indicator__content--underline,::ng-deep .mat-mdc-tab-group:not(.tabs-type-filled)[theme=dark] .mdc-tab-indicator .mdc-tab-indicator__content.mdc-tab-indicator__content--underline{border-color:#d410aa!important}::ng-deep .mat-mdc-tab-group:not(.tabs-type-filled)[theme=light] .mdc-tab:hover,::ng-deep .mat-mdc-tab-group:not(.tabs-type-filled)[theme=dark] .mdc-tab:hover{background:none!important;border-bottom:2px solid #242424}::ng-deep .mat-mdc-tab-group:not(.tabs-type-filled)[theme=light] .mdc-tab:hover .mdc-tab-indicator,::ng-deep .mat-mdc-tab-group:not(.tabs-type-filled)[theme=dark] .mdc-tab:hover .mdc-tab-indicator{display:none}::ng-deep .tabs-container-loading .mat-mdc-tab.mat-mdc-tab-disabled{opacity:1}::ng-deep .tabs-container-loading .mat-mdc-tab.mat-mdc-tab-disabled.mdc-tab-indicator--active .mdc-tab-indicator__content{opacity:.4}::ng-deep .mat-mdc-tab-group.tabs-type-filled{--mat-tab-header-active-ripple-color: unset !important}::ng-deep .mat-mdc-tab-group.tabs-type-filled .tab-name{color:#242424}::ng-deep .mat-mdc-tab-group.tabs-type-filled[theme=light],::ng-deep .mat-mdc-tab-group.tabs-type-filled[theme=dark]{--mat-tab-header-inactive-ripple-color: none !important}::ng-deep .mat-mdc-tab-group.tabs-type-filled[theme=light] .mdc-tab-indicator .mdc-tab-indicator__content.mdc-tab-indicator__content--underline,::ng-deep .mat-mdc-tab-group.tabs-type-filled[theme=dark] .mdc-tab-indicator .mdc-tab-indicator__content.mdc-tab-indicator__content--underline{border-color:#d410aa!important}::ng-deep .mat-mdc-tab-group.tabs-type-filled[theme=light] .mdc-tab--active,::ng-deep .mat-mdc-tab-group.tabs-type-filled[theme=dark] .mdc-tab--active{background-color:#f4f4f4!important}::ng-deep .mat-mdc-tab-group.tabs-type-filled[theme=light] .mdc-tab--active .mdc-tab-indicator:after,::ng-deep .mat-mdc-tab-group.tabs-type-filled[theme=dark] .mdc-tab--active .mdc-tab-indicator:after{background-color:#d410aa!important}::ng-deep .mat-mdc-tab-group.tabs-type-filled[theme=light] .mdc-tab:hover,::ng-deep .mat-mdc-tab-group.tabs-type-filled[theme=dark] .mdc-tab:hover{background:#fff2fc!important}\n"] }]
305
- }], ctorParameters: () => [{ type: undefined, decorators: [{
306
- type: Optional
307
- }, {
308
- type: Inject,
309
- args: ['CANOPYUI_DEFAULT_APPLICATION_THEME']
310
- }] }, { type: i1.Observable, decorators: [{
311
- type: Inject,
312
- args: [IS_MOBILE_TOKEN]
313
- }] }, { type: i0.ChangeDetectorRef }], propDecorators: { companyColor: [{
314
- type: HostBinding,
315
- args: ['style.--color']
316
- }, {
317
- type: Input
318
- }], type: [{
319
- type: Input
320
- }], animationDuration: [{
321
- type: Input
322
- }], headerContentPadding: [{
323
- type: HostBinding,
324
- args: ['style.--header-content-padding']
325
- }, {
326
- type: Input,
327
- args: [{ transform: (value) => `${value}px` }]
328
- }], dynamicHeight: [{
329
- type: Input,
330
- args: [{ transform: booleanAttribute }]
331
- }], applicationTheme: [{
332
- type: Input
333
- }], tabHeaderSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabHeaderSize", required: false }] }], isLoading: [{ type: i0.Input, args: [{ isSignal: true, alias: "isLoading", required: false }] }], selectedTabName: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedTabName", required: false }] }], testId: [{ type: i0.Input, args: [{ isSignal: true, alias: "testId", required: false }] }], selectedTabIndex: [{
334
- type: Output
335
- }], selectedTab: [{
336
- type: Output
337
- }], tabGroup: [{
338
- type: ViewChild,
339
- args: ['tabGroup', { static: true }]
340
- }] } });
341
-
342
- class TabDirective {
343
- constructor() {
344
- this.tabLabel = input.required(...(ngDevMode ? [{ debugName: "tabLabel" }] : /* istanbul ignore next */ []));
345
- this.tabName = input.required(...(ngDevMode ? [{ debugName: "tabName" }] : /* istanbul ignore next */ []));
346
- this.iconLeft = input(...(ngDevMode ? [undefined, { debugName: "iconLeft" }] : /* istanbul ignore next */ []));
347
- this.iconRight = input(...(ngDevMode ? [undefined, { debugName: "iconRight" }] : /* istanbul ignore next */ []));
348
- this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
349
- this.canLeave = input(...(ngDevMode ? [undefined, { debugName: "canLeave" }] : /* istanbul ignore next */ []));
350
- this.linkUrl = input(...(ngDevMode ? [undefined, { debugName: "linkUrl" }] : /* istanbul ignore next */ []));
351
- this.order = input(...(ngDevMode ? [undefined, { debugName: "order" }] : /* istanbul ignore next */ []));
352
- this.skeletonTheme = input(...(ngDevMode ? [undefined, { debugName: "skeletonTheme" }] : /* istanbul ignore next */ []));
353
- this.isSkeletonAiTheme = input(...(ngDevMode ? [undefined, { debugName: "isSkeletonAiTheme" }] : /* istanbul ignore next */ []));
354
- this.isLabelLoading = input(false, { ...(ngDevMode ? { debugName: "isLabelLoading" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
355
- this.tabsComponent = inject(TabsComponent);
356
- this.template = inject(TemplateRef);
357
- this.syncProps = effect(() => {
358
- this.tabsComponent.updateTab(this.tabName(), {
359
- tabLabel: this.tabLabel(),
360
- iconLeft: this.iconLeft(),
361
- iconRight: this.iconRight(),
362
- disabled: this.disabled(),
363
- canLeave: this.canLeave(),
364
- linkUrl: this.linkUrl(),
365
- order: this.order(),
366
- skeletonTheme: this.skeletonTheme(),
367
- isSkeletonAiTheme: this.isSkeletonAiTheme(),
368
- isLabelLoading: this.isLabelLoading(),
369
- });
370
- }, ...(ngDevMode ? [{ debugName: "syncProps" }] : /* istanbul ignore next */ []));
371
- this.cleanup = inject(DestroyRef).onDestroy(() => {
372
- this.tabsComponent.removeTab(this.tabName());
373
- });
374
- }
375
- ngOnInit() {
376
- this.addTab();
377
- }
378
- addTab() {
379
- this.tabsComponent.addTab({
380
- tabLabel: this.tabLabel(),
381
- tabName: this.tabName(),
382
- iconLeft: this.iconLeft(),
383
- iconRight: this.iconRight(),
384
- disabled: this.disabled(),
385
- contentTemplateRef: this.template,
386
- canLeave: this.canLeave(),
387
- linkUrl: this.linkUrl(),
388
- order: this.order(),
389
- skeletonTheme: this.skeletonTheme(),
390
- isSkeletonAiTheme: this.isSkeletonAiTheme(),
391
- isLabelLoading: this.isLabelLoading(),
392
- });
393
- }
394
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: TabDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
395
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.25", type: TabDirective, isStandalone: true, selector: "ng-template[uiTab]", inputs: { tabLabel: { classPropertyName: "tabLabel", publicName: "tabLabel", isSignal: true, isRequired: true, transformFunction: null }, tabName: { classPropertyName: "tabName", publicName: "tabName", isSignal: true, isRequired: true, transformFunction: null }, iconLeft: { classPropertyName: "iconLeft", publicName: "iconLeft", isSignal: true, isRequired: false, transformFunction: null }, iconRight: { classPropertyName: "iconRight", publicName: "iconRight", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, canLeave: { classPropertyName: "canLeave", publicName: "canLeave", isSignal: true, isRequired: false, transformFunction: null }, linkUrl: { classPropertyName: "linkUrl", publicName: "linkUrl", isSignal: true, isRequired: false, transformFunction: null }, order: { classPropertyName: "order", publicName: "order", isSignal: true, isRequired: false, transformFunction: null }, skeletonTheme: { classPropertyName: "skeletonTheme", publicName: "skeletonTheme", isSignal: true, isRequired: false, transformFunction: null }, isSkeletonAiTheme: { classPropertyName: "isSkeletonAiTheme", publicName: "isSkeletonAiTheme", isSignal: true, isRequired: false, transformFunction: null }, isLabelLoading: { classPropertyName: "isLabelLoading", publicName: "isLabelLoading", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
396
- }
397
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: TabDirective, decorators: [{
398
- type: Directive,
399
- args: [{
400
- standalone: true,
401
- selector: 'ng-template[uiTab]',
402
- }]
403
- }], propDecorators: { tabLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabLabel", required: true }] }], tabName: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabName", required: true }] }], iconLeft: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconLeft", required: false }] }], iconRight: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconRight", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], canLeave: [{ type: i0.Input, args: [{ isSignal: true, alias: "canLeave", required: false }] }], linkUrl: [{ type: i0.Input, args: [{ isSignal: true, alias: "linkUrl", required: false }] }], order: [{ type: i0.Input, args: [{ isSignal: true, alias: "order", required: false }] }], skeletonTheme: [{ type: i0.Input, args: [{ isSignal: true, alias: "skeletonTheme", required: false }] }], isSkeletonAiTheme: [{ type: i0.Input, args: [{ isSignal: true, alias: "isSkeletonAiTheme", required: false }] }], isLabelLoading: [{ type: i0.Input, args: [{ isSignal: true, alias: "isLabelLoading", required: false }] }] } });
404
-
405
- class TabsComponentModule {
406
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: TabsComponentModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
407
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.25", ngImport: i0, type: TabsComponentModule, imports: [TabDirective,
408
- CommonModule,
409
- MatTabsModule,
410
- IconComponentModule,
411
- UiTranslatePipe,
412
- SkeletonComponent,
413
- TabsComponent], exports: [TabsComponent, TabDirective] }); }
414
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: TabsComponentModule, imports: [CommonModule,
415
- MatTabsModule,
416
- IconComponentModule,
417
- SkeletonComponent,
418
- TabsComponent] }); }
419
- }
420
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: TabsComponentModule, decorators: [{
421
- type: NgModule,
422
- args: [{
423
- imports: [
424
- TabDirective,
425
- CommonModule,
426
- MatTabsModule,
427
- IconComponentModule,
428
- UiTranslatePipe,
429
- SkeletonComponent,
430
- TabsComponent,
431
- ],
432
- exports: [TabsComponent, TabDirective],
433
- }]
434
- }] });
435
-
436
- /**
437
- * Generated bundle index. Do not edit.
438
- */
439
-
16
+ var TabsComponent = class TabsComponent {
17
+ constructor(defaultAppTheme, isMobile$, cdr) {
18
+ this.defaultAppTheme = defaultAppTheme;
19
+ this.isMobile$ = isMobile$;
20
+ this.cdr = cdr;
21
+ this.companyColor = "#46A997";
22
+ this.type = "underlined";
23
+ this.animationDuration = 300;
24
+ this.headerContentPadding = "32px";
25
+ this.dynamicHeight = true;
26
+ this.applicationTheme = "light";
27
+ this.tabHeaderSize = input(TAB_HEADER_SIZE.BIG, ...ngDevMode ? [{ debugName: "tabHeaderSize" }] : /* istanbul ignore next */ []);
28
+ this.isLoading = input(false, ...ngDevMode ? [{ debugName: "isLoading" }] : /* istanbul ignore next */ []);
29
+ this.selectedTabName = input(null, ...ngDevMode ? [{ debugName: "selectedTabName" }] : /* istanbul ignore next */ []);
30
+ this.testId = input(null, ...ngDevMode ? [{ debugName: "testId" }] : /* istanbul ignore next */ []);
31
+ this.selectedTabIndex = new EventEmitter();
32
+ this.selectedTab = new EventEmitter();
33
+ this.tabs = [];
34
+ this.tabIndex = signal(0, ...ngDevMode ? [{ debugName: "tabIndex" }] : /* istanbul ignore next */ []);
35
+ this.tabIndexMap = {};
36
+ this.insertionCounter = 0;
37
+ this.tabTransitionInProgress = false;
38
+ this.requestedTabName = null;
39
+ if (defaultAppTheme) this.applicationTheme = defaultAppTheme;
40
+ effect(() => {
41
+ const requestedTabName = this.selectedTabName();
42
+ untracked(() => {
43
+ this.requestedTabName = requestedTabName;
44
+ this.applyRequestedTabName();
45
+ });
46
+ });
47
+ }
48
+ ngAfterViewInit() {
49
+ setTimeout(() => {
50
+ const group = this.tabGroup;
51
+ const tabHeader = group._tabHeader;
52
+ tabHeader._handleKeydown = async (event) => {
53
+ if (hasModifierKey(event) || this.tabTransitionInProgress) return;
54
+ switch (event.keyCode) {
55
+ case ENTER:
56
+ case SPACE:
57
+ this.tabTransitionInProgress = true;
58
+ try {
59
+ const tabLabel = event.target.innerText;
60
+ const currentTab = this.tabs[this.tabIndex()];
61
+ const nextTab = this.tabs.find((tab) => tab.tabLabel === tabLabel);
62
+ if (!nextTab) return;
63
+ const canLeave = await currentTab.canLeave?.({
64
+ currentTab,
65
+ nextTab
66
+ }) ?? true;
67
+ if (currentTab.tabName !== nextTab.tabName && canLeave) {
68
+ const nextTabIndex = this.tabIndexMap[nextTab.tabName];
69
+ this.tabIndex.set(nextTabIndex);
70
+ this.selectedTabIndex.emit(nextTabIndex);
71
+ this.selectedTab.emit(nextTab);
72
+ }
73
+ } finally {
74
+ this.tabTransitionInProgress = false;
75
+ }
76
+ break;
77
+ default: tabHeader._keyManager.onKeydown(event);
78
+ }
79
+ };
80
+ group._handleClick = async (tab, _tabHeader, index) => {
81
+ if (tab.disabled || index === this.tabIndex() || this.tabTransitionInProgress) return;
82
+ this.tabTransitionInProgress = true;
83
+ try {
84
+ const currentTab = this.tabs[this.tabIndex()];
85
+ const nextTab = this.tabs[index];
86
+ const canLeave = await currentTab.canLeave?.({
87
+ currentTab,
88
+ nextTab
89
+ }) ?? true;
90
+ if (this.tabIndex() !== index && canLeave) {
91
+ this.tabIndex.set(index);
92
+ this.selectedTabIndex.emit(index);
93
+ this.selectedTab.emit(nextTab);
94
+ }
95
+ } finally {
96
+ this.tabTransitionInProgress = false;
97
+ }
98
+ };
99
+ });
100
+ }
101
+ addTab(tab) {
102
+ tab.order ??= this.insertionCounter++;
103
+ const activeTabName = this.activeTabName;
104
+ this.tabs.push(tab);
105
+ this.sortTabs();
106
+ this.cdr.markForCheck();
107
+ this.updateTabIndexMap();
108
+ this.reconcileTabIndex(activeTabName);
109
+ this.applyRequestedTabName();
110
+ }
111
+ sortTabs() {
112
+ this.tabs.sort((a, b) => {
113
+ return (a.order ?? Infinity) - (b.order ?? Infinity);
114
+ });
115
+ }
116
+ updateTabIndexMap() {
117
+ this.tabs.forEach((tab, index) => {
118
+ this.tabIndexMap[tab.tabName] = index;
119
+ });
120
+ }
121
+ get activeTabName() {
122
+ return this.tabs[this.tabIndex()]?.tabName;
123
+ }
124
+ reconcileTabIndex(activeTabName) {
125
+ const nextIndex = (activeTabName === void 0 ? void 0 : this.tabIndexMap[activeTabName]) ?? Math.min(this.tabIndex(), Math.max(this.tabs.length - 1, 0));
126
+ if (nextIndex !== this.tabIndex()) this.tabIndex.set(nextIndex);
127
+ }
128
+ applyRequestedTabName() {
129
+ if (this.requestedTabName === null) return;
130
+ const index = this.tabIndexMap[this.requestedTabName];
131
+ if (index === void 0) return;
132
+ this.requestedTabName = null;
133
+ if (index !== this.tabIndex()) this.tabIndex.set(index);
134
+ }
135
+ onTabChange(index) {
136
+ const selectedTab = this.tabs[index];
137
+ const newIndex = this.tabIndexMap[selectedTab.tabName];
138
+ if (this.tabIndex() === newIndex) return;
139
+ this.tabIndex.set(newIndex);
140
+ this.selectedTabIndex.emit(index);
141
+ this.selectedTab.emit(selectedTab);
142
+ }
143
+ selectTab(tabName) {
144
+ const index = this.tabIndexMap[tabName];
145
+ if (index !== void 0) {
146
+ this.tabIndex.set(index);
147
+ this.selectedTabIndex.emit(index);
148
+ this.selectedTab.emit(this.tabs[index]);
149
+ }
150
+ }
151
+ indexOf(tabName) {
152
+ return this.tabIndexMap[tabName] ?? -1;
153
+ }
154
+ trackByTabName(index, tab) {
155
+ return tab.tabName;
156
+ }
157
+ removeTab(tabName) {
158
+ const index = this.tabIndexMap[tabName];
159
+ if (index !== void 0) {
160
+ const activeTabName = this.activeTabName;
161
+ this.tabs.splice(index, 1);
162
+ delete this.tabIndexMap[tabName];
163
+ this.updateTabIndexMap();
164
+ this.reconcileTabIndex(activeTabName);
165
+ this.cdr.markForCheck();
166
+ }
167
+ }
168
+ updateTab(tabName, tab) {
169
+ const index = this.tabIndexMap[tabName];
170
+ if (index !== void 0) {
171
+ this.tabs[index] = {
172
+ ...this.tabs[index],
173
+ ...tab
174
+ };
175
+ if (tab.order !== void 0) {
176
+ const activeTabName = this.activeTabName;
177
+ this.sortTabs();
178
+ this.updateTabIndexMap();
179
+ this.reconcileTabIndex(activeTabName);
180
+ }
181
+ this.cdr.markForCheck();
182
+ }
183
+ }
184
+ static {
185
+ this.ɵfac = i0.ɵɵngDeclareFactory({
186
+ minVersion: "12.0.0",
187
+ version: "22.2.4",
188
+ ngImport: i0,
189
+ type: TabsComponent,
190
+ deps: [
191
+ {
192
+ token: "CANOPYUI_DEFAULT_APPLICATION_THEME",
193
+ optional: true
194
+ },
195
+ { token: IS_MOBILE_TOKEN },
196
+ { token: i0.ChangeDetectorRef }
197
+ ],
198
+ target: i0.ɵɵFactoryTarget.Component
199
+ });
200
+ }
201
+ static {
202
+ this.ɵcmp = i0.ɵɵngDeclareComponent({
203
+ minVersion: "17.0.0",
204
+ version: "22.2.4",
205
+ type: TabsComponent,
206
+ isStandalone: true,
207
+ selector: "ui-tabs",
208
+ inputs: {
209
+ companyColor: {
210
+ classPropertyName: "companyColor",
211
+ publicName: "companyColor",
212
+ isSignal: false,
213
+ isRequired: false,
214
+ transformFunction: null
215
+ },
216
+ type: {
217
+ classPropertyName: "type",
218
+ publicName: "type",
219
+ isSignal: false,
220
+ isRequired: false,
221
+ transformFunction: null
222
+ },
223
+ animationDuration: {
224
+ classPropertyName: "animationDuration",
225
+ publicName: "animationDuration",
226
+ isSignal: false,
227
+ isRequired: false,
228
+ transformFunction: null
229
+ },
230
+ headerContentPadding: {
231
+ classPropertyName: "headerContentPadding",
232
+ publicName: "headerContentPadding",
233
+ isSignal: false,
234
+ isRequired: false,
235
+ transformFunction: (value) => `${value}px`
236
+ },
237
+ dynamicHeight: {
238
+ classPropertyName: "dynamicHeight",
239
+ publicName: "dynamicHeight",
240
+ isSignal: false,
241
+ isRequired: false,
242
+ transformFunction: booleanAttribute
243
+ },
244
+ applicationTheme: {
245
+ classPropertyName: "applicationTheme",
246
+ publicName: "applicationTheme",
247
+ isSignal: false,
248
+ isRequired: false,
249
+ transformFunction: null
250
+ },
251
+ tabHeaderSize: {
252
+ classPropertyName: "tabHeaderSize",
253
+ publicName: "tabHeaderSize",
254
+ isSignal: true,
255
+ isRequired: false,
256
+ transformFunction: null
257
+ },
258
+ isLoading: {
259
+ classPropertyName: "isLoading",
260
+ publicName: "isLoading",
261
+ isSignal: true,
262
+ isRequired: false,
263
+ transformFunction: null
264
+ },
265
+ selectedTabName: {
266
+ classPropertyName: "selectedTabName",
267
+ publicName: "selectedTabName",
268
+ isSignal: true,
269
+ isRequired: false,
270
+ transformFunction: null
271
+ },
272
+ testId: {
273
+ classPropertyName: "testId",
274
+ publicName: "testId",
275
+ isSignal: true,
276
+ isRequired: false,
277
+ transformFunction: null
278
+ }
279
+ },
280
+ outputs: {
281
+ selectedTabIndex: "selectedTabIndex",
282
+ selectedTab: "selectedTab"
283
+ },
284
+ host: { properties: {
285
+ "style.--color": "this.companyColor",
286
+ "style.--header-content-padding": "this.headerContentPadding"
287
+ } },
288
+ viewQueries: [{
289
+ propertyName: "tabGroup",
290
+ first: true,
291
+ predicate: ["tabGroup"],
292
+ descendants: true,
293
+ static: true
294
+ }],
295
+ ngImport: i0,
296
+ template: "<mat-tab-group\n #tabGroup\n headerPosition=\"above\"\n class=\"tabs-container\"\n [ngClass]=\"['tabs-type-' + ((isMobile$ | async) ? 'underlined' : type), 'tabs-header-size-' + tabHeaderSize()]\"\n [class.tabs-container-loading]=\"isLoading()\"\n [attr.theme]=\"applicationTheme\"\n [dynamicHeight]=\"dynamicHeight\"\n [selectedIndex]=\"tabIndex()\"\n [animationDuration]=\"animationDuration\"\n (selectedIndexChange)=\"onTabChange($event)\"\n role=\"tablist\"\n [attr.data-testid]=\"testId()\"\n>\n @for (tab of tabs; track trackByTabName(i, tab); let i = $index) {\n <mat-tab [disabled]=\"tab.disabled ?? false\" [attr.aria-label]=\"tab?.ariaLabel\">\n <ng-template mat-tab-label>\n <a\n data-test-role=\"tab-link\"\n [attr.data-testid]=\"tab.testId ?? tab.tabName\"\n class=\"tab-name\"\n [href]=\"tab?.linkUrl ? tab.linkUrl : '#'\"\n (click)=\"$event.preventDefault()\"\n [attr.aria-selected]=\"i === tabIndex()\"\n [attr.aria-label]=\"\n tab.tabLabel +\n (tab.isLabelLoading ? ', ' + ('COMMON.LOADING' | uiTranslate | async) : '') +\n (i === tabIndex() ? ', ' + ('TABS.SELECTED' | uiTranslate | async) : '')\n \"\n role=\"tab\"\n >\n @if (isLoading()) {\n <ui-skeleton\n [count]=\"1\"\n [theme]=\"tab.skeletonTheme ?? {}\"\n [isAiTheme]=\"!!tab.isSkeletonAiTheme\"\n ></ui-skeleton>\n } @else {\n @if (tab?.iconLeft) {\n <ui-icon\n color=\"rebrand-black\"\n [size]=\"'24'\"\n [tabindex]=\"1\"\n class=\"left-icon\"\n [name]=\"tab.iconLeft!\"\n ></ui-icon>\n }\n <span class=\"label\">{{ tab.tabLabel }}</span>\n @if (tab.isLabelLoading) {\n <span class=\"label-spinner\" aria-hidden=\"true\">\n <ui-spinner size=\"small\" [isLoader]=\"false\" [applicationTheme]=\"applicationTheme\"></ui-spinner>\n </span>\n }\n @if (tab?.iconRight) {\n <ui-icon color=\"rebrand-black\" [size]=\"'24'\" class=\"right-icon\" [name]=\"tab.iconRight!\"></ui-icon>\n }\n }\n </a>\n </ng-template>\n <div role=\"tabpanel\" [attr.id]=\"'tabpanel-' + i\" [attr.aria-labelledby]=\"'tab-' + i\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplateRef\"></ng-container>\n </div>\n </mat-tab>\n }\n</mat-tab-group>\n",
297
+ styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}:host ::ng-deep .mat-mdc-tab-group,:host .mat-mdc-tab-nav-bar{--mdc-tab-indicator-active-indicator-color: var(--color);--mat-tab-header-active-label-text-color: var(--color);--mat-tab-header-active-ripple-color: transparent;--mat-tab-header-inactive-ripple-color: var(--color);--mat-tab-header-active-focus-label-text-color: var(--color);--mat-tab-header-active-focus-indicator-color: var(--color)}:host ::ng-deep .tabs-type-filled mat-tab-header{border-bottom:unset!important;border-right:1px solid #d3d3d3}:host ::ng-deep mat-tab-group{width:100%;height:100%}:host ::ng-deep mat-tab-group .mdc-tab.cdk-keyboard-focused{position:relative}:host ::ng-deep mat-tab-group .mdc-tab.cdk-keyboard-focused:after{content:\"\";position:absolute;inset:-2px;z-index:10;border-radius:4px;outline:2px solid #242424;animation:focus-ring-animation-main .4s forwards}::ng-deep .tabs-container .mdc-tab-indicator__content{border-color:#276678!important}::ng-deep .tabs-container .tab-name{text-decoration:none!important;display:flex;justify-content:center;align-content:center;color:#242424;outline:unset;font-size:16px;line-height:24px;width:100%}::ng-deep .tabs-container .tab-name .left-icon{margin-right:8px}::ng-deep .tabs-container .tab-name .right-icon{margin-left:8px}::ng-deep .tabs-container .tab-name .label-spinner{display:flex;align-items:center;margin-left:8px}::ng-deep .tabs-container .tab-name .left-icon:focus,::ng-deep .tabs-container .tab-name .right-icon:focus{height:24px;outline:1px dashed #888888}::ng-deep .tabs-container ::ng-deep .mdc-tab{min-width:0;padding:0}::ng-deep .tabs-container ::ng-deep .mdc-tab:hover{background:#f6f6f6}::ng-deep .tabs-container.tabs-type-underlined .tab-name{padding:16px 24px}::ng-deep .tabs-container.tabs-type-underlined .mdc-tab--active .tab-name .label{text-shadow:-.5px 0 #242424,.5px 0 #242424}::ng-deep .tabs-container.tabs-type-underlined ::ng-deep .mat-mdc-tab-header{padding:0 var(--header-content-padding)}::ng-deep .tabs-container.tabs-type-underlined ::ng-deep .mat-mdc-tab-header-pagination-chevron{border-color:#242424}::ng-deep .tabs-container.tabs-type-underlined ::ng-deep .mdc-tab{flex-grow:0!important;margin-left:1px}::ng-deep .tabs-container.tabs-type-underlined.tabs-header-size-big ::ng-deep .mdc-tab{height:64px!important}::ng-deep .tabs-container.tabs-type-underlined.tabs-header-size-small ::ng-deep .mdc-tab{height:32px!important}::ng-deep .tabs-container.tabs-type-underlined.tabs-header-size-medium ::ng-deep .mdc-tab{height:56px!important}::ng-deep .tabs-container.tabs-type-filled .mdc-tab--active{background-color:#e9f0f1!important}::ng-deep .tabs-container.tabs-type-filled .mdc-tab--active .tab-name .label{text-shadow:-.5px 0 black,.5px 0 black}::ng-deep .tabs-container.tabs-type-filled{--mat-tab-header-active-ripple-color: var(--color);display:flex;flex-direction:row}::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mat-mdc-tab-header{padding:var(--header-content-padding) 0}::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mat-mdc-tab-label-container{padding:4px;overflow:auto!important}::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mat-mdc-tab-labels{flex-direction:column;padding-top:2px}::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mdc-tab{flex-grow:0!important}::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mdc-tab__content,::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mdc-tab__text-label{width:100%}::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mdc-tab__text-label{margin:-1px 1px 1px}::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mdc-tab--active ::ng-deep .mdc-tab-indicator:after{content:\"\";position:absolute;left:0;top:8px;width:4px;height:32px;border-radius:0 8px 8px 0;background:#276678}::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mdc-tab-indicator__content{display:none}::ng-deep .tabs-container.tabs-type-filled .tab-name{padding:12px var(--header-content-padding)}::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mdc-tab{position:relative;height:48px!important;min-height:48px!important}::ng-deep .tabs-container ::ng-deep .mat-mdc-tab-body-wrapper{width:100%}::ng-deep .tabs-container ::ng-deep .mat-mdc-tab-body{padding:var(--header-content-padding)}@media(max-width:600px){::ng-deep .tabs-container ::ng-deep .mat-mdc-tab-body{padding:24px}::ng-deep .tabs-container ::ng-deep .mat-mdc-tab-header{position:relative;padding:0!important}::ng-deep .tabs-container ::ng-deep .mat-mdc-tab-header .mat-mdc-tab-header-pagination-disabled{visibility:hidden!important}::ng-deep .tabs-container ::ng-deep .mat-mdc-tab-header:after{content:\"\";position:absolute;bottom:0;left:0;width:100%;height:1px;background:#d3d3d3}::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mat-mdc-tab-header{padding:24px 0}}::ng-deep .mat-mdc-tab-group:not(.tabs-type-filled)[theme=light],::ng-deep .mat-mdc-tab-group:not(.tabs-type-filled)[theme=dark]{--mat-tab-header-inactive-ripple-color: none !important}::ng-deep .mat-mdc-tab-group:not(.tabs-type-filled)[theme=light] .mdc-tab-indicator .mdc-tab-indicator__content.mdc-tab-indicator__content--underline,::ng-deep .mat-mdc-tab-group:not(.tabs-type-filled)[theme=dark] .mdc-tab-indicator .mdc-tab-indicator__content.mdc-tab-indicator__content--underline{border-color:#d410aa!important}::ng-deep .mat-mdc-tab-group:not(.tabs-type-filled)[theme=light] .mdc-tab:hover,::ng-deep .mat-mdc-tab-group:not(.tabs-type-filled)[theme=dark] .mdc-tab:hover{background:none!important;border-bottom:2px solid #242424}::ng-deep .mat-mdc-tab-group:not(.tabs-type-filled)[theme=light] .mdc-tab:hover .mdc-tab-indicator,::ng-deep .mat-mdc-tab-group:not(.tabs-type-filled)[theme=dark] .mdc-tab:hover .mdc-tab-indicator{display:none}::ng-deep .tabs-container-loading .mat-mdc-tab.mat-mdc-tab-disabled{opacity:1}::ng-deep .tabs-container-loading .mat-mdc-tab.mat-mdc-tab-disabled.mdc-tab-indicator--active .mdc-tab-indicator__content{opacity:.4}::ng-deep .mat-mdc-tab-group.tabs-type-filled{--mat-tab-header-active-ripple-color: unset !important}::ng-deep .mat-mdc-tab-group.tabs-type-filled .tab-name{color:#242424}::ng-deep .mat-mdc-tab-group.tabs-type-filled[theme=light],::ng-deep .mat-mdc-tab-group.tabs-type-filled[theme=dark]{--mat-tab-header-inactive-ripple-color: none !important}::ng-deep .mat-mdc-tab-group.tabs-type-filled[theme=light] .mdc-tab-indicator .mdc-tab-indicator__content.mdc-tab-indicator__content--underline,::ng-deep .mat-mdc-tab-group.tabs-type-filled[theme=dark] .mdc-tab-indicator .mdc-tab-indicator__content.mdc-tab-indicator__content--underline{border-color:#d410aa!important}::ng-deep .mat-mdc-tab-group.tabs-type-filled[theme=light] .mdc-tab--active,::ng-deep .mat-mdc-tab-group.tabs-type-filled[theme=dark] .mdc-tab--active{background-color:#f4f4f4!important}::ng-deep .mat-mdc-tab-group.tabs-type-filled[theme=light] .mdc-tab--active .mdc-tab-indicator:after,::ng-deep .mat-mdc-tab-group.tabs-type-filled[theme=dark] .mdc-tab--active .mdc-tab-indicator:after{background-color:#d410aa!important}::ng-deep .mat-mdc-tab-group.tabs-type-filled[theme=light] .mdc-tab:hover,::ng-deep .mat-mdc-tab-group.tabs-type-filled[theme=dark] .mdc-tab:hover{background:#fff2fc!important}\n"],
298
+ dependencies: [
299
+ {
300
+ kind: "component",
301
+ type: MatTabGroup,
302
+ selector: "mat-tab-group",
303
+ inputs: [
304
+ "color",
305
+ "fitInkBarToContent",
306
+ "mat-stretch-tabs",
307
+ "mat-align-tabs",
308
+ "dynamicHeight",
309
+ "selectedIndex",
310
+ "headerPosition",
311
+ "animationDuration",
312
+ "contentTabIndex",
313
+ "disablePagination",
314
+ "disableRipple",
315
+ "preserveContent",
316
+ "backgroundColor",
317
+ "aria-label",
318
+ "aria-labelledby"
319
+ ],
320
+ outputs: [
321
+ "selectedIndexChange",
322
+ "focusChange",
323
+ "animationDone",
324
+ "selectedTabChange"
325
+ ],
326
+ exportAs: ["matTabGroup"]
327
+ },
328
+ {
329
+ kind: "directive",
330
+ type: NgClass,
331
+ selector: "[ngClass]",
332
+ inputs: ["class", "ngClass"]
333
+ },
334
+ {
335
+ kind: "component",
336
+ type: MatTab,
337
+ selector: "mat-tab",
338
+ inputs: [
339
+ "disabled",
340
+ "label",
341
+ "aria-label",
342
+ "aria-labelledby",
343
+ "labelClass",
344
+ "bodyClass",
345
+ "id"
346
+ ],
347
+ exportAs: ["matTab"]
348
+ },
349
+ {
350
+ kind: "directive",
351
+ type: MatTabLabel,
352
+ selector: "[mat-tab-label], [matTabLabel]"
353
+ },
354
+ {
355
+ kind: "component",
356
+ type: SkeletonComponent,
357
+ selector: "ui-skeleton",
358
+ inputs: [
359
+ "count",
360
+ "theme",
361
+ "appearance",
362
+ "isAiTheme",
363
+ "applicationTheme"
364
+ ]
365
+ },
366
+ {
367
+ kind: "component",
368
+ type: SpinnerComponent,
369
+ selector: "ui-spinner",
370
+ inputs: [
371
+ "size",
372
+ "isLoader",
373
+ "text",
374
+ "applicationTheme",
375
+ "iconName",
376
+ "iconSize"
377
+ ]
378
+ },
379
+ {
380
+ kind: "component",
381
+ type: IconComponent,
382
+ selector: "ui-icon",
383
+ inputs: [
384
+ "size",
385
+ "cssClass",
386
+ "name",
387
+ "color",
388
+ "filled",
389
+ "toggleIconStyle",
390
+ "applicationTheme",
391
+ "useFullIconName"
392
+ ]
393
+ },
394
+ {
395
+ kind: "directive",
396
+ type: NgTemplateOutlet,
397
+ selector: "[ngTemplateOutlet]",
398
+ inputs: [
399
+ "ngTemplateOutletContext",
400
+ "ngTemplateOutlet",
401
+ "ngTemplateOutletInjector"
402
+ ]
403
+ },
404
+ {
405
+ kind: "pipe",
406
+ type: AsyncPipe,
407
+ name: "async"
408
+ },
409
+ {
410
+ kind: "pipe",
411
+ type: UiTranslatePipe,
412
+ name: "uiTranslate"
413
+ }
414
+ ],
415
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
416
+ });
417
+ }
418
+ };
419
+ i0.ɵɵngDeclareClassMetadata({
420
+ minVersion: "12.0.0",
421
+ version: "22.2.4",
422
+ ngImport: i0,
423
+ type: TabsComponent,
424
+ decorators: [{
425
+ type: Component,
426
+ args: [{
427
+ selector: "ui-tabs",
428
+ changeDetection: ChangeDetectionStrategy.OnPush,
429
+ imports: [
430
+ MatTabGroup,
431
+ NgClass,
432
+ MatTab,
433
+ MatTabLabel,
434
+ SkeletonComponent,
435
+ SpinnerComponent,
436
+ IconComponent,
437
+ NgTemplateOutlet,
438
+ AsyncPipe,
439
+ UiTranslatePipe
440
+ ],
441
+ template: "<mat-tab-group\n #tabGroup\n headerPosition=\"above\"\n class=\"tabs-container\"\n [ngClass]=\"['tabs-type-' + ((isMobile$ | async) ? 'underlined' : type), 'tabs-header-size-' + tabHeaderSize()]\"\n [class.tabs-container-loading]=\"isLoading()\"\n [attr.theme]=\"applicationTheme\"\n [dynamicHeight]=\"dynamicHeight\"\n [selectedIndex]=\"tabIndex()\"\n [animationDuration]=\"animationDuration\"\n (selectedIndexChange)=\"onTabChange($event)\"\n role=\"tablist\"\n [attr.data-testid]=\"testId()\"\n>\n @for (tab of tabs; track trackByTabName(i, tab); let i = $index) {\n <mat-tab [disabled]=\"tab.disabled ?? false\" [attr.aria-label]=\"tab?.ariaLabel\">\n <ng-template mat-tab-label>\n <a\n data-test-role=\"tab-link\"\n [attr.data-testid]=\"tab.testId ?? tab.tabName\"\n class=\"tab-name\"\n [href]=\"tab?.linkUrl ? tab.linkUrl : '#'\"\n (click)=\"$event.preventDefault()\"\n [attr.aria-selected]=\"i === tabIndex()\"\n [attr.aria-label]=\"\n tab.tabLabel +\n (tab.isLabelLoading ? ', ' + ('COMMON.LOADING' | uiTranslate | async) : '') +\n (i === tabIndex() ? ', ' + ('TABS.SELECTED' | uiTranslate | async) : '')\n \"\n role=\"tab\"\n >\n @if (isLoading()) {\n <ui-skeleton\n [count]=\"1\"\n [theme]=\"tab.skeletonTheme ?? {}\"\n [isAiTheme]=\"!!tab.isSkeletonAiTheme\"\n ></ui-skeleton>\n } @else {\n @if (tab?.iconLeft) {\n <ui-icon\n color=\"rebrand-black\"\n [size]=\"'24'\"\n [tabindex]=\"1\"\n class=\"left-icon\"\n [name]=\"tab.iconLeft!\"\n ></ui-icon>\n }\n <span class=\"label\">{{ tab.tabLabel }}</span>\n @if (tab.isLabelLoading) {\n <span class=\"label-spinner\" aria-hidden=\"true\">\n <ui-spinner size=\"small\" [isLoader]=\"false\" [applicationTheme]=\"applicationTheme\"></ui-spinner>\n </span>\n }\n @if (tab?.iconRight) {\n <ui-icon color=\"rebrand-black\" [size]=\"'24'\" class=\"right-icon\" [name]=\"tab.iconRight!\"></ui-icon>\n }\n }\n </a>\n </ng-template>\n <div role=\"tabpanel\" [attr.id]=\"'tabpanel-' + i\" [attr.aria-labelledby]=\"'tab-' + i\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplateRef\"></ng-container>\n </div>\n </mat-tab>\n }\n</mat-tab-group>\n",
442
+ styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}:host ::ng-deep .mat-mdc-tab-group,:host .mat-mdc-tab-nav-bar{--mdc-tab-indicator-active-indicator-color: var(--color);--mat-tab-header-active-label-text-color: var(--color);--mat-tab-header-active-ripple-color: transparent;--mat-tab-header-inactive-ripple-color: var(--color);--mat-tab-header-active-focus-label-text-color: var(--color);--mat-tab-header-active-focus-indicator-color: var(--color)}:host ::ng-deep .tabs-type-filled mat-tab-header{border-bottom:unset!important;border-right:1px solid #d3d3d3}:host ::ng-deep mat-tab-group{width:100%;height:100%}:host ::ng-deep mat-tab-group .mdc-tab.cdk-keyboard-focused{position:relative}:host ::ng-deep mat-tab-group .mdc-tab.cdk-keyboard-focused:after{content:\"\";position:absolute;inset:-2px;z-index:10;border-radius:4px;outline:2px solid #242424;animation:focus-ring-animation-main .4s forwards}::ng-deep .tabs-container .mdc-tab-indicator__content{border-color:#276678!important}::ng-deep .tabs-container .tab-name{text-decoration:none!important;display:flex;justify-content:center;align-content:center;color:#242424;outline:unset;font-size:16px;line-height:24px;width:100%}::ng-deep .tabs-container .tab-name .left-icon{margin-right:8px}::ng-deep .tabs-container .tab-name .right-icon{margin-left:8px}::ng-deep .tabs-container .tab-name .label-spinner{display:flex;align-items:center;margin-left:8px}::ng-deep .tabs-container .tab-name .left-icon:focus,::ng-deep .tabs-container .tab-name .right-icon:focus{height:24px;outline:1px dashed #888888}::ng-deep .tabs-container ::ng-deep .mdc-tab{min-width:0;padding:0}::ng-deep .tabs-container ::ng-deep .mdc-tab:hover{background:#f6f6f6}::ng-deep .tabs-container.tabs-type-underlined .tab-name{padding:16px 24px}::ng-deep .tabs-container.tabs-type-underlined .mdc-tab--active .tab-name .label{text-shadow:-.5px 0 #242424,.5px 0 #242424}::ng-deep .tabs-container.tabs-type-underlined ::ng-deep .mat-mdc-tab-header{padding:0 var(--header-content-padding)}::ng-deep .tabs-container.tabs-type-underlined ::ng-deep .mat-mdc-tab-header-pagination-chevron{border-color:#242424}::ng-deep .tabs-container.tabs-type-underlined ::ng-deep .mdc-tab{flex-grow:0!important;margin-left:1px}::ng-deep .tabs-container.tabs-type-underlined.tabs-header-size-big ::ng-deep .mdc-tab{height:64px!important}::ng-deep .tabs-container.tabs-type-underlined.tabs-header-size-small ::ng-deep .mdc-tab{height:32px!important}::ng-deep .tabs-container.tabs-type-underlined.tabs-header-size-medium ::ng-deep .mdc-tab{height:56px!important}::ng-deep .tabs-container.tabs-type-filled .mdc-tab--active{background-color:#e9f0f1!important}::ng-deep .tabs-container.tabs-type-filled .mdc-tab--active .tab-name .label{text-shadow:-.5px 0 black,.5px 0 black}::ng-deep .tabs-container.tabs-type-filled{--mat-tab-header-active-ripple-color: var(--color);display:flex;flex-direction:row}::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mat-mdc-tab-header{padding:var(--header-content-padding) 0}::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mat-mdc-tab-label-container{padding:4px;overflow:auto!important}::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mat-mdc-tab-labels{flex-direction:column;padding-top:2px}::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mdc-tab{flex-grow:0!important}::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mdc-tab__content,::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mdc-tab__text-label{width:100%}::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mdc-tab__text-label{margin:-1px 1px 1px}::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mdc-tab--active ::ng-deep .mdc-tab-indicator:after{content:\"\";position:absolute;left:0;top:8px;width:4px;height:32px;border-radius:0 8px 8px 0;background:#276678}::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mdc-tab-indicator__content{display:none}::ng-deep .tabs-container.tabs-type-filled .tab-name{padding:12px var(--header-content-padding)}::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mdc-tab{position:relative;height:48px!important;min-height:48px!important}::ng-deep .tabs-container ::ng-deep .mat-mdc-tab-body-wrapper{width:100%}::ng-deep .tabs-container ::ng-deep .mat-mdc-tab-body{padding:var(--header-content-padding)}@media(max-width:600px){::ng-deep .tabs-container ::ng-deep .mat-mdc-tab-body{padding:24px}::ng-deep .tabs-container ::ng-deep .mat-mdc-tab-header{position:relative;padding:0!important}::ng-deep .tabs-container ::ng-deep .mat-mdc-tab-header .mat-mdc-tab-header-pagination-disabled{visibility:hidden!important}::ng-deep .tabs-container ::ng-deep .mat-mdc-tab-header:after{content:\"\";position:absolute;bottom:0;left:0;width:100%;height:1px;background:#d3d3d3}::ng-deep .tabs-container.tabs-type-filled ::ng-deep .mat-mdc-tab-header{padding:24px 0}}::ng-deep .mat-mdc-tab-group:not(.tabs-type-filled)[theme=light],::ng-deep .mat-mdc-tab-group:not(.tabs-type-filled)[theme=dark]{--mat-tab-header-inactive-ripple-color: none !important}::ng-deep .mat-mdc-tab-group:not(.tabs-type-filled)[theme=light] .mdc-tab-indicator .mdc-tab-indicator__content.mdc-tab-indicator__content--underline,::ng-deep .mat-mdc-tab-group:not(.tabs-type-filled)[theme=dark] .mdc-tab-indicator .mdc-tab-indicator__content.mdc-tab-indicator__content--underline{border-color:#d410aa!important}::ng-deep .mat-mdc-tab-group:not(.tabs-type-filled)[theme=light] .mdc-tab:hover,::ng-deep .mat-mdc-tab-group:not(.tabs-type-filled)[theme=dark] .mdc-tab:hover{background:none!important;border-bottom:2px solid #242424}::ng-deep .mat-mdc-tab-group:not(.tabs-type-filled)[theme=light] .mdc-tab:hover .mdc-tab-indicator,::ng-deep .mat-mdc-tab-group:not(.tabs-type-filled)[theme=dark] .mdc-tab:hover .mdc-tab-indicator{display:none}::ng-deep .tabs-container-loading .mat-mdc-tab.mat-mdc-tab-disabled{opacity:1}::ng-deep .tabs-container-loading .mat-mdc-tab.mat-mdc-tab-disabled.mdc-tab-indicator--active .mdc-tab-indicator__content{opacity:.4}::ng-deep .mat-mdc-tab-group.tabs-type-filled{--mat-tab-header-active-ripple-color: unset !important}::ng-deep .mat-mdc-tab-group.tabs-type-filled .tab-name{color:#242424}::ng-deep .mat-mdc-tab-group.tabs-type-filled[theme=light],::ng-deep .mat-mdc-tab-group.tabs-type-filled[theme=dark]{--mat-tab-header-inactive-ripple-color: none !important}::ng-deep .mat-mdc-tab-group.tabs-type-filled[theme=light] .mdc-tab-indicator .mdc-tab-indicator__content.mdc-tab-indicator__content--underline,::ng-deep .mat-mdc-tab-group.tabs-type-filled[theme=dark] .mdc-tab-indicator .mdc-tab-indicator__content.mdc-tab-indicator__content--underline{border-color:#d410aa!important}::ng-deep .mat-mdc-tab-group.tabs-type-filled[theme=light] .mdc-tab--active,::ng-deep .mat-mdc-tab-group.tabs-type-filled[theme=dark] .mdc-tab--active{background-color:#f4f4f4!important}::ng-deep .mat-mdc-tab-group.tabs-type-filled[theme=light] .mdc-tab--active .mdc-tab-indicator:after,::ng-deep .mat-mdc-tab-group.tabs-type-filled[theme=dark] .mdc-tab--active .mdc-tab-indicator:after{background-color:#d410aa!important}::ng-deep .mat-mdc-tab-group.tabs-type-filled[theme=light] .mdc-tab:hover,::ng-deep .mat-mdc-tab-group.tabs-type-filled[theme=dark] .mdc-tab:hover{background:#fff2fc!important}\n"]
443
+ }]
444
+ }],
445
+ ctorParameters: () => [
446
+ {
447
+ type: void 0,
448
+ decorators: [{ type: Optional }, {
449
+ type: Inject,
450
+ args: ["CANOPYUI_DEFAULT_APPLICATION_THEME"]
451
+ }]
452
+ },
453
+ {
454
+ type: i1.Observable,
455
+ decorators: [{
456
+ type: Inject,
457
+ args: [IS_MOBILE_TOKEN]
458
+ }]
459
+ },
460
+ { type: i0.ChangeDetectorRef }
461
+ ],
462
+ propDecorators: {
463
+ companyColor: [{
464
+ type: HostBinding,
465
+ args: ["style.--color"]
466
+ }, { type: Input }],
467
+ type: [{ type: Input }],
468
+ animationDuration: [{ type: Input }],
469
+ headerContentPadding: [{
470
+ type: HostBinding,
471
+ args: ["style.--header-content-padding"]
472
+ }, {
473
+ type: Input,
474
+ args: [{ transform: (value) => `${value}px` }]
475
+ }],
476
+ dynamicHeight: [{
477
+ type: Input,
478
+ args: [{ transform: booleanAttribute }]
479
+ }],
480
+ applicationTheme: [{ type: Input }],
481
+ tabHeaderSize: [{
482
+ type: i0.Input,
483
+ args: [{
484
+ isSignal: true,
485
+ alias: "tabHeaderSize",
486
+ required: false
487
+ }]
488
+ }],
489
+ isLoading: [{
490
+ type: i0.Input,
491
+ args: [{
492
+ isSignal: true,
493
+ alias: "isLoading",
494
+ required: false
495
+ }]
496
+ }],
497
+ selectedTabName: [{
498
+ type: i0.Input,
499
+ args: [{
500
+ isSignal: true,
501
+ alias: "selectedTabName",
502
+ required: false
503
+ }]
504
+ }],
505
+ testId: [{
506
+ type: i0.Input,
507
+ args: [{
508
+ isSignal: true,
509
+ alias: "testId",
510
+ required: false
511
+ }]
512
+ }],
513
+ selectedTabIndex: [{ type: Output }],
514
+ selectedTab: [{ type: Output }],
515
+ tabGroup: [{
516
+ type: ViewChild,
517
+ args: ["tabGroup", { static: true }]
518
+ }]
519
+ }
520
+ });
521
+ var TabDirective = class TabDirective {
522
+ constructor() {
523
+ this.tabLabel = input.required(...ngDevMode ? [{ debugName: "tabLabel" }] : /* istanbul ignore next */ []);
524
+ this.tabName = input.required(...ngDevMode ? [{ debugName: "tabName" }] : /* istanbul ignore next */ []);
525
+ this.iconLeft = input(...ngDevMode ? [void 0, { debugName: "iconLeft" }] : /* istanbul ignore next */ []);
526
+ this.iconRight = input(...ngDevMode ? [void 0, { debugName: "iconRight" }] : /* istanbul ignore next */ []);
527
+ this.disabled = input(false, {
528
+ ...ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {},
529
+ transform: booleanAttribute
530
+ });
531
+ this.canLeave = input(...ngDevMode ? [void 0, { debugName: "canLeave" }] : /* istanbul ignore next */ []);
532
+ this.linkUrl = input(...ngDevMode ? [void 0, { debugName: "linkUrl" }] : /* istanbul ignore next */ []);
533
+ this.order = input(...ngDevMode ? [void 0, { debugName: "order" }] : /* istanbul ignore next */ []);
534
+ this.skeletonTheme = input(...ngDevMode ? [void 0, { debugName: "skeletonTheme" }] : /* istanbul ignore next */ []);
535
+ this.isSkeletonAiTheme = input(...ngDevMode ? [void 0, { debugName: "isSkeletonAiTheme" }] : /* istanbul ignore next */ []);
536
+ this.isLabelLoading = input(false, {
537
+ ...ngDevMode ? { debugName: "isLabelLoading" } : /* istanbul ignore next */ {},
538
+ transform: booleanAttribute
539
+ });
540
+ this.tabsComponent = inject(TabsComponent);
541
+ this.template = inject(TemplateRef);
542
+ this.syncProps = effect(() => {
543
+ this.tabsComponent.updateTab(this.tabName(), {
544
+ tabLabel: this.tabLabel(),
545
+ iconLeft: this.iconLeft(),
546
+ iconRight: this.iconRight(),
547
+ disabled: this.disabled(),
548
+ canLeave: this.canLeave(),
549
+ linkUrl: this.linkUrl(),
550
+ order: this.order(),
551
+ skeletonTheme: this.skeletonTheme(),
552
+ isSkeletonAiTheme: this.isSkeletonAiTheme(),
553
+ isLabelLoading: this.isLabelLoading()
554
+ });
555
+ }, ...ngDevMode ? [{ debugName: "syncProps" }] : /* istanbul ignore next */ []);
556
+ this.cleanup = inject(DestroyRef).onDestroy(() => {
557
+ this.tabsComponent.removeTab(this.tabName());
558
+ });
559
+ }
560
+ ngOnInit() {
561
+ this.addTab();
562
+ }
563
+ addTab() {
564
+ this.tabsComponent.addTab({
565
+ tabLabel: this.tabLabel(),
566
+ tabName: this.tabName(),
567
+ iconLeft: this.iconLeft(),
568
+ iconRight: this.iconRight(),
569
+ disabled: this.disabled(),
570
+ contentTemplateRef: this.template,
571
+ canLeave: this.canLeave(),
572
+ linkUrl: this.linkUrl(),
573
+ order: this.order(),
574
+ skeletonTheme: this.skeletonTheme(),
575
+ isSkeletonAiTheme: this.isSkeletonAiTheme(),
576
+ isLabelLoading: this.isLabelLoading()
577
+ });
578
+ }
579
+ static {
580
+ this.ɵfac = i0.ɵɵngDeclareFactory({
581
+ minVersion: "12.0.0",
582
+ version: "22.2.4",
583
+ ngImport: i0,
584
+ type: TabDirective,
585
+ deps: [],
586
+ target: i0.ɵɵFactoryTarget.Directive
587
+ });
588
+ }
589
+ static {
590
+ this.ɵdir = i0.ɵɵngDeclareDirective({
591
+ minVersion: "17.1.0",
592
+ version: "22.2.4",
593
+ type: TabDirective,
594
+ isStandalone: true,
595
+ selector: "ng-template[uiTab]",
596
+ inputs: {
597
+ tabLabel: {
598
+ classPropertyName: "tabLabel",
599
+ publicName: "tabLabel",
600
+ isSignal: true,
601
+ isRequired: true,
602
+ transformFunction: null
603
+ },
604
+ tabName: {
605
+ classPropertyName: "tabName",
606
+ publicName: "tabName",
607
+ isSignal: true,
608
+ isRequired: true,
609
+ transformFunction: null
610
+ },
611
+ iconLeft: {
612
+ classPropertyName: "iconLeft",
613
+ publicName: "iconLeft",
614
+ isSignal: true,
615
+ isRequired: false,
616
+ transformFunction: null
617
+ },
618
+ iconRight: {
619
+ classPropertyName: "iconRight",
620
+ publicName: "iconRight",
621
+ isSignal: true,
622
+ isRequired: false,
623
+ transformFunction: null
624
+ },
625
+ disabled: {
626
+ classPropertyName: "disabled",
627
+ publicName: "disabled",
628
+ isSignal: true,
629
+ isRequired: false,
630
+ transformFunction: null
631
+ },
632
+ canLeave: {
633
+ classPropertyName: "canLeave",
634
+ publicName: "canLeave",
635
+ isSignal: true,
636
+ isRequired: false,
637
+ transformFunction: null
638
+ },
639
+ linkUrl: {
640
+ classPropertyName: "linkUrl",
641
+ publicName: "linkUrl",
642
+ isSignal: true,
643
+ isRequired: false,
644
+ transformFunction: null
645
+ },
646
+ order: {
647
+ classPropertyName: "order",
648
+ publicName: "order",
649
+ isSignal: true,
650
+ isRequired: false,
651
+ transformFunction: null
652
+ },
653
+ skeletonTheme: {
654
+ classPropertyName: "skeletonTheme",
655
+ publicName: "skeletonTheme",
656
+ isSignal: true,
657
+ isRequired: false,
658
+ transformFunction: null
659
+ },
660
+ isSkeletonAiTheme: {
661
+ classPropertyName: "isSkeletonAiTheme",
662
+ publicName: "isSkeletonAiTheme",
663
+ isSignal: true,
664
+ isRequired: false,
665
+ transformFunction: null
666
+ },
667
+ isLabelLoading: {
668
+ classPropertyName: "isLabelLoading",
669
+ publicName: "isLabelLoading",
670
+ isSignal: true,
671
+ isRequired: false,
672
+ transformFunction: null
673
+ }
674
+ },
675
+ ngImport: i0
676
+ });
677
+ }
678
+ };
679
+ i0.ɵɵngDeclareClassMetadata({
680
+ minVersion: "12.0.0",
681
+ version: "22.2.4",
682
+ ngImport: i0,
683
+ type: TabDirective,
684
+ decorators: [{
685
+ type: Directive,
686
+ args: [{
687
+ standalone: true,
688
+ selector: "ng-template[uiTab]"
689
+ }]
690
+ }],
691
+ propDecorators: {
692
+ tabLabel: [{
693
+ type: i0.Input,
694
+ args: [{
695
+ isSignal: true,
696
+ alias: "tabLabel",
697
+ required: true
698
+ }]
699
+ }],
700
+ tabName: [{
701
+ type: i0.Input,
702
+ args: [{
703
+ isSignal: true,
704
+ alias: "tabName",
705
+ required: true
706
+ }]
707
+ }],
708
+ iconLeft: [{
709
+ type: i0.Input,
710
+ args: [{
711
+ isSignal: true,
712
+ alias: "iconLeft",
713
+ required: false
714
+ }]
715
+ }],
716
+ iconRight: [{
717
+ type: i0.Input,
718
+ args: [{
719
+ isSignal: true,
720
+ alias: "iconRight",
721
+ required: false
722
+ }]
723
+ }],
724
+ disabled: [{
725
+ type: i0.Input,
726
+ args: [{
727
+ isSignal: true,
728
+ alias: "disabled",
729
+ required: false
730
+ }]
731
+ }],
732
+ canLeave: [{
733
+ type: i0.Input,
734
+ args: [{
735
+ isSignal: true,
736
+ alias: "canLeave",
737
+ required: false
738
+ }]
739
+ }],
740
+ linkUrl: [{
741
+ type: i0.Input,
742
+ args: [{
743
+ isSignal: true,
744
+ alias: "linkUrl",
745
+ required: false
746
+ }]
747
+ }],
748
+ order: [{
749
+ type: i0.Input,
750
+ args: [{
751
+ isSignal: true,
752
+ alias: "order",
753
+ required: false
754
+ }]
755
+ }],
756
+ skeletonTheme: [{
757
+ type: i0.Input,
758
+ args: [{
759
+ isSignal: true,
760
+ alias: "skeletonTheme",
761
+ required: false
762
+ }]
763
+ }],
764
+ isSkeletonAiTheme: [{
765
+ type: i0.Input,
766
+ args: [{
767
+ isSignal: true,
768
+ alias: "isSkeletonAiTheme",
769
+ required: false
770
+ }]
771
+ }],
772
+ isLabelLoading: [{
773
+ type: i0.Input,
774
+ args: [{
775
+ isSignal: true,
776
+ alias: "isLabelLoading",
777
+ required: false
778
+ }]
779
+ }]
780
+ }
781
+ });
782
+ var TabsComponentModule = class TabsComponentModule {
783
+ static {
784
+ this.ɵfac = i0.ɵɵngDeclareFactory({
785
+ minVersion: "12.0.0",
786
+ version: "22.2.4",
787
+ ngImport: i0,
788
+ type: TabsComponentModule,
789
+ deps: [],
790
+ target: i0.ɵɵFactoryTarget.NgModule
791
+ });
792
+ }
793
+ static {
794
+ this.ɵmod = i0.ɵɵngDeclareNgModule({
795
+ minVersion: "14.0.0",
796
+ version: "22.2.4",
797
+ ngImport: i0,
798
+ type: TabsComponentModule,
799
+ imports: [
800
+ TabDirective,
801
+ CommonModule,
802
+ MatTabsModule,
803
+ IconComponentModule,
804
+ UiTranslatePipe,
805
+ SkeletonComponent,
806
+ TabsComponent
807
+ ],
808
+ exports: [TabsComponent, TabDirective]
809
+ });
810
+ }
811
+ static {
812
+ this.ɵinj = i0.ɵɵngDeclareInjector({
813
+ minVersion: "12.0.0",
814
+ version: "22.2.4",
815
+ ngImport: i0,
816
+ type: TabsComponentModule,
817
+ imports: [
818
+ CommonModule,
819
+ MatTabsModule,
820
+ IconComponentModule,
821
+ SkeletonComponent,
822
+ TabsComponent
823
+ ]
824
+ });
825
+ }
826
+ };
827
+ i0.ɵɵngDeclareClassMetadata({
828
+ minVersion: "12.0.0",
829
+ version: "22.2.4",
830
+ ngImport: i0,
831
+ type: TabsComponentModule,
832
+ decorators: [{
833
+ type: NgModule,
834
+ args: [{
835
+ imports: [
836
+ TabDirective,
837
+ CommonModule,
838
+ MatTabsModule,
839
+ IconComponentModule,
840
+ UiTranslatePipe,
841
+ SkeletonComponent,
842
+ TabsComponent
843
+ ],
844
+ exports: [TabsComponent, TabDirective]
845
+ }]
846
+ }]
847
+ });
440
848
  export { TAB_HEADER_SIZE, TabDirective, TabsComponent, TabsComponentModule };
441
- //# sourceMappingURL=testgorilla-tgo-ui-components-tabs.mjs.map
849
+
850
+ //# sourceMappingURL=testgorilla-tgo-ui-components-tabs.mjs.map