@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,281 +1,681 @@
1
- import { trigger, transition, style, animate } from '@angular/animations';
2
- import { AsyncPipe, CommonModule } from '@angular/common';
3
- import * as i0 from '@angular/core';
4
- import { input, model, output, inject, DestroyRef, signal, computed, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
5
- import { toSignal, takeUntilDestroyed } from '@angular/core/rxjs-interop';
6
- import * as i3 from '@angular/forms';
7
- import { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';
8
- import { Subject, debounceTime, distinctUntilChanged } from 'rxjs';
9
- import { AiCaveatComponent, AiCaveatComponentModule } from '@testgorilla/tgo-ui/components/ai-caveat';
10
- import { ButtonComponent, ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';
11
- import { CardComponent, CardComponentModule } from '@testgorilla/tgo-ui/components/card';
12
- import { IS_MOBILE_TOKEN, UiTranslatePipe, MemoizeFuncPipe } from '@testgorilla/tgo-ui/components/core';
13
- import * as i2 from '@testgorilla/tgo-ui/components/field';
14
- import { FieldComponentModule } from '@testgorilla/tgo-ui/components/field';
15
- import * as i1 from '@testgorilla/tgo-ui/components/icon';
16
- import { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';
17
- import { TagComponent, TagComponentModule } from '@testgorilla/tgo-ui/components/tag';
18
-
1
+ import { animate, style, transition, trigger } from "@angular/animations";
2
+ import { AsyncPipe, CommonModule } from "@angular/common";
3
+ import * as i0 from "@angular/core";
4
+ import { ChangeDetectionStrategy, Component, DestroyRef, NgModule, computed, inject, input, model, output, signal } from "@angular/core";
5
+ import { takeUntilDestroyed, toSignal } from "@angular/core/rxjs-interop";
6
+ import * as i3 from "@angular/forms";
7
+ import { FormControl, FormsModule, ReactiveFormsModule } from "@angular/forms";
8
+ import { Subject, debounceTime, distinctUntilChanged } from "rxjs";
9
+ import { AiCaveatComponent, AiCaveatComponentModule } from "@testgorilla/tgo-ui/components/ai-caveat";
10
+ import { ButtonComponent, ButtonComponentModule } from "@testgorilla/tgo-ui/components/button";
11
+ import { CardComponent, CardComponentModule } from "@testgorilla/tgo-ui/components/card";
12
+ import { IS_MOBILE_TOKEN, MemoizeFuncPipe, UiTranslatePipe } from "@testgorilla/tgo-ui/components/core";
13
+ import * as i2 from "@testgorilla/tgo-ui/components/field";
14
+ import { FieldComponentModule } from "@testgorilla/tgo-ui/components/field";
15
+ import * as i1 from "@testgorilla/tgo-ui/components/icon";
16
+ import { IconComponentModule } from "@testgorilla/tgo-ui/components/icon";
17
+ import { TagComponent, TagComponentModule } from "@testgorilla/tgo-ui/components/tag";
19
18
  var AiFeedbackPanelType;
20
- (function (AiFeedbackPanelType) {
21
- AiFeedbackPanelType["POSITIVE"] = "positive";
22
- AiFeedbackPanelType["NEGATIVE"] = "negative";
19
+ (function(AiFeedbackPanelType) {
20
+ AiFeedbackPanelType["POSITIVE"] = "positive";
21
+ AiFeedbackPanelType["NEGATIVE"] = "negative";
23
22
  })(AiFeedbackPanelType || (AiFeedbackPanelType = {}));
24
-
25
- class AiFeedbackComponent {
26
- constructor() {
27
- this.positiveConfig = input(...(ngDevMode ? [undefined, { debugName: "positiveConfig" }] : /* istanbul ignore next */ []));
28
- this.negativeConfig = input(...(ngDevMode ? [undefined, { debugName: "negativeConfig" }] : /* istanbul ignore next */ []));
29
- this.skipPanelForPositive = input(false, ...(ngDevMode ? [{ debugName: "skipPanelForPositive" }] : /* istanbul ignore next */ []));
30
- this.applicationTheme = input('light', ...(ngDevMode ? [{ debugName: "applicationTheme" }] : /* istanbul ignore next */ []));
31
- this.variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
32
- this.isRatingDisabled = input(false, ...(ngDevMode ? [{ debugName: "isRatingDisabled" }] : /* istanbul ignore next */ []));
33
- this.enableAutoEmit = input(false, ...(ngDevMode ? [{ debugName: "enableAutoEmit" }] : /* istanbul ignore next */ []));
34
- this.isPositiveFeedback = model(null, ...(ngDevMode ? [{ debugName: "isPositiveFeedback" }] : /* istanbul ignore next */ []));
35
- this.selectionChange = output();
36
- this.feedbackSubmitted = output();
37
- this.feedbackCancelled = output();
38
- this.feedbackChanged = output();
39
- this.isMobile$ = inject(IS_MOBILE_TOKEN);
40
- this.destroyRef = inject(DestroyRef);
41
- this.isMobile = toSignal(this.isMobile$, { initialValue: false });
42
- this.showPanel = signal(false, ...(ngDevMode ? [{ debugName: "showPanel" }] : /* istanbul ignore next */ []));
43
- this.panelType = signal(null, ...(ngDevMode ? [{ debugName: "panelType" }] : /* istanbul ignore next */ []));
44
- this.selectedOptions = signal([], ...(ngDevMode ? [{ debugName: "selectedOptions" }] : /* istanbul ignore next */ []));
45
- this.otherTextControl = new FormControl('');
46
- this.otherTextValue = signal('', ...(ngDevMode ? [{ debugName: "otherTextValue" }] : /* istanbul ignore next */ []));
47
- this.selectedOptionsSubject = new Subject();
48
- this.otherTextSubject = new Subject();
49
- this.translationContext = 'AI_FEEDBACK.';
50
- this.AiFeedbackPanelType = AiFeedbackPanelType;
51
- this.defaultPositiveTitle = `${this.translationContext}POSITIVE_TITLE`;
52
- this.defaultNegativeTitle = `${this.translationContext}NEGATIVE_TITLE`;
53
- this.OTHER_OPTION_ID = 'other';
54
- this.shouldAutoEmit = computed(() => this.enableAutoEmit() && this.variant() !== 'default', ...(ngDevMode ? [{ debugName: "shouldAutoEmit" }] : /* istanbul ignore next */ []));
55
- this.activeConfig = computed(() => {
56
- const type = this.panelType();
57
- if (type === AiFeedbackPanelType.POSITIVE) {
58
- const config = this.positiveConfig();
59
- if (this.variant() === 'panel' && config?.options?.length) {
60
- return this.ensureOtherOption(config);
61
- }
62
- return config;
63
- }
64
- if (type === AiFeedbackPanelType.NEGATIVE) {
65
- const config = this.negativeConfig();
66
- if (this.variant() === 'panel' && config?.options?.length) {
67
- return this.ensureOtherOption(config);
68
- }
69
- return config;
70
- }
71
- return null;
72
- }, ...(ngDevMode ? [{ debugName: "activeConfig" }] : /* istanbul ignore next */ []));
73
- this.arrowPosition = computed(() => (this.panelType() === AiFeedbackPanelType.POSITIVE ? 'left' : 'right'), ...(ngDevMode ? [{ debugName: "arrowPosition" }] : /* istanbul ignore next */ []));
74
- this.isSubmitDisabled = computed(() => {
75
- switch (this.variant()) {
76
- case 'input-only':
77
- return this.otherTextValue().trim().length === 0;
78
- case 'panel':
79
- return this.selectedOptions().length === 0;
80
- case 'default':
81
- default:
82
- return false;
83
- }
84
- }, ...(ngDevMode ? [{ debugName: "isSubmitDisabled" }] : /* istanbul ignore next */ []));
85
- }
86
- ngOnInit() {
87
- this.otherTextControl.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(value => {
88
- this.otherTextValue.set(value ?? '');
89
- if (this.shouldAutoEmit()) {
90
- this.otherTextSubject.next(value ?? '');
91
- }
92
- });
93
- this.selectedOptionsSubject
94
- .pipe(debounceTime(500), distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr)), takeUntilDestroyed(this.destroyRef))
95
- .subscribe(() => {
96
- this.feedbackChanged.emit({
97
- isPositiveFeedback: this.isPositiveFeedback(),
98
- selectedOptions: this.selectedOptions(),
99
- // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- empty text is reported as undefined, not an empty string
100
- otherText: this.otherTextControl.value || undefined,
101
- });
102
- });
103
- this.otherTextSubject
104
- .pipe(debounceTime(500), distinctUntilChanged(), takeUntilDestroyed(this.destroyRef))
105
- .subscribe(() => {
106
- this.feedbackChanged.emit({
107
- isPositiveFeedback: this.isPositiveFeedback(),
108
- selectedOptions: this.selectedOptions(),
109
- // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- empty text is reported as undefined, not an empty string
110
- otherText: this.otherTextControl.value || undefined,
111
- });
112
- });
113
- }
114
- getDefaultPanelTitleTranslation(panelType) {
115
- return panelType === AiFeedbackPanelType.POSITIVE ? this.defaultPositiveTitle : this.defaultNegativeTitle;
116
- }
117
- ensureOtherOption(config) {
118
- if (this.variant() === 'input-only') {
119
- return config;
120
- }
121
- const hasOther = config.options?.some(opt => opt.id === this.OTHER_OPTION_ID);
122
- return hasOther
123
- ? config
124
- : {
125
- ...config,
126
- options: [...(config.options ?? []), { id: this.OTHER_OPTION_ID, label: 'Other' }],
127
- };
128
- }
129
- buildFeedbackData() {
130
- if (this.variant() === 'input-only') {
131
- return {
132
- isPositiveFeedback: this.isPositiveFeedback(),
133
- // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- empty text is reported as undefined, not an empty string
134
- otherText: this.otherTextControl.value || undefined,
135
- };
136
- }
137
- return {
138
- isPositiveFeedback: this.isPositiveFeedback(),
139
- selectedOptions: this.selectedOptions(),
140
- // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- empty text is reported as undefined, not an empty string
141
- otherText: this.otherTextControl.value || undefined,
142
- };
143
- }
144
- resetPanelState() {
145
- this.showPanel.set(false);
146
- this.panelType.set(null);
147
- this.selectedOptions.set([]);
148
- this.otherTextControl.setValue('');
149
- }
150
- shouldShowPanelForVariant() {
151
- return this.variant() === 'panel' || this.variant() === 'input-only';
152
- }
153
- onSelectionChange(isPositive) {
154
- if (this.isRatingDisabled()) {
155
- return;
156
- }
157
- const newValue = this.isPositiveFeedback() === isPositive ? null : isPositive;
158
- this.isPositiveFeedback.set(newValue);
159
- this.selectionChange.emit(newValue);
160
- if (newValue !== null) {
161
- const shouldSkipPanel = isPositive && this.skipPanelForPositive();
162
- if (this.shouldShowPanelForVariant() && !shouldSkipPanel) {
163
- this.panelType.set(isPositive ? AiFeedbackPanelType.POSITIVE : AiFeedbackPanelType.NEGATIVE);
164
- this.showPanel.set(true);
165
- this.selectedOptions.set([]);
166
- this.otherTextControl.setValue('');
167
- }
168
- }
169
- else {
170
- this.closePanel();
171
- }
172
- }
173
- toggleOption(optionId) {
174
- const current = this.selectedOptions();
175
- const updated = current.includes(optionId) ? current.filter(id => id !== optionId) : [...current, optionId];
176
- this.selectedOptions.set(updated);
177
- if (this.shouldAutoEmit()) {
178
- this.selectedOptionsSubject.next(updated);
179
- }
180
- }
181
- isOptionSelected(optionId) {
182
- return this.selectedOptions().includes(optionId);
183
- }
184
- showOtherField() {
185
- return this.variant() === 'input-only' || this.selectedOptions().includes(this.OTHER_OPTION_ID);
186
- }
187
- onSubmit() {
188
- this.feedbackSubmitted.emit(this.buildFeedbackData());
189
- this.showPanel.set(false);
190
- }
191
- closePanel() {
192
- this.feedbackCancelled.emit(this.buildFeedbackData());
193
- this.resetPanelState();
194
- }
195
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: AiFeedbackComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
196
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.25", type: AiFeedbackComponent, isStandalone: true, selector: "ui-ai-feedback", inputs: { positiveConfig: { classPropertyName: "positiveConfig", publicName: "positiveConfig", isSignal: true, isRequired: false, transformFunction: null }, negativeConfig: { classPropertyName: "negativeConfig", publicName: "negativeConfig", isSignal: true, isRequired: false, transformFunction: null }, skipPanelForPositive: { classPropertyName: "skipPanelForPositive", publicName: "skipPanelForPositive", isSignal: true, isRequired: false, transformFunction: null }, applicationTheme: { classPropertyName: "applicationTheme", publicName: "applicationTheme", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, isRatingDisabled: { classPropertyName: "isRatingDisabled", publicName: "isRatingDisabled", isSignal: true, isRequired: false, transformFunction: null }, enableAutoEmit: { classPropertyName: "enableAutoEmit", publicName: "enableAutoEmit", isSignal: true, isRequired: false, transformFunction: null }, isPositiveFeedback: { classPropertyName: "isPositiveFeedback", publicName: "isPositiveFeedback", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isPositiveFeedback: "isPositiveFeedbackChange", selectionChange: "selectionChange", feedbackSubmitted: "feedbackSubmitted", feedbackCancelled: "feedbackCancelled", feedbackChanged: "feedbackChanged" }, ngImport: i0, template: "<div class=\"ai-feedback-wrapper\">\n <div class=\"ai-feedback\" [attr.aria-label]=\"translationContext + 'TITLE' | uiTranslate\" role=\"group\">\n <ui-ai-caveat [applicationTheme]=\"applicationTheme()\"></ui-ai-caveat>\n\n <div class=\"ai-feedback-buttons-section\">\n @if (isRatingDisabled()) {\n <div class=\"ai-feedback-saved\">\n <span class=\"ai-feedback-saved-text\">{{ translationContext + 'RATING_SAVED' | uiTranslate | async }}</span>\n <ui-icon\n [name]=\"isPositiveFeedback() ? 'Thumb-up-filled' : 'Thumb-down-filled'\"\n [filled]=\"true\"\n [applicationTheme]=\"applicationTheme()\"\n [color]=\"'gray'\"\n />\n </div>\n } @else {\n <span class=\"ai-feedback-label\">{{ translationContext + 'TITLE' | uiTranslate | async }}</span>\n\n <div\n class=\"ai-feedback-buttons\"\n role=\"group\"\n [attr.aria-expanded]=\"showPanel()\"\n [attr.aria-controls]=\"showPanel() ? 'feedback-panel' : null\"\n >\n <ui-button\n class=\"ai-feedback-button-positive\"\n data-testid=\"ai-feedback-button-positive\"\n [justIcon]=\"true\"\n [iconName]=\"'Thumb-up-in-line'\"\n [size]=\"'small'\"\n [tooltip]=\"('COMMON.YES' | uiTranslate | async)!\"\n [ariaLabel]=\"('COMMON.YES' | uiTranslate | async)!\"\n [iconFilled]=\"isPositiveFeedback() === true\"\n (buttonClickEvent)=\"onSelectionChange(true)\"\n variant=\"icon-button\"\n role=\"button\"\n >\n </ui-button>\n\n <ui-button\n data-testid=\"ai-feedback-button-negative\"\n [justIcon]=\"true\"\n [iconName]=\"'Thumb-down-in-line'\"\n [size]=\"'small'\"\n [tooltip]=\"('COMMON.NO' | uiTranslate | async)!\"\n [ariaLabel]=\"('COMMON.NO' | uiTranslate | async)!\"\n [iconFilled]=\"isPositiveFeedback() === false\"\n (buttonClickEvent)=\"onSelectionChange(false)\"\n variant=\"icon-button\"\n role=\"button\"\n >\n </ui-button>\n </div>\n }\n </div>\n </div>\n\n @if (showPanel()) {\n @let panelTitle =\n activeConfig()?.title ??\n (panelType() | memoizeFunc: getDefaultPanelTitleTranslation : this | uiTranslate | async);\n\n <ui-card\n id=\"feedback-panel\"\n class=\"feedback-panel\"\n [class.arrow-left]=\"arrowPosition() === 'left'\"\n [class.arrow-right]=\"arrowPosition() === 'right'\"\n [applicationTheme]=\"applicationTheme()\"\n [size]=\"isMobile() ? 'small' : 'medium'\"\n role=\"region\"\n [attr.aria-label]=\"panelTitle\"\n [@slideDown]\n >\n <div class=\"feedback-panel-arrow\"></div>\n\n <div class=\"feedback-panel-content\">\n <div class=\"feedback-panel-title-container\">\n <h4 class=\"feedback-panel-title\">\n {{ panelTitle }}\n </h4>\n\n <ui-button\n [justIcon]=\"true\"\n [iconName]=\"'Close-filled'\"\n [size]=\"'small'\"\n [ariaLabel]=\"'Close feedback panel'\"\n variant=\"icon-button\"\n (buttonClickEvent)=\"closePanel()\"\n >\n </ui-button>\n </div>\n\n @if (variant() === 'panel' && activeConfig()?.options && activeConfig()!.options!.length > 0) {\n <div class=\"feedback-options\">\n @for (option of activeConfig()?.options; track option.id) {\n <ui-tag\n [label]=\"option.label\"\n [isSelected]=\"isOptionSelected(option.id)\"\n [showIconWhenSelected]=\"true\"\n [applicationTheme]=\"applicationTheme()\"\n (press)=\"toggleOption(option.id)\"\n >\n </ui-tag>\n }\n </div>\n }\n\n @if (showOtherField()) {\n <ui-field\n class=\"feedback-field\"\n type=\"text\"\n [label]=\"\n activeConfig()?.otherPlaceholder ?? (translationContext + 'OTHER_PLACEHOLDER' | uiTranslate | async) ?? ''\n \"\n [formControl]=\"otherTextControl\"\n [applicationTheme]=\"applicationTheme()\"\n [fullWidth]=\"true\"\n [showBottomContent]=\"false\"\n >\n </ui-field>\n }\n\n <div class=\"feedback-submit-container\">\n <ui-button\n [label]=\"(translationContext + 'SUBMIT' | uiTranslate | async) || ''\"\n [disabled]=\"isSubmitDisabled()\"\n [size]=\"'small'\"\n [fullWidth]=\"isMobile()\"\n (buttonClickEvent)=\"onSubmit()\"\n variant=\"primary\"\n >\n </ui-button>\n </div>\n </div>\n </ui-card>\n }\n</div>\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}.ai-feedback-wrapper{position:relative}.ai-feedback{display:flex;flex-flow:row nowrap;align-items:center;justify-content:space-between;gap:16px;padding-right:4px}@media(max-width:600px){.ai-feedback{flex-wrap:wrap}}.ai-feedback-buttons-section{display:flex;flex-flow:row nowrap;align-items:center;gap:8px;color:#666}@media(max-width:600px){.ai-feedback-buttons-section{flex:1 0 100%;justify-content:space-between}}.ai-feedback-buttons{display:flex;flex-flow:row nowrap;align-items:center;justify-content:center}.ai-feedback-button-positive{margin-right:8px}.ai-feedback-saved{display:flex;flex-flow:row nowrap;align-items:center;gap:8px}.ai-feedback-saved-text{font-size:12px;color:#666}.feedback-panel{display:block;margin-top:16px}.feedback-panel-arrow{position:absolute;top:-8px;width:16px;height:16px;background:inherit;border-left:1px solid;border-top:1px solid;border-color:inherit;transform:rotate(45deg);transition:right .2s ease-out}.feedback-panel.arrow-left .feedback-panel-arrow{right:40px}.feedback-panel.arrow-right .feedback-panel-arrow{right:8px}.feedback-panel-content{position:relative}.feedback-panel-title-container{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.feedback-panel-title{font-size:16px;font-weight:600;color:#242424}.feedback-options{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.feedback-field{margin-bottom:16px}.feedback-submit-container{display:flex;justify-content:flex-end}@media(max-width:600px){.feedback-submit-container{display:block}}\n"], dependencies: [{ kind: "component", type: AiCaveatComponent, selector: "ui-ai-caveat", inputs: ["applicationTheme"] }, { kind: "ngmodule", type: IconComponentModule }, { kind: "component", type: i1.IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color", "filled", "toggleIconStyle", "applicationTheme", "useFullIconName"] }, { kind: "component", type: 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: "component", type: CardComponent, selector: "ui-card", inputs: ["size", "sizeVariant", "variant", "applicationTheme", "errors", "errorsSize", "selected", "allowSelect", "allowFocus", "testId"], outputs: ["cardSelected"] }, { kind: "component", type: TagComponent, selector: "ui-tag", inputs: ["label", "icon", "allowClose", "readOnly", "isSelected", "showIconWhenSelected", "pinnedBackground", "constrainWidth", "isDisabled", "applicationTheme", "ariaLabel", "testId", "ariaRequired", "showBadge", "notificationsAmount"], outputs: ["isSelectedChange", "close", "press"] }, { kind: "ngmodule", type: FieldComponentModule }, { kind: "component", type: i2.FieldComponent, selector: "ui-field", inputs: ["fullWidth", "fullHeight", "label", "labelHtml", "labelIcon", "fieldName", "placeholder", "id", "value", "badgeVariant", "errors", "disabled", "required", "readOnly", "hintMessage", "type", "updateOnBlur", "allowOnlyDigits", "isAutocompleteOff", "allowNegative", "showBottomContent", "applicationTheme", "ariaLabel", "testId", "loading", "isValid", "maxCharacters", "trimOnBlur", "trimOnSubmit", "maxRows", "hasTextAreaCounter", "hideBuiltInErrors", "hideLabelInErrors", "max", "min", "textareaHeight", "borderless", "autosizableTextarea", "isAIVariant", "ariaLabelledby", "ariaDescribedby", "hasError"], outputs: ["validateEvent", "fieldBlur"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: UiTranslatePipe, name: "uiTranslate" }, { kind: "pipe", type: MemoizeFuncPipe, name: "memoizeFunc" }], animations: [
197
- trigger('slideDown', [
198
- transition(':enter', [
199
- style({ height: 0, opacity: 0, overflow: 'hidden' }),
200
- animate('200ms ease-out', style({ height: '*', opacity: 1 })),
201
- ]),
202
- transition(':leave', [animate('200ms ease-in', style({ height: 0, opacity: 0, overflow: 'hidden' }))]),
203
- ]),
204
- ], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
205
- }
206
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: AiFeedbackComponent, decorators: [{
207
- type: Component,
208
- args: [{ selector: 'ui-ai-feedback', changeDetection: ChangeDetectionStrategy.OnPush, animations: [
209
- trigger('slideDown', [
210
- transition(':enter', [
211
- style({ height: 0, opacity: 0, overflow: 'hidden' }),
212
- animate('200ms ease-out', style({ height: '*', opacity: 1 })),
213
- ]),
214
- transition(':leave', [animate('200ms ease-in', style({ height: 0, opacity: 0, overflow: 'hidden' }))]),
215
- ]),
216
- ], imports: [
217
- AiCaveatComponent,
218
- IconComponentModule,
219
- ButtonComponent,
220
- CardComponent,
221
- TagComponent,
222
- FieldComponentModule,
223
- FormsModule,
224
- ReactiveFormsModule,
225
- AsyncPipe,
226
- UiTranslatePipe,
227
- MemoizeFuncPipe,
228
- ], template: "<div class=\"ai-feedback-wrapper\">\n <div class=\"ai-feedback\" [attr.aria-label]=\"translationContext + 'TITLE' | uiTranslate\" role=\"group\">\n <ui-ai-caveat [applicationTheme]=\"applicationTheme()\"></ui-ai-caveat>\n\n <div class=\"ai-feedback-buttons-section\">\n @if (isRatingDisabled()) {\n <div class=\"ai-feedback-saved\">\n <span class=\"ai-feedback-saved-text\">{{ translationContext + 'RATING_SAVED' | uiTranslate | async }}</span>\n <ui-icon\n [name]=\"isPositiveFeedback() ? 'Thumb-up-filled' : 'Thumb-down-filled'\"\n [filled]=\"true\"\n [applicationTheme]=\"applicationTheme()\"\n [color]=\"'gray'\"\n />\n </div>\n } @else {\n <span class=\"ai-feedback-label\">{{ translationContext + 'TITLE' | uiTranslate | async }}</span>\n\n <div\n class=\"ai-feedback-buttons\"\n role=\"group\"\n [attr.aria-expanded]=\"showPanel()\"\n [attr.aria-controls]=\"showPanel() ? 'feedback-panel' : null\"\n >\n <ui-button\n class=\"ai-feedback-button-positive\"\n data-testid=\"ai-feedback-button-positive\"\n [justIcon]=\"true\"\n [iconName]=\"'Thumb-up-in-line'\"\n [size]=\"'small'\"\n [tooltip]=\"('COMMON.YES' | uiTranslate | async)!\"\n [ariaLabel]=\"('COMMON.YES' | uiTranslate | async)!\"\n [iconFilled]=\"isPositiveFeedback() === true\"\n (buttonClickEvent)=\"onSelectionChange(true)\"\n variant=\"icon-button\"\n role=\"button\"\n >\n </ui-button>\n\n <ui-button\n data-testid=\"ai-feedback-button-negative\"\n [justIcon]=\"true\"\n [iconName]=\"'Thumb-down-in-line'\"\n [size]=\"'small'\"\n [tooltip]=\"('COMMON.NO' | uiTranslate | async)!\"\n [ariaLabel]=\"('COMMON.NO' | uiTranslate | async)!\"\n [iconFilled]=\"isPositiveFeedback() === false\"\n (buttonClickEvent)=\"onSelectionChange(false)\"\n variant=\"icon-button\"\n role=\"button\"\n >\n </ui-button>\n </div>\n }\n </div>\n </div>\n\n @if (showPanel()) {\n @let panelTitle =\n activeConfig()?.title ??\n (panelType() | memoizeFunc: getDefaultPanelTitleTranslation : this | uiTranslate | async);\n\n <ui-card\n id=\"feedback-panel\"\n class=\"feedback-panel\"\n [class.arrow-left]=\"arrowPosition() === 'left'\"\n [class.arrow-right]=\"arrowPosition() === 'right'\"\n [applicationTheme]=\"applicationTheme()\"\n [size]=\"isMobile() ? 'small' : 'medium'\"\n role=\"region\"\n [attr.aria-label]=\"panelTitle\"\n [@slideDown]\n >\n <div class=\"feedback-panel-arrow\"></div>\n\n <div class=\"feedback-panel-content\">\n <div class=\"feedback-panel-title-container\">\n <h4 class=\"feedback-panel-title\">\n {{ panelTitle }}\n </h4>\n\n <ui-button\n [justIcon]=\"true\"\n [iconName]=\"'Close-filled'\"\n [size]=\"'small'\"\n [ariaLabel]=\"'Close feedback panel'\"\n variant=\"icon-button\"\n (buttonClickEvent)=\"closePanel()\"\n >\n </ui-button>\n </div>\n\n @if (variant() === 'panel' && activeConfig()?.options && activeConfig()!.options!.length > 0) {\n <div class=\"feedback-options\">\n @for (option of activeConfig()?.options; track option.id) {\n <ui-tag\n [label]=\"option.label\"\n [isSelected]=\"isOptionSelected(option.id)\"\n [showIconWhenSelected]=\"true\"\n [applicationTheme]=\"applicationTheme()\"\n (press)=\"toggleOption(option.id)\"\n >\n </ui-tag>\n }\n </div>\n }\n\n @if (showOtherField()) {\n <ui-field\n class=\"feedback-field\"\n type=\"text\"\n [label]=\"\n activeConfig()?.otherPlaceholder ?? (translationContext + 'OTHER_PLACEHOLDER' | uiTranslate | async) ?? ''\n \"\n [formControl]=\"otherTextControl\"\n [applicationTheme]=\"applicationTheme()\"\n [fullWidth]=\"true\"\n [showBottomContent]=\"false\"\n >\n </ui-field>\n }\n\n <div class=\"feedback-submit-container\">\n <ui-button\n [label]=\"(translationContext + 'SUBMIT' | uiTranslate | async) || ''\"\n [disabled]=\"isSubmitDisabled()\"\n [size]=\"'small'\"\n [fullWidth]=\"isMobile()\"\n (buttonClickEvent)=\"onSubmit()\"\n variant=\"primary\"\n >\n </ui-button>\n </div>\n </div>\n </ui-card>\n }\n</div>\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}.ai-feedback-wrapper{position:relative}.ai-feedback{display:flex;flex-flow:row nowrap;align-items:center;justify-content:space-between;gap:16px;padding-right:4px}@media(max-width:600px){.ai-feedback{flex-wrap:wrap}}.ai-feedback-buttons-section{display:flex;flex-flow:row nowrap;align-items:center;gap:8px;color:#666}@media(max-width:600px){.ai-feedback-buttons-section{flex:1 0 100%;justify-content:space-between}}.ai-feedback-buttons{display:flex;flex-flow:row nowrap;align-items:center;justify-content:center}.ai-feedback-button-positive{margin-right:8px}.ai-feedback-saved{display:flex;flex-flow:row nowrap;align-items:center;gap:8px}.ai-feedback-saved-text{font-size:12px;color:#666}.feedback-panel{display:block;margin-top:16px}.feedback-panel-arrow{position:absolute;top:-8px;width:16px;height:16px;background:inherit;border-left:1px solid;border-top:1px solid;border-color:inherit;transform:rotate(45deg);transition:right .2s ease-out}.feedback-panel.arrow-left .feedback-panel-arrow{right:40px}.feedback-panel.arrow-right .feedback-panel-arrow{right:8px}.feedback-panel-content{position:relative}.feedback-panel-title-container{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.feedback-panel-title{font-size:16px;font-weight:600;color:#242424}.feedback-options{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.feedback-field{margin-bottom:16px}.feedback-submit-container{display:flex;justify-content:flex-end}@media(max-width:600px){.feedback-submit-container{display:block}}\n"] }]
229
- }], propDecorators: { positiveConfig: [{ type: i0.Input, args: [{ isSignal: true, alias: "positiveConfig", required: false }] }], negativeConfig: [{ type: i0.Input, args: [{ isSignal: true, alias: "negativeConfig", required: false }] }], skipPanelForPositive: [{ type: i0.Input, args: [{ isSignal: true, alias: "skipPanelForPositive", required: false }] }], applicationTheme: [{ type: i0.Input, args: [{ isSignal: true, alias: "applicationTheme", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], isRatingDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "isRatingDisabled", required: false }] }], enableAutoEmit: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableAutoEmit", required: false }] }], isPositiveFeedback: [{ type: i0.Input, args: [{ isSignal: true, alias: "isPositiveFeedback", required: false }] }, { type: i0.Output, args: ["isPositiveFeedbackChange"] }], selectionChange: [{ type: i0.Output, args: ["selectionChange"] }], feedbackSubmitted: [{ type: i0.Output, args: ["feedbackSubmitted"] }], feedbackCancelled: [{ type: i0.Output, args: ["feedbackCancelled"] }], feedbackChanged: [{ type: i0.Output, args: ["feedbackChanged"] }] } });
230
-
231
- class AiFeedbackModule {
232
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: AiFeedbackModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
233
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.25", ngImport: i0, type: AiFeedbackModule, imports: [CommonModule,
234
- AsyncPipe,
235
- ReactiveFormsModule,
236
- ButtonComponentModule,
237
- CardComponentModule,
238
- TagComponentModule,
239
- FieldComponentModule,
240
- AiCaveatComponentModule,
241
- IconComponentModule,
242
- UiTranslatePipe,
243
- MemoizeFuncPipe,
244
- AiFeedbackComponent], exports: [AiFeedbackComponent] }); }
245
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: AiFeedbackModule, imports: [CommonModule,
246
- ReactiveFormsModule,
247
- ButtonComponentModule,
248
- CardComponentModule,
249
- TagComponentModule,
250
- FieldComponentModule,
251
- AiCaveatComponentModule,
252
- IconComponentModule,
253
- AiFeedbackComponent] }); }
254
- }
255
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: AiFeedbackModule, decorators: [{
256
- type: NgModule,
257
- args: [{
258
- imports: [
259
- CommonModule,
260
- AsyncPipe,
261
- ReactiveFormsModule,
262
- ButtonComponentModule,
263
- CardComponentModule,
264
- TagComponentModule,
265
- FieldComponentModule,
266
- AiCaveatComponentModule,
267
- IconComponentModule,
268
- UiTranslatePipe,
269
- MemoizeFuncPipe,
270
- AiFeedbackComponent,
271
- ],
272
- exports: [AiFeedbackComponent],
273
- }]
274
- }] });
275
-
276
- /**
277
- * Generated bundle index. Do not edit.
278
- */
279
-
23
+ var AiFeedbackComponent = class AiFeedbackComponent {
24
+ constructor() {
25
+ this.positiveConfig = input(...ngDevMode ? [void 0, { debugName: "positiveConfig" }] : /* istanbul ignore next */ []);
26
+ this.negativeConfig = input(...ngDevMode ? [void 0, { debugName: "negativeConfig" }] : /* istanbul ignore next */ []);
27
+ this.skipPanelForPositive = input(false, ...ngDevMode ? [{ debugName: "skipPanelForPositive" }] : /* istanbul ignore next */ []);
28
+ this.applicationTheme = input("light", ...ngDevMode ? [{ debugName: "applicationTheme" }] : /* istanbul ignore next */ []);
29
+ this.variant = input("default", ...ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []);
30
+ this.isRatingDisabled = input(false, ...ngDevMode ? [{ debugName: "isRatingDisabled" }] : /* istanbul ignore next */ []);
31
+ this.enableAutoEmit = input(false, ...ngDevMode ? [{ debugName: "enableAutoEmit" }] : /* istanbul ignore next */ []);
32
+ this.isPositiveFeedback = model(null, ...ngDevMode ? [{ debugName: "isPositiveFeedback" }] : /* istanbul ignore next */ []);
33
+ this.selectionChange = output();
34
+ this.feedbackSubmitted = output();
35
+ this.feedbackCancelled = output();
36
+ this.feedbackChanged = output();
37
+ this.isMobile$ = inject(IS_MOBILE_TOKEN);
38
+ this.destroyRef = inject(DestroyRef);
39
+ this.isMobile = toSignal(this.isMobile$, { initialValue: false });
40
+ this.showPanel = signal(false, ...ngDevMode ? [{ debugName: "showPanel" }] : /* istanbul ignore next */ []);
41
+ this.panelType = signal(null, ...ngDevMode ? [{ debugName: "panelType" }] : /* istanbul ignore next */ []);
42
+ this.selectedOptions = signal([], ...ngDevMode ? [{ debugName: "selectedOptions" }] : /* istanbul ignore next */ []);
43
+ this.otherTextControl = new FormControl("");
44
+ this.otherTextValue = signal("", ...ngDevMode ? [{ debugName: "otherTextValue" }] : /* istanbul ignore next */ []);
45
+ this.selectedOptionsSubject = new Subject();
46
+ this.otherTextSubject = new Subject();
47
+ this.translationContext = "AI_FEEDBACK.";
48
+ this.AiFeedbackPanelType = AiFeedbackPanelType;
49
+ this.defaultPositiveTitle = `${this.translationContext}POSITIVE_TITLE`;
50
+ this.defaultNegativeTitle = `${this.translationContext}NEGATIVE_TITLE`;
51
+ this.OTHER_OPTION_ID = "other";
52
+ this.shouldAutoEmit = computed(() => this.enableAutoEmit() && this.variant() !== "default", ...ngDevMode ? [{ debugName: "shouldAutoEmit" }] : /* istanbul ignore next */ []);
53
+ this.activeConfig = computed(() => {
54
+ const type = this.panelType();
55
+ if (type === AiFeedbackPanelType.POSITIVE) {
56
+ const config = this.positiveConfig();
57
+ if (this.variant() === "panel" && config?.options?.length) return this.ensureOtherOption(config);
58
+ return config;
59
+ }
60
+ if (type === AiFeedbackPanelType.NEGATIVE) {
61
+ const config = this.negativeConfig();
62
+ if (this.variant() === "panel" && config?.options?.length) return this.ensureOtherOption(config);
63
+ return config;
64
+ }
65
+ return null;
66
+ }, ...ngDevMode ? [{ debugName: "activeConfig" }] : /* istanbul ignore next */ []);
67
+ this.arrowPosition = computed(() => this.panelType() === AiFeedbackPanelType.POSITIVE ? "left" : "right", ...ngDevMode ? [{ debugName: "arrowPosition" }] : /* istanbul ignore next */ []);
68
+ this.isSubmitDisabled = computed(() => {
69
+ switch (this.variant()) {
70
+ case "input-only": return this.otherTextValue().trim().length === 0;
71
+ case "panel": return this.selectedOptions().length === 0;
72
+ default: return false;
73
+ }
74
+ }, ...ngDevMode ? [{ debugName: "isSubmitDisabled" }] : /* istanbul ignore next */ []);
75
+ }
76
+ ngOnInit() {
77
+ this.otherTextControl.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((value) => {
78
+ this.otherTextValue.set(value ?? "");
79
+ if (this.shouldAutoEmit()) this.otherTextSubject.next(value ?? "");
80
+ });
81
+ this.selectedOptionsSubject.pipe(debounceTime(500), distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr)), takeUntilDestroyed(this.destroyRef)).subscribe(() => {
82
+ this.feedbackChanged.emit({
83
+ isPositiveFeedback: this.isPositiveFeedback(),
84
+ selectedOptions: this.selectedOptions(),
85
+ otherText: this.otherTextControl.value || void 0
86
+ });
87
+ });
88
+ this.otherTextSubject.pipe(debounceTime(500), distinctUntilChanged(), takeUntilDestroyed(this.destroyRef)).subscribe(() => {
89
+ this.feedbackChanged.emit({
90
+ isPositiveFeedback: this.isPositiveFeedback(),
91
+ selectedOptions: this.selectedOptions(),
92
+ otherText: this.otherTextControl.value || void 0
93
+ });
94
+ });
95
+ }
96
+ getDefaultPanelTitleTranslation(panelType) {
97
+ return panelType === AiFeedbackPanelType.POSITIVE ? this.defaultPositiveTitle : this.defaultNegativeTitle;
98
+ }
99
+ ensureOtherOption(config) {
100
+ if (this.variant() === "input-only") return config;
101
+ return config.options?.some((opt) => opt.id === this.OTHER_OPTION_ID) ? config : {
102
+ ...config,
103
+ options: [...config.options ?? [], {
104
+ id: this.OTHER_OPTION_ID,
105
+ label: "Other"
106
+ }]
107
+ };
108
+ }
109
+ buildFeedbackData() {
110
+ if (this.variant() === "input-only") return {
111
+ isPositiveFeedback: this.isPositiveFeedback(),
112
+ otherText: this.otherTextControl.value || void 0
113
+ };
114
+ return {
115
+ isPositiveFeedback: this.isPositiveFeedback(),
116
+ selectedOptions: this.selectedOptions(),
117
+ otherText: this.otherTextControl.value || void 0
118
+ };
119
+ }
120
+ resetPanelState() {
121
+ this.showPanel.set(false);
122
+ this.panelType.set(null);
123
+ this.selectedOptions.set([]);
124
+ this.otherTextControl.setValue("");
125
+ }
126
+ shouldShowPanelForVariant() {
127
+ return this.variant() === "panel" || this.variant() === "input-only";
128
+ }
129
+ onSelectionChange(isPositive) {
130
+ if (this.isRatingDisabled()) return;
131
+ const newValue = this.isPositiveFeedback() === isPositive ? null : isPositive;
132
+ this.isPositiveFeedback.set(newValue);
133
+ this.selectionChange.emit(newValue);
134
+ if (newValue !== null) {
135
+ const shouldSkipPanel = isPositive && this.skipPanelForPositive();
136
+ if (this.shouldShowPanelForVariant() && !shouldSkipPanel) {
137
+ this.panelType.set(isPositive ? AiFeedbackPanelType.POSITIVE : AiFeedbackPanelType.NEGATIVE);
138
+ this.showPanel.set(true);
139
+ this.selectedOptions.set([]);
140
+ this.otherTextControl.setValue("");
141
+ }
142
+ } else this.closePanel();
143
+ }
144
+ toggleOption(optionId) {
145
+ const current = this.selectedOptions();
146
+ const updated = current.includes(optionId) ? current.filter((id) => id !== optionId) : [...current, optionId];
147
+ this.selectedOptions.set(updated);
148
+ if (this.shouldAutoEmit()) this.selectedOptionsSubject.next(updated);
149
+ }
150
+ isOptionSelected(optionId) {
151
+ return this.selectedOptions().includes(optionId);
152
+ }
153
+ showOtherField() {
154
+ return this.variant() === "input-only" || this.selectedOptions().includes(this.OTHER_OPTION_ID);
155
+ }
156
+ onSubmit() {
157
+ this.feedbackSubmitted.emit(this.buildFeedbackData());
158
+ this.showPanel.set(false);
159
+ }
160
+ closePanel() {
161
+ this.feedbackCancelled.emit(this.buildFeedbackData());
162
+ this.resetPanelState();
163
+ }
164
+ static {
165
+ this.ɵfac = i0.ɵɵngDeclareFactory({
166
+ minVersion: "12.0.0",
167
+ version: "22.2.4",
168
+ ngImport: i0,
169
+ type: AiFeedbackComponent,
170
+ deps: [],
171
+ target: i0.ɵɵFactoryTarget.Component
172
+ });
173
+ }
174
+ static {
175
+ this.ɵcmp = i0.ɵɵngDeclareComponent({
176
+ minVersion: "17.0.0",
177
+ version: "22.2.4",
178
+ type: AiFeedbackComponent,
179
+ isStandalone: true,
180
+ selector: "ui-ai-feedback",
181
+ inputs: {
182
+ positiveConfig: {
183
+ classPropertyName: "positiveConfig",
184
+ publicName: "positiveConfig",
185
+ isSignal: true,
186
+ isRequired: false,
187
+ transformFunction: null
188
+ },
189
+ negativeConfig: {
190
+ classPropertyName: "negativeConfig",
191
+ publicName: "negativeConfig",
192
+ isSignal: true,
193
+ isRequired: false,
194
+ transformFunction: null
195
+ },
196
+ skipPanelForPositive: {
197
+ classPropertyName: "skipPanelForPositive",
198
+ publicName: "skipPanelForPositive",
199
+ isSignal: true,
200
+ isRequired: false,
201
+ transformFunction: null
202
+ },
203
+ applicationTheme: {
204
+ classPropertyName: "applicationTheme",
205
+ publicName: "applicationTheme",
206
+ isSignal: true,
207
+ isRequired: false,
208
+ transformFunction: null
209
+ },
210
+ variant: {
211
+ classPropertyName: "variant",
212
+ publicName: "variant",
213
+ isSignal: true,
214
+ isRequired: false,
215
+ transformFunction: null
216
+ },
217
+ isRatingDisabled: {
218
+ classPropertyName: "isRatingDisabled",
219
+ publicName: "isRatingDisabled",
220
+ isSignal: true,
221
+ isRequired: false,
222
+ transformFunction: null
223
+ },
224
+ enableAutoEmit: {
225
+ classPropertyName: "enableAutoEmit",
226
+ publicName: "enableAutoEmit",
227
+ isSignal: true,
228
+ isRequired: false,
229
+ transformFunction: null
230
+ },
231
+ isPositiveFeedback: {
232
+ classPropertyName: "isPositiveFeedback",
233
+ publicName: "isPositiveFeedback",
234
+ isSignal: true,
235
+ isRequired: false,
236
+ transformFunction: null
237
+ }
238
+ },
239
+ outputs: {
240
+ isPositiveFeedback: "isPositiveFeedbackChange",
241
+ selectionChange: "selectionChange",
242
+ feedbackSubmitted: "feedbackSubmitted",
243
+ feedbackCancelled: "feedbackCancelled",
244
+ feedbackChanged: "feedbackChanged"
245
+ },
246
+ ngImport: i0,
247
+ template: "<div class=\"ai-feedback-wrapper\">\n <div class=\"ai-feedback\" [attr.aria-label]=\"translationContext + 'TITLE' | uiTranslate\" role=\"group\">\n <ui-ai-caveat [applicationTheme]=\"applicationTheme()\"></ui-ai-caveat>\n\n <div class=\"ai-feedback-buttons-section\">\n @if (isRatingDisabled()) {\n <div class=\"ai-feedback-saved\">\n <span class=\"ai-feedback-saved-text\">{{ translationContext + 'RATING_SAVED' | uiTranslate | async }}</span>\n <ui-icon\n [name]=\"isPositiveFeedback() ? 'Thumb-up-filled' : 'Thumb-down-filled'\"\n [filled]=\"true\"\n [applicationTheme]=\"applicationTheme()\"\n [color]=\"'gray'\"\n />\n </div>\n } @else {\n <span class=\"ai-feedback-label\">{{ translationContext + 'TITLE' | uiTranslate | async }}</span>\n\n <div\n class=\"ai-feedback-buttons\"\n role=\"group\"\n [attr.aria-expanded]=\"showPanel()\"\n [attr.aria-controls]=\"showPanel() ? 'feedback-panel' : null\"\n >\n <ui-button\n class=\"ai-feedback-button-positive\"\n data-testid=\"ai-feedback-button-positive\"\n [justIcon]=\"true\"\n [iconName]=\"'Thumb-up-in-line'\"\n [size]=\"'small'\"\n [tooltip]=\"('COMMON.YES' | uiTranslate | async)!\"\n [ariaLabel]=\"('COMMON.YES' | uiTranslate | async)!\"\n [iconFilled]=\"isPositiveFeedback() === true\"\n (buttonClickEvent)=\"onSelectionChange(true)\"\n variant=\"icon-button\"\n role=\"button\"\n >\n </ui-button>\n\n <ui-button\n data-testid=\"ai-feedback-button-negative\"\n [justIcon]=\"true\"\n [iconName]=\"'Thumb-down-in-line'\"\n [size]=\"'small'\"\n [tooltip]=\"('COMMON.NO' | uiTranslate | async)!\"\n [ariaLabel]=\"('COMMON.NO' | uiTranslate | async)!\"\n [iconFilled]=\"isPositiveFeedback() === false\"\n (buttonClickEvent)=\"onSelectionChange(false)\"\n variant=\"icon-button\"\n role=\"button\"\n >\n </ui-button>\n </div>\n }\n </div>\n </div>\n\n @if (showPanel()) {\n @let panelTitle =\n activeConfig()?.title ??\n (panelType() | memoizeFunc: getDefaultPanelTitleTranslation : this | uiTranslate | async);\n\n <ui-card\n id=\"feedback-panel\"\n class=\"feedback-panel\"\n [class.arrow-left]=\"arrowPosition() === 'left'\"\n [class.arrow-right]=\"arrowPosition() === 'right'\"\n [applicationTheme]=\"applicationTheme()\"\n [size]=\"isMobile() ? 'small' : 'medium'\"\n role=\"region\"\n [attr.aria-label]=\"panelTitle\"\n [@slideDown]\n >\n <div class=\"feedback-panel-arrow\"></div>\n\n <div class=\"feedback-panel-content\">\n <div class=\"feedback-panel-title-container\">\n <h4 class=\"feedback-panel-title\">\n {{ panelTitle }}\n </h4>\n\n <ui-button\n [justIcon]=\"true\"\n [iconName]=\"'Close-filled'\"\n [size]=\"'small'\"\n [ariaLabel]=\"'Close feedback panel'\"\n variant=\"icon-button\"\n (buttonClickEvent)=\"closePanel()\"\n >\n </ui-button>\n </div>\n\n @if (variant() === 'panel' && activeConfig()?.options && activeConfig()!.options!.length > 0) {\n <div class=\"feedback-options\">\n @for (option of activeConfig()?.options; track option.id) {\n <ui-tag\n [label]=\"option.label\"\n [isSelected]=\"isOptionSelected(option.id)\"\n [showIconWhenSelected]=\"true\"\n [applicationTheme]=\"applicationTheme()\"\n (press)=\"toggleOption(option.id)\"\n >\n </ui-tag>\n }\n </div>\n }\n\n @if (showOtherField()) {\n <ui-field\n class=\"feedback-field\"\n type=\"text\"\n [label]=\"\n activeConfig()?.otherPlaceholder ?? (translationContext + 'OTHER_PLACEHOLDER' | uiTranslate | async) ?? ''\n \"\n [formControl]=\"otherTextControl\"\n [applicationTheme]=\"applicationTheme()\"\n [fullWidth]=\"true\"\n [showBottomContent]=\"false\"\n >\n </ui-field>\n }\n\n <div class=\"feedback-submit-container\">\n <ui-button\n [label]=\"(translationContext + 'SUBMIT' | uiTranslate | async) || ''\"\n [disabled]=\"isSubmitDisabled()\"\n [size]=\"'small'\"\n [fullWidth]=\"isMobile()\"\n (buttonClickEvent)=\"onSubmit()\"\n variant=\"primary\"\n >\n </ui-button>\n </div>\n </div>\n </ui-card>\n }\n</div>\n",
248
+ 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}.ai-feedback-wrapper{position:relative}.ai-feedback{display:flex;flex-flow:row nowrap;align-items:center;justify-content:space-between;gap:16px;padding-right:4px}@media(max-width:600px){.ai-feedback{flex-wrap:wrap}}.ai-feedback-buttons-section{display:flex;flex-flow:row nowrap;align-items:center;gap:8px;color:#666}@media(max-width:600px){.ai-feedback-buttons-section{flex:1 0 100%;justify-content:space-between}}.ai-feedback-buttons{display:flex;flex-flow:row nowrap;align-items:center;justify-content:center}.ai-feedback-button-positive{margin-right:8px}.ai-feedback-saved{display:flex;flex-flow:row nowrap;align-items:center;gap:8px}.ai-feedback-saved-text{font-size:12px;color:#666}.feedback-panel{display:block;margin-top:16px}.feedback-panel-arrow{position:absolute;top:-8px;width:16px;height:16px;background:inherit;border-left:1px solid;border-top:1px solid;border-color:inherit;transform:rotate(45deg);transition:right .2s ease-out}.feedback-panel.arrow-left .feedback-panel-arrow{right:40px}.feedback-panel.arrow-right .feedback-panel-arrow{right:8px}.feedback-panel-content{position:relative}.feedback-panel-title-container{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.feedback-panel-title{font-size:16px;font-weight:600;color:#242424}.feedback-options{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.feedback-field{margin-bottom:16px}.feedback-submit-container{display:flex;justify-content:flex-end}@media(max-width:600px){.feedback-submit-container{display:block}}\n"],
249
+ dependencies: [
250
+ {
251
+ kind: "component",
252
+ type: AiCaveatComponent,
253
+ selector: "ui-ai-caveat",
254
+ inputs: ["applicationTheme"]
255
+ },
256
+ {
257
+ kind: "ngmodule",
258
+ type: IconComponentModule
259
+ },
260
+ {
261
+ kind: "component",
262
+ type: i1.IconComponent,
263
+ selector: "ui-icon",
264
+ inputs: [
265
+ "size",
266
+ "cssClass",
267
+ "name",
268
+ "color",
269
+ "filled",
270
+ "toggleIconStyle",
271
+ "applicationTheme",
272
+ "useFullIconName"
273
+ ]
274
+ },
275
+ {
276
+ kind: "component",
277
+ type: ButtonComponent,
278
+ selector: "ui-button",
279
+ inputs: [
280
+ "size",
281
+ "variant",
282
+ "label",
283
+ "iconPosition",
284
+ "justIcon",
285
+ "iconName",
286
+ "trailingIconName",
287
+ "trailingIconFilled",
288
+ "disabled",
289
+ "loading",
290
+ "loadingWithLabel",
291
+ "fullWidth",
292
+ "url",
293
+ "urlTarget",
294
+ "value",
295
+ "tooltip",
296
+ "isPremium",
297
+ "type",
298
+ "companyColor",
299
+ "buttonBadgeConfig",
300
+ "applicationTheme",
301
+ "disabledScaleOnClick",
302
+ "ariaLabel",
303
+ "ariaExpanded",
304
+ "ariaControls",
305
+ "ariaPressed",
306
+ "ariaRequired",
307
+ "ariaLabelledby",
308
+ "ariaDescribedby",
309
+ "preventDefault",
310
+ "hasBackground",
311
+ "tooltipPosition",
312
+ "role",
313
+ "iconFilled",
314
+ "testId"
315
+ ],
316
+ outputs: ["buttonClickEvent", "buttonHoverEvent"]
317
+ },
318
+ {
319
+ kind: "component",
320
+ type: CardComponent,
321
+ selector: "ui-card",
322
+ inputs: [
323
+ "size",
324
+ "sizeVariant",
325
+ "variant",
326
+ "applicationTheme",
327
+ "errors",
328
+ "errorsSize",
329
+ "selected",
330
+ "allowSelect",
331
+ "allowFocus",
332
+ "testId"
333
+ ],
334
+ outputs: ["cardSelected"]
335
+ },
336
+ {
337
+ kind: "component",
338
+ type: TagComponent,
339
+ selector: "ui-tag",
340
+ inputs: [
341
+ "label",
342
+ "icon",
343
+ "allowClose",
344
+ "readOnly",
345
+ "isSelected",
346
+ "showIconWhenSelected",
347
+ "pinnedBackground",
348
+ "constrainWidth",
349
+ "isDisabled",
350
+ "applicationTheme",
351
+ "ariaLabel",
352
+ "testId",
353
+ "ariaRequired",
354
+ "showBadge",
355
+ "notificationsAmount"
356
+ ],
357
+ outputs: [
358
+ "isSelectedChange",
359
+ "close",
360
+ "press"
361
+ ]
362
+ },
363
+ {
364
+ kind: "ngmodule",
365
+ type: FieldComponentModule
366
+ },
367
+ {
368
+ kind: "component",
369
+ type: i2.FieldComponent,
370
+ selector: "ui-field",
371
+ inputs: [
372
+ "fullWidth",
373
+ "fullHeight",
374
+ "label",
375
+ "labelHtml",
376
+ "labelIcon",
377
+ "fieldName",
378
+ "placeholder",
379
+ "id",
380
+ "value",
381
+ "badgeVariant",
382
+ "errors",
383
+ "disabled",
384
+ "required",
385
+ "readOnly",
386
+ "hintMessage",
387
+ "type",
388
+ "updateOnBlur",
389
+ "allowOnlyDigits",
390
+ "isAutocompleteOff",
391
+ "allowNegative",
392
+ "showBottomContent",
393
+ "applicationTheme",
394
+ "ariaLabel",
395
+ "testId",
396
+ "loading",
397
+ "isValid",
398
+ "maxCharacters",
399
+ "trimOnBlur",
400
+ "trimOnSubmit",
401
+ "maxRows",
402
+ "hasTextAreaCounter",
403
+ "hideBuiltInErrors",
404
+ "hideLabelInErrors",
405
+ "max",
406
+ "min",
407
+ "textareaHeight",
408
+ "borderless",
409
+ "autosizableTextarea",
410
+ "isAIVariant",
411
+ "ariaLabelledby",
412
+ "ariaDescribedby",
413
+ "hasError"
414
+ ],
415
+ outputs: ["validateEvent", "fieldBlur"]
416
+ },
417
+ {
418
+ kind: "ngmodule",
419
+ type: FormsModule
420
+ },
421
+ {
422
+ kind: "directive",
423
+ type: i3.NgControlStatus,
424
+ selector: "[formControlName],[ngModel],[formControl]"
425
+ },
426
+ {
427
+ kind: "ngmodule",
428
+ type: ReactiveFormsModule
429
+ },
430
+ {
431
+ kind: "directive",
432
+ type: i3.FormControlDirective,
433
+ selector: "[formControl]",
434
+ inputs: [
435
+ "formControl",
436
+ "disabled",
437
+ "ngModel"
438
+ ],
439
+ outputs: ["ngModelChange"],
440
+ exportAs: ["ngForm"]
441
+ },
442
+ {
443
+ kind: "pipe",
444
+ type: AsyncPipe,
445
+ name: "async"
446
+ },
447
+ {
448
+ kind: "pipe",
449
+ type: UiTranslatePipe,
450
+ name: "uiTranslate"
451
+ },
452
+ {
453
+ kind: "pipe",
454
+ type: MemoizeFuncPipe,
455
+ name: "memoizeFunc"
456
+ }
457
+ ],
458
+ animations: [trigger("slideDown", [transition(":enter", [style({
459
+ height: 0,
460
+ opacity: 0,
461
+ overflow: "hidden"
462
+ }), animate("200ms ease-out", style({
463
+ height: "*",
464
+ opacity: 1
465
+ }))]), transition(":leave", [animate("200ms ease-in", style({
466
+ height: 0,
467
+ opacity: 0,
468
+ overflow: "hidden"
469
+ }))])])],
470
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
471
+ });
472
+ }
473
+ };
474
+ i0.ɵɵngDeclareClassMetadata({
475
+ minVersion: "12.0.0",
476
+ version: "22.2.4",
477
+ ngImport: i0,
478
+ type: AiFeedbackComponent,
479
+ decorators: [{
480
+ type: Component,
481
+ args: [{
482
+ selector: "ui-ai-feedback",
483
+ changeDetection: ChangeDetectionStrategy.OnPush,
484
+ animations: [trigger("slideDown", [transition(":enter", [style({
485
+ height: 0,
486
+ opacity: 0,
487
+ overflow: "hidden"
488
+ }), animate("200ms ease-out", style({
489
+ height: "*",
490
+ opacity: 1
491
+ }))]), transition(":leave", [animate("200ms ease-in", style({
492
+ height: 0,
493
+ opacity: 0,
494
+ overflow: "hidden"
495
+ }))])])],
496
+ imports: [
497
+ AiCaveatComponent,
498
+ IconComponentModule,
499
+ ButtonComponent,
500
+ CardComponent,
501
+ TagComponent,
502
+ FieldComponentModule,
503
+ FormsModule,
504
+ ReactiveFormsModule,
505
+ AsyncPipe,
506
+ UiTranslatePipe,
507
+ MemoizeFuncPipe
508
+ ],
509
+ template: "<div class=\"ai-feedback-wrapper\">\n <div class=\"ai-feedback\" [attr.aria-label]=\"translationContext + 'TITLE' | uiTranslate\" role=\"group\">\n <ui-ai-caveat [applicationTheme]=\"applicationTheme()\"></ui-ai-caveat>\n\n <div class=\"ai-feedback-buttons-section\">\n @if (isRatingDisabled()) {\n <div class=\"ai-feedback-saved\">\n <span class=\"ai-feedback-saved-text\">{{ translationContext + 'RATING_SAVED' | uiTranslate | async }}</span>\n <ui-icon\n [name]=\"isPositiveFeedback() ? 'Thumb-up-filled' : 'Thumb-down-filled'\"\n [filled]=\"true\"\n [applicationTheme]=\"applicationTheme()\"\n [color]=\"'gray'\"\n />\n </div>\n } @else {\n <span class=\"ai-feedback-label\">{{ translationContext + 'TITLE' | uiTranslate | async }}</span>\n\n <div\n class=\"ai-feedback-buttons\"\n role=\"group\"\n [attr.aria-expanded]=\"showPanel()\"\n [attr.aria-controls]=\"showPanel() ? 'feedback-panel' : null\"\n >\n <ui-button\n class=\"ai-feedback-button-positive\"\n data-testid=\"ai-feedback-button-positive\"\n [justIcon]=\"true\"\n [iconName]=\"'Thumb-up-in-line'\"\n [size]=\"'small'\"\n [tooltip]=\"('COMMON.YES' | uiTranslate | async)!\"\n [ariaLabel]=\"('COMMON.YES' | uiTranslate | async)!\"\n [iconFilled]=\"isPositiveFeedback() === true\"\n (buttonClickEvent)=\"onSelectionChange(true)\"\n variant=\"icon-button\"\n role=\"button\"\n >\n </ui-button>\n\n <ui-button\n data-testid=\"ai-feedback-button-negative\"\n [justIcon]=\"true\"\n [iconName]=\"'Thumb-down-in-line'\"\n [size]=\"'small'\"\n [tooltip]=\"('COMMON.NO' | uiTranslate | async)!\"\n [ariaLabel]=\"('COMMON.NO' | uiTranslate | async)!\"\n [iconFilled]=\"isPositiveFeedback() === false\"\n (buttonClickEvent)=\"onSelectionChange(false)\"\n variant=\"icon-button\"\n role=\"button\"\n >\n </ui-button>\n </div>\n }\n </div>\n </div>\n\n @if (showPanel()) {\n @let panelTitle =\n activeConfig()?.title ??\n (panelType() | memoizeFunc: getDefaultPanelTitleTranslation : this | uiTranslate | async);\n\n <ui-card\n id=\"feedback-panel\"\n class=\"feedback-panel\"\n [class.arrow-left]=\"arrowPosition() === 'left'\"\n [class.arrow-right]=\"arrowPosition() === 'right'\"\n [applicationTheme]=\"applicationTheme()\"\n [size]=\"isMobile() ? 'small' : 'medium'\"\n role=\"region\"\n [attr.aria-label]=\"panelTitle\"\n [@slideDown]\n >\n <div class=\"feedback-panel-arrow\"></div>\n\n <div class=\"feedback-panel-content\">\n <div class=\"feedback-panel-title-container\">\n <h4 class=\"feedback-panel-title\">\n {{ panelTitle }}\n </h4>\n\n <ui-button\n [justIcon]=\"true\"\n [iconName]=\"'Close-filled'\"\n [size]=\"'small'\"\n [ariaLabel]=\"'Close feedback panel'\"\n variant=\"icon-button\"\n (buttonClickEvent)=\"closePanel()\"\n >\n </ui-button>\n </div>\n\n @if (variant() === 'panel' && activeConfig()?.options && activeConfig()!.options!.length > 0) {\n <div class=\"feedback-options\">\n @for (option of activeConfig()?.options; track option.id) {\n <ui-tag\n [label]=\"option.label\"\n [isSelected]=\"isOptionSelected(option.id)\"\n [showIconWhenSelected]=\"true\"\n [applicationTheme]=\"applicationTheme()\"\n (press)=\"toggleOption(option.id)\"\n >\n </ui-tag>\n }\n </div>\n }\n\n @if (showOtherField()) {\n <ui-field\n class=\"feedback-field\"\n type=\"text\"\n [label]=\"\n activeConfig()?.otherPlaceholder ?? (translationContext + 'OTHER_PLACEHOLDER' | uiTranslate | async) ?? ''\n \"\n [formControl]=\"otherTextControl\"\n [applicationTheme]=\"applicationTheme()\"\n [fullWidth]=\"true\"\n [showBottomContent]=\"false\"\n >\n </ui-field>\n }\n\n <div class=\"feedback-submit-container\">\n <ui-button\n [label]=\"(translationContext + 'SUBMIT' | uiTranslate | async) || ''\"\n [disabled]=\"isSubmitDisabled()\"\n [size]=\"'small'\"\n [fullWidth]=\"isMobile()\"\n (buttonClickEvent)=\"onSubmit()\"\n variant=\"primary\"\n >\n </ui-button>\n </div>\n </div>\n </ui-card>\n }\n</div>\n",
510
+ 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}.ai-feedback-wrapper{position:relative}.ai-feedback{display:flex;flex-flow:row nowrap;align-items:center;justify-content:space-between;gap:16px;padding-right:4px}@media(max-width:600px){.ai-feedback{flex-wrap:wrap}}.ai-feedback-buttons-section{display:flex;flex-flow:row nowrap;align-items:center;gap:8px;color:#666}@media(max-width:600px){.ai-feedback-buttons-section{flex:1 0 100%;justify-content:space-between}}.ai-feedback-buttons{display:flex;flex-flow:row nowrap;align-items:center;justify-content:center}.ai-feedback-button-positive{margin-right:8px}.ai-feedback-saved{display:flex;flex-flow:row nowrap;align-items:center;gap:8px}.ai-feedback-saved-text{font-size:12px;color:#666}.feedback-panel{display:block;margin-top:16px}.feedback-panel-arrow{position:absolute;top:-8px;width:16px;height:16px;background:inherit;border-left:1px solid;border-top:1px solid;border-color:inherit;transform:rotate(45deg);transition:right .2s ease-out}.feedback-panel.arrow-left .feedback-panel-arrow{right:40px}.feedback-panel.arrow-right .feedback-panel-arrow{right:8px}.feedback-panel-content{position:relative}.feedback-panel-title-container{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.feedback-panel-title{font-size:16px;font-weight:600;color:#242424}.feedback-options{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.feedback-field{margin-bottom:16px}.feedback-submit-container{display:flex;justify-content:flex-end}@media(max-width:600px){.feedback-submit-container{display:block}}\n"]
511
+ }]
512
+ }],
513
+ propDecorators: {
514
+ positiveConfig: [{
515
+ type: i0.Input,
516
+ args: [{
517
+ isSignal: true,
518
+ alias: "positiveConfig",
519
+ required: false
520
+ }]
521
+ }],
522
+ negativeConfig: [{
523
+ type: i0.Input,
524
+ args: [{
525
+ isSignal: true,
526
+ alias: "negativeConfig",
527
+ required: false
528
+ }]
529
+ }],
530
+ skipPanelForPositive: [{
531
+ type: i0.Input,
532
+ args: [{
533
+ isSignal: true,
534
+ alias: "skipPanelForPositive",
535
+ required: false
536
+ }]
537
+ }],
538
+ applicationTheme: [{
539
+ type: i0.Input,
540
+ args: [{
541
+ isSignal: true,
542
+ alias: "applicationTheme",
543
+ required: false
544
+ }]
545
+ }],
546
+ variant: [{
547
+ type: i0.Input,
548
+ args: [{
549
+ isSignal: true,
550
+ alias: "variant",
551
+ required: false
552
+ }]
553
+ }],
554
+ isRatingDisabled: [{
555
+ type: i0.Input,
556
+ args: [{
557
+ isSignal: true,
558
+ alias: "isRatingDisabled",
559
+ required: false
560
+ }]
561
+ }],
562
+ enableAutoEmit: [{
563
+ type: i0.Input,
564
+ args: [{
565
+ isSignal: true,
566
+ alias: "enableAutoEmit",
567
+ required: false
568
+ }]
569
+ }],
570
+ isPositiveFeedback: [{
571
+ type: i0.Input,
572
+ args: [{
573
+ isSignal: true,
574
+ alias: "isPositiveFeedback",
575
+ required: false
576
+ }]
577
+ }, {
578
+ type: i0.Output,
579
+ args: ["isPositiveFeedbackChange"]
580
+ }],
581
+ selectionChange: [{
582
+ type: i0.Output,
583
+ args: ["selectionChange"]
584
+ }],
585
+ feedbackSubmitted: [{
586
+ type: i0.Output,
587
+ args: ["feedbackSubmitted"]
588
+ }],
589
+ feedbackCancelled: [{
590
+ type: i0.Output,
591
+ args: ["feedbackCancelled"]
592
+ }],
593
+ feedbackChanged: [{
594
+ type: i0.Output,
595
+ args: ["feedbackChanged"]
596
+ }]
597
+ }
598
+ });
599
+ var AiFeedbackModule = class AiFeedbackModule {
600
+ static {
601
+ this.ɵfac = i0.ɵɵngDeclareFactory({
602
+ minVersion: "12.0.0",
603
+ version: "22.2.4",
604
+ ngImport: i0,
605
+ type: AiFeedbackModule,
606
+ deps: [],
607
+ target: i0.ɵɵFactoryTarget.NgModule
608
+ });
609
+ }
610
+ static {
611
+ this.ɵmod = i0.ɵɵngDeclareNgModule({
612
+ minVersion: "14.0.0",
613
+ version: "22.2.4",
614
+ ngImport: i0,
615
+ type: AiFeedbackModule,
616
+ imports: [
617
+ CommonModule,
618
+ AsyncPipe,
619
+ ReactiveFormsModule,
620
+ ButtonComponentModule,
621
+ CardComponentModule,
622
+ TagComponentModule,
623
+ FieldComponentModule,
624
+ AiCaveatComponentModule,
625
+ IconComponentModule,
626
+ UiTranslatePipe,
627
+ MemoizeFuncPipe,
628
+ AiFeedbackComponent
629
+ ],
630
+ exports: [AiFeedbackComponent]
631
+ });
632
+ }
633
+ static {
634
+ this.ɵinj = i0.ɵɵngDeclareInjector({
635
+ minVersion: "12.0.0",
636
+ version: "22.2.4",
637
+ ngImport: i0,
638
+ type: AiFeedbackModule,
639
+ imports: [
640
+ CommonModule,
641
+ ReactiveFormsModule,
642
+ ButtonComponentModule,
643
+ CardComponentModule,
644
+ TagComponentModule,
645
+ FieldComponentModule,
646
+ AiCaveatComponentModule,
647
+ IconComponentModule,
648
+ AiFeedbackComponent
649
+ ]
650
+ });
651
+ }
652
+ };
653
+ i0.ɵɵngDeclareClassMetadata({
654
+ minVersion: "12.0.0",
655
+ version: "22.2.4",
656
+ ngImport: i0,
657
+ type: AiFeedbackModule,
658
+ decorators: [{
659
+ type: NgModule,
660
+ args: [{
661
+ imports: [
662
+ CommonModule,
663
+ AsyncPipe,
664
+ ReactiveFormsModule,
665
+ ButtonComponentModule,
666
+ CardComponentModule,
667
+ TagComponentModule,
668
+ FieldComponentModule,
669
+ AiCaveatComponentModule,
670
+ IconComponentModule,
671
+ UiTranslatePipe,
672
+ MemoizeFuncPipe,
673
+ AiFeedbackComponent
674
+ ],
675
+ exports: [AiFeedbackComponent]
676
+ }]
677
+ }]
678
+ });
280
679
  export { AiFeedbackComponent, AiFeedbackModule, AiFeedbackPanelType };
281
- //# sourceMappingURL=testgorilla-tgo-ui-components-ai-feedback.mjs.map
680
+
681
+ //# sourceMappingURL=testgorilla-tgo-ui-components-ai-feedback.mjs.map