@testgorilla/tgo-ui 11.22.2 → 12.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (227) 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 -1789
  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/assets/icons/rebrand/Sequences-filled.svg +3 -0
  152. package/projects/tgo-canopy-ui/assets/icons/rebrand/Sequences-in-line.svg +3 -0
  153. package/projects/tgo-canopy-ui/theme/_palette.scss +23 -18
  154. package/types/testgorilla-tgo-ui-components-accordion.d.ts +214 -158
  155. package/types/testgorilla-tgo-ui-components-ai-audio-circle.d.ts +93 -69
  156. package/types/testgorilla-tgo-ui-components-ai-caveat.d.ts +37 -34
  157. package/types/testgorilla-tgo-ui-components-ai-feedback.d.ts +126 -86
  158. package/types/testgorilla-tgo-ui-components-alert-banner.d.ts +260 -185
  159. package/types/testgorilla-tgo-ui-components-audio-waveform.d.ts +96 -67
  160. package/types/testgorilla-tgo-ui-components-autocomplete-v2.d.ts +455 -256
  161. package/types/testgorilla-tgo-ui-components-autocomplete.d.ts +545 -390
  162. package/types/testgorilla-tgo-ui-components-avatar.d.ts +128 -102
  163. package/types/testgorilla-tgo-ui-components-badge.d.ts +191 -139
  164. package/types/testgorilla-tgo-ui-components-breadcrumb.d.ts +100 -62
  165. package/types/testgorilla-tgo-ui-components-button.d.ts +479 -340
  166. package/types/testgorilla-tgo-ui-components-card.d.ts +153 -114
  167. package/types/testgorilla-tgo-ui-components-checkbox.d.ts +299 -223
  168. package/types/testgorilla-tgo-ui-components-checklist.d.ts +149 -97
  169. package/types/testgorilla-tgo-ui-components-core.d.ts +307 -295
  170. package/types/testgorilla-tgo-ui-components-datepicker.d.ts +404 -299
  171. package/types/testgorilla-tgo-ui-components-device-control.d.ts +151 -81
  172. package/types/testgorilla-tgo-ui-components-dialog.d.ts +442 -329
  173. package/types/testgorilla-tgo-ui-components-divider.d.ts +64 -51
  174. package/types/testgorilla-tgo-ui-components-donut-chart.d.ts +41 -37
  175. package/types/testgorilla-tgo-ui-components-dropdown.d.ts +335 -241
  176. package/types/testgorilla-tgo-ui-components-elevation-shadow.d.ts +48 -43
  177. package/types/testgorilla-tgo-ui-components-empty-state.d.ts +317 -215
  178. package/types/testgorilla-tgo-ui-components-field.d.ts +559 -388
  179. package/types/testgorilla-tgo-ui-components-file-upload.d.ts +230 -168
  180. package/types/testgorilla-tgo-ui-components-filter-button.d.ts +263 -206
  181. package/types/testgorilla-tgo-ui-components-gaussian-chart.d.ts +107 -94
  182. package/types/testgorilla-tgo-ui-components-icon-label.d.ts +84 -61
  183. package/types/testgorilla-tgo-ui-components-icon.d.ts +137 -110
  184. package/types/testgorilla-tgo-ui-components-infinite-scroll-table.d.ts +429 -303
  185. package/types/testgorilla-tgo-ui-components-inline-field.d.ts +338 -254
  186. package/types/testgorilla-tgo-ui-components-logo.d.ts +119 -101
  187. package/types/testgorilla-tgo-ui-components-media-card.d.ts +51 -35
  188. package/types/testgorilla-tgo-ui-components-media-dialog.d.ts +40 -45
  189. package/types/testgorilla-tgo-ui-components-multi-input.d.ts +283 -194
  190. package/types/testgorilla-tgo-ui-components-navbar.d.ts +326 -208
  191. package/types/testgorilla-tgo-ui-components-overflow-menu.d.ts +276 -204
  192. package/types/testgorilla-tgo-ui-components-page-header.d.ts +67 -50
  193. package/types/testgorilla-tgo-ui-components-paginator.d.ts +103 -70
  194. package/types/testgorilla-tgo-ui-components-password-criteria.d.ts +67 -58
  195. package/types/testgorilla-tgo-ui-components-password-strength.d.ts +66 -57
  196. package/types/testgorilla-tgo-ui-components-phone-input.d.ts +217 -175
  197. package/types/testgorilla-tgo-ui-components-popover.d.ts +94 -53
  198. package/types/testgorilla-tgo-ui-components-popup-tip.d.ts +81 -44
  199. package/types/testgorilla-tgo-ui-components-progress-bar.d.ts +115 -84
  200. package/types/testgorilla-tgo-ui-components-prompt.d.ts +315 -219
  201. package/types/testgorilla-tgo-ui-components-radial-progress.d.ts +146 -107
  202. package/types/testgorilla-tgo-ui-components-radio-button.d.ts +296 -219
  203. package/types/testgorilla-tgo-ui-components-rating.d.ts +134 -95
  204. package/types/testgorilla-tgo-ui-components-scale-table.d.ts +67 -47
  205. package/types/testgorilla-tgo-ui-components-scale.d.ts +91 -66
  206. package/types/testgorilla-tgo-ui-components-segmented-bar.d.ts +118 -89
  207. package/types/testgorilla-tgo-ui-components-segmented-button.d.ts +107 -80
  208. package/types/testgorilla-tgo-ui-components-segmented-toggle.d.ts +138 -105
  209. package/types/testgorilla-tgo-ui-components-selectable-card.d.ts +90 -56
  210. package/types/testgorilla-tgo-ui-components-side-navigation.d.ts +183 -107
  211. package/types/testgorilla-tgo-ui-components-side-panel.d.ts +156 -145
  212. package/types/testgorilla-tgo-ui-components-side-sheet.d.ts +98 -89
  213. package/types/testgorilla-tgo-ui-components-skeleton.d.ts +50 -33
  214. package/types/testgorilla-tgo-ui-components-slider.d.ts +278 -198
  215. package/types/testgorilla-tgo-ui-components-snackbar.d.ts +211 -159
  216. package/types/testgorilla-tgo-ui-components-spider-chart.d.ts +140 -121
  217. package/types/testgorilla-tgo-ui-components-spinner.d.ts +93 -72
  218. package/types/testgorilla-tgo-ui-components-stepper.d.ts +480 -338
  219. package/types/testgorilla-tgo-ui-components-table.d.ts +280 -233
  220. package/types/testgorilla-tgo-ui-components-tabs.d.ts +282 -183
  221. package/types/testgorilla-tgo-ui-components-tag.d.ts +266 -193
  222. package/types/testgorilla-tgo-ui-components-toggle.d.ts +180 -132
  223. package/types/testgorilla-tgo-ui-components-tooltip.d.ts +142 -105
  224. package/types/testgorilla-tgo-ui-components-universal-skills.d.ts +165 -144
  225. package/types/testgorilla-tgo-ui-components-validation-error.d.ts +70 -51
  226. package/types/testgorilla-tgo-ui-components-write-with-ai.d.ts +210 -133
  227. package/types/testgorilla-tgo-ui.d.ts +52 -45
