@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,453 +1,848 @@
1
- import { CdkOverlayOrigin, CdkConnectedOverlay, OverlayModule } from '@angular/cdk/overlay';
2
- import { CdkVirtualScrollViewport, CdkFixedSizeVirtualScroll, CdkVirtualForOf } from '@angular/cdk/scrolling';
3
- import { AsyncPipe, CommonModule } from '@angular/common';
4
- import * as i0 from '@angular/core';
5
- import { input, EventEmitter, signal, computed, booleanAttribute, ViewChild, HostBinding, Input, Output, Optional, Inject, ChangeDetectionStrategy, ViewEncapsulation, Component, NgModule } from '@angular/core';
6
- import { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';
7
- import * as i1 from '@angular/forms';
8
- import { FormsModule } from '@angular/forms';
9
- import { MatTooltip, MatTooltipModule } from '@angular/material/tooltip';
10
- import { Subject, EMPTY, fromEvent } from 'rxjs';
11
- import { debounceTime, switchMap } from 'rxjs/operators';
12
- import { ButtonComponent, ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';
13
- import { CheckboxComponent, CheckboxComponentModule } from '@testgorilla/tgo-ui/components/checkbox';
14
- import { IKeyboardEvent, EllipseTextDirective, UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';
15
- import { FieldComponent, FieldComponentModule } from '@testgorilla/tgo-ui/components/field';
16
- import { IconComponent, IconComponentModule } from '@testgorilla/tgo-ui/components/icon';
17
- import { RadioButtonComponent, RadioButtonComponentModule } from '@testgorilla/tgo-ui/components/radio-button';
18
-
19
- class FilterButtonComponent {
20
- get panelTestId() {
21
- return this.testId ? `${this.testId}-panel` : null;
22
- }
23
- get resetButtonTestId() {
24
- return this.testId ? `${this.testId}-reset` : null;
25
- }
26
- get fullWidthClass() {
27
- return this.fullWidth;
28
- }
29
- constructor(defaultAppTheme, cdr, destroyRef) {
30
- this.defaultAppTheme = defaultAppTheme;
31
- this.cdr = cdr;
32
- this.class = 'ui-filter-button';
33
- /**
34
- * The button label when no value is selected.
35
- *
36
- * @type {string}
37
- * @memberof FilterButtonComponent
38
- */
39
- this.label = '';
40
- /**
41
- * Optional message to display on the overflow bottom.
42
- *
43
- * @type {string}
44
- * @memberof FilterButtonComponent
45
- */
46
- this.message = '';
47
- /**
48
- * List of selected values.
49
- *
50
- * @type {string[]}
51
- * @memberof FilterButtonComponent
52
- */
53
- this.value = [];
54
- /**
55
- * Whether the component is disabled.
56
- * Default: false.
57
- *
58
- * @type {boolean}
59
- * @memberof FilterButtonComponent
60
- */
61
- this.disabled = false;
62
- /**
63
- * List of options.
64
- *
65
- * @type {OptionType}
66
- * @memberof FilterButtonComponent
67
- */
68
- this.options = input([], ...(ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []));
69
- /**
70
- * Whether the user should be allowed to clear the values.
71
- * Default: true.
72
- *
73
- * @type {boolean}
74
- * @memberof FilterButtonComponent
75
- */
76
- this.allowClear = true;
77
- /**
78
- * Whether the user should be allowed to select single or multiple values.
79
- * Default: false.
80
- *
81
- * @type {boolean}
82
- * @memberof FilterButtonComponent
83
- */
84
- this.singleSelection = false;
85
- /**
86
- * The position of the icon.
87
- * Default: 'right'.
88
- *
89
- * @type {ButtonIconPosition}
90
- * @memberof FilterButtonComponent
91
- */
92
- this.iconPosition = 'right';
93
- /**
94
- * Optional message to display if there are no options to select available
95
- *
96
- * @type {string}
97
- * @memberof FilterButtonComponent
98
- */
99
- this.noOptionsMessage = '';
100
- /**
101
- * Whether the button should stretch to fill its container, and the dropdown panel
102
- * follow that width instead of the default 240px.
103
- * The panel never shrinks below 240px, so a container narrower than that is safe.
104
- * Default: false.
105
- *
106
- * @type {boolean}
107
- * @memberof FilterButtonComponent
108
- */
109
- this.fullWidth = false;
110
- this.testId = null;
111
- this.ariaLabel = '';
112
- /**
113
- * Emits the list of selected values when the selection changes.
114
- *
115
- * @type {EventEmitter<string[]>}
116
- * @memberof FilterButtonComponent
117
- */
118
- this.changed = new EventEmitter();
119
- /**
120
- * Emits the option change event
121
- *
122
- * @type {EventEmitter<OptionChangeEvent>}
123
- * @memberof FilterButtonComponent
124
- */
125
- this.optionChange = new EventEmitter();
126
- /**
127
- *
128
- * Defines the application theme
129
- *
130
- * @type {ApplicationTheme}
131
- * @memberof FilterButtonComponent
132
- */
133
- this.applicationTheme = 'light';
134
- /** Must match the `.item` height in the SCSS — the fixed-size viewport relies on it. */
135
- this.ITEM_SIZE = 48;
136
- this.MAX_LIST_HEIGHT = 290;
137
- this.PANEL_MIN_WIDTH = 240;
138
- this.MATCH_TRIGGER_PANEL_CLASS = 'ui-filter-button-panel-match-trigger';
139
- this.isOpen = signal(false, ...(ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []));
140
- this.displayedLabel = signal('', ...(ngDevMode ? [{ debugName: "displayedLabel" }] : /* istanbul ignore next */ []));
141
- this.tooltip = signal('', ...(ngDevMode ? [{ debugName: "tooltip" }] : /* istanbul ignore next */ []));
142
- this.search = signal('', ...(ngDevMode ? [{ debugName: "search" }] : /* istanbul ignore next */ []));
143
- this.activeIndex = signal(0, ...(ngDevMode ? [{ debugName: "activeIndex" }] : /* istanbul ignore next */ []));
144
- this.showTooltip = {};
145
- this.displayedOptions = computed(() => {
146
- let lastSectionTitle;
147
- return this.options()
148
- .map(option => {
149
- // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- an empty section title reuses the previous section
150
- lastSectionTitle = option.sectionTitle || lastSectionTitle;
151
- return { ...option, sectionTitle: lastSectionTitle };
152
- })
153
- .filter(option => option.label.toLowerCase().includes(this.search().toLowerCase()));
154
- }, ...(ngDevMode ? [{ debugName: "displayedOptions" }] : /* istanbul ignore next */ []));
155
- // Section titles become their own rows so the fixed-size viewport can position every row with one `itemSize`.
156
- this.flatOptions = computed(() => {
157
- const rows = [];
158
- let lastTitle;
159
- for (const option of this.displayedOptions()) {
160
- if (option.sectionTitle && option.sectionTitle !== lastTitle) {
161
- lastTitle = option.sectionTitle;
162
- rows.push({ kind: 'header', title: option.sectionTitle });
163
- }
164
- rows.push({ kind: 'option', option });
165
- }
166
- return rows;
167
- }, ...(ngDevMode ? [{ debugName: "flatOptions" }] : /* istanbul ignore next */ []));
168
- this.optionCount = computed(() => this.displayedOptions().length, ...(ngDevMode ? [{ debugName: "optionCount" }] : /* istanbul ignore next */ []));
169
- this.activeOption = computed(() => {
170
- const row = this.flatOptions()[this.activeIndex()];
171
- return row?.kind === 'option' ? row.option : undefined;
172
- }, ...(ngDevMode ? [{ debugName: "activeOption" }] : /* istanbul ignore next */ []));
173
- // 1-based position of the active option (headers excluded) for the aria-live announcement.
174
- this.activePosition = computed(() => {
175
- const rows = this.flatOptions();
176
- const activeIndex = this.activeIndex();
177
- let position = 0;
178
- for (let i = 0; i <= activeIndex && i < rows.length; i++) {
179
- if (rows[i].kind === 'option') {
180
- position++;
181
- }
182
- }
183
- return position;
184
- }, ...(ngDevMode ? [{ debugName: "activePosition" }] : /* istanbul ignore next */ []));
185
- this.listHeight = computed(() => Math.min(Math.max(this.flatOptions().length * this.ITEM_SIZE, this.ITEM_SIZE), this.MAX_LIST_HEIGHT), ...(ngDevMode ? [{ debugName: "listHeight" }] : /* istanbul ignore next */ []));
186
- this.trackByRow = (_index, row) => row.kind === 'header' ? `header:${row.title}` : `option:${row.option.value}`;
187
- this.MIN_OPTIONS_LENGTH_FOR_SEARCH = 8;
188
- this.translationContext = 'FILTER_BUTTON.';
189
- this.searchInput$ = new Subject();
190
- if (this.defaultAppTheme) {
191
- this.applicationTheme = this.defaultAppTheme;
192
- }
193
- this.searchInput$.pipe(debounceTime(150), takeUntilDestroyed(destroyRef)).subscribe(value => {
194
- this.search.set(value);
195
- this.activeIndex.set(this.firstOptionIndex());
196
- this.cdr.markForCheck();
197
- });
198
- toObservable(this.isOpen)
199
- .pipe(switchMap(open => (open && this.fullWidth ? fromEvent(window, 'resize').pipe(debounceTime(100)) : EMPTY)), takeUntilDestroyed(destroyRef))
200
- .subscribe(() => this.syncPanelWidth());
201
- }
202
- syncPanelWidth() {
203
- const overlayRef = this.connectedOverlay?.overlayRef;
204
- const trigger = this.triggerOrigin?.elementRef.nativeElement;
205
- if (!overlayRef || !trigger) {
206
- return;
207
- }
208
- overlayRef.updateSize({ width: trigger.getBoundingClientRect().width });
209
- overlayRef.updatePosition();
210
- }
211
- ngOnChanges(changes) {
212
- if (changes['value']) {
213
- this.updateLabel();
214
- }
215
- }
216
- clearValue() {
217
- this.value = [];
218
- this.updateLabel();
219
- this.changed.emit(this.value);
220
- }
221
- outsideClick() {
222
- window.setTimeout(() => {
223
- this.isOpen.set(false);
224
- });
225
- }
226
- toggle() {
227
- this.isOpen.set(!this.isOpen());
228
- if (this.isOpen()) {
229
- this.activeIndex.set(this.firstOptionIndex());
230
- }
231
- this.cdr.markForCheck();
232
- }
233
- isSelected(value) {
234
- return this.value?.includes(value ?? '');
235
- }
236
- optionChanged(selected, option) {
237
- this.value = this.value || [];
238
- if (this.singleSelection) {
239
- this.value = selected ? [option.value] : [];
240
- }
241
- else {
242
- if (selected) {
243
- this.value.push(option.value);
244
- }
245
- else {
246
- this.value.splice(this.value.indexOf(option.value), 1);
247
- }
248
- }
249
- this.changed.emit(this.value);
250
- this.optionChange.emit({ selected, option });
251
- this.updateLabel();
252
- }
253
- onSearchChange(value) {
254
- this.searchInput$.next(value);
255
- }
256
- keyDownHandler(ev) {
257
- if (ev.key === IKeyboardEvent.ARROW_DOWN) {
258
- ev.preventDefault();
259
- this.moveActive(1);
260
- }
261
- else if (ev.key === IKeyboardEvent.ARROW_UP) {
262
- ev.preventDefault();
263
- this.moveActive(-1);
264
- }
265
- else if (ev.key === IKeyboardEvent.ENTER || ev.key === IKeyboardEvent.SPACE) {
266
- ev.preventDefault();
267
- this.toggleActiveOption();
268
- }
269
- else if (ev.key === IKeyboardEvent.ESCAPE) {
270
- this.isOpen.set(false);
271
- }
272
- }
273
- onLabelEllipsisChange(isEllipsis, value) {
274
- this.showTooltip[value] = isEllipsis;
275
- }
276
- firstOptionIndex() {
277
- const index = this.flatOptions().findIndex(row => row.kind === 'option');
278
- return index === -1 ? 0 : index;
279
- }
280
- moveActive(delta) {
281
- const rows = this.flatOptions();
282
- const optionIndexes = [];
283
- rows.forEach((row, index) => {
284
- if (row.kind === 'option') {
285
- optionIndexes.push(index);
286
- }
287
- });
288
- if (!optionIndexes.length) {
289
- return;
290
- }
291
- const currentPos = optionIndexes.indexOf(this.activeIndex());
292
- const basePos = currentPos === -1 ? 0 : currentPos;
293
- const nextPos = (basePos + delta + optionIndexes.length) % optionIndexes.length;
294
- const nextIndex = optionIndexes[nextPos];
295
- this.activeIndex.set(nextIndex);
296
- this.viewport?.scrollToIndex(nextIndex, 'smooth');
297
- }
298
- toggleActiveOption() {
299
- const option = this.activeOption();
300
- if (option) {
301
- this.optionChanged(!this.isSelected(option.value), option);
302
- }
303
- }
304
- updateLabel() {
305
- this.value = this.value || [];
306
- let displayedLabel = '';
307
- let tooltip = '';
308
- const sortedLabels = this.options()
309
- .filter(option => this.value.includes(option.value))
310
- .map(item => item?.label ?? '');
311
- if (sortedLabels.length > 0) {
312
- displayedLabel = this.options().find(option => option.value === this.value[0])?.label ?? '';
313
- tooltip = `${this.label}${sortedLabels.map(value => `\n • ${value}`).join('')}`;
314
- }
315
- if (this.value.length > 1) {
316
- displayedLabel += ` (+${this.value.length - 1})`;
317
- }
318
- this.displayedLabel.set(displayedLabel);
319
- this.tooltip.set(tooltip);
320
- this.cdr.markForCheck();
321
- }
322
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: FilterButtonComponent, deps: [{ token: 'CANOPYUI_DEFAULT_APPLICATION_THEME', optional: true }, { token: i0.ChangeDetectorRef }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component }); }
323
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.25", type: FilterButtonComponent, isStandalone: true, selector: "ui-filter-button", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: false, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: false, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, allowClear: { classPropertyName: "allowClear", publicName: "allowClear", isSignal: false, isRequired: false, transformFunction: null }, singleSelection: { classPropertyName: "singleSelection", publicName: "singleSelection", isSignal: false, isRequired: false, transformFunction: null }, iconName: { classPropertyName: "iconName", publicName: "iconName", isSignal: false, isRequired: false, transformFunction: null }, iconPosition: { classPropertyName: "iconPosition", publicName: "iconPosition", isSignal: false, isRequired: false, transformFunction: null }, noOptionsMessage: { classPropertyName: "noOptionsMessage", publicName: "noOptionsMessage", isSignal: false, isRequired: false, transformFunction: null }, fullWidth: { classPropertyName: "fullWidth", publicName: "fullWidth", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, testId: { classPropertyName: "testId", publicName: "testId", isSignal: false, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: false, isRequired: false, transformFunction: null }, applicationTheme: { classPropertyName: "applicationTheme", publicName: "applicationTheme", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { changed: "changed", optionChange: "optionChange" }, host: { properties: { "class": "this.class", "attr.theme": "this.applicationTheme", "class.ui-filter-button-full-width": "this.fullWidthClass" } }, viewQueries: [{ propertyName: "overlayContainer", first: true, predicate: ["overlayContainer"], descendants: true }, { propertyName: "viewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true }, { propertyName: "triggerOrigin", first: true, predicate: CdkOverlayOrigin, descendants: true }, { propertyName: "connectedOverlay", first: true, predicate: CdkConnectedOverlay, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container>\n <ui-button\n [matTooltip]=\"tooltip()\"\n [matTooltipClass]=\"'tooltip-multi-line ' + applicationTheme\"\n [matTooltipPosition]=\"'above'\"\n class=\"ui-filter-button-trigger\"\n [class.button-opened]=\"isOpen()\"\n [variant]=\"value.length || isOpen() ? 'secondary' : 'ghost'\"\n [label]=\"displayedLabel() || label\"\n [disabled]=\"disabled || (options().length === 0 && !noOptionsMessage)\"\n (click)=\"toggle()\"\n type=\"button\"\n size=\"small\"\n [role]=\"'combobox'\"\n [tooltip]=\"value.length ? ' ' : ''\"\n [attr.aria-expanded]=\"isOpen()\"\n [testId]=\"testId\"\n [ariaLabel]=\"ariaLabel\"\n [iconName]=\"iconName || (isOpen() ? 'Arrow-chevron-up-filled' : 'Arrow-chevron-down-filled')\"\n [iconPosition]=\"iconPosition\"\n [applicationTheme]=\"applicationTheme\"\n [fullWidth]=\"fullWidth\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n ></ui-button>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayMatchWidth]=\"fullWidth\"\n [cdkConnectedOverlayMinWidth]=\"fullWidth ? PANEL_MIN_WIDTH : ''\"\n [cdkConnectedOverlayPanelClass]=\"fullWidth ? MATCH_TRIGGER_PANEL_CLASS : ''\"\n (overlayOutsideClick)=\"outsideClick()\"\n >\n @if (activeOption(); as active) {\n <div style=\"position: absolute; left: -9999px\" [attr.aria-live]=\"'polite'\">\n {{ active.label }}\n {{\n translationContext + 'ACTIVE_ITEM' | uiTranslate: { active: activePosition(), total: optionCount() } | async\n }}\n </div>\n <div style=\"position: absolute; left: -9999px\" [attr.aria-live]=\"'polite'\">\n {{ active.label }}\n {{\n (value.includes(active.value) ? translationContext + 'SELECTED' : translationContext + 'DESELECTED')\n | uiTranslate\n | async\n }}\n </div>\n }\n <div class=\"ui-filter-button\" #overlayContainer [attr.data-testid]=\"panelTestId\">\n @if (options().length > MIN_OPTIONS_LENGTH_FOR_SEARCH) {\n <div class=\"ui-filter-button-header\">\n <ui-field\n type=\"search\"\n [showBottomContent]=\"false\"\n [ngModel]=\"search()\"\n (ngModelChange)=\"onSearchChange($event)\"\n [applicationTheme]=\"applicationTheme\"\n ></ui-field>\n </div>\n }\n <div\n class=\"ui-filter-button-list\"\n #list\n tabindex=\"0\"\n role=\"listbox\"\n [attr.aria-activedescendant]=\"isOpen() && activeOption() ? 'ui-fb-option-' + activeIndex() : null\"\n (keydown)=\"keyDownHandler($event)\"\n >\n @if (!displayedOptions().length && options().length) {\n <div class=\"no-results-found\">\n <span>{{ translationContext + 'NO_RESULTS_FOUND' | uiTranslate | async }}</span>\n </div>\n } @else {\n <cdk-virtual-scroll-viewport\n class=\"ui-filter-button-viewport\"\n [itemSize]=\"ITEM_SIZE\"\n [style.height.px]=\"listHeight()\"\n >\n <ng-container *cdkVirtualFor=\"let row of flatOptions(); let i = index; trackBy: trackByRow\">\n @if (row.kind === 'header') {\n <div class=\"section-title\">\n {{ row.title }}\n </div>\n } @else {\n <div\n class=\"item\"\n role=\"option\"\n tabindex=\"-1\"\n [id]=\"'ui-fb-option-' + i\"\n [class.item-selected]=\"isSelected(row.option.value)\"\n [class.item-active]=\"activeIndex() === i\"\n [attr.aria-selected]=\"isSelected(row.option.value)\"\n (click)=\"activeIndex.set(i); optionChanged(!isSelected(row.option.value), row.option)\"\n (keydown.enter)=\"optionChanged(!isSelected(row.option.value), row.option)\"\n >\n @if (singleSelection) {\n <ui-radio-button\n (click)=\"$event.stopPropagation()\"\n [tabIndex]=\"-1\"\n [selected]=\"isSelected(row.option.value)\"\n (changeRadio)=\"optionChanged($event.optionChecked, row.option)\"\n [applicationTheme]=\"applicationTheme\"\n >\n </ui-radio-button>\n }\n @if (!singleSelection) {\n <ui-checkbox\n (click)=\"$event.stopPropagation()\"\n [class.with-label-number]=\"row.option.labelNumber !== undefined\"\n [tabIndex]=\"-1\"\n [checked]=\"isSelected(row.option.value)\"\n (changed)=\"optionChanged($event, row.option)\"\n [applicationTheme]=\"applicationTheme\"\n ></ui-checkbox>\n }\n @if (row.option.icon) {\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"row.option.icon\"></ui-icon>\n }\n <span\n #tooltip=\"matTooltip\"\n class=\"item-label\"\n uiEllipseText\n [refresh]=\"row.option.value\"\n (onChangeTextState)=\"onLabelEllipsisChange($event, row.option.value)\"\n [matTooltip]=\"showTooltip[row.option.value] ? row.option.label : ''\"\n [matTooltipClass]=\"applicationTheme\"\n >\n {{ row.option.label }}\n </span>\n @if (row.option.labelNumber !== undefined) {\n <span class=\"item-number\">({{ row.option.labelNumber }})</span>\n }\n </div>\n }\n </ng-container>\n </cdk-virtual-scroll-viewport>\n }\n </div>\n @if (!options().length && !!noOptionsMessage) {\n <div class=\"ui-filter-button-no-options\" [innerHTML]=\"noOptionsMessage\"></div>\n } @else {\n @if (allowClear || message) {\n <div class=\"ui-filter-button-footer\">\n @if (allowClear) {\n <ui-button\n variant=\"text\"\n size=\"small\"\n [label]=\"('COMMON.RESET' | uiTranslate | async)!\"\n (click)=\"clearValue()\"\n [applicationTheme]=\"applicationTheme\"\n [testId]=\"resetButtonTestId\"\n (keydown.escape)=\"toggle()\"\n ></ui-button>\n }\n <div class=\"ui-filter-button-footer-message\">\n {{ message }}\n </div>\n </div>\n }\n }\n </div>\n </ng-template>\n</ng-container>\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}ui-filter-button{display:inline-block}ui-filter-button.ui-filter-button-full-width{display:block;width:100%}ui-filter-button ui-button .button-wrapper button{padding:7px 24px!important}ui-filter-button ui-button .button-wrapper button .icon ui-icon mat-icon.size-16 svg{width:24px;height:24px}ui-filter-button ui-button .button-wrapper button .label{line-clamp:1;-webkit-line-clamp:1!important}ui-filter-button ui-button.button-opened .button-wrapper button{background-color:#666!important;border-color:#666}ui-filter-button ui-button button.secondary{border:1px solid #242424}ui-filter-button ui-button button.secondary:hover{border-color:#666}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button{margin-top:4px;box-shadow:0 4px 16px #24242414;border-radius:10px;background-color:#fff;padding:0 0 8px;width:240px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-header{padding:8px 16px 0}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .section-title{display:flex;align-items:center;height:48px;padding:0 16px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .no-results-found{padding:8px 16px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item{padding:0 16px 0 5px;display:flex;align-items:center;gap:5px;height:48px;cursor:pointer}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item:hover,.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item.item-active,.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item.item-selected{background-color:#f4f4f4}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item ui-radio-button{margin-right:4px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item ui-checkbox{max-width:100%}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item ui-checkbox.with-label-number{max-width:calc(100% - 25px)}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item-number{color:#666}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item-label{-webkit-user-select:none;user-select:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-viewport{width:100%;max-height:290px;overflow-x:hidden}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-viewport .cdk-virtual-scroll-content-wrapper{max-width:100%}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-footer{display:flex;justify-content:space-between;align-items:center;padding:0 16px 0 5px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-footer ui-button{margin-left:-5px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-footer-message{color:#666}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-no-options{padding:24px}.cdk-overlay-container .cdk-overlay-pane.ui-filter-button-panel-match-trigger .ui-filter-button{width:100%}.tooltip-multi-line .mdc-tooltip__surface{text-align:left;white-space:pre-line}\n"], dependencies: [{ 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: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation", "cdkConnectedOverlayUsePopover", "cdkConnectedOverlayMatchWidth", "cdkConnectedOverlay"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "component", type: CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: 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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: RadioButtonComponent, selector: "ui-radio-button", inputs: ["disabled", "selected", "allowUnselect", "companyColor", "name", "label", "multiple", "mediaCard", "value", "applicationTheme", "ariaLabel", "testId", "ariaRequired", "hasError", "ariaLabelledby", "ariaDescribedby", "truncateText", "alignment", "tabIndex", "hideTooltipOnEllipsis"], outputs: ["changeRadio"] }, { kind: "component", type: CheckboxComponent, selector: "ui-checkbox", inputs: ["disabled", "checked", "indeterminate", "companyColor", "name", "label", "multiple", "applicationTheme", "ariaLabel", "testId", "ariaRequired", "hasError", "hideBuiltInErrors", "hideLabelInErrors", "ariaLabelledby", "ariaDescribedby", "truncateText", "alignment", "tabIndex"], outputs: ["changed"] }, { kind: "component", type: IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color", "filled", "toggleIconStyle", "applicationTheme", "useFullIconName"] }, { kind: "directive", type: EllipseTextDirective, selector: "[uiEllipseText]", inputs: ["isMultiline", "maxDiffPixels", "refresh"], outputs: ["onChangeTextState"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: UiTranslatePipe, name: "uiTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
324
- }
325
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: FilterButtonComponent, decorators: [{
326
- type: Component,
327
- args: [{ selector: 'ui-filter-button', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
328
- ButtonComponent,
329
- CdkOverlayOrigin,
330
- MatTooltip,
331
- CdkConnectedOverlay,
332
- CdkVirtualScrollViewport,
333
- CdkFixedSizeVirtualScroll,
334
- CdkVirtualForOf,
335
- FieldComponent,
336
- FormsModule,
337
- RadioButtonComponent,
338
- CheckboxComponent,
339
- IconComponent,
340
- EllipseTextDirective,
341
- AsyncPipe,
342
- UiTranslatePipe,
343
- ], template: "<ng-container>\n <ui-button\n [matTooltip]=\"tooltip()\"\n [matTooltipClass]=\"'tooltip-multi-line ' + applicationTheme\"\n [matTooltipPosition]=\"'above'\"\n class=\"ui-filter-button-trigger\"\n [class.button-opened]=\"isOpen()\"\n [variant]=\"value.length || isOpen() ? 'secondary' : 'ghost'\"\n [label]=\"displayedLabel() || label\"\n [disabled]=\"disabled || (options().length === 0 && !noOptionsMessage)\"\n (click)=\"toggle()\"\n type=\"button\"\n size=\"small\"\n [role]=\"'combobox'\"\n [tooltip]=\"value.length ? ' ' : ''\"\n [attr.aria-expanded]=\"isOpen()\"\n [testId]=\"testId\"\n [ariaLabel]=\"ariaLabel\"\n [iconName]=\"iconName || (isOpen() ? 'Arrow-chevron-up-filled' : 'Arrow-chevron-down-filled')\"\n [iconPosition]=\"iconPosition\"\n [applicationTheme]=\"applicationTheme\"\n [fullWidth]=\"fullWidth\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n ></ui-button>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayMatchWidth]=\"fullWidth\"\n [cdkConnectedOverlayMinWidth]=\"fullWidth ? PANEL_MIN_WIDTH : ''\"\n [cdkConnectedOverlayPanelClass]=\"fullWidth ? MATCH_TRIGGER_PANEL_CLASS : ''\"\n (overlayOutsideClick)=\"outsideClick()\"\n >\n @if (activeOption(); as active) {\n <div style=\"position: absolute; left: -9999px\" [attr.aria-live]=\"'polite'\">\n {{ active.label }}\n {{\n translationContext + 'ACTIVE_ITEM' | uiTranslate: { active: activePosition(), total: optionCount() } | async\n }}\n </div>\n <div style=\"position: absolute; left: -9999px\" [attr.aria-live]=\"'polite'\">\n {{ active.label }}\n {{\n (value.includes(active.value) ? translationContext + 'SELECTED' : translationContext + 'DESELECTED')\n | uiTranslate\n | async\n }}\n </div>\n }\n <div class=\"ui-filter-button\" #overlayContainer [attr.data-testid]=\"panelTestId\">\n @if (options().length > MIN_OPTIONS_LENGTH_FOR_SEARCH) {\n <div class=\"ui-filter-button-header\">\n <ui-field\n type=\"search\"\n [showBottomContent]=\"false\"\n [ngModel]=\"search()\"\n (ngModelChange)=\"onSearchChange($event)\"\n [applicationTheme]=\"applicationTheme\"\n ></ui-field>\n </div>\n }\n <div\n class=\"ui-filter-button-list\"\n #list\n tabindex=\"0\"\n role=\"listbox\"\n [attr.aria-activedescendant]=\"isOpen() && activeOption() ? 'ui-fb-option-' + activeIndex() : null\"\n (keydown)=\"keyDownHandler($event)\"\n >\n @if (!displayedOptions().length && options().length) {\n <div class=\"no-results-found\">\n <span>{{ translationContext + 'NO_RESULTS_FOUND' | uiTranslate | async }}</span>\n </div>\n } @else {\n <cdk-virtual-scroll-viewport\n class=\"ui-filter-button-viewport\"\n [itemSize]=\"ITEM_SIZE\"\n [style.height.px]=\"listHeight()\"\n >\n <ng-container *cdkVirtualFor=\"let row of flatOptions(); let i = index; trackBy: trackByRow\">\n @if (row.kind === 'header') {\n <div class=\"section-title\">\n {{ row.title }}\n </div>\n } @else {\n <div\n class=\"item\"\n role=\"option\"\n tabindex=\"-1\"\n [id]=\"'ui-fb-option-' + i\"\n [class.item-selected]=\"isSelected(row.option.value)\"\n [class.item-active]=\"activeIndex() === i\"\n [attr.aria-selected]=\"isSelected(row.option.value)\"\n (click)=\"activeIndex.set(i); optionChanged(!isSelected(row.option.value), row.option)\"\n (keydown.enter)=\"optionChanged(!isSelected(row.option.value), row.option)\"\n >\n @if (singleSelection) {\n <ui-radio-button\n (click)=\"$event.stopPropagation()\"\n [tabIndex]=\"-1\"\n [selected]=\"isSelected(row.option.value)\"\n (changeRadio)=\"optionChanged($event.optionChecked, row.option)\"\n [applicationTheme]=\"applicationTheme\"\n >\n </ui-radio-button>\n }\n @if (!singleSelection) {\n <ui-checkbox\n (click)=\"$event.stopPropagation()\"\n [class.with-label-number]=\"row.option.labelNumber !== undefined\"\n [tabIndex]=\"-1\"\n [checked]=\"isSelected(row.option.value)\"\n (changed)=\"optionChanged($event, row.option)\"\n [applicationTheme]=\"applicationTheme\"\n ></ui-checkbox>\n }\n @if (row.option.icon) {\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"row.option.icon\"></ui-icon>\n }\n <span\n #tooltip=\"matTooltip\"\n class=\"item-label\"\n uiEllipseText\n [refresh]=\"row.option.value\"\n (onChangeTextState)=\"onLabelEllipsisChange($event, row.option.value)\"\n [matTooltip]=\"showTooltip[row.option.value] ? row.option.label : ''\"\n [matTooltipClass]=\"applicationTheme\"\n >\n {{ row.option.label }}\n </span>\n @if (row.option.labelNumber !== undefined) {\n <span class=\"item-number\">({{ row.option.labelNumber }})</span>\n }\n </div>\n }\n </ng-container>\n </cdk-virtual-scroll-viewport>\n }\n </div>\n @if (!options().length && !!noOptionsMessage) {\n <div class=\"ui-filter-button-no-options\" [innerHTML]=\"noOptionsMessage\"></div>\n } @else {\n @if (allowClear || message) {\n <div class=\"ui-filter-button-footer\">\n @if (allowClear) {\n <ui-button\n variant=\"text\"\n size=\"small\"\n [label]=\"('COMMON.RESET' | uiTranslate | async)!\"\n (click)=\"clearValue()\"\n [applicationTheme]=\"applicationTheme\"\n [testId]=\"resetButtonTestId\"\n (keydown.escape)=\"toggle()\"\n ></ui-button>\n }\n <div class=\"ui-filter-button-footer-message\">\n {{ message }}\n </div>\n </div>\n }\n }\n </div>\n </ng-template>\n</ng-container>\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}ui-filter-button{display:inline-block}ui-filter-button.ui-filter-button-full-width{display:block;width:100%}ui-filter-button ui-button .button-wrapper button{padding:7px 24px!important}ui-filter-button ui-button .button-wrapper button .icon ui-icon mat-icon.size-16 svg{width:24px;height:24px}ui-filter-button ui-button .button-wrapper button .label{line-clamp:1;-webkit-line-clamp:1!important}ui-filter-button ui-button.button-opened .button-wrapper button{background-color:#666!important;border-color:#666}ui-filter-button ui-button button.secondary{border:1px solid #242424}ui-filter-button ui-button button.secondary:hover{border-color:#666}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button{margin-top:4px;box-shadow:0 4px 16px #24242414;border-radius:10px;background-color:#fff;padding:0 0 8px;width:240px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-header{padding:8px 16px 0}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .section-title{display:flex;align-items:center;height:48px;padding:0 16px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .no-results-found{padding:8px 16px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item{padding:0 16px 0 5px;display:flex;align-items:center;gap:5px;height:48px;cursor:pointer}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item:hover,.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item.item-active,.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item.item-selected{background-color:#f4f4f4}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item ui-radio-button{margin-right:4px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item ui-checkbox{max-width:100%}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item ui-checkbox.with-label-number{max-width:calc(100% - 25px)}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item-number{color:#666}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item-label{-webkit-user-select:none;user-select:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-viewport{width:100%;max-height:290px;overflow-x:hidden}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-viewport .cdk-virtual-scroll-content-wrapper{max-width:100%}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-footer{display:flex;justify-content:space-between;align-items:center;padding:0 16px 0 5px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-footer ui-button{margin-left:-5px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-footer-message{color:#666}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-no-options{padding:24px}.cdk-overlay-container .cdk-overlay-pane.ui-filter-button-panel-match-trigger .ui-filter-button{width:100%}.tooltip-multi-line .mdc-tooltip__surface{text-align:left;white-space:pre-line}\n"] }]
344
- }], ctorParameters: () => [{ type: undefined, decorators: [{
345
- type: Optional
346
- }, {
347
- type: Inject,
348
- args: ['CANOPYUI_DEFAULT_APPLICATION_THEME']
349
- }] }, { type: i0.ChangeDetectorRef }, { type: i0.DestroyRef }], propDecorators: { class: [{
350
- type: HostBinding
351
- }], label: [{
352
- type: Input
353
- }], message: [{
354
- type: Input
355
- }], value: [{
356
- type: Input
357
- }], disabled: [{
358
- type: Input
359
- }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], allowClear: [{
360
- type: Input
361
- }], singleSelection: [{
362
- type: Input
363
- }], iconName: [{
364
- type: Input
365
- }], iconPosition: [{
366
- type: Input
367
- }], noOptionsMessage: [{
368
- type: Input
369
- }], fullWidth: [{
370
- type: Input,
371
- args: [{ transform: booleanAttribute }]
372
- }], testId: [{
373
- type: Input
374
- }], ariaLabel: [{
375
- type: Input
376
- }], changed: [{
377
- type: Output
378
- }], optionChange: [{
379
- type: Output
380
- }], applicationTheme: [{
381
- type: HostBinding,
382
- args: ['attr.theme']
383
- }, {
384
- type: Input
385
- }], fullWidthClass: [{
386
- type: HostBinding,
387
- args: ['class.ui-filter-button-full-width']
388
- }], overlayContainer: [{
389
- type: ViewChild,
390
- args: ['overlayContainer']
391
- }], viewport: [{
392
- type: ViewChild,
393
- args: [CdkVirtualScrollViewport]
394
- }], triggerOrigin: [{
395
- type: ViewChild,
396
- args: [CdkOverlayOrigin]
397
- }], connectedOverlay: [{
398
- type: ViewChild,
399
- args: [CdkConnectedOverlay]
400
- }] } });
401
-
402
- class FilterButtonComponentModule {
403
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: FilterButtonComponentModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
404
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.25", ngImport: i0, type: FilterButtonComponentModule, imports: [CommonModule,
405
- FormsModule,
406
- MatTooltipModule,
407
- OverlayModule,
408
- UiTranslatePipe,
409
- ButtonComponentModule,
410
- IconComponentModule,
411
- CheckboxComponentModule,
412
- FieldComponentModule,
413
- EllipseTextDirective,
414
- RadioButtonComponentModule,
415
- FilterButtonComponent], exports: [FilterButtonComponent] }); }
416
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: FilterButtonComponentModule, imports: [CommonModule,
417
- FormsModule,
418
- MatTooltipModule,
419
- OverlayModule,
420
- ButtonComponentModule,
421
- IconComponentModule,
422
- CheckboxComponentModule,
423
- FieldComponentModule,
424
- RadioButtonComponentModule,
425
- FilterButtonComponent] }); }
426
- }
427
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: FilterButtonComponentModule, decorators: [{
428
- type: NgModule,
429
- args: [{
430
- imports: [
431
- CommonModule,
432
- FormsModule,
433
- MatTooltipModule,
434
- OverlayModule,
435
- UiTranslatePipe,
436
- ButtonComponentModule,
437
- IconComponentModule,
438
- CheckboxComponentModule,
439
- FieldComponentModule,
440
- EllipseTextDirective,
441
- RadioButtonComponentModule,
442
- FilterButtonComponent,
443
- ],
444
- exports: [FilterButtonComponent],
445
- }]
446
- }] });
447
-
448
- /**
449
- * Generated bundle index. Do not edit.
450
- */
451
-
1
+ import { CdkConnectedOverlay, CdkOverlayOrigin, OverlayModule } from "@angular/cdk/overlay";
2
+ import { CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport } from "@angular/cdk/scrolling";
3
+ import { AsyncPipe, CommonModule } from "@angular/common";
4
+ import * as i0 from "@angular/core";
5
+ import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Inject, Input, NgModule, Optional, Output, ViewChild, ViewEncapsulation, booleanAttribute, computed, input, signal } from "@angular/core";
6
+ import { takeUntilDestroyed, toObservable } from "@angular/core/rxjs-interop";
7
+ import * as i1 from "@angular/forms";
8
+ import { FormsModule } from "@angular/forms";
9
+ import { MatTooltip, MatTooltipModule } from "@angular/material/tooltip";
10
+ import { EMPTY, Subject, fromEvent } from "rxjs";
11
+ import { debounceTime, switchMap } from "rxjs/operators";
12
+ import { ButtonComponent, ButtonComponentModule } from "@testgorilla/tgo-ui/components/button";
13
+ import { CheckboxComponent, CheckboxComponentModule } from "@testgorilla/tgo-ui/components/checkbox";
14
+ import { EllipseTextDirective, IKeyboardEvent, UiTranslatePipe } from "@testgorilla/tgo-ui/components/core";
15
+ import { FieldComponent, FieldComponentModule } from "@testgorilla/tgo-ui/components/field";
16
+ import { IconComponent, IconComponentModule } from "@testgorilla/tgo-ui/components/icon";
17
+ import { RadioButtonComponent, RadioButtonComponentModule } from "@testgorilla/tgo-ui/components/radio-button";
18
+ var FilterButtonComponent = class FilterButtonComponent {
19
+ get panelTestId() {
20
+ return this.testId ? `${this.testId}-panel` : null;
21
+ }
22
+ get resetButtonTestId() {
23
+ return this.testId ? `${this.testId}-reset` : null;
24
+ }
25
+ get fullWidthClass() {
26
+ return this.fullWidth;
27
+ }
28
+ constructor(defaultAppTheme, cdr, destroyRef) {
29
+ this.defaultAppTheme = defaultAppTheme;
30
+ this.cdr = cdr;
31
+ this.class = "ui-filter-button";
32
+ this.label = "";
33
+ this.message = "";
34
+ this.value = [];
35
+ this.disabled = false;
36
+ this.options = input([], ...ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []);
37
+ this.allowClear = true;
38
+ this.singleSelection = false;
39
+ this.iconPosition = "right";
40
+ this.noOptionsMessage = "";
41
+ this.fullWidth = false;
42
+ this.testId = null;
43
+ this.ariaLabel = "";
44
+ this.changed = new EventEmitter();
45
+ this.optionChange = new EventEmitter();
46
+ this.applicationTheme = "light";
47
+ this.ITEM_SIZE = 48;
48
+ this.MAX_LIST_HEIGHT = 290;
49
+ this.PANEL_MIN_WIDTH = 240;
50
+ this.MATCH_TRIGGER_PANEL_CLASS = "ui-filter-button-panel-match-trigger";
51
+ this.isOpen = signal(false, ...ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []);
52
+ this.displayedLabel = signal("", ...ngDevMode ? [{ debugName: "displayedLabel" }] : /* istanbul ignore next */ []);
53
+ this.tooltip = signal("", ...ngDevMode ? [{ debugName: "tooltip" }] : /* istanbul ignore next */ []);
54
+ this.search = signal("", ...ngDevMode ? [{ debugName: "search" }] : /* istanbul ignore next */ []);
55
+ this.activeIndex = signal(0, ...ngDevMode ? [{ debugName: "activeIndex" }] : /* istanbul ignore next */ []);
56
+ this.showTooltip = {};
57
+ this.displayedOptions = computed(() => {
58
+ let lastSectionTitle;
59
+ return this.options().map((option) => {
60
+ lastSectionTitle = option.sectionTitle || lastSectionTitle;
61
+ return {
62
+ ...option,
63
+ sectionTitle: lastSectionTitle
64
+ };
65
+ }).filter((option) => option.label.toLowerCase().includes(this.search().toLowerCase()));
66
+ }, ...ngDevMode ? [{ debugName: "displayedOptions" }] : /* istanbul ignore next */ []);
67
+ this.flatOptions = computed(() => {
68
+ const rows = [];
69
+ let lastTitle;
70
+ for (const option of this.displayedOptions()) {
71
+ if (option.sectionTitle && option.sectionTitle !== lastTitle) {
72
+ lastTitle = option.sectionTitle;
73
+ rows.push({
74
+ kind: "header",
75
+ title: option.sectionTitle
76
+ });
77
+ }
78
+ rows.push({
79
+ kind: "option",
80
+ option
81
+ });
82
+ }
83
+ return rows;
84
+ }, ...ngDevMode ? [{ debugName: "flatOptions" }] : /* istanbul ignore next */ []);
85
+ this.optionCount = computed(() => this.displayedOptions().length, ...ngDevMode ? [{ debugName: "optionCount" }] : /* istanbul ignore next */ []);
86
+ this.activeOption = computed(() => {
87
+ const row = this.flatOptions()[this.activeIndex()];
88
+ return row?.kind === "option" ? row.option : void 0;
89
+ }, ...ngDevMode ? [{ debugName: "activeOption" }] : /* istanbul ignore next */ []);
90
+ this.activePosition = computed(() => {
91
+ const rows = this.flatOptions();
92
+ const activeIndex = this.activeIndex();
93
+ let position = 0;
94
+ for (let i = 0; i <= activeIndex && i < rows.length; i++) if (rows[i].kind === "option") position++;
95
+ return position;
96
+ }, ...ngDevMode ? [{ debugName: "activePosition" }] : /* istanbul ignore next */ []);
97
+ this.listHeight = computed(() => Math.min(Math.max(this.flatOptions().length * this.ITEM_SIZE, this.ITEM_SIZE), this.MAX_LIST_HEIGHT), ...ngDevMode ? [{ debugName: "listHeight" }] : /* istanbul ignore next */ []);
98
+ this.trackByRow = (_index, row) => row.kind === "header" ? `header:${row.title}` : `option:${row.option.value}`;
99
+ this.MIN_OPTIONS_LENGTH_FOR_SEARCH = 8;
100
+ this.translationContext = "FILTER_BUTTON.";
101
+ this.searchInput$ = new Subject();
102
+ if (this.defaultAppTheme) this.applicationTheme = this.defaultAppTheme;
103
+ this.searchInput$.pipe(debounceTime(150), takeUntilDestroyed(destroyRef)).subscribe((value) => {
104
+ this.search.set(value);
105
+ this.activeIndex.set(this.firstOptionIndex());
106
+ this.cdr.markForCheck();
107
+ });
108
+ toObservable(this.isOpen).pipe(switchMap((open) => open && this.fullWidth ? fromEvent(window, "resize").pipe(debounceTime(100)) : EMPTY), takeUntilDestroyed(destroyRef)).subscribe(() => this.syncPanelWidth());
109
+ }
110
+ syncPanelWidth() {
111
+ const overlayRef = this.connectedOverlay?.overlayRef;
112
+ const trigger = this.triggerOrigin?.elementRef.nativeElement;
113
+ if (!overlayRef || !trigger) return;
114
+ overlayRef.updateSize({ width: trigger.getBoundingClientRect().width });
115
+ overlayRef.updatePosition();
116
+ }
117
+ ngOnChanges(changes) {
118
+ if (changes["value"]) this.updateLabel();
119
+ }
120
+ clearValue() {
121
+ this.value = [];
122
+ this.updateLabel();
123
+ this.changed.emit(this.value);
124
+ }
125
+ outsideClick() {
126
+ window.setTimeout(() => {
127
+ this.isOpen.set(false);
128
+ });
129
+ }
130
+ toggle() {
131
+ this.isOpen.set(!this.isOpen());
132
+ if (this.isOpen()) this.activeIndex.set(this.firstOptionIndex());
133
+ this.cdr.markForCheck();
134
+ }
135
+ isSelected(value) {
136
+ return this.value?.includes(value ?? "");
137
+ }
138
+ optionChanged(selected, option) {
139
+ this.value = this.value || [];
140
+ if (this.singleSelection) this.value = selected ? [option.value] : [];
141
+ else if (selected) this.value.push(option.value);
142
+ else this.value.splice(this.value.indexOf(option.value), 1);
143
+ this.changed.emit(this.value);
144
+ this.optionChange.emit({
145
+ selected,
146
+ option
147
+ });
148
+ this.updateLabel();
149
+ }
150
+ onSearchChange(value) {
151
+ this.searchInput$.next(value);
152
+ }
153
+ keyDownHandler(ev) {
154
+ if (ev.key === IKeyboardEvent.ARROW_DOWN) {
155
+ ev.preventDefault();
156
+ this.moveActive(1);
157
+ } else if (ev.key === IKeyboardEvent.ARROW_UP) {
158
+ ev.preventDefault();
159
+ this.moveActive(-1);
160
+ } else if (ev.key === IKeyboardEvent.ENTER || ev.key === IKeyboardEvent.SPACE) {
161
+ ev.preventDefault();
162
+ this.toggleActiveOption();
163
+ } else if (ev.key === IKeyboardEvent.ESCAPE) this.isOpen.set(false);
164
+ }
165
+ onLabelEllipsisChange(isEllipsis, value) {
166
+ this.showTooltip[value] = isEllipsis;
167
+ }
168
+ firstOptionIndex() {
169
+ const index = this.flatOptions().findIndex((row) => row.kind === "option");
170
+ return index === -1 ? 0 : index;
171
+ }
172
+ moveActive(delta) {
173
+ const rows = this.flatOptions();
174
+ const optionIndexes = [];
175
+ rows.forEach((row, index) => {
176
+ if (row.kind === "option") optionIndexes.push(index);
177
+ });
178
+ if (!optionIndexes.length) return;
179
+ const currentPos = optionIndexes.indexOf(this.activeIndex());
180
+ const nextIndex = optionIndexes[((currentPos === -1 ? 0 : currentPos) + delta + optionIndexes.length) % optionIndexes.length];
181
+ this.activeIndex.set(nextIndex);
182
+ this.viewport?.scrollToIndex(nextIndex, "smooth");
183
+ }
184
+ toggleActiveOption() {
185
+ const option = this.activeOption();
186
+ if (option) this.optionChanged(!this.isSelected(option.value), option);
187
+ }
188
+ updateLabel() {
189
+ this.value = this.value || [];
190
+ let displayedLabel = "";
191
+ let tooltip = "";
192
+ const sortedLabels = this.options().filter((option) => this.value.includes(option.value)).map((item) => item?.label ?? "");
193
+ if (sortedLabels.length > 0) {
194
+ displayedLabel = this.options().find((option) => option.value === this.value[0])?.label ?? "";
195
+ tooltip = `${this.label}${sortedLabels.map((value) => `\n • ${value}`).join("")}`;
196
+ }
197
+ if (this.value.length > 1) displayedLabel += ` (+${this.value.length - 1})`;
198
+ this.displayedLabel.set(displayedLabel);
199
+ this.tooltip.set(tooltip);
200
+ this.cdr.markForCheck();
201
+ }
202
+ static {
203
+ this.ɵfac = i0.ɵɵngDeclareFactory({
204
+ minVersion: "12.0.0",
205
+ version: "22.2.4",
206
+ ngImport: i0,
207
+ type: FilterButtonComponent,
208
+ deps: [
209
+ {
210
+ token: "CANOPYUI_DEFAULT_APPLICATION_THEME",
211
+ optional: true
212
+ },
213
+ { token: i0.ChangeDetectorRef },
214
+ { token: i0.DestroyRef }
215
+ ],
216
+ target: i0.ɵɵFactoryTarget.Component
217
+ });
218
+ }
219
+ static {
220
+ this.ɵcmp = i0.ɵɵngDeclareComponent({
221
+ minVersion: "17.0.0",
222
+ version: "22.2.4",
223
+ type: FilterButtonComponent,
224
+ isStandalone: true,
225
+ selector: "ui-filter-button",
226
+ inputs: {
227
+ label: {
228
+ classPropertyName: "label",
229
+ publicName: "label",
230
+ isSignal: false,
231
+ isRequired: false,
232
+ transformFunction: null
233
+ },
234
+ message: {
235
+ classPropertyName: "message",
236
+ publicName: "message",
237
+ isSignal: false,
238
+ isRequired: false,
239
+ transformFunction: null
240
+ },
241
+ value: {
242
+ classPropertyName: "value",
243
+ publicName: "value",
244
+ isSignal: false,
245
+ isRequired: false,
246
+ transformFunction: null
247
+ },
248
+ disabled: {
249
+ classPropertyName: "disabled",
250
+ publicName: "disabled",
251
+ isSignal: false,
252
+ isRequired: false,
253
+ transformFunction: null
254
+ },
255
+ options: {
256
+ classPropertyName: "options",
257
+ publicName: "options",
258
+ isSignal: true,
259
+ isRequired: false,
260
+ transformFunction: null
261
+ },
262
+ allowClear: {
263
+ classPropertyName: "allowClear",
264
+ publicName: "allowClear",
265
+ isSignal: false,
266
+ isRequired: false,
267
+ transformFunction: null
268
+ },
269
+ singleSelection: {
270
+ classPropertyName: "singleSelection",
271
+ publicName: "singleSelection",
272
+ isSignal: false,
273
+ isRequired: false,
274
+ transformFunction: null
275
+ },
276
+ iconName: {
277
+ classPropertyName: "iconName",
278
+ publicName: "iconName",
279
+ isSignal: false,
280
+ isRequired: false,
281
+ transformFunction: null
282
+ },
283
+ iconPosition: {
284
+ classPropertyName: "iconPosition",
285
+ publicName: "iconPosition",
286
+ isSignal: false,
287
+ isRequired: false,
288
+ transformFunction: null
289
+ },
290
+ noOptionsMessage: {
291
+ classPropertyName: "noOptionsMessage",
292
+ publicName: "noOptionsMessage",
293
+ isSignal: false,
294
+ isRequired: false,
295
+ transformFunction: null
296
+ },
297
+ fullWidth: {
298
+ classPropertyName: "fullWidth",
299
+ publicName: "fullWidth",
300
+ isSignal: false,
301
+ isRequired: false,
302
+ transformFunction: booleanAttribute
303
+ },
304
+ testId: {
305
+ classPropertyName: "testId",
306
+ publicName: "testId",
307
+ isSignal: false,
308
+ isRequired: false,
309
+ transformFunction: null
310
+ },
311
+ ariaLabel: {
312
+ classPropertyName: "ariaLabel",
313
+ publicName: "ariaLabel",
314
+ isSignal: false,
315
+ isRequired: false,
316
+ transformFunction: null
317
+ },
318
+ applicationTheme: {
319
+ classPropertyName: "applicationTheme",
320
+ publicName: "applicationTheme",
321
+ isSignal: false,
322
+ isRequired: false,
323
+ transformFunction: null
324
+ }
325
+ },
326
+ outputs: {
327
+ changed: "changed",
328
+ optionChange: "optionChange"
329
+ },
330
+ host: { properties: {
331
+ "class": "this.class",
332
+ "attr.theme": "this.applicationTheme",
333
+ "class.ui-filter-button-full-width": "this.fullWidthClass"
334
+ } },
335
+ viewQueries: [
336
+ {
337
+ propertyName: "overlayContainer",
338
+ first: true,
339
+ predicate: ["overlayContainer"],
340
+ descendants: true
341
+ },
342
+ {
343
+ propertyName: "viewport",
344
+ first: true,
345
+ predicate: CdkVirtualScrollViewport,
346
+ descendants: true
347
+ },
348
+ {
349
+ propertyName: "triggerOrigin",
350
+ first: true,
351
+ predicate: CdkOverlayOrigin,
352
+ descendants: true
353
+ },
354
+ {
355
+ propertyName: "connectedOverlay",
356
+ first: true,
357
+ predicate: CdkConnectedOverlay,
358
+ descendants: true
359
+ }
360
+ ],
361
+ usesOnChanges: true,
362
+ ngImport: i0,
363
+ template: "<ng-container>\n <ui-button\n [matTooltip]=\"tooltip()\"\n [matTooltipClass]=\"'tooltip-multi-line ' + applicationTheme\"\n [matTooltipPosition]=\"'above'\"\n class=\"ui-filter-button-trigger\"\n [class.button-opened]=\"isOpen()\"\n [variant]=\"value.length || isOpen() ? 'secondary' : 'ghost'\"\n [label]=\"displayedLabel() || label\"\n [disabled]=\"disabled || (options().length === 0 && !noOptionsMessage)\"\n (click)=\"toggle()\"\n type=\"button\"\n size=\"small\"\n [role]=\"'combobox'\"\n [tooltip]=\"value.length ? ' ' : ''\"\n [attr.aria-expanded]=\"isOpen()\"\n [testId]=\"testId\"\n [ariaLabel]=\"ariaLabel\"\n [iconName]=\"iconName || (isOpen() ? 'Arrow-chevron-up-filled' : 'Arrow-chevron-down-filled')\"\n [iconPosition]=\"iconPosition\"\n [applicationTheme]=\"applicationTheme\"\n [fullWidth]=\"fullWidth\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n ></ui-button>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayMatchWidth]=\"fullWidth\"\n [cdkConnectedOverlayMinWidth]=\"fullWidth ? PANEL_MIN_WIDTH : ''\"\n [cdkConnectedOverlayPanelClass]=\"fullWidth ? MATCH_TRIGGER_PANEL_CLASS : ''\"\n (overlayOutsideClick)=\"outsideClick()\"\n >\n @if (activeOption(); as active) {\n <div style=\"position: absolute; left: -9999px\" [attr.aria-live]=\"'polite'\">\n {{ active.label }}\n {{\n translationContext + 'ACTIVE_ITEM' | uiTranslate: { active: activePosition(), total: optionCount() } | async\n }}\n </div>\n <div style=\"position: absolute; left: -9999px\" [attr.aria-live]=\"'polite'\">\n {{ active.label }}\n {{\n (value.includes(active.value) ? translationContext + 'SELECTED' : translationContext + 'DESELECTED')\n | uiTranslate\n | async\n }}\n </div>\n }\n <div class=\"ui-filter-button\" #overlayContainer [attr.data-testid]=\"panelTestId\">\n @if (options().length > MIN_OPTIONS_LENGTH_FOR_SEARCH) {\n <div class=\"ui-filter-button-header\">\n <ui-field\n type=\"search\"\n [showBottomContent]=\"false\"\n [ngModel]=\"search()\"\n [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"onSearchChange($event)\"\n [applicationTheme]=\"applicationTheme\"\n ></ui-field>\n </div>\n }\n <div\n class=\"ui-filter-button-list\"\n #list\n tabindex=\"0\"\n role=\"listbox\"\n [attr.aria-activedescendant]=\"isOpen() && activeOption() ? 'ui-fb-option-' + activeIndex() : null\"\n (keydown)=\"keyDownHandler($event)\"\n >\n @if (!displayedOptions().length && options().length) {\n <div class=\"no-results-found\">\n <span>{{ translationContext + 'NO_RESULTS_FOUND' | uiTranslate | async }}</span>\n </div>\n } @else {\n <cdk-virtual-scroll-viewport\n class=\"ui-filter-button-viewport\"\n [itemSize]=\"ITEM_SIZE\"\n [style.height.px]=\"listHeight()\"\n >\n <ng-container *cdkVirtualFor=\"let row of flatOptions(); let i = index; trackBy: trackByRow\">\n @if (row.kind === 'header') {\n <div class=\"section-title\">\n {{ row.title }}\n </div>\n } @else {\n <div\n class=\"item\"\n role=\"option\"\n tabindex=\"-1\"\n [id]=\"'ui-fb-option-' + i\"\n [class.item-selected]=\"isSelected(row.option.value)\"\n [class.item-active]=\"activeIndex() === i\"\n [attr.aria-selected]=\"isSelected(row.option.value)\"\n (click)=\"activeIndex.set(i); optionChanged(!isSelected(row.option.value), row.option)\"\n (keydown.enter)=\"optionChanged(!isSelected(row.option.value), row.option)\"\n >\n @if (singleSelection) {\n <ui-radio-button\n (click)=\"$event.stopPropagation()\"\n [tabIndex]=\"-1\"\n [selected]=\"isSelected(row.option.value)\"\n (changeRadio)=\"optionChanged($event.optionChecked, row.option)\"\n [applicationTheme]=\"applicationTheme\"\n >\n </ui-radio-button>\n }\n @if (!singleSelection) {\n <ui-checkbox\n (click)=\"$event.stopPropagation()\"\n [class.with-label-number]=\"row.option.labelNumber !== undefined\"\n [tabIndex]=\"-1\"\n [checked]=\"isSelected(row.option.value)\"\n (changed)=\"optionChanged($event, row.option)\"\n [applicationTheme]=\"applicationTheme\"\n ></ui-checkbox>\n }\n @if (row.option.icon) {\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"row.option.icon\"></ui-icon>\n }\n <span\n #tooltip=\"matTooltip\"\n class=\"item-label\"\n uiEllipseText\n [refresh]=\"row.option.value\"\n (onChangeTextState)=\"onLabelEllipsisChange($event, row.option.value)\"\n [matTooltip]=\"showTooltip[row.option.value] ? row.option.label : ''\"\n [matTooltipClass]=\"applicationTheme\"\n >\n {{ row.option.label }}\n </span>\n @if (row.option.labelNumber !== undefined) {\n <span class=\"item-number\">({{ row.option.labelNumber }})</span>\n }\n </div>\n }\n </ng-container>\n </cdk-virtual-scroll-viewport>\n }\n </div>\n @if (!options().length && !!noOptionsMessage) {\n <div class=\"ui-filter-button-no-options\" [innerHTML]=\"noOptionsMessage\"></div>\n } @else {\n @if (allowClear || message) {\n <div class=\"ui-filter-button-footer\">\n @if (allowClear) {\n <ui-button\n variant=\"text\"\n size=\"small\"\n [label]=\"('COMMON.RESET' | uiTranslate | async)!\"\n (click)=\"clearValue()\"\n [applicationTheme]=\"applicationTheme\"\n [testId]=\"resetButtonTestId\"\n (keydown.escape)=\"toggle()\"\n ></ui-button>\n }\n <div class=\"ui-filter-button-footer-message\">\n {{ message }}\n </div>\n </div>\n }\n }\n </div>\n </ng-template>\n</ng-container>\n",
364
+ 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}ui-filter-button{display:inline-block}ui-filter-button.ui-filter-button-full-width{display:block;width:100%}ui-filter-button ui-button .button-wrapper button{padding:7px 24px!important}ui-filter-button ui-button .button-wrapper button .icon ui-icon mat-icon.size-16 svg{width:24px;height:24px}ui-filter-button ui-button .button-wrapper button .label{line-clamp:1;-webkit-line-clamp:1!important}ui-filter-button ui-button.button-opened .button-wrapper button{background-color:#666!important;border-color:#666}ui-filter-button ui-button button.secondary{border:1px solid #242424}ui-filter-button ui-button button.secondary:hover{border-color:#666}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button{margin-top:4px;box-shadow:0 4px 16px #24242414;border-radius:10px;background-color:#fff;padding:0 0 8px;width:240px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-header{padding:8px 16px 0}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .section-title{display:flex;align-items:center;height:48px;padding:0 16px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .no-results-found{padding:8px 16px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item{padding:0 16px 0 5px;display:flex;align-items:center;gap:5px;height:48px;cursor:pointer}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item:hover,.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item.item-active,.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item.item-selected{background-color:#f4f4f4}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item ui-radio-button{margin-right:4px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item ui-checkbox{max-width:100%}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item ui-checkbox.with-label-number{max-width:calc(100% - 25px)}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item-number{color:#666}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item-label{-webkit-user-select:none;user-select:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-viewport{width:100%;max-height:290px;overflow-x:hidden}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-viewport .cdk-virtual-scroll-content-wrapper{max-width:100%}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-footer{display:flex;justify-content:space-between;align-items:center;padding:0 16px 0 5px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-footer ui-button{margin-left:-5px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-footer-message{color:#666}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-no-options{padding:24px}.cdk-overlay-container .cdk-overlay-pane.ui-filter-button-panel-match-trigger .ui-filter-button{width:100%}.tooltip-multi-line .mdc-tooltip__surface{text-align:left;white-space:pre-line}\n"],
365
+ dependencies: [
366
+ {
367
+ kind: "component",
368
+ type: ButtonComponent,
369
+ selector: "ui-button",
370
+ inputs: [
371
+ "size",
372
+ "variant",
373
+ "label",
374
+ "iconPosition",
375
+ "justIcon",
376
+ "iconName",
377
+ "trailingIconName",
378
+ "trailingIconFilled",
379
+ "disabled",
380
+ "loading",
381
+ "loadingWithLabel",
382
+ "fullWidth",
383
+ "url",
384
+ "urlTarget",
385
+ "value",
386
+ "tooltip",
387
+ "isPremium",
388
+ "type",
389
+ "companyColor",
390
+ "buttonBadgeConfig",
391
+ "applicationTheme",
392
+ "disabledScaleOnClick",
393
+ "ariaLabel",
394
+ "ariaExpanded",
395
+ "ariaControls",
396
+ "ariaPressed",
397
+ "ariaRequired",
398
+ "ariaLabelledby",
399
+ "ariaDescribedby",
400
+ "preventDefault",
401
+ "hasBackground",
402
+ "tooltipPosition",
403
+ "role",
404
+ "iconFilled",
405
+ "testId"
406
+ ],
407
+ outputs: ["buttonClickEvent", "buttonHoverEvent"]
408
+ },
409
+ {
410
+ kind: "directive",
411
+ type: CdkOverlayOrigin,
412
+ selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]",
413
+ exportAs: ["cdkOverlayOrigin"]
414
+ },
415
+ {
416
+ kind: "directive",
417
+ type: MatTooltip,
418
+ selector: "[matTooltip]",
419
+ inputs: [
420
+ "matTooltipPosition",
421
+ "matTooltipPositionAtOrigin",
422
+ "matTooltipDisabled",
423
+ "matTooltipShowDelay",
424
+ "matTooltipHideDelay",
425
+ "matTooltipTouchGestures",
426
+ "matTooltip",
427
+ "matTooltipClass"
428
+ ],
429
+ exportAs: ["matTooltip"]
430
+ },
431
+ {
432
+ kind: "directive",
433
+ type: CdkConnectedOverlay,
434
+ selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]",
435
+ inputs: [
436
+ "cdkConnectedOverlayOrigin",
437
+ "cdkConnectedOverlayPositions",
438
+ "cdkConnectedOverlayPositionStrategy",
439
+ "cdkConnectedOverlayOffsetX",
440
+ "cdkConnectedOverlayOffsetY",
441
+ "cdkConnectedOverlayWidth",
442
+ "cdkConnectedOverlayHeight",
443
+ "cdkConnectedOverlayMinWidth",
444
+ "cdkConnectedOverlayMinHeight",
445
+ "cdkConnectedOverlayBackdropClass",
446
+ "cdkConnectedOverlayPanelClass",
447
+ "cdkConnectedOverlayViewportMargin",
448
+ "cdkConnectedOverlayScrollStrategy",
449
+ "cdkConnectedOverlayOpen",
450
+ "cdkConnectedOverlayDisableClose",
451
+ "cdkConnectedOverlayTransformOriginOn",
452
+ "cdkConnectedOverlayHasBackdrop",
453
+ "cdkConnectedOverlayLockPosition",
454
+ "cdkConnectedOverlayFlexibleDimensions",
455
+ "cdkConnectedOverlayGrowAfterOpen",
456
+ "cdkConnectedOverlayPush",
457
+ "cdkConnectedOverlayDisposeOnNavigation",
458
+ "cdkConnectedOverlayUsePopover",
459
+ "cdkConnectedOverlayMatchWidth",
460
+ "cdkConnectedOverlay"
461
+ ],
462
+ outputs: [
463
+ "backdropClick",
464
+ "positionChange",
465
+ "attach",
466
+ "detach",
467
+ "overlayKeydown",
468
+ "overlayOutsideClick"
469
+ ],
470
+ exportAs: ["cdkConnectedOverlay"]
471
+ },
472
+ {
473
+ kind: "component",
474
+ type: CdkVirtualScrollViewport,
475
+ selector: "cdk-virtual-scroll-viewport",
476
+ inputs: ["orientation", "appendOnly"],
477
+ outputs: ["scrolledIndexChange"]
478
+ },
479
+ {
480
+ kind: "directive",
481
+ type: CdkFixedSizeVirtualScroll,
482
+ selector: "cdk-virtual-scroll-viewport[itemSize]",
483
+ inputs: [
484
+ "itemSize",
485
+ "minBufferPx",
486
+ "maxBufferPx"
487
+ ]
488
+ },
489
+ {
490
+ kind: "directive",
491
+ type: CdkVirtualForOf,
492
+ selector: "[cdkVirtualFor][cdkVirtualForOf]",
493
+ inputs: [
494
+ "cdkVirtualForOf",
495
+ "cdkVirtualForTrackBy",
496
+ "cdkVirtualForTemplate",
497
+ "cdkVirtualForTemplateCacheSize"
498
+ ]
499
+ },
500
+ {
501
+ kind: "component",
502
+ type: FieldComponent,
503
+ selector: "ui-field",
504
+ inputs: [
505
+ "fullWidth",
506
+ "fullHeight",
507
+ "label",
508
+ "labelHtml",
509
+ "labelIcon",
510
+ "fieldName",
511
+ "placeholder",
512
+ "id",
513
+ "value",
514
+ "badgeVariant",
515
+ "errors",
516
+ "disabled",
517
+ "required",
518
+ "readOnly",
519
+ "hintMessage",
520
+ "type",
521
+ "updateOnBlur",
522
+ "allowOnlyDigits",
523
+ "isAutocompleteOff",
524
+ "allowNegative",
525
+ "showBottomContent",
526
+ "applicationTheme",
527
+ "ariaLabel",
528
+ "testId",
529
+ "loading",
530
+ "isValid",
531
+ "maxCharacters",
532
+ "trimOnBlur",
533
+ "trimOnSubmit",
534
+ "maxRows",
535
+ "hasTextAreaCounter",
536
+ "hideBuiltInErrors",
537
+ "hideLabelInErrors",
538
+ "max",
539
+ "min",
540
+ "textareaHeight",
541
+ "borderless",
542
+ "autosizableTextarea",
543
+ "isAIVariant",
544
+ "ariaLabelledby",
545
+ "ariaDescribedby",
546
+ "hasError"
547
+ ],
548
+ outputs: ["validateEvent", "fieldBlur"]
549
+ },
550
+ {
551
+ kind: "ngmodule",
552
+ type: FormsModule
553
+ },
554
+ {
555
+ kind: "directive",
556
+ type: i1.NgControlStatus,
557
+ selector: "[formControlName],[ngModel],[formControl]"
558
+ },
559
+ {
560
+ kind: "directive",
561
+ type: i1.NgModel,
562
+ selector: "[ngModel]:not([formControlName]):not([formControl])",
563
+ inputs: [
564
+ "name",
565
+ "disabled",
566
+ "ngModel",
567
+ "ngModelOptions"
568
+ ],
569
+ outputs: ["ngModelChange"],
570
+ exportAs: ["ngModel"]
571
+ },
572
+ {
573
+ kind: "component",
574
+ type: RadioButtonComponent,
575
+ selector: "ui-radio-button",
576
+ inputs: [
577
+ "disabled",
578
+ "selected",
579
+ "allowUnselect",
580
+ "companyColor",
581
+ "name",
582
+ "label",
583
+ "multiple",
584
+ "mediaCard",
585
+ "value",
586
+ "applicationTheme",
587
+ "ariaLabel",
588
+ "testId",
589
+ "ariaRequired",
590
+ "hasError",
591
+ "ariaLabelledby",
592
+ "ariaDescribedby",
593
+ "truncateText",
594
+ "alignment",
595
+ "tabIndex",
596
+ "hideTooltipOnEllipsis"
597
+ ],
598
+ outputs: ["changeRadio"]
599
+ },
600
+ {
601
+ kind: "component",
602
+ type: CheckboxComponent,
603
+ selector: "ui-checkbox",
604
+ inputs: [
605
+ "disabled",
606
+ "checked",
607
+ "indeterminate",
608
+ "companyColor",
609
+ "name",
610
+ "label",
611
+ "multiple",
612
+ "applicationTheme",
613
+ "ariaLabel",
614
+ "testId",
615
+ "ariaRequired",
616
+ "hasError",
617
+ "hideBuiltInErrors",
618
+ "hideLabelInErrors",
619
+ "ariaLabelledby",
620
+ "ariaDescribedby",
621
+ "truncateText",
622
+ "alignment",
623
+ "tabIndex"
624
+ ],
625
+ outputs: ["changed"]
626
+ },
627
+ {
628
+ kind: "component",
629
+ type: IconComponent,
630
+ selector: "ui-icon",
631
+ inputs: [
632
+ "size",
633
+ "cssClass",
634
+ "name",
635
+ "color",
636
+ "filled",
637
+ "toggleIconStyle",
638
+ "applicationTheme",
639
+ "useFullIconName"
640
+ ]
641
+ },
642
+ {
643
+ kind: "directive",
644
+ type: EllipseTextDirective,
645
+ selector: "[uiEllipseText]",
646
+ inputs: [
647
+ "isMultiline",
648
+ "maxDiffPixels",
649
+ "refresh"
650
+ ],
651
+ outputs: ["onChangeTextState"]
652
+ },
653
+ {
654
+ kind: "pipe",
655
+ type: AsyncPipe,
656
+ name: "async"
657
+ },
658
+ {
659
+ kind: "pipe",
660
+ type: UiTranslatePipe,
661
+ name: "uiTranslate"
662
+ }
663
+ ],
664
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
665
+ encapsulation: i0.ViewEncapsulation.None
666
+ });
667
+ }
668
+ };
669
+ i0.ɵɵngDeclareClassMetadata({
670
+ minVersion: "12.0.0",
671
+ version: "22.2.4",
672
+ ngImport: i0,
673
+ type: FilterButtonComponent,
674
+ decorators: [{
675
+ type: Component,
676
+ args: [{
677
+ selector: "ui-filter-button",
678
+ encapsulation: ViewEncapsulation.None,
679
+ changeDetection: ChangeDetectionStrategy.OnPush,
680
+ imports: [
681
+ ButtonComponent,
682
+ CdkOverlayOrigin,
683
+ MatTooltip,
684
+ CdkConnectedOverlay,
685
+ CdkVirtualScrollViewport,
686
+ CdkFixedSizeVirtualScroll,
687
+ CdkVirtualForOf,
688
+ FieldComponent,
689
+ FormsModule,
690
+ RadioButtonComponent,
691
+ CheckboxComponent,
692
+ IconComponent,
693
+ EllipseTextDirective,
694
+ AsyncPipe,
695
+ UiTranslatePipe
696
+ ],
697
+ template: "<ng-container>\n <ui-button\n [matTooltip]=\"tooltip()\"\n [matTooltipClass]=\"'tooltip-multi-line ' + applicationTheme\"\n [matTooltipPosition]=\"'above'\"\n class=\"ui-filter-button-trigger\"\n [class.button-opened]=\"isOpen()\"\n [variant]=\"value.length || isOpen() ? 'secondary' : 'ghost'\"\n [label]=\"displayedLabel() || label\"\n [disabled]=\"disabled || (options().length === 0 && !noOptionsMessage)\"\n (click)=\"toggle()\"\n type=\"button\"\n size=\"small\"\n [role]=\"'combobox'\"\n [tooltip]=\"value.length ? ' ' : ''\"\n [attr.aria-expanded]=\"isOpen()\"\n [testId]=\"testId\"\n [ariaLabel]=\"ariaLabel\"\n [iconName]=\"iconName || (isOpen() ? 'Arrow-chevron-up-filled' : 'Arrow-chevron-down-filled')\"\n [iconPosition]=\"iconPosition\"\n [applicationTheme]=\"applicationTheme\"\n [fullWidth]=\"fullWidth\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n ></ui-button>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayMatchWidth]=\"fullWidth\"\n [cdkConnectedOverlayMinWidth]=\"fullWidth ? PANEL_MIN_WIDTH : ''\"\n [cdkConnectedOverlayPanelClass]=\"fullWidth ? MATCH_TRIGGER_PANEL_CLASS : ''\"\n (overlayOutsideClick)=\"outsideClick()\"\n >\n @if (activeOption(); as active) {\n <div style=\"position: absolute; left: -9999px\" [attr.aria-live]=\"'polite'\">\n {{ active.label }}\n {{\n translationContext + 'ACTIVE_ITEM' | uiTranslate: { active: activePosition(), total: optionCount() } | async\n }}\n </div>\n <div style=\"position: absolute; left: -9999px\" [attr.aria-live]=\"'polite'\">\n {{ active.label }}\n {{\n (value.includes(active.value) ? translationContext + 'SELECTED' : translationContext + 'DESELECTED')\n | uiTranslate\n | async\n }}\n </div>\n }\n <div class=\"ui-filter-button\" #overlayContainer [attr.data-testid]=\"panelTestId\">\n @if (options().length > MIN_OPTIONS_LENGTH_FOR_SEARCH) {\n <div class=\"ui-filter-button-header\">\n <ui-field\n type=\"search\"\n [showBottomContent]=\"false\"\n [ngModel]=\"search()\"\n [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"onSearchChange($event)\"\n [applicationTheme]=\"applicationTheme\"\n ></ui-field>\n </div>\n }\n <div\n class=\"ui-filter-button-list\"\n #list\n tabindex=\"0\"\n role=\"listbox\"\n [attr.aria-activedescendant]=\"isOpen() && activeOption() ? 'ui-fb-option-' + activeIndex() : null\"\n (keydown)=\"keyDownHandler($event)\"\n >\n @if (!displayedOptions().length && options().length) {\n <div class=\"no-results-found\">\n <span>{{ translationContext + 'NO_RESULTS_FOUND' | uiTranslate | async }}</span>\n </div>\n } @else {\n <cdk-virtual-scroll-viewport\n class=\"ui-filter-button-viewport\"\n [itemSize]=\"ITEM_SIZE\"\n [style.height.px]=\"listHeight()\"\n >\n <ng-container *cdkVirtualFor=\"let row of flatOptions(); let i = index; trackBy: trackByRow\">\n @if (row.kind === 'header') {\n <div class=\"section-title\">\n {{ row.title }}\n </div>\n } @else {\n <div\n class=\"item\"\n role=\"option\"\n tabindex=\"-1\"\n [id]=\"'ui-fb-option-' + i\"\n [class.item-selected]=\"isSelected(row.option.value)\"\n [class.item-active]=\"activeIndex() === i\"\n [attr.aria-selected]=\"isSelected(row.option.value)\"\n (click)=\"activeIndex.set(i); optionChanged(!isSelected(row.option.value), row.option)\"\n (keydown.enter)=\"optionChanged(!isSelected(row.option.value), row.option)\"\n >\n @if (singleSelection) {\n <ui-radio-button\n (click)=\"$event.stopPropagation()\"\n [tabIndex]=\"-1\"\n [selected]=\"isSelected(row.option.value)\"\n (changeRadio)=\"optionChanged($event.optionChecked, row.option)\"\n [applicationTheme]=\"applicationTheme\"\n >\n </ui-radio-button>\n }\n @if (!singleSelection) {\n <ui-checkbox\n (click)=\"$event.stopPropagation()\"\n [class.with-label-number]=\"row.option.labelNumber !== undefined\"\n [tabIndex]=\"-1\"\n [checked]=\"isSelected(row.option.value)\"\n (changed)=\"optionChanged($event, row.option)\"\n [applicationTheme]=\"applicationTheme\"\n ></ui-checkbox>\n }\n @if (row.option.icon) {\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"row.option.icon\"></ui-icon>\n }\n <span\n #tooltip=\"matTooltip\"\n class=\"item-label\"\n uiEllipseText\n [refresh]=\"row.option.value\"\n (onChangeTextState)=\"onLabelEllipsisChange($event, row.option.value)\"\n [matTooltip]=\"showTooltip[row.option.value] ? row.option.label : ''\"\n [matTooltipClass]=\"applicationTheme\"\n >\n {{ row.option.label }}\n </span>\n @if (row.option.labelNumber !== undefined) {\n <span class=\"item-number\">({{ row.option.labelNumber }})</span>\n }\n </div>\n }\n </ng-container>\n </cdk-virtual-scroll-viewport>\n }\n </div>\n @if (!options().length && !!noOptionsMessage) {\n <div class=\"ui-filter-button-no-options\" [innerHTML]=\"noOptionsMessage\"></div>\n } @else {\n @if (allowClear || message) {\n <div class=\"ui-filter-button-footer\">\n @if (allowClear) {\n <ui-button\n variant=\"text\"\n size=\"small\"\n [label]=\"('COMMON.RESET' | uiTranslate | async)!\"\n (click)=\"clearValue()\"\n [applicationTheme]=\"applicationTheme\"\n [testId]=\"resetButtonTestId\"\n (keydown.escape)=\"toggle()\"\n ></ui-button>\n }\n <div class=\"ui-filter-button-footer-message\">\n {{ message }}\n </div>\n </div>\n }\n }\n </div>\n </ng-template>\n</ng-container>\n",
698
+ 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}ui-filter-button{display:inline-block}ui-filter-button.ui-filter-button-full-width{display:block;width:100%}ui-filter-button ui-button .button-wrapper button{padding:7px 24px!important}ui-filter-button ui-button .button-wrapper button .icon ui-icon mat-icon.size-16 svg{width:24px;height:24px}ui-filter-button ui-button .button-wrapper button .label{line-clamp:1;-webkit-line-clamp:1!important}ui-filter-button ui-button.button-opened .button-wrapper button{background-color:#666!important;border-color:#666}ui-filter-button ui-button button.secondary{border:1px solid #242424}ui-filter-button ui-button button.secondary:hover{border-color:#666}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button{margin-top:4px;box-shadow:0 4px 16px #24242414;border-radius:10px;background-color:#fff;padding:0 0 8px;width:240px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-header{padding:8px 16px 0}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .section-title{display:flex;align-items:center;height:48px;padding:0 16px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .no-results-found{padding:8px 16px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item{padding:0 16px 0 5px;display:flex;align-items:center;gap:5px;height:48px;cursor:pointer}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item:hover,.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item.item-active,.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item.item-selected{background-color:#f4f4f4}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item ui-radio-button{margin-right:4px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item ui-checkbox{max-width:100%}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item ui-checkbox.with-label-number{max-width:calc(100% - 25px)}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item-number{color:#666}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item-label{-webkit-user-select:none;user-select:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-viewport{width:100%;max-height:290px;overflow-x:hidden}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-viewport .cdk-virtual-scroll-content-wrapper{max-width:100%}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-footer{display:flex;justify-content:space-between;align-items:center;padding:0 16px 0 5px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-footer ui-button{margin-left:-5px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-footer-message{color:#666}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-no-options{padding:24px}.cdk-overlay-container .cdk-overlay-pane.ui-filter-button-panel-match-trigger .ui-filter-button{width:100%}.tooltip-multi-line .mdc-tooltip__surface{text-align:left;white-space:pre-line}\n"]
699
+ }]
700
+ }],
701
+ ctorParameters: () => [
702
+ {
703
+ type: void 0,
704
+ decorators: [{ type: Optional }, {
705
+ type: Inject,
706
+ args: ["CANOPYUI_DEFAULT_APPLICATION_THEME"]
707
+ }]
708
+ },
709
+ { type: i0.ChangeDetectorRef },
710
+ { type: i0.DestroyRef }
711
+ ],
712
+ propDecorators: {
713
+ class: [{ type: HostBinding }],
714
+ label: [{ type: Input }],
715
+ message: [{ type: Input }],
716
+ value: [{ type: Input }],
717
+ disabled: [{ type: Input }],
718
+ options: [{
719
+ type: i0.Input,
720
+ args: [{
721
+ isSignal: true,
722
+ alias: "options",
723
+ required: false
724
+ }]
725
+ }],
726
+ allowClear: [{ type: Input }],
727
+ singleSelection: [{ type: Input }],
728
+ iconName: [{ type: Input }],
729
+ iconPosition: [{ type: Input }],
730
+ noOptionsMessage: [{ type: Input }],
731
+ fullWidth: [{
732
+ type: Input,
733
+ args: [{ transform: booleanAttribute }]
734
+ }],
735
+ testId: [{ type: Input }],
736
+ ariaLabel: [{ type: Input }],
737
+ changed: [{ type: Output }],
738
+ optionChange: [{ type: Output }],
739
+ applicationTheme: [{
740
+ type: HostBinding,
741
+ args: ["attr.theme"]
742
+ }, { type: Input }],
743
+ fullWidthClass: [{
744
+ type: HostBinding,
745
+ args: ["class.ui-filter-button-full-width"]
746
+ }],
747
+ overlayContainer: [{
748
+ type: ViewChild,
749
+ args: ["overlayContainer"]
750
+ }],
751
+ viewport: [{
752
+ type: ViewChild,
753
+ args: [CdkVirtualScrollViewport]
754
+ }],
755
+ triggerOrigin: [{
756
+ type: ViewChild,
757
+ args: [CdkOverlayOrigin]
758
+ }],
759
+ connectedOverlay: [{
760
+ type: ViewChild,
761
+ args: [CdkConnectedOverlay]
762
+ }]
763
+ }
764
+ });
765
+ var FilterButtonComponentModule = class FilterButtonComponentModule {
766
+ static {
767
+ this.ɵfac = i0.ɵɵngDeclareFactory({
768
+ minVersion: "12.0.0",
769
+ version: "22.2.4",
770
+ ngImport: i0,
771
+ type: FilterButtonComponentModule,
772
+ deps: [],
773
+ target: i0.ɵɵFactoryTarget.NgModule
774
+ });
775
+ }
776
+ static {
777
+ this.ɵmod = i0.ɵɵngDeclareNgModule({
778
+ minVersion: "14.0.0",
779
+ version: "22.2.4",
780
+ ngImport: i0,
781
+ type: FilterButtonComponentModule,
782
+ imports: [
783
+ CommonModule,
784
+ FormsModule,
785
+ MatTooltipModule,
786
+ OverlayModule,
787
+ UiTranslatePipe,
788
+ ButtonComponentModule,
789
+ IconComponentModule,
790
+ CheckboxComponentModule,
791
+ FieldComponentModule,
792
+ EllipseTextDirective,
793
+ RadioButtonComponentModule,
794
+ FilterButtonComponent
795
+ ],
796
+ exports: [FilterButtonComponent]
797
+ });
798
+ }
799
+ static {
800
+ this.ɵinj = i0.ɵɵngDeclareInjector({
801
+ minVersion: "12.0.0",
802
+ version: "22.2.4",
803
+ ngImport: i0,
804
+ type: FilterButtonComponentModule,
805
+ imports: [
806
+ CommonModule,
807
+ FormsModule,
808
+ MatTooltipModule,
809
+ OverlayModule,
810
+ ButtonComponentModule,
811
+ IconComponentModule,
812
+ CheckboxComponentModule,
813
+ FieldComponentModule,
814
+ RadioButtonComponentModule,
815
+ FilterButtonComponent
816
+ ]
817
+ });
818
+ }
819
+ };
820
+ i0.ɵɵngDeclareClassMetadata({
821
+ minVersion: "12.0.0",
822
+ version: "22.2.4",
823
+ ngImport: i0,
824
+ type: FilterButtonComponentModule,
825
+ decorators: [{
826
+ type: NgModule,
827
+ args: [{
828
+ imports: [
829
+ CommonModule,
830
+ FormsModule,
831
+ MatTooltipModule,
832
+ OverlayModule,
833
+ UiTranslatePipe,
834
+ ButtonComponentModule,
835
+ IconComponentModule,
836
+ CheckboxComponentModule,
837
+ FieldComponentModule,
838
+ EllipseTextDirective,
839
+ RadioButtonComponentModule,
840
+ FilterButtonComponent
841
+ ],
842
+ exports: [FilterButtonComponent]
843
+ }]
844
+ }]
845
+ });
452
846
  export { FilterButtonComponent, FilterButtonComponentModule };
453
- //# sourceMappingURL=testgorilla-tgo-ui-components-filter-button.mjs.map
847
+
848
+ //# sourceMappingURL=testgorilla-tgo-ui-components-filter-button.mjs.map