@@ -1,262 +1,554 @@
1
- import { AsyncPipe, CommonModule } from '@angular/common';
2
- import * as i0 from '@angular/core';
3
- import { input, computed, EventEmitter, signal, effect, afterNextRender, ViewChild, Output, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
4
- import { MatTooltip, MatTooltipModule } from '@angular/material/tooltip';
5
- import * as i1 from '@testgorilla/tgo-ui/components/button';
6
- import { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';
7
- import { UiTranslatePipe, TruncatePipe } from '@testgorilla/tgo-ui/components/core';
8
- import * as i3 from '@testgorilla/tgo-ui/components/icon';
9
- import { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';
10
- import * as i2 from '@testgorilla/tgo-ui/components/overflow-menu';
11
- import { OverflowMenuComponentModule } from '@testgorilla/tgo-ui/components/overflow-menu';
12
- import { SkeletonComponent } from '@testgorilla/tgo-ui/components/skeleton';
13
-
14
- class BreadcrumbComponent {
15
- itemTestId(value) {
16
- const testId = this.testId();
17
- return testId ? `${testId}-item-${value}` : null;
18
- }
19
- constructor(parentInjector) {
20
- this.parentInjector = parentInjector;
21
- this.size = input('large', ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
22
- this.items = input([], ...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
23
- this.applicationTheme = input('light', ...(ngDevMode ? [{ debugName: "applicationTheme" }] : /* istanbul ignore next */ []));
24
- this.includeBackButton = input(false, ...(ngDevMode ? [{ debugName: "includeBackButton" }] : /* istanbul ignore next */ []));
25
- this.isLoading = input(false, ...(ngDevMode ? [{ debugName: "isLoading" }] : /* istanbul ignore next */ []));
26
- this.numberOfLoadingItems = input(3, ...(ngDevMode ? [{ debugName: "numberOfLoadingItems" }] : /* istanbul ignore next */ []));
27
- this.maxItemLength = input(18, ...(ngDevMode ? [{ debugName: "maxItemLength" }] : /* istanbul ignore next */ []));
28
- this.testId = input(null, ...(ngDevMode ? [{ debugName: "testId" }] : /* istanbul ignore next */ []));
29
- this.backButtonTestId = computed(() => (this.testId() ? `${this.testId()}-back` : null), ...(ngDevMode ? [{ debugName: "backButtonTestId" }] : /* istanbul ignore next */ []));
30
- this.selectItem = new EventEmitter();
31
- this.backButtonClickEvent = new EventEmitter();
32
- this.loadingItems = computed(() => new Array(this.numberOfLoadingItems()), ...(ngDevMode ? [{ debugName: "loadingItems" }] : /* istanbul ignore next */ []));
33
- this.isOverflowing = signal(false, ...(ngDevMode ? [{ debugName: "isOverflowing" }] : /* istanbul ignore next */ []));
34
- this.visibleItems = signal([], ...(ngDevMode ? [{ debugName: "visibleItems" }] : /* istanbul ignore next */ []));
35
- this.overflowItems = signal([], ...(ngDevMode ? [{ debugName: "overflowItems" }] : /* istanbul ignore next */ []));
36
- this.overflowButtonItems = computed(() => this.overflowItems().map(item => ({
37
- label: item.label,
38
- value: item.value,
39
- })), ...(ngDevMode ? [{ debugName: "overflowButtonItems" }] : /* istanbul ignore next */ []));
40
- this.shouldTruncateLastItem = signal(false, ...(ngDevMode ? [{ debugName: "shouldTruncateLastItem" }] : /* istanbul ignore next */ []));
41
- this.itemsInOverflow = 0;
42
- this.injector = parentInjector;
43
- // React to items changes and recalculate overflow
44
- effect(() => {
45
- this.items();
46
- this.itemsInOverflow = 0;
47
- // Only proceed if not in loading state
48
- if (!this.isLoading()) {
49
- // Use afterNextRender to ensure DOM is updated before calculating
50
- afterNextRender(() => {
51
- if (this.breadcrumbContainer?.nativeElement) {
52
- this.calculateItemDistribution();
53
- }
54
- }, { injector: this.injector });
55
- }
56
- });
57
- // React to loading state changes and setup ResizeObserver when loading changes from true to false
58
- effect(() => {
59
- const currentLoadingState = this.isLoading();
60
- if (this.previousLoadingState === true && currentLoadingState === false) {
61
- // Use afterNextRender to ensure DOM is ready before setting up observer
62
- afterNextRender(() => {
63
- this.setupResizeObserver();
64
- }, { injector: this.injector });
65
- }
66
- this.previousLoadingState = currentLoadingState;
67
- });
68
- }
69
- ngAfterViewInit() {
70
- this.calculateItemDistribution();
71
- this.setupResizeObserver();
72
- }
73
- ngOnDestroy() {
74
- this.resizeObserver?.disconnect();
75
- }
76
- calculateItemDistribution() {
77
- if (!this.breadcrumbContainer?.nativeElement || this.items().length === 0) {
78
- this.resetToAllVisible();
79
- return;
80
- }
81
- const element = this.breadcrumbContainer.nativeElement;
82
- const hasHorizontalOverflow = element.scrollWidth > element.clientWidth;
83
- if (hasHorizontalOverflow) {
84
- this.handleOverflow();
85
- }
86
- else if (this.itemsInOverflow > 0) {
87
- // Check if we can bring items back from overflow
88
- this.tryReduceOverflow();
89
- }
90
- else {
91
- this.resetToAllVisible();
92
- }
93
- }
94
- handleOverflow() {
95
- this.itemsInOverflow = Math.min(this.itemsInOverflow + 1, this.items().length - 1);
96
- this.updateItemArrays();
97
- this.isOverflowing.set(true);
98
- // Wait for DOM to render the updated template after hiding items
99
- // We need to measure dimensions AFTER the DOM has been updated with the new visible items
100
- setTimeout(() => {
101
- if (this.breadcrumbContainer?.nativeElement) {
102
- const element = this.breadcrumbContainer.nativeElement;
103
- const stillOverflowing = element.scrollWidth > element.clientWidth;
104
- if (stillOverflowing && this.itemsInOverflow < this.items().length - 1) {
105
- this.handleOverflow();
106
- }
107
- else if (stillOverflowing && this.itemsInOverflow === this.items().length - 1) {
108
- this.shouldTruncateLastItem.set(true);
109
- }
110
- }
111
- }, 0);
112
- }
113
- tryReduceOverflow() {
114
- const testItemsInOverflow = this.itemsInOverflow - 1;
115
- if (testItemsInOverflow >= 0) {
116
- const testVisibleItems = this.items().slice(testItemsInOverflow);
117
- const testOverflowItems = testItemsInOverflow > 0 ? this.items().slice(0, testItemsInOverflow) : [];
118
- this.visibleItems.set(testVisibleItems);
119
- this.overflowItems.set(testOverflowItems);
120
- // Always reset truncation when trying to reduce overflow
121
- this.shouldTruncateLastItem.set(false);
122
- // Wait for DOM to render with test configuration before measuring
123
- setTimeout(() => {
124
- if (this.breadcrumbContainer?.nativeElement) {
125
- const element = this.breadcrumbContainer.nativeElement;
126
- const hasOverflow = element.scrollWidth > element.clientWidth;
127
- if (!hasOverflow) {
128
- // It fits! Update the counter
129
- this.itemsInOverflow = testItemsInOverflow;
130
- this.isOverflowing.set(this.itemsInOverflow > 0);
131
- // Try to reduce more if there are still items in overflow
132
- if (this.itemsInOverflow > 0) {
133
- // Schedule next reduction attempt after current render cycle
134
- setTimeout(() => this.tryReduceOverflow(), 0);
135
- }
136
- }
137
- else {
138
- // Doesn't fit, revert to previous state
139
- this.updateItemArrays();
140
- // Wait for DOM to render reverted state before checking truncation
141
- setTimeout(() => {
142
- if (this.breadcrumbContainer?.nativeElement) {
143
- const containerElement = this.breadcrumbContainer.nativeElement;
144
- const stillOverflowing = containerElement.scrollWidth > containerElement.clientWidth;
145
- if (stillOverflowing && this.itemsInOverflow === this.items().length - 1) {
146
- this.shouldTruncateLastItem.set(true);
147
- }
148
- }
149
- }, 0);
150
- }
151
- }
152
- }, 0);
153
- }
154
- else {
155
- // testItemsInOverflow < 0, means we're trying to show all items
156
- this.resetToAllVisible();
157
- // Wait for DOM to render all items before measuring overflow
158
- setTimeout(() => {
159
- if (this.breadcrumbContainer?.nativeElement) {
160
- const element = this.breadcrumbContainer.nativeElement;
161
- const hasOverflow = element.scrollWidth > element.clientWidth;
162
- if (hasOverflow) {
163
- // Still overflows with all items, need to go back to overflow state
164
- this.itemsInOverflow = 1; // Start with minimal overflow
165
- this.handleOverflow();
166
- }
167
- }
168
- }, 0);
169
- }
170
- }
171
- updateItemArrays() {
172
- if (this.itemsInOverflow > 0) {
173
- this.overflowItems.set(this.items().slice(0, this.itemsInOverflow));
174
- this.visibleItems.set(this.items().slice(this.itemsInOverflow));
175
- }
176
- else {
177
- this.resetToAllVisible();
178
- }
179
- }
180
- resetToAllVisible() {
181
- this.visibleItems.set(this.items());
182
- this.overflowItems.set([]);
183
- this.isOverflowing.set(false);
184
- this.shouldTruncateLastItem.set(false);
185
- this.itemsInOverflow = 0;
186
- }
187
- setupResizeObserver() {
188
- if (!this.breadcrumbContainer?.nativeElement) {
189
- return;
190
- }
191
- this.resizeObserver = new ResizeObserver(() => {
192
- this.calculateItemDistribution();
193
- });
194
- this.resizeObserver.observe(this.breadcrumbContainer.nativeElement);
195
- }
196
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: BreadcrumbComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
197
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.25", type: BreadcrumbComponent, isStandalone: true, selector: "ui-breadcrumb", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, applicationTheme: { classPropertyName: "applicationTheme", publicName: "applicationTheme", isSignal: true, isRequired: false, transformFunction: null }, includeBackButton: { classPropertyName: "includeBackButton", publicName: "includeBackButton", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, numberOfLoadingItems: { classPropertyName: "numberOfLoadingItems", publicName: "numberOfLoadingItems", isSignal: true, isRequired: false, transformFunction: null }, maxItemLength: { classPropertyName: "maxItemLength", publicName: "maxItemLength", isSignal: true, isRequired: false, transformFunction: null }, testId: { classPropertyName: "testId", publicName: "testId", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectItem: "selectItem", backButtonClickEvent: "backButtonClickEvent" }, viewQueries: [{ propertyName: "breadcrumbContainer", first: true, predicate: ["breadcrumbContainer"], descendants: true }], ngImport: i0, template: "@if (!isLoading()) {\n <div\n class=\"breadcrumb\"\n [attr.theme]=\"applicationTheme()\"\n #breadcrumbContainer\n [class]=\"'breadcrumb-' + size()\"\n [attr.data-testid]=\"testId()\"\n >\n @if (includeBackButton()) {\n <ui-button\n [variant]=\"'icon-button'\"\n [tooltip]=\"('COMMON.BACK' | uiTranslate | async)!\"\n [iconName]=\"'Arrow-chevron-left-filled'\"\n [ariaLabel]=\"('COMMON.BACK' | uiTranslate | async)!\"\n [testId]=\"backButtonTestId()\"\n (buttonClickEvent)=\"backButtonClickEvent.emit($event)\"\n ></ui-button>\n }\n @if (isOverflowing()) {\n <ui-overflow-menu\n [applicationTheme]=\"applicationTheme()\"\n [contentTemplateRef]=\"overflowMenu\"\n [buttons]=\"overflowButtonItems()\"\n [matTooltip]=\"('COMMON.OPTIONS' | uiTranslate | async)!\"\n [matTooltipClass]=\"applicationTheme()\"\n [isDynamicMenu]=\"true\"\n (selectItem)=\"selectItem.emit($event)\"\n class=\"breadcrumb-overflow-menu\"\n ></ui-overflow-menu>\n <ui-icon name=\"Arrow-chevron-right-filled\" [applicationTheme]=\"applicationTheme()\" color=\"gray\"></ui-icon>\n }\n @for (item of visibleItems(); track item.value) {\n @if (!$last) {\n <span\n class=\"breadcrumb-item\"\n tabindex=\"0\"\n [matTooltip]=\"item.label.length > maxItemLength() ? item.label : ''\"\n [matTooltipClass]=\"applicationTheme()\"\n [attr.aria-label]=\"item.label\"\n [attr.data-testid]=\"itemTestId(item.value)\"\n (click)=\"selectItem.emit(item.value)\"\n (keydown.enter)=\"selectItem.emit(item.value)\"\n >\n {{ item.label | truncate: maxItemLength() : '...' }}\n </span>\n <ui-icon name=\"Arrow-chevron-right-filled\" [applicationTheme]=\"applicationTheme()\" color=\"gray\"></ui-icon>\n } @else {\n <strong\n class=\"breadcrumb-item-active\"\n tabindex=\"0\"\n [matTooltip]=\"shouldTruncateLastItem() ? item.label : ''\"\n [matTooltipClass]=\"applicationTheme()\"\n [class.breadcrumb-item-active-truncated]=\"shouldTruncateLastItem()\"\n [attr.aria-label]=\"item.label\"\n [attr.aria-current]=\"'page'\"\n [attr.data-testid]=\"itemTestId(item.value)\"\n (click)=\"selectItem.emit(item.value)\"\n (keydown.enter)=\"selectItem.emit(item.value)\"\n >\n {{ item.label }}\n </strong>\n }\n }\n </div>\n} @else {\n <div class=\"breadcrumb\">\n @for (i of loadingItems(); track $index) {\n <ui-skeleton count=\"1\" [theme]=\"{ width: '160px', margin: '10px 0 0' }\"></ui-skeleton>\n @if ($index !== numberOfLoadingItems() - 1) {\n <ui-icon name=\"Arrow-chevron-right-filled\" [applicationTheme]=\"applicationTheme()\" color=\"gray\"></ui-icon>\n }\n }\n </div>\n}\n<ng-template #overflowMenu>\n <div class=\"breadcrumb-item breadcrumb-overflow\" [class]=\"'breadcrumb-' + size()\">...</div>\n</ng-template>\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{min-width:0}:host .breadcrumb{display:flex;align-items:center;gap:4px;color:#666}:host .breadcrumb .breadcrumb-item{text-decoration:underline;cursor:pointer;transition:color .15s ease,transform .1s ease;white-space:nowrap}:host .breadcrumb .breadcrumb-item:hover{color:#919191}:host .breadcrumb .breadcrumb-item:active{transform:scale(.98);color:#919191}:host .breadcrumb .breadcrumb-item:focus-visible{outline:2px solid #242424;outline-offset:4px;border-radius:1px}:host .breadcrumb.breadcrumb-small{font-size:14px;line-height:22px}:host .breadcrumb.breadcrumb-medium{font-size:20px;line-height:26px}:host .breadcrumb.breadcrumb-large{font-size:32px;line-height:48px}:host .breadcrumb.breadcrumb-large .breadcrumb-item:focus-visible{outline-offset:8px}:host .breadcrumb.breadcrumb-large .breadcrumb-item-active{font-weight:900!important}:host .breadcrumb.breadcrumb-large .breadcrumb-item-active:focus-visible{outline-offset:8px}:host .breadcrumb .breadcrumb-item-active{color:#242424;white-space:nowrap}:host .breadcrumb .breadcrumb-item-active.breadcrumb-item-active-truncated{text-overflow:ellipsis;overflow:hidden}:host .breadcrumb .breadcrumb-item-active:focus-visible{outline:2px solid #242424;outline-offset:4px;border-radius:1px}:host .breadcrumb .breadcrumb-overflow-menu ::ng-deep .overflow-menu-container .mat-mdc-menu-trigger{min-width:0}:host .breadcrumb-overflow{cursor:pointer;color:#666}:host .breadcrumb-overflow:active{transform:scale(.98);color:#919191}:host .breadcrumb-overflow.breadcrumb-small{font-size:14px;line-height:22px}:host .breadcrumb-overflow.breadcrumb-medium{font-size:20px;line-height:26px}:host .breadcrumb-overflow.breadcrumb-large{font-size:32px;line-height:48px}\n"], dependencies: [{ kind: "ngmodule", type: ButtonComponentModule }, { kind: "component", type: i1.ButtonComponent, selector: "ui-button", inputs: ["size", "variant", "label", "iconPosition", "justIcon", "iconName", "trailingIconName", "trailingIconFilled", "disabled", "loading", "loadingWithLabel", "fullWidth", "url", "urlTarget", "value", "tooltip", "isPremium", "type", "companyColor", "buttonBadgeConfig", "applicationTheme", "disabledScaleOnClick", "ariaLabel", "ariaExpanded", "ariaControls", "ariaPressed", "ariaRequired", "ariaLabelledby", "ariaDescribedby", "preventDefault", "hasBackground", "tooltipPosition", "role", "iconFilled", "testId"], outputs: ["buttonClickEvent", "buttonHoverEvent"] }, { kind: "ngmodule", type: OverflowMenuComponentModule }, { kind: "component", type: i2.OverflowMenuComponent, selector: "ui-overflow-menu", inputs: ["buttons", "iconTrigger", "menuLabel", "applicationTheme", "ariaLabel", "testId", "ariaRequired", "describedby", "contentTemplateRef", "buttonVariant", "buttonSize", "menuConfig", "selectionMode", "menuAnchor", "shouldMatchAnchorWidth", "isDynamicMenu", "withRemovableOption"], outputs: ["selectItem", "menuOpened", "menuClosed"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: IconComponentModule }, { kind: "component", type: i3.IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color", "filled", "toggleIconStyle", "applicationTheme", "useFullIconName"] }, { kind: "component", type: SkeletonComponent, selector: "ui-skeleton", inputs: ["count", "theme", "appearance", "isAiTheme", "applicationTheme"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: UiTranslatePipe, name: "uiTranslate" }, { kind: "pipe", type: TruncatePipe, name: "truncate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
198
- }
199
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: BreadcrumbComponent, decorators: [{
200
- type: Component,
201
- args: [{ selector: 'ui-breadcrumb', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
202
- ButtonComponentModule,
203
- OverflowMenuComponentModule,
204
- MatTooltip,
205
- IconComponentModule,
206
- SkeletonComponent,
207
- AsyncPipe,
208
- UiTranslatePipe,
209
- TruncatePipe,
210
- ], template: "@if (!isLoading()) {\n <div\n class=\"breadcrumb\"\n [attr.theme]=\"applicationTheme()\"\n #breadcrumbContainer\n [class]=\"'breadcrumb-' + size()\"\n [attr.data-testid]=\"testId()\"\n >\n @if (includeBackButton()) {\n <ui-button\n [variant]=\"'icon-button'\"\n [tooltip]=\"('COMMON.BACK' | uiTranslate | async)!\"\n [iconName]=\"'Arrow-chevron-left-filled'\"\n [ariaLabel]=\"('COMMON.BACK' | uiTranslate | async)!\"\n [testId]=\"backButtonTestId()\"\n (buttonClickEvent)=\"backButtonClickEvent.emit($event)\"\n ></ui-button>\n }\n @if (isOverflowing()) {\n <ui-overflow-menu\n [applicationTheme]=\"applicationTheme()\"\n [contentTemplateRef]=\"overflowMenu\"\n [buttons]=\"overflowButtonItems()\"\n [matTooltip]=\"('COMMON.OPTIONS' | uiTranslate | async)!\"\n [matTooltipClass]=\"applicationTheme()\"\n [isDynamicMenu]=\"true\"\n (selectItem)=\"selectItem.emit($event)\"\n class=\"breadcrumb-overflow-menu\"\n ></ui-overflow-menu>\n <ui-icon name=\"Arrow-chevron-right-filled\" [applicationTheme]=\"applicationTheme()\" color=\"gray\"></ui-icon>\n }\n @for (item of visibleItems(); track item.value) {\n @if (!$last) {\n <span\n class=\"breadcrumb-item\"\n tabindex=\"0\"\n [matTooltip]=\"item.label.length > maxItemLength() ? item.label : ''\"\n [matTooltipClass]=\"applicationTheme()\"\n [attr.aria-label]=\"item.label\"\n [attr.data-testid]=\"itemTestId(item.value)\"\n (click)=\"selectItem.emit(item.value)\"\n (keydown.enter)=\"selectItem.emit(item.value)\"\n >\n {{ item.label | truncate: maxItemLength() : '...' }}\n </span>\n <ui-icon name=\"Arrow-chevron-right-filled\" [applicationTheme]=\"applicationTheme()\" color=\"gray\"></ui-icon>\n } @else {\n <strong\n class=\"breadcrumb-item-active\"\n tabindex=\"0\"\n [matTooltip]=\"shouldTruncateLastItem() ? item.label : ''\"\n [matTooltipClass]=\"applicationTheme()\"\n [class.breadcrumb-item-active-truncated]=\"shouldTruncateLastItem()\"\n [attr.aria-label]=\"item.label\"\n [attr.aria-current]=\"'page'\"\n [attr.data-testid]=\"itemTestId(item.value)\"\n (click)=\"selectItem.emit(item.value)\"\n (keydown.enter)=\"selectItem.emit(item.value)\"\n >\n {{ item.label }}\n </strong>\n }\n }\n </div>\n} @else {\n <div class=\"breadcrumb\">\n @for (i of loadingItems(); track $index) {\n <ui-skeleton count=\"1\" [theme]=\"{ width: '160px', margin: '10px 0 0' }\"></ui-skeleton>\n @if ($index !== numberOfLoadingItems() - 1) {\n <ui-icon name=\"Arrow-chevron-right-filled\" [applicationTheme]=\"applicationTheme()\" color=\"gray\"></ui-icon>\n }\n }\n </div>\n}\n<ng-template #overflowMenu>\n <div class=\"breadcrumb-item breadcrumb-overflow\" [class]=\"'breadcrumb-' + size()\">...</div>\n</ng-template>\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{min-width:0}:host .breadcrumb{display:flex;align-items:center;gap:4px;color:#666}:host .breadcrumb .breadcrumb-item{text-decoration:underline;cursor:pointer;transition:color .15s ease,transform .1s ease;white-space:nowrap}:host .breadcrumb .breadcrumb-item:hover{color:#919191}:host .breadcrumb .breadcrumb-item:active{transform:scale(.98);color:#919191}:host .breadcrumb .breadcrumb-item:focus-visible{outline:2px solid #242424;outline-offset:4px;border-radius:1px}:host .breadcrumb.breadcrumb-small{font-size:14px;line-height:22px}:host .breadcrumb.breadcrumb-medium{font-size:20px;line-height:26px}:host .breadcrumb.breadcrumb-large{font-size:32px;line-height:48px}:host .breadcrumb.breadcrumb-large .breadcrumb-item:focus-visible{outline-offset:8px}:host .breadcrumb.breadcrumb-large .breadcrumb-item-active{font-weight:900!important}:host .breadcrumb.breadcrumb-large .breadcrumb-item-active:focus-visible{outline-offset:8px}:host .breadcrumb .breadcrumb-item-active{color:#242424;white-space:nowrap}:host .breadcrumb .breadcrumb-item-active.breadcrumb-item-active-truncated{text-overflow:ellipsis;overflow:hidden}:host .breadcrumb .breadcrumb-item-active:focus-visible{outline:2px solid #242424;outline-offset:4px;border-radius:1px}:host .breadcrumb .breadcrumb-overflow-menu ::ng-deep .overflow-menu-container .mat-mdc-menu-trigger{min-width:0}:host .breadcrumb-overflow{cursor:pointer;color:#666}:host .breadcrumb-overflow:active{transform:scale(.98);color:#919191}:host .breadcrumb-overflow.breadcrumb-small{font-size:14px;line-height:22px}:host .breadcrumb-overflow.breadcrumb-medium{font-size:20px;line-height:26px}:host .breadcrumb-overflow.breadcrumb-large{font-size:32px;line-height:48px}\n"] }]
211
- }], ctorParameters: () => [{ type: i0.Injector }], propDecorators: { size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], applicationTheme: [{ type: i0.Input, args: [{ isSignal: true, alias: "applicationTheme", required: false }] }], includeBackButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "includeBackButton", required: false }] }], isLoading: [{ type: i0.Input, args: [{ isSignal: true, alias: "isLoading", required: false }] }], numberOfLoadingItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "numberOfLoadingItems", required: false }] }], maxItemLength: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxItemLength", required: false }] }], testId: [{ type: i0.Input, args: [{ isSignal: true, alias: "testId", required: false }] }], selectItem: [{
212
- type: Output
213
- }], backButtonClickEvent: [{
214
- type: Output
215
- }], breadcrumbContainer: [{
216
- type: ViewChild,
217
- args: ['breadcrumbContainer']
218
- }] } });
219
-
220
- class BreadcrumbComponentModule {
221
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: BreadcrumbComponentModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
222
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.25", ngImport: i0, type: BreadcrumbComponentModule, imports: [CommonModule,
223
- IconComponentModule,
224
- MatTooltipModule,
225
- OverflowMenuComponentModule,
226
- ButtonComponentModule,
227
- SkeletonComponent,
228
- UiTranslatePipe,
229
- TruncatePipe,
230
- BreadcrumbComponent], exports: [BreadcrumbComponent] }); }
231
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: BreadcrumbComponentModule, imports: [CommonModule,
232
- IconComponentModule,
233
- MatTooltipModule,
234
- OverflowMenuComponentModule,
235
- ButtonComponentModule,
236
- SkeletonComponent,
237
- BreadcrumbComponent] }); }
238
- }
239
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: BreadcrumbComponentModule, decorators: [{
240
- type: NgModule,
241
- args: [{
242
- imports: [
243
- CommonModule,
244
- IconComponentModule,
245
- MatTooltipModule,
246
- OverflowMenuComponentModule,
247
- ButtonComponentModule,
248
- SkeletonComponent,
249
- UiTranslatePipe,
250
- TruncatePipe,
251
- BreadcrumbComponent,
252
- ],
253
- exports: [BreadcrumbComponent],
254
- }]
255
- }] });
256
-
257
- /**
258
- * Generated bundle index. Do not edit.
259
- */
260
-
1
+ import { AsyncPipe, CommonModule } from "@angular/common";
2
+ import * as i0 from "@angular/core";
3
+ import { ChangeDetectionStrategy, Component, EventEmitter, NgModule, Output, ViewChild, afterNextRender, computed, effect, input, signal } from "@angular/core";
4
+ import { MatTooltip, MatTooltipModule } from "@angular/material/tooltip";
5
+ import * as i1 from "@testgorilla/tgo-ui/components/button";
6
+ import { ButtonComponentModule } from "@testgorilla/tgo-ui/components/button";
7
+ import { TruncatePipe, UiTranslatePipe } from "@testgorilla/tgo-ui/components/core";
8
+ import * as i3 from "@testgorilla/tgo-ui/components/icon";
9
+ import { IconComponentModule } from "@testgorilla/tgo-ui/components/icon";
10
+ import * as i2 from "@testgorilla/tgo-ui/components/overflow-menu";
11
+ import { OverflowMenuComponentModule } from "@testgorilla/tgo-ui/components/overflow-menu";
12
+ import { SkeletonComponent } from "@testgorilla/tgo-ui/components/skeleton";
13
+ var BreadcrumbComponent = class BreadcrumbComponent {
14
+ itemTestId(value) {
15
+ const testId = this.testId();
16
+ return testId ? `${testId}-item-${value}` : null;
17
+ }
18
+ constructor(parentInjector) {
19
+ this.parentInjector = parentInjector;
20
+ this.size = input("large", ...ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []);
21
+ this.items = input([], ...ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []);
22
+ this.applicationTheme = input("light", ...ngDevMode ? [{ debugName: "applicationTheme" }] : /* istanbul ignore next */ []);
23
+ this.includeBackButton = input(false, ...ngDevMode ? [{ debugName: "includeBackButton" }] : /* istanbul ignore next */ []);
24
+ this.isLoading = input(false, ...ngDevMode ? [{ debugName: "isLoading" }] : /* istanbul ignore next */ []);
25
+ this.numberOfLoadingItems = input(3, ...ngDevMode ? [{ debugName: "numberOfLoadingItems" }] : /* istanbul ignore next */ []);
26
+ this.maxItemLength = input(18, ...ngDevMode ? [{ debugName: "maxItemLength" }] : /* istanbul ignore next */ []);
27
+ this.testId = input(null, ...ngDevMode ? [{ debugName: "testId" }] : /* istanbul ignore next */ []);
28
+ this.backButtonTestId = computed(() => this.testId() ? `${this.testId()}-back` : null, ...ngDevMode ? [{ debugName: "backButtonTestId" }] : /* istanbul ignore next */ []);
29
+ this.selectItem = new EventEmitter();
30
+ this.backButtonClickEvent = new EventEmitter();
31
+ this.loadingItems = computed(() => new Array(this.numberOfLoadingItems()), ...ngDevMode ? [{ debugName: "loadingItems" }] : /* istanbul ignore next */ []);
32
+ this.isOverflowing = signal(false, ...ngDevMode ? [{ debugName: "isOverflowing" }] : /* istanbul ignore next */ []);
33
+ this.visibleItems = signal([], ...ngDevMode ? [{ debugName: "visibleItems" }] : /* istanbul ignore next */ []);
34
+ this.overflowItems = signal([], ...ngDevMode ? [{ debugName: "overflowItems" }] : /* istanbul ignore next */ []);
35
+ this.overflowButtonItems = computed(() => this.overflowItems().map((item) => ({
36
+ label: item.label,
37
+ value: item.value
38
+ })), ...ngDevMode ? [{ debugName: "overflowButtonItems" }] : /* istanbul ignore next */ []);
39
+ this.shouldTruncateLastItem = signal(false, ...ngDevMode ? [{ debugName: "shouldTruncateLastItem" }] : /* istanbul ignore next */ []);
40
+ this.itemsInOverflow = 0;
41
+ this.injector = parentInjector;
42
+ effect(() => {
43
+ this.items();
44
+ this.itemsInOverflow = 0;
45
+ if (!this.isLoading()) afterNextRender(() => {
46
+ if (this.breadcrumbContainer?.nativeElement) this.calculateItemDistribution();
47
+ }, { injector: this.injector });
48
+ });
49
+ effect(() => {
50
+ const currentLoadingState = this.isLoading();
51
+ if (this.previousLoadingState === true && currentLoadingState === false) afterNextRender(() => {
52
+ this.setupResizeObserver();
53
+ }, { injector: this.injector });
54
+ this.previousLoadingState = currentLoadingState;
55
+ });
56
+ }
57
+ ngAfterViewInit() {
58
+ this.calculateItemDistribution();
59
+ this.setupResizeObserver();
60
+ }
61
+ ngOnDestroy() {
62
+ this.resizeObserver?.disconnect();
63
+ }
64
+ calculateItemDistribution() {
65
+ if (!this.breadcrumbContainer?.nativeElement || this.items().length === 0) {
66
+ this.resetToAllVisible();
67
+ return;
68
+ }
69
+ const element = this.breadcrumbContainer.nativeElement;
70
+ if (element.scrollWidth > element.clientWidth) this.handleOverflow();
71
+ else if (this.itemsInOverflow > 0) this.tryReduceOverflow();
72
+ else this.resetToAllVisible();
73
+ }
74
+ handleOverflow() {
75
+ this.itemsInOverflow = Math.min(this.itemsInOverflow + 1, this.items().length - 1);
76
+ this.updateItemArrays();
77
+ this.isOverflowing.set(true);
78
+ setTimeout(() => {
79
+ if (this.breadcrumbContainer?.nativeElement) {
80
+ const element = this.breadcrumbContainer.nativeElement;
81
+ const stillOverflowing = element.scrollWidth > element.clientWidth;
82
+ if (stillOverflowing && this.itemsInOverflow < this.items().length - 1) this.handleOverflow();
83
+ else if (stillOverflowing && this.itemsInOverflow === this.items().length - 1) this.shouldTruncateLastItem.set(true);
84
+ }
85
+ }, 0);
86
+ }
87
+ tryReduceOverflow() {
88
+ const testItemsInOverflow = this.itemsInOverflow - 1;
89
+ if (testItemsInOverflow >= 0) {
90
+ const testVisibleItems = this.items().slice(testItemsInOverflow);
91
+ const testOverflowItems = testItemsInOverflow > 0 ? this.items().slice(0, testItemsInOverflow) : [];
92
+ this.visibleItems.set(testVisibleItems);
93
+ this.overflowItems.set(testOverflowItems);
94
+ this.shouldTruncateLastItem.set(false);
95
+ setTimeout(() => {
96
+ if (this.breadcrumbContainer?.nativeElement) {
97
+ const element = this.breadcrumbContainer.nativeElement;
98
+ if (!(element.scrollWidth > element.clientWidth)) {
99
+ this.itemsInOverflow = testItemsInOverflow;
100
+ this.isOverflowing.set(this.itemsInOverflow > 0);
101
+ if (this.itemsInOverflow > 0) setTimeout(() => this.tryReduceOverflow(), 0);
102
+ } else {
103
+ this.updateItemArrays();
104
+ setTimeout(() => {
105
+ if (this.breadcrumbContainer?.nativeElement) {
106
+ const containerElement = this.breadcrumbContainer.nativeElement;
107
+ if (containerElement.scrollWidth > containerElement.clientWidth && this.itemsInOverflow === this.items().length - 1) this.shouldTruncateLastItem.set(true);
108
+ }
109
+ }, 0);
110
+ }
111
+ }
112
+ }, 0);
113
+ } else {
114
+ this.resetToAllVisible();
115
+ setTimeout(() => {
116
+ if (this.breadcrumbContainer?.nativeElement) {
117
+ const element = this.breadcrumbContainer.nativeElement;
118
+ if (element.scrollWidth > element.clientWidth) {
119
+ this.itemsInOverflow = 1;
120
+ this.handleOverflow();
121
+ }
122
+ }
123
+ }, 0);
124
+ }
125
+ }
126
+ updateItemArrays() {
127
+ if (this.itemsInOverflow > 0) {
128
+ this.overflowItems.set(this.items().slice(0, this.itemsInOverflow));
129
+ this.visibleItems.set(this.items().slice(this.itemsInOverflow));
130
+ } else this.resetToAllVisible();
131
+ }
132
+ resetToAllVisible() {
133
+ this.visibleItems.set(this.items());
134
+ this.overflowItems.set([]);
135
+ this.isOverflowing.set(false);
136
+ this.shouldTruncateLastItem.set(false);
137
+ this.itemsInOverflow = 0;
138
+ }
139
+ setupResizeObserver() {
140
+ if (!this.breadcrumbContainer?.nativeElement) return;
141
+ this.resizeObserver = new ResizeObserver(() => {
142
+ this.calculateItemDistribution();
143
+ });
144
+ this.resizeObserver.observe(this.breadcrumbContainer.nativeElement);
145
+ }
146
+ static {
147
+ this.ɵfac = i0.ɵɵngDeclareFactory({
148
+ minVersion: "12.0.0",
149
+ version: "22.2.4",
150
+ ngImport: i0,
151
+ type: BreadcrumbComponent,
152
+ deps: [{ token: i0.Injector }],
153
+ target: i0.ɵɵFactoryTarget.Component
154
+ });
155
+ }
156
+ static {
157
+ this.ɵcmp = i0.ɵɵngDeclareComponent({
158
+ minVersion: "17.0.0",
159
+ version: "22.2.4",
160
+ type: BreadcrumbComponent,
161
+ isStandalone: true,
162
+ selector: "ui-breadcrumb",
163
+ inputs: {
164
+ size: {
165
+ classPropertyName: "size",
166
+ publicName: "size",
167
+ isSignal: true,
168
+ isRequired: false,
169
+ transformFunction: null
170
+ },
171
+ items: {
172
+ classPropertyName: "items",
173
+ publicName: "items",
174
+ isSignal: true,
175
+ isRequired: false,
176
+ transformFunction: null
177
+ },
178
+ applicationTheme: {
179
+ classPropertyName: "applicationTheme",
180
+ publicName: "applicationTheme",
181
+ isSignal: true,
182
+ isRequired: false,
183
+ transformFunction: null
184
+ },
185
+ includeBackButton: {
186
+ classPropertyName: "includeBackButton",
187
+ publicName: "includeBackButton",
188
+ isSignal: true,
189
+ isRequired: false,
190
+ transformFunction: null
191
+ },
192
+ isLoading: {
193
+ classPropertyName: "isLoading",
194
+ publicName: "isLoading",
195
+ isSignal: true,
196
+ isRequired: false,
197
+ transformFunction: null
198
+ },
199
+ numberOfLoadingItems: {
200
+ classPropertyName: "numberOfLoadingItems",
201
+ publicName: "numberOfLoadingItems",
202
+ isSignal: true,
203
+ isRequired: false,
204
+ transformFunction: null
205
+ },
206
+ maxItemLength: {
207
+ classPropertyName: "maxItemLength",
208
+ publicName: "maxItemLength",
209
+ isSignal: true,
210
+ isRequired: false,
211
+ transformFunction: null
212
+ },
213
+ testId: {
214
+ classPropertyName: "testId",
215
+ publicName: "testId",
216
+ isSignal: true,
217
+ isRequired: false,
218
+ transformFunction: null
219
+ }
220
+ },
221
+ outputs: {
222
+ selectItem: "selectItem",
223
+ backButtonClickEvent: "backButtonClickEvent"
224
+ },
225
+ viewQueries: [{
226
+ propertyName: "breadcrumbContainer",
227
+ first: true,
228
+ predicate: ["breadcrumbContainer"],
229
+ descendants: true
230
+ }],
231
+ ngImport: i0,
232
+ template: "@if (!isLoading()) {\n <div\n class=\"breadcrumb\"\n [attr.theme]=\"applicationTheme()\"\n #breadcrumbContainer\n [class]=\"'breadcrumb-' + size()\"\n [attr.data-testid]=\"testId()\"\n >\n @if (includeBackButton()) {\n <ui-button\n [variant]=\"'icon-button'\"\n [tooltip]=\"('COMMON.BACK' | uiTranslate | async)!\"\n [iconName]=\"'Arrow-chevron-left-filled'\"\n [ariaLabel]=\"('COMMON.BACK' | uiTranslate | async)!\"\n [testId]=\"backButtonTestId()\"\n (buttonClickEvent)=\"backButtonClickEvent.emit($event)\"\n ></ui-button>\n }\n @if (isOverflowing()) {\n <ui-overflow-menu\n [applicationTheme]=\"applicationTheme()\"\n [contentTemplateRef]=\"overflowMenu\"\n [buttons]=\"overflowButtonItems()\"\n [matTooltip]=\"('COMMON.OPTIONS' | uiTranslate | async)!\"\n [matTooltipClass]=\"applicationTheme()\"\n [isDynamicMenu]=\"true\"\n (selectItem)=\"selectItem.emit($event)\"\n class=\"breadcrumb-overflow-menu\"\n ></ui-overflow-menu>\n <ui-icon name=\"Arrow-chevron-right-filled\" [applicationTheme]=\"applicationTheme()\" color=\"gray\"></ui-icon>\n }\n @for (item of visibleItems(); track item.value) {\n @if (!$last) {\n <span\n class=\"breadcrumb-item\"\n tabindex=\"0\"\n [matTooltip]=\"item.label.length > maxItemLength() ? item.label : ''\"\n [matTooltipClass]=\"applicationTheme()\"\n [attr.aria-label]=\"item.label\"\n [attr.data-testid]=\"itemTestId(item.value)\"\n (click)=\"selectItem.emit(item.value)\"\n (keydown.enter)=\"selectItem.emit(item.value)\"\n >\n {{ item.label | truncate: maxItemLength() : '...' }}\n </span>\n <ui-icon name=\"Arrow-chevron-right-filled\" [applicationTheme]=\"applicationTheme()\" color=\"gray\"></ui-icon>\n } @else {\n <strong\n class=\"breadcrumb-item-active\"\n tabindex=\"0\"\n [matTooltip]=\"shouldTruncateLastItem() ? item.label : ''\"\n [matTooltipClass]=\"applicationTheme()\"\n [class.breadcrumb-item-active-truncated]=\"shouldTruncateLastItem()\"\n [attr.aria-label]=\"item.label\"\n [attr.aria-current]=\"'page'\"\n [attr.data-testid]=\"itemTestId(item.value)\"\n (click)=\"selectItem.emit(item.value)\"\n (keydown.enter)=\"selectItem.emit(item.value)\"\n >\n {{ item.label }}\n </strong>\n }\n }\n </div>\n} @else {\n <div class=\"breadcrumb\">\n @for (i of loadingItems(); track $index) {\n <ui-skeleton count=\"1\" [theme]=\"{ width: '160px', margin: '10px 0 0' }\"></ui-skeleton>\n @if ($index !== numberOfLoadingItems() - 1) {\n <ui-icon name=\"Arrow-chevron-right-filled\" [applicationTheme]=\"applicationTheme()\" color=\"gray\"></ui-icon>\n }\n }\n </div>\n}\n<ng-template #overflowMenu>\n <div class=\"breadcrumb-item breadcrumb-overflow\" [class]=\"'breadcrumb-' + size()\">...</div>\n</ng-template>\n",
233
+ 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{min-width:0}:host .breadcrumb{display:flex;align-items:center;gap:4px;color:#666}:host .breadcrumb .breadcrumb-item{text-decoration:underline;cursor:pointer;transition:color .15s ease,transform .1s ease;white-space:nowrap}:host .breadcrumb .breadcrumb-item:hover{color:#919191}:host .breadcrumb .breadcrumb-item:active{transform:scale(.98);color:#919191}:host .breadcrumb .breadcrumb-item:focus-visible{outline:2px solid #242424;outline-offset:4px;border-radius:1px}:host .breadcrumb.breadcrumb-small{font-size:14px;line-height:22px}:host .breadcrumb.breadcrumb-medium{font-size:20px;line-height:26px}:host .breadcrumb.breadcrumb-large{font-size:32px;line-height:48px}:host .breadcrumb.breadcrumb-large .breadcrumb-item:focus-visible{outline-offset:8px}:host .breadcrumb.breadcrumb-large .breadcrumb-item-active{font-weight:900!important}:host .breadcrumb.breadcrumb-large .breadcrumb-item-active:focus-visible{outline-offset:8px}:host .breadcrumb .breadcrumb-item-active{color:#242424;white-space:nowrap}:host .breadcrumb .breadcrumb-item-active.breadcrumb-item-active-truncated{text-overflow:ellipsis;overflow:hidden}:host .breadcrumb .breadcrumb-item-active:focus-visible{outline:2px solid #242424;outline-offset:4px;border-radius:1px}:host .breadcrumb .breadcrumb-overflow-menu ::ng-deep .overflow-menu-container .mat-mdc-menu-trigger{min-width:0}:host .breadcrumb-overflow{cursor:pointer;color:#666}:host .breadcrumb-overflow:active{transform:scale(.98);color:#919191}:host .breadcrumb-overflow.breadcrumb-small{font-size:14px;line-height:22px}:host .breadcrumb-overflow.breadcrumb-medium{font-size:20px;line-height:26px}:host .breadcrumb-overflow.breadcrumb-large{font-size:32px;line-height:48px}\n"],
234
+ dependencies: [
235
+ {
236
+ kind: "ngmodule",
237
+ type: ButtonComponentModule
238
+ },
239
+ {
240
+ kind: "component",
241
+ type: i1.ButtonComponent,
242
+ selector: "ui-button",
243
+ inputs: [
244
+ "size",
245
+ "variant",
246
+ "label",
247
+ "iconPosition",
248
+ "justIcon",
249
+ "iconName",
250
+ "trailingIconName",
251
+ "trailingIconFilled",
252
+ "disabled",
253
+ "loading",
254
+ "loadingWithLabel",
255
+ "fullWidth",
256
+ "url",
257
+ "urlTarget",
258
+ "value",
259
+ "tooltip",
260
+ "isPremium",
261
+ "type",
262
+ "companyColor",
263
+ "buttonBadgeConfig",
264
+ "applicationTheme",
265
+ "disabledScaleOnClick",
266
+ "ariaLabel",
267
+ "ariaExpanded",
268
+ "ariaControls",
269
+ "ariaPressed",
270
+ "ariaRequired",
271
+ "ariaLabelledby",
272
+ "ariaDescribedby",
273
+ "preventDefault",
274
+ "hasBackground",
275
+ "tooltipPosition",
276
+ "role",
277
+ "iconFilled",
278
+ "testId"
279
+ ],
280
+ outputs: ["buttonClickEvent", "buttonHoverEvent"]
281
+ },
282
+ {
283
+ kind: "ngmodule",
284
+ type: OverflowMenuComponentModule
285
+ },
286
+ {
287
+ kind: "component",
288
+ type: i2.OverflowMenuComponent,
289
+ selector: "ui-overflow-menu",
290
+ inputs: [
291
+ "buttons",
292
+ "iconTrigger",
293
+ "menuLabel",
294
+ "applicationTheme",
295
+ "ariaLabel",
296
+ "testId",
297
+ "ariaRequired",
298
+ "describedby",
299
+ "contentTemplateRef",
300
+ "buttonVariant",
301
+ "buttonSize",
302
+ "menuConfig",
303
+ "selectionMode",
304
+ "menuAnchor",
305
+ "shouldMatchAnchorWidth",
306
+ "isDynamicMenu",
307
+ "withRemovableOption"
308
+ ],
309
+ outputs: [
310
+ "selectItem",
311
+ "menuOpened",
312
+ "menuClosed"
313
+ ]
314
+ },
315
+ {
316
+ kind: "directive",
317
+ type: MatTooltip,
318
+ selector: "[matTooltip]",
319
+ inputs: [
320
+ "matTooltipPosition",
321
+ "matTooltipPositionAtOrigin",
322
+ "matTooltipDisabled",
323
+ "matTooltipShowDelay",
324
+ "matTooltipHideDelay",
325
+ "matTooltipTouchGestures",
326
+ "matTooltip",
327
+ "matTooltipClass"
328
+ ],
329
+ exportAs: ["matTooltip"]
330
+ },
331
+ {
332
+ kind: "ngmodule",
333
+ type: IconComponentModule
334
+ },
335
+ {
336
+ kind: "component",
337
+ type: i3.IconComponent,
338
+ selector: "ui-icon",
339
+ inputs: [
340
+ "size",
341
+ "cssClass",
342
+ "name",
343
+ "color",
344
+ "filled",
345
+ "toggleIconStyle",
346
+ "applicationTheme",
347
+ "useFullIconName"
348
+ ]
349
+ },
350
+ {
351
+ kind: "component",
352
+ type: SkeletonComponent,
353
+ selector: "ui-skeleton",
354
+ inputs: [
355
+ "count",
356
+ "theme",
357
+ "appearance",
358
+ "isAiTheme",
359
+ "applicationTheme"
360
+ ]
361
+ },
362
+ {
363
+ kind: "pipe",
364
+ type: AsyncPipe,
365
+ name: "async"
366
+ },
367
+ {
368
+ kind: "pipe",
369
+ type: UiTranslatePipe,
370
+ name: "uiTranslate"
371
+ },
372
+ {
373
+ kind: "pipe",
374
+ type: TruncatePipe,
375
+ name: "truncate"
376
+ }
377
+ ],
378
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
379
+ });
380
+ }
381
+ };
382
+ i0.ɵɵngDeclareClassMetadata({
383
+ minVersion: "12.0.0",
384
+ version: "22.2.4",
385
+ ngImport: i0,
386
+ type: BreadcrumbComponent,
387
+ decorators: [{
388
+ type: Component,
389
+ args: [{
390
+ selector: "ui-breadcrumb",
391
+ changeDetection: ChangeDetectionStrategy.OnPush,
392
+ imports: [
393
+ ButtonComponentModule,
394
+ OverflowMenuComponentModule,
395
+ MatTooltip,
396
+ IconComponentModule,
397
+ SkeletonComponent,
398
+ AsyncPipe,
399
+ UiTranslatePipe,
400
+ TruncatePipe
401
+ ],
402
+ template: "@if (!isLoading()) {\n <div\n class=\"breadcrumb\"\n [attr.theme]=\"applicationTheme()\"\n #breadcrumbContainer\n [class]=\"'breadcrumb-' + size()\"\n [attr.data-testid]=\"testId()\"\n >\n @if (includeBackButton()) {\n <ui-button\n [variant]=\"'icon-button'\"\n [tooltip]=\"('COMMON.BACK' | uiTranslate | async)!\"\n [iconName]=\"'Arrow-chevron-left-filled'\"\n [ariaLabel]=\"('COMMON.BACK' | uiTranslate | async)!\"\n [testId]=\"backButtonTestId()\"\n (buttonClickEvent)=\"backButtonClickEvent.emit($event)\"\n ></ui-button>\n }\n @if (isOverflowing()) {\n <ui-overflow-menu\n [applicationTheme]=\"applicationTheme()\"\n [contentTemplateRef]=\"overflowMenu\"\n [buttons]=\"overflowButtonItems()\"\n [matTooltip]=\"('COMMON.OPTIONS' | uiTranslate | async)!\"\n [matTooltipClass]=\"applicationTheme()\"\n [isDynamicMenu]=\"true\"\n (selectItem)=\"selectItem.emit($event)\"\n class=\"breadcrumb-overflow-menu\"\n ></ui-overflow-menu>\n <ui-icon name=\"Arrow-chevron-right-filled\" [applicationTheme]=\"applicationTheme()\" color=\"gray\"></ui-icon>\n }\n @for (item of visibleItems(); track item.value) {\n @if (!$last) {\n <span\n class=\"breadcrumb-item\"\n tabindex=\"0\"\n [matTooltip]=\"item.label.length > maxItemLength() ? item.label : ''\"\n [matTooltipClass]=\"applicationTheme()\"\n [attr.aria-label]=\"item.label\"\n [attr.data-testid]=\"itemTestId(item.value)\"\n (click)=\"selectItem.emit(item.value)\"\n (keydown.enter)=\"selectItem.emit(item.value)\"\n >\n {{ item.label | truncate: maxItemLength() : '...' }}\n </span>\n <ui-icon name=\"Arrow-chevron-right-filled\" [applicationTheme]=\"applicationTheme()\" color=\"gray\"></ui-icon>\n } @else {\n <strong\n class=\"breadcrumb-item-active\"\n tabindex=\"0\"\n [matTooltip]=\"shouldTruncateLastItem() ? item.label : ''\"\n [matTooltipClass]=\"applicationTheme()\"\n [class.breadcrumb-item-active-truncated]=\"shouldTruncateLastItem()\"\n [attr.aria-label]=\"item.label\"\n [attr.aria-current]=\"'page'\"\n [attr.data-testid]=\"itemTestId(item.value)\"\n (click)=\"selectItem.emit(item.value)\"\n (keydown.enter)=\"selectItem.emit(item.value)\"\n >\n {{ item.label }}\n </strong>\n }\n }\n </div>\n} @else {\n <div class=\"breadcrumb\">\n @for (i of loadingItems(); track $index) {\n <ui-skeleton count=\"1\" [theme]=\"{ width: '160px', margin: '10px 0 0' }\"></ui-skeleton>\n @if ($index !== numberOfLoadingItems() - 1) {\n <ui-icon name=\"Arrow-chevron-right-filled\" [applicationTheme]=\"applicationTheme()\" color=\"gray\"></ui-icon>\n }\n }\n </div>\n}\n<ng-template #overflowMenu>\n <div class=\"breadcrumb-item breadcrumb-overflow\" [class]=\"'breadcrumb-' + size()\">...</div>\n</ng-template>\n",
403
+ 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{min-width:0}:host .breadcrumb{display:flex;align-items:center;gap:4px;color:#666}:host .breadcrumb .breadcrumb-item{text-decoration:underline;cursor:pointer;transition:color .15s ease,transform .1s ease;white-space:nowrap}:host .breadcrumb .breadcrumb-item:hover{color:#919191}:host .breadcrumb .breadcrumb-item:active{transform:scale(.98);color:#919191}:host .breadcrumb .breadcrumb-item:focus-visible{outline:2px solid #242424;outline-offset:4px;border-radius:1px}:host .breadcrumb.breadcrumb-small{font-size:14px;line-height:22px}:host .breadcrumb.breadcrumb-medium{font-size:20px;line-height:26px}:host .breadcrumb.breadcrumb-large{font-size:32px;line-height:48px}:host .breadcrumb.breadcrumb-large .breadcrumb-item:focus-visible{outline-offset:8px}:host .breadcrumb.breadcrumb-large .breadcrumb-item-active{font-weight:900!important}:host .breadcrumb.breadcrumb-large .breadcrumb-item-active:focus-visible{outline-offset:8px}:host .breadcrumb .breadcrumb-item-active{color:#242424;white-space:nowrap}:host .breadcrumb .breadcrumb-item-active.breadcrumb-item-active-truncated{text-overflow:ellipsis;overflow:hidden}:host .breadcrumb .breadcrumb-item-active:focus-visible{outline:2px solid #242424;outline-offset:4px;border-radius:1px}:host .breadcrumb .breadcrumb-overflow-menu ::ng-deep .overflow-menu-container .mat-mdc-menu-trigger{min-width:0}:host .breadcrumb-overflow{cursor:pointer;color:#666}:host .breadcrumb-overflow:active{transform:scale(.98);color:#919191}:host .breadcrumb-overflow.breadcrumb-small{font-size:14px;line-height:22px}:host .breadcrumb-overflow.breadcrumb-medium{font-size:20px;line-height:26px}:host .breadcrumb-overflow.breadcrumb-large{font-size:32px;line-height:48px}\n"]
404
+ }]
405
+ }],
406
+ ctorParameters: () => [{ type: i0.Injector }],
407
+ propDecorators: {
408
+ size: [{
409
+ type: i0.Input,
410
+ args: [{
411
+ isSignal: true,
412
+ alias: "size",
413
+ required: false
414
+ }]
415
+ }],
416
+ items: [{
417
+ type: i0.Input,
418
+ args: [{
419
+ isSignal: true,
420
+ alias: "items",
421
+ required: false
422
+ }]
423
+ }],
424
+ applicationTheme: [{
425
+ type: i0.Input,
426
+ args: [{
427
+ isSignal: true,
428
+ alias: "applicationTheme",
429
+ required: false
430
+ }]
431
+ }],
432
+ includeBackButton: [{
433
+ type: i0.Input,
434
+ args: [{
435
+ isSignal: true,
436
+ alias: "includeBackButton",
437
+ required: false
438
+ }]
439
+ }],
440
+ isLoading: [{
441
+ type: i0.Input,
442
+ args: [{
443
+ isSignal: true,
444
+ alias: "isLoading",
445
+ required: false
446
+ }]
447
+ }],
448
+ numberOfLoadingItems: [{
449
+ type: i0.Input,
450
+ args: [{
451
+ isSignal: true,
452
+ alias: "numberOfLoadingItems",
453
+ required: false
454
+ }]
455
+ }],
456
+ maxItemLength: [{
457
+ type: i0.Input,
458
+ args: [{
459
+ isSignal: true,
460
+ alias: "maxItemLength",
461
+ required: false
462
+ }]
463
+ }],
464
+ testId: [{
465
+ type: i0.Input,
466
+ args: [{
467
+ isSignal: true,
468
+ alias: "testId",
469
+ required: false
470
+ }]
471
+ }],
472
+ selectItem: [{ type: Output }],
473
+ backButtonClickEvent: [{ type: Output }],
474
+ breadcrumbContainer: [{
475
+ type: ViewChild,
476
+ args: ["breadcrumbContainer"]
477
+ }]
478
+ }
479
+ });
480
+ var BreadcrumbComponentModule = class BreadcrumbComponentModule {
481
+ static {
482
+ this.ɵfac = i0.ɵɵngDeclareFactory({
483
+ minVersion: "12.0.0",
484
+ version: "22.2.4",
485
+ ngImport: i0,
486
+ type: BreadcrumbComponentModule,
487
+ deps: [],
488
+ target: i0.ɵɵFactoryTarget.NgModule
489
+ });
490
+ }
491
+ static {
492
+ this.ɵmod = i0.ɵɵngDeclareNgModule({
493
+ minVersion: "14.0.0",
494
+ version: "22.2.4",
495
+ ngImport: i0,
496
+ type: BreadcrumbComponentModule,
497
+ imports: [
498
+ CommonModule,
499
+ IconComponentModule,
500
+ MatTooltipModule,
501
+ OverflowMenuComponentModule,
502
+ ButtonComponentModule,
503
+ SkeletonComponent,
504
+ UiTranslatePipe,
505
+ TruncatePipe,
506
+ BreadcrumbComponent
507
+ ],
508
+ exports: [BreadcrumbComponent]
509
+ });
510
+ }
511
+ static {
512
+ this.ɵinj = i0.ɵɵngDeclareInjector({
513
+ minVersion: "12.0.0",
514
+ version: "22.2.4",
515
+ ngImport: i0,
516
+ type: BreadcrumbComponentModule,
517
+ imports: [
518
+ CommonModule,
519
+ IconComponentModule,
520
+ MatTooltipModule,
521
+ OverflowMenuComponentModule,
522
+ ButtonComponentModule,
523
+ SkeletonComponent,
524
+ BreadcrumbComponent
525
+ ]
526
+ });
527
+ }
528
+ };
529
+ i0.ɵɵngDeclareClassMetadata({
530
+ minVersion: "12.0.0",
531
+ version: "22.2.4",
532
+ ngImport: i0,
533
+ type: BreadcrumbComponentModule,
534
+ decorators: [{
535
+ type: NgModule,
536
+ args: [{
537
+ imports: [
538
+ CommonModule,
539
+ IconComponentModule,
540
+ MatTooltipModule,
541
+ OverflowMenuComponentModule,
542
+ ButtonComponentModule,
543
+ SkeletonComponent,
544
+ UiTranslatePipe,
545
+ TruncatePipe,
546
+ BreadcrumbComponent
547
+ ],
548
+ exports: [BreadcrumbComponent]
549
+ }]
550
+ }]
551
+ });
261
552
  export { BreadcrumbComponent, BreadcrumbComponentModule };
262
- //# sourceMappingURL=testgorilla-tgo-ui-components-breadcrumb.mjs.map
553
+
554
+ //# sourceMappingURL=testgorilla-tgo-ui-components-breadcrumb.mjs.map