@testgorilla/tgo-ui 3.14.13 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (247) hide show
  1. package/components/donut-chart/donut-chart.component.d.ts +2 -2
  2. package/components/filter-button/filter-button.component.d.ts +2 -2
  3. package/components/icon/icon-svg-content.d.ts +1 -1
  4. package/components/table/table.component.d.ts +1 -1
  5. package/fesm2022/testgorilla-tgo-ui.mjs +731 -715
  6. package/fesm2022/testgorilla-tgo-ui.mjs.map +1 -1
  7. package/package.json +17 -20
  8. package/projects/tgo-canopy-ui/theme/_palette.scss +2 -1
  9. package/utils/color-contrast.d.ts +1 -1
  10. package/esm2022/assets/i18n/da-dk.json +0 -820
  11. package/esm2022/assets/i18n/de.json +0 -820
  12. package/esm2022/assets/i18n/en.json +0 -827
  13. package/esm2022/assets/i18n/es.json +0 -820
  14. package/esm2022/assets/i18n/fr.json +0 -820
  15. package/esm2022/assets/i18n/it-it.json +0 -820
  16. package/esm2022/assets/i18n/ja-jp.json +0 -820
  17. package/esm2022/assets/i18n/nb-no.json +0 -820
  18. package/esm2022/assets/i18n/nl.json +0 -820
  19. package/esm2022/assets/i18n/pl-pl.json +0 -820
  20. package/esm2022/assets/i18n/pt-br.json +0 -820
  21. package/esm2022/assets/i18n/sv-se.json +0 -820
  22. package/esm2022/components/accordion/accordion.component.mjs +0 -135
  23. package/esm2022/components/accordion/accordion.component.module.mjs +0 -40
  24. package/esm2022/components/accordion/accordion.model.mjs +0 -2
  25. package/esm2022/components/ai-feedback/ai-feedback.component.mjs +0 -35
  26. package/esm2022/components/ai-feedback/ai-feedback.model.mjs +0 -2
  27. package/esm2022/components/ai-feedback/ai-feedback.module.mjs +0 -20
  28. package/esm2022/components/alert-banner/alert-banner.component.mjs +0 -198
  29. package/esm2022/components/alert-banner/alert-banner.component.module.mjs +0 -21
  30. package/esm2022/components/alert-banner/alert-banner.model.mjs +0 -2
  31. package/esm2022/components/autocomplete/autocomplete.component.mjs +0 -837
  32. package/esm2022/components/autocomplete/autocomplete.component.module.mjs +0 -77
  33. package/esm2022/components/autocomplete/autocomplete.model.mjs +0 -25
  34. package/esm2022/components/autocomplete/includes.pipe.mjs +0 -25
  35. package/esm2022/components/autocomplete/prevent-input.directive.mjs +0 -27
  36. package/esm2022/components/autocomplete/transform-Item.pipe.mjs +0 -32
  37. package/esm2022/components/avatar/avatar.component.mjs +0 -104
  38. package/esm2022/components/avatar/avatar.component.module.mjs +0 -23
  39. package/esm2022/components/avatar/avatar.model.mjs +0 -21
  40. package/esm2022/components/badge/badge.component.mjs +0 -118
  41. package/esm2022/components/badge/badge.component.module.mjs +0 -20
  42. package/esm2022/components/badge/badge.model.mjs +0 -39
  43. package/esm2022/components/breadcrumb/breadcrumb.component.mjs +0 -191
  44. package/esm2022/components/breadcrumb/breadcrumb.component.module.mjs +0 -45
  45. package/esm2022/components/breadcrumb/breadcrumb.model.mjs +0 -2
  46. package/esm2022/components/button/button.component.mjs +0 -452
  47. package/esm2022/components/button/button.component.module.mjs +0 -51
  48. package/esm2022/components/button/button.model.mjs +0 -2
  49. package/esm2022/components/card/card.component.mjs +0 -141
  50. package/esm2022/components/card/card.component.module.mjs +0 -19
  51. package/esm2022/components/card/card.model.mjs +0 -2
  52. package/esm2022/components/checkbox/checkbox.component.mjs +0 -336
  53. package/esm2022/components/checkbox/checkbox.component.module.mjs +0 -28
  54. package/esm2022/components/checkbox/focus-visible.directive.mjs +0 -40
  55. package/esm2022/components/checklist/checklist.component.mjs +0 -157
  56. package/esm2022/components/checklist/checklist.model.mjs +0 -2
  57. package/esm2022/components/confirm-dialog/confirm-dialog.component.mjs +0 -73
  58. package/esm2022/components/confirm-dialog/confirm-dialog.component.module.mjs +0 -29
  59. package/esm2022/components/confirm-dialog/confirm-dialog.model.mjs +0 -2
  60. package/esm2022/components/datepicker/date-adapter.mjs +0 -39
  61. package/esm2022/components/datepicker/datepicker.component.mjs +0 -353
  62. package/esm2022/components/datepicker/datepicker.component.module.mjs +0 -60
  63. package/esm2022/components/datepicker/datepicker.service.mjs +0 -20
  64. package/esm2022/components/datepicker/no-date-format.directive.mjs +0 -56
  65. package/esm2022/components/deprecated-paginator/deprecated-paginator.component.mjs +0 -55
  66. package/esm2022/components/deprecated-paginator/deprecated-paginator.component.module.mjs +0 -20
  67. package/esm2022/components/dialog/dialog.component.mjs +0 -275
  68. package/esm2022/components/dialog/dialog.component.module.mjs +0 -23
  69. package/esm2022/components/dialog/dialog.model.mjs +0 -2
  70. package/esm2022/components/dialog/dialog.service.mjs +0 -36
  71. package/esm2022/components/divider/divider.component.mjs +0 -65
  72. package/esm2022/components/divider/divider.component.module.mjs +0 -19
  73. package/esm2022/components/divider/divider.model.mjs +0 -2
  74. package/esm2022/components/donut-chart/donut-chart.component.mjs +0 -122
  75. package/esm2022/components/donut-chart/donut-chart.component.model.mjs +0 -2
  76. package/esm2022/components/donut-chart/donut-chart.component.module.mjs +0 -20
  77. package/esm2022/components/dropdown/dropdown.component.mjs +0 -378
  78. package/esm2022/components/dropdown/dropdown.component.module.mjs +0 -57
  79. package/esm2022/components/dropdown/dropdown.model.mjs +0 -2
  80. package/esm2022/components/elevation-shadow/elevation-shadow.component.mjs +0 -45
  81. package/esm2022/components/elevation-shadow/elevation-shadow.component.module.mjs +0 -18
  82. package/esm2022/components/elevation-shadow/elevation-shadow.constant.mjs +0 -9
  83. package/esm2022/components/empty-state/empty-state.component.mjs +0 -301
  84. package/esm2022/components/empty-state/empty-state.component.module.mjs +0 -21
  85. package/esm2022/components/empty-state/empty-state.model.mjs +0 -2
  86. package/esm2022/components/field/field.component.mjs +0 -574
  87. package/esm2022/components/field/field.component.module.mjs +0 -64
  88. package/esm2022/components/field/field.model.mjs +0 -2
  89. package/esm2022/components/file-upload/file-upload.component.mjs +0 -307
  90. package/esm2022/components/file-upload/file-upload.component.module.mjs +0 -40
  91. package/esm2022/components/filter-button/filter-button.component.mjs +0 -255
  92. package/esm2022/components/filter-button/filter-button.component.module.mjs +0 -58
  93. package/esm2022/components/filter-button/filter-button.model.mjs +0 -2
  94. package/esm2022/components/gaussian-chart/gaussian-chart.component.mjs +0 -254
  95. package/esm2022/components/gaussian-chart/gaussian-chart.module.mjs +0 -42
  96. package/esm2022/components/icon/icon-svg-content.mjs +0 -491
  97. package/esm2022/components/icon/icon.component.mjs +0 -178
  98. package/esm2022/components/icon/icon.component.module.mjs +0 -21
  99. package/esm2022/components/icon/icon.config.mjs +0 -780
  100. package/esm2022/components/icon/icon.model.mjs +0 -2
  101. package/esm2022/components/icon-label/icon-label.component.mjs +0 -74
  102. package/esm2022/components/icon-label/icon-label.component.module.mjs +0 -20
  103. package/esm2022/components/inline-field/inline-field.component.mjs +0 -320
  104. package/esm2022/components/inline-field/inline-field.component.module.mjs +0 -43
  105. package/esm2022/components/inline-field/inline-field.model.mjs +0 -2
  106. package/esm2022/components/logo/logo.component.mjs +0 -165
  107. package/esm2022/components/logo/logo.component.module.mjs +0 -18
  108. package/esm2022/components/logo/logo.model.mjs +0 -32
  109. package/esm2022/components/media-card/media-card.component.mjs +0 -47
  110. package/esm2022/components/media-dialog/media-dialog.component.mjs +0 -75
  111. package/esm2022/components/media-dialog/media-dialog.model.mjs +0 -2
  112. package/esm2022/components/multi-input/multi-input.component.mjs +0 -271
  113. package/esm2022/components/multi-input/multi-input.component.module.mjs +0 -58
  114. package/esm2022/components/multi-input/multi-input.model.mjs +0 -2
  115. package/esm2022/components/multi-input/required-multi-input.validator.mjs +0 -14
  116. package/esm2022/components/navbar/mobile-navbar-side-sheet/mobile-navbar-side-sheet.component.mjs +0 -86
  117. package/esm2022/components/navbar/navbar.component.mjs +0 -212
  118. package/esm2022/components/navbar/navbar.component.module.mjs +0 -71
  119. package/esm2022/components/navbar/navbar.model.mjs +0 -2
  120. package/esm2022/components/overflow-menu/overflow-menu.component.mjs +0 -254
  121. package/esm2022/components/overflow-menu/overflow-menu.component.module.mjs +0 -25
  122. package/esm2022/components/overflow-menu/overflow-menu.model.mjs +0 -2
  123. package/esm2022/components/page-header/page-header.component.mjs +0 -71
  124. package/esm2022/components/page-header/page-header.component.module.mjs +0 -20
  125. package/esm2022/components/paginator/paginator.component.mjs +0 -87
  126. package/esm2022/components/paginator/paginator.component.module.mjs +0 -19
  127. package/esm2022/components/password-criteria/password.component.mjs +0 -111
  128. package/esm2022/components/password-criteria/password.component.module.mjs +0 -39
  129. package/esm2022/components/password-strength/password-strength.component.mjs +0 -93
  130. package/esm2022/components/password-strength/password-strength.component.module.mjs +0 -21
  131. package/esm2022/components/phone-input/join-strings.pipe.mjs +0 -14
  132. package/esm2022/components/phone-input/phone-input.component.mjs +0 -354
  133. package/esm2022/components/phone-input/phone-input.component.module.mjs +0 -63
  134. package/esm2022/components/phone-input/phone-input.model.mjs +0 -2
  135. package/esm2022/components/progress-bar/progress-bar.component.mjs +0 -103
  136. package/esm2022/components/progress-bar/progress-bar.component.module.mjs +0 -21
  137. package/esm2022/components/prompt/prompt.component.mjs +0 -187
  138. package/esm2022/components/prompt/prompt.model.mjs +0 -2
  139. package/esm2022/components/prompt/prompt.module.mjs +0 -62
  140. package/esm2022/components/radial-progress/radial-progress.component.mjs +0 -118
  141. package/esm2022/components/radial-progress/radial-progress.component.module.mjs +0 -20
  142. package/esm2022/components/radial-progress/radial-progress.model.mjs +0 -11
  143. package/esm2022/components/radio-button/radio-button.component.mjs +0 -344
  144. package/esm2022/components/radio-button/radio-button.component.module.mjs +0 -25
  145. package/esm2022/components/radio-button/radio-button.model.mjs +0 -2
  146. package/esm2022/components/rating/half-star.pipe.mjs +0 -23
  147. package/esm2022/components/rating/rating.component.mjs +0 -106
  148. package/esm2022/components/rating/rating.component.module.mjs +0 -20
  149. package/esm2022/components/scale/scale.component.mjs +0 -136
  150. package/esm2022/components/scale/scale.component.module.mjs +0 -18
  151. package/esm2022/components/scale-table/scale-table.component.mjs +0 -61
  152. package/esm2022/components/scale-table/scale-table.model.mjs +0 -2
  153. package/esm2022/components/segmented-bar/segmented-bar.component.mjs +0 -111
  154. package/esm2022/components/segmented-bar/segmented-bar.component.module.mjs +0 -22
  155. package/esm2022/components/segmented-bar/segmented-bar.model.mjs +0 -2
  156. package/esm2022/components/segmented-button/segmented-button.component.mjs +0 -104
  157. package/esm2022/components/segmented-button/segmented-button.component.module.mjs +0 -21
  158. package/esm2022/components/segmented-button/segmented-button.model.mjs +0 -2
  159. package/esm2022/components/selectable-card/selectable-card.component.mjs +0 -53
  160. package/esm2022/components/selectable-card/selectable-card.component.module.mjs +0 -20
  161. package/esm2022/components/side-panel/side-panel-data-injection-token.mjs +0 -3
  162. package/esm2022/components/side-panel/side-panel.animations.mjs +0 -26
  163. package/esm2022/components/side-panel/side-panel.component.mjs +0 -55
  164. package/esm2022/components/side-panel/side-panel.model.mjs +0 -54
  165. package/esm2022/components/side-panel/side-panel.service.mjs +0 -98
  166. package/esm2022/components/side-sheet/side-sheet.component.mjs +0 -105
  167. package/esm2022/components/side-sheet/side-sheet.component.module.mjs +0 -43
  168. package/esm2022/components/side-sheet/side-sheet.model.mjs +0 -2
  169. package/esm2022/components/side-sheet/side-sheet.service.mjs +0 -31
  170. package/esm2022/components/skeleton/skeleton.component.mjs +0 -74
  171. package/esm2022/components/skeleton/skeleton.model.mjs +0 -2
  172. package/esm2022/components/slider/slider.component.mjs +0 -256
  173. package/esm2022/components/slider/slider.component.module.mjs +0 -16
  174. package/esm2022/components/slider/slider.model.mjs +0 -2
  175. package/esm2022/components/snackbar/snackbar.component.mjs +0 -235
  176. package/esm2022/components/snackbar/snackbar.component.module.mjs +0 -25
  177. package/esm2022/components/snackbar/snackbar.model.mjs +0 -2
  178. package/esm2022/components/snackbar/snackbar.service.mjs +0 -42
  179. package/esm2022/components/spider-chart/spider-chart.component.mjs +0 -443
  180. package/esm2022/components/spider-chart/spider-chart.model.mjs +0 -4
  181. package/esm2022/components/spider-chart/spider-chart.module.mjs +0 -44
  182. package/esm2022/components/spinner/spinner.component.mjs +0 -84
  183. package/esm2022/components/spinner/spinner.model.mjs +0 -2
  184. package/esm2022/components/spinner/spinner.module.mjs +0 -20
  185. package/esm2022/components/step/step.component.mjs +0 -209
  186. package/esm2022/components/step/step.component.module.mjs +0 -21
  187. package/esm2022/components/stepper/stepper.component.mjs +0 -198
  188. package/esm2022/components/stepper/stepper.component.module.mjs +0 -44
  189. package/esm2022/components/stepper/stepper.model.mjs +0 -2
  190. package/esm2022/components/table/sentence-case.pipe.mjs +0 -19
  191. package/esm2022/components/table/table.component.mjs +0 -273
  192. package/esm2022/components/table/table.component.module.mjs +0 -61
  193. package/esm2022/components/table/table.model.mjs +0 -25
  194. package/esm2022/components/tabs/tab.directive.mjs +0 -63
  195. package/esm2022/components/tabs/tabs.component.mjs +0 -219
  196. package/esm2022/components/tabs/tabs.component.module.mjs +0 -23
  197. package/esm2022/components/tabs/tabs.model.mjs +0 -2
  198. package/esm2022/components/tag/tag.component.mjs +0 -212
  199. package/esm2022/components/tag/tag.component.module.mjs +0 -24
  200. package/esm2022/components/tag/tag.model.mjs +0 -2
  201. package/esm2022/components/toggle/toggle.component.mjs +0 -190
  202. package/esm2022/components/toggle/toggle.component.module.mjs +0 -24
  203. package/esm2022/components/toggle/toggle.model.mjs +0 -2
  204. package/esm2022/components/tooltip/tooltip-template.directive.mjs +0 -133
  205. package/esm2022/components/tooltip/tooltip.component.mjs +0 -108
  206. package/esm2022/components/tooltip/tooltip.component.module.mjs +0 -27
  207. package/esm2022/components/tooltip/tooltip.model.mjs +0 -8
  208. package/esm2022/components/universal-skills-report/universal-skills-report.component.mjs +0 -80
  209. package/esm2022/components/universal-skills-report/universal-skills-report.component.module.mjs +0 -43
  210. package/esm2022/components/universal-skills-spider-charts/universal-skills-spider-charts.component.mjs +0 -109
  211. package/esm2022/components/universal-skills-spider-charts/universal-skills-spider-charts.component.module.mjs +0 -52
  212. package/esm2022/components/validation-error/validation-error.component.mjs +0 -55
  213. package/esm2022/components/validation-error/validation-error.model.mjs +0 -2
  214. package/esm2022/components/validation-error/validation-error.module.mjs +0 -20
  215. package/esm2022/directives/digits-only.directive.mjs +0 -77
  216. package/esm2022/directives/drag-drop.directive.mjs +0 -55
  217. package/esm2022/directives/dynamic-component.directive.mjs +0 -40
  218. package/esm2022/directives/ellipse-text.directive.mjs +0 -51
  219. package/esm2022/directives/select-text.directive.mjs +0 -40
  220. package/esm2022/directives/step-line-element.directive.mjs +0 -51
  221. package/esm2022/models/application-theme.model.mjs +0 -2
  222. package/esm2022/models/checkbox.model.mjs +0 -2
  223. package/esm2022/models/colors.model.mjs +0 -78
  224. package/esm2022/models/keyboard-events.model.mjs +0 -13
  225. package/esm2022/models/screen-breakpoints.model.mjs +0 -7
  226. package/esm2022/models/universal-skills-report.model.mjs +0 -33
  227. package/esm2022/pipes/data-property-getter.mjs +0 -33
  228. package/esm2022/pipes/has-validation-error.pipe.mjs +0 -27
  229. package/esm2022/pipes/memoize-func.pipe.mjs +0 -39
  230. package/esm2022/pipes/name-initials.pipe.mjs +0 -25
  231. package/esm2022/pipes/truncate.pipe.mjs +0 -34
  232. package/esm2022/pipes/ui-ordinal-suffix.pipe.mjs +0 -31
  233. package/esm2022/pipes/ui-translate.pipe.mjs +0 -81
  234. package/esm2022/providers/is-large-tablet.mjs +0 -11
  235. package/esm2022/providers/is-mobile.mjs +0 -11
  236. package/esm2022/public-api.mjs +0 -259
  237. package/esm2022/services/icons.service.mjs +0 -22
  238. package/esm2022/services/universal-skills.service.mjs +0 -85
  239. package/esm2022/testgorilla-tgo-ui.mjs +0 -5
  240. package/esm2022/utils/alert-bar.model.mjs +0 -2
  241. package/esm2022/utils/alert-bars.utils.mjs +0 -34
  242. package/esm2022/utils/autocomplete-utils.mjs +0 -78
  243. package/esm2022/utils/color-contrast.mjs +0 -131
  244. package/esm2022/utils/hex-to-rgb.mjs +0 -9
  245. package/esm2022/utils/localization/language.model.mjs +0 -16
  246. package/esm2022/utils/localization/language.service.mjs +0 -44
  247. package/esm2022/utils/table.utils.mjs +0 -25
@@ -1,254 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, Optional, Output, signal, ViewChild, ViewChildren, ViewEncapsulation, } from '@angular/core';
2
- import { MatMenu, MatMenuTrigger } from '@angular/material/menu';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/cdk/a11y";
5
- import * as i2 from "@angular/common";
6
- import * as i3 from "../button/button.component";
7
- import * as i4 from "../icon/icon.component";
8
- import * as i5 from "@angular/material/menu";
9
- import * as i6 from "@angular/material/button";
10
- import * as i7 from "@angular/material/tooltip";
11
- import * as i8 from "../../directives/ellipse-text.directive";
12
- import * as i9 from "../../pipes/ui-translate.pipe";
13
- const DEFAULT_MENU_CONFIG = {
14
- overlapTrigger: false,
15
- panelClass: '',
16
- xPosition: 'after',
17
- yPosition: 'below',
18
- };
19
- export class OverflowMenuComponent {
20
- get menuItemHasHovered() {
21
- return this.submenus.some(menu => menu.some(item => item.isHovered));
22
- }
23
- constructor(defaultAppTheme, focusMonitor, ngZone) {
24
- this.defaultAppTheme = defaultAppTheme;
25
- this.focusMonitor = focusMonitor;
26
- this.ngZone = ngZone;
27
- /**
28
- * Menu icon trigger
29
- *
30
- * @memberof OverflowMenuComponent
31
- */
32
- this.iconTrigger = 'Menu-ellipsis';
33
- /**
34
- * Label menu
35
- *
36
- * @memberof OverflowMenuComponent
37
- */
38
- this.menuLabel = '';
39
- /**
40
- *
41
- * Defines the application theme
42
- *
43
- * @type {ApplicationTheme}
44
- * @memberof OverflowMenuComponent
45
- */
46
- this.applicationTheme = 'light';
47
- /**
48
- * A string representing the ARIA requirement for accessibility.
49
- * This attribute is used to indicate whether an input field is required for form submission.
50
- * @type {boolean}
51
- * @memberof OverflowMenuComponent
52
- */
53
- this.ariaRequired = false;
54
- /**
55
- * A string representing the ARIA requirement for accessibility.
56
- * This attribute is used to indicate whether an input for description.
57
- * @type {text}
58
- * @memberof OverflowMenuComponent
59
- */
60
- this.describedby = '';
61
- /**
62
- * Button variant for the overflow menu trigger
63
- * When null, uses the default icon rendering
64
- *
65
- * @type {ButtonColor | null}
66
- * @memberof OverflowMenuComponent
67
- */
68
- this.buttonVariant = null;
69
- /**
70
- * Button size for the overflow menu trigger
71
- *
72
- * @type {ButtonSize}
73
- * @memberof OverflowMenuComponent
74
- */
75
- this.buttonSize = 'medium';
76
- this.menuConfig = DEFAULT_MENU_CONFIG;
77
- this.isDynamicMenu = false;
78
- this.withRemovableOption = false;
79
- this.selectItem = new EventEmitter();
80
- this.menuOpened = new EventEmitter();
81
- this.menuClosed = new EventEmitter();
82
- this.menuItems = [];
83
- this.submenus = [];
84
- this.isMenuRendered = signal(false);
85
- this.isMenuOpened = signal(false);
86
- this.isFocused = signal(false);
87
- this.trackByButton = (_, btn) => btn.action ?? btn.value ?? btn.label;
88
- if (defaultAppTheme) {
89
- this.applicationTheme = defaultAppTheme;
90
- }
91
- }
92
- ngOnInit() {
93
- this.createSubmenus(this.buttons, 's0', 1);
94
- this.reindex();
95
- }
96
- ngOnChanges(changes) {
97
- if (changes['buttons'] && this.isDynamicMenu) {
98
- this.resetSubmenus();
99
- this.createSubmenus(this.buttons, 's0', 1);
100
- this.reindex();
101
- }
102
- }
103
- ngAfterViewInit() {
104
- this.isMenuRendered.set(true);
105
- setTimeout(() => {
106
- this.focusMonitor.monitor(this.buttonElement).subscribe(origin => this.ngZone.run(() => {
107
- if (origin === 'keyboard') {
108
- this.isFocused.set(true);
109
- }
110
- else {
111
- if (!this.isMenuOpened()) {
112
- this.isFocused.set(false);
113
- }
114
- }
115
- }));
116
- }, 300);
117
- }
118
- onSelectItem(event, value) {
119
- if (!!value) {
120
- this.selectItem.emit(value);
121
- }
122
- }
123
- onMenuOpened() {
124
- this.menuOpened.emit();
125
- this.isMenuOpened.set(true);
126
- if (this.isFocused()) {
127
- setTimeout(() => {
128
- this.matmenus.first._allItems.first.focus('keyboard');
129
- }, 300);
130
- }
131
- }
132
- onMenuClosed() {
133
- this.isMenuOpened.set(false);
134
- this.menuClosed.emit();
135
- }
136
- onButtonFocus(button) {
137
- if (this.isFocused()) {
138
- button.isFocused = true;
139
- }
140
- }
141
- onButtonBlur(button) {
142
- button.isFocused = false;
143
- }
144
- onButtonClick(button, $event) {
145
- if (button.disabled) {
146
- $event.preventDefault();
147
- $event.stopPropagation();
148
- }
149
- else {
150
- this.onSelectItem($event, button.value);
151
- }
152
- }
153
- onSubmenuOpened() {
154
- this.isMenuOpened.set(!this.isMenuOpened);
155
- if (this.isFocused()) {
156
- setTimeout(() => {
157
- this.matmenus.last._allItems.first.focus('keyboard');
158
- }, 300);
159
- }
160
- }
161
- onButtonHover(button, state) {
162
- button.isHovered = state;
163
- }
164
- getMenu(index) {
165
- return index >= 0 && this.matmenus ? (this.matmenus.find((x, i) => i === index) ?? null) : null;
166
- }
167
- reindex() {
168
- this.submenus.forEach((menu) => {
169
- menu.forEach((item) => {
170
- if (item.subMenu !== -1) {
171
- item.subMenu = this.menuItems.indexOf(`${item.action}`);
172
- }
173
- });
174
- });
175
- }
176
- resetSubmenus() {
177
- this.submenus = [];
178
- this.menuItems = [];
179
- }
180
- createSubmenus(menu, prefix, count) {
181
- this.menuItems.push(prefix);
182
- this.submenus.push(menu.map((item, index) => ({
183
- label: item.label,
184
- icon: item.icon,
185
- isDestructive: item.isDestructive,
186
- tooltipText: item.tooltipText,
187
- value: item.value,
188
- disabled: item.disabled,
189
- btnTemplate: item.btnTemplate,
190
- subMenu: item.subMenu ? 0 : -1,
191
- action: item.action ? item.action : prefix + index,
192
- isTitleButton: item.isTitleButton,
193
- hideTitleButton: item.hideTitleButton,
194
- })));
195
- menu.forEach((item, index) => {
196
- if (item.subMenu) {
197
- this.createSubmenus(item.subMenu, prefix + index, count + 1);
198
- }
199
- });
200
- }
201
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OverflowMenuComponent, deps: [{ token: 'CANOPYUI_DEFAULT_APPLICATION_THEME', optional: true }, { token: i1.FocusMonitor }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
202
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: OverflowMenuComponent, selector: "ui-overflow-menu", inputs: { buttons: "buttons", iconTrigger: "iconTrigger", menuLabel: "menuLabel", applicationTheme: "applicationTheme", ariaLabel: "ariaLabel", ariaRequired: "ariaRequired", describedby: "describedby", contentTemplateRef: "contentTemplateRef", buttonVariant: "buttonVariant", buttonSize: "buttonSize", menuConfig: "menuConfig", isDynamicMenu: "isDynamicMenu", withRemovableOption: "withRemovableOption" }, outputs: { selectItem: "selectItem", menuOpened: "menuOpened", menuClosed: "menuClosed" }, viewQueries: [{ propertyName: "buttonElement", first: true, predicate: ["buttonElement"], descendants: true }, { propertyName: "matmenus", predicate: MatMenu, descendants: true }, { propertyName: "matTrigger", predicate: MatMenuTrigger, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"overflow-menu-container\" [attr.theme]=\"applicationTheme\">\n <button\n #buttonElement\n mat-button\n [ngClass]=\"{\n 'icon-button': !contentTemplateRef && !buttonVariant,\n 'content-template': contentTemplateRef,\n 'no-hover': buttonVariant,\n }\"\n *ngIf=\"isMenuRendered()\"\n [matMenuTriggerFor]=\"matmenus.first\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-required]=\"ariaRequired\"\n [attr.aria-describedby]=\"'describedby'\"\n [attr.aria-haspopup]=\"true\"\n [attr.aria-expanded]=\"isMenuOpened()\"\n disableRipple\n (menuOpened)=\"onMenuOpened()\"\n (menuClosed)=\"onMenuClosed()\"\n class=\"overflow-menu-opener\"\n [matTooltip]=\"menuLabel\"\n >\n <span [id]=\"'describedby'\" [style.display]=\"'none'\">{{ describedby }}</span>\n @if (buttonVariant) {\n <ui-button\n [variant]=\"buttonVariant\"\n [justIcon]=\"true\"\n [iconName]=\"iconTrigger\"\n [applicationTheme]=\"applicationTheme\"\n [disabled]=\"false\"\n [size]=\"buttonSize\"\n >\n </ui-button>\n } @else if (contentTemplateRef) {\n <ng-container [ngTemplateOutlet]=\"contentTemplateRef\"></ng-container>\n } @else {\n <ui-icon\n [name]=\"iconTrigger\"\n [applicationTheme]=\"applicationTheme\"\n [size]=\"'24'\"\n [color]=\"'rebrand-black'\"\n ></ui-icon>\n }\n </button>\n\n @for (menu of submenus; track submenus[$index]) {\n <mat-menu\n [xPosition]=\"menuConfig.xPosition\"\n [yPosition]=\"menuConfig.yPosition\"\n #matMenu\n [class]=\"'overflow-menu ' + menuConfig.panelClass\"\n [overlapTrigger]=\"menuConfig.overlapTrigger\"\n backdropClass=\"overflow-menu-backdrop\"\n >\n <ng-container *ngFor=\"let button of menu; index as id; trackBy: trackByButton\">\n @if (button.btnTemplate) {\n <!-- Menu option by provided button template-->\n <ng-container\n [ngTemplateOutlet]=\"button.btnTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: button }\"\n ></ng-container>\n } @else if (withRemovableOption) {\n <!-- Simple menu option that can be removed dynamically -->\n <div class=\"menu-option\" [ngClass]=\"{ 'is-destructive': button.isDestructive, disabled: button.disabled }\">\n <span\n [id]=\"'labelledby-' + button.label + id\"\n class=\"label\"\n uiEllipseText\n [refresh]=\"isMenuOpened()\"\n [maxDiffPixels]=\"1\"\n [isMultiline]=\"true\"\n (onChangeTextState)=\"button.isTextEllipsed = $event\"\n >{{ button.label }}\n </span>\n\n @if (button.icon) {\n <ui-button\n variant=\"icon-button\"\n [applicationTheme]=\"applicationTheme\"\n [iconName]=\"button.icon\"\n [tooltip]=\"button.tooltipText ? button.tooltipText : button.isTextEllipsed ? button.label : ''\"\n [tooltipPosition]=\"'above'\"\n [size]=\"'medium'\"\n (focus)=\"onButtonFocus(button)\"\n (blur)=\"onButtonBlur(button)\"\n (mouseenter)=\"onButtonHover(button, true)\"\n (mouseleave)=\"onButtonHover(button, false)\"\n (click)=\"onSelectItem($event, button.value)\">\n </ui-button>\n }\n </div>\n } @else {\n <!-- Default non-removable menu option -->\n @if (button.isTitleButton && !button.hideTitleButton) {\n <div class=\"menu-title\">{{ button.label }}</div>\n }\n\n @if (!button.isTitleButton) {\n <button\n mat-menu-item\n [matMenuTriggerFor]=\"getMenu(button.subMenu)\"\n (menuOpened)=\"onSubmenuOpened()\"\n (focus)=\"onButtonFocus(button)\"\n (blur)=\"onButtonBlur(button)\"\n (mouseenter)=\"onButtonHover(button, true)\"\n (mouseleave)=\"onButtonHover(button, false)\"\n [ngClass]=\"{ 'is-destructive': button.isDestructive, disabled: button.disabled }\"\n disableRipple\n (click)=\"onButtonClick(button, $event)\"\n [matTooltip]=\"button.tooltipText ? button.tooltipText : button.isTextEllipsed ? button.label : ''\"\n [attr.aria-labelledby]=\"'labelledby-' + button.label + id\"\n [attr.aria-describedby]=\"'describedby-' + button.label + id\"\n [attr.aria-label]=\"button.ariaLabel || null\"\n role=\"menuitem\"\n matTooltipPosition=\"right\"\n >\n <span [id]=\"'describedby-' + button.label + id\" [style.display]=\"'none'\">\n {{\n button.disabled\n ? ('MENU.MENUITEM_DISABLED' | uiTranslate | async) + ' ' + (button.describedby || '')\n : button.describedby\n }}\n </span>\n @if (button.icon) {\n <ui-icon\n [name]=\"button.icon\"\n [toggleIconStyle]=\"true\"\n [filled]=\"\n button.disabled ? false : button.isHovered ? true : menuItemHasHovered ? false : !!button.isFocused\n \"\n [applicationTheme]=\"applicationTheme\"\n [size]=\"'24'\"\n [color]=\"button.isDestructive ? 'red' : button.disabled ? 'dark' : 'rebrand-black'\"\n ></ui-icon>\n }\n <span\n [id]=\"'labelledby-' + button.label + id\"\n class=\"label\"\n uiEllipseText\n [refresh]=\"isMenuOpened()\"\n [maxDiffPixels]=\"1\"\n [isMultiline]=\"true\"\n (onChangeTextState)=\"button.isTextEllipsed = $event\"\n >{{ button.label }}</span\n >\n </button>\n }\n }\n </ng-container>\n\n <ng-content select=\"[menu-content]\"></ng-content>\n </mat-menu>\n }\n</div>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}:host ::ng-deep .overflow-menu .mat-mdc-menu-content:not(:empty){padding:0}:host ::ng-deep .overflow-menu button{padding:0!important;width:fit-content!important}.overflow-menu-opener{background:transparent;border:unset;cursor:pointer}.overflow-menu-opener.content-template{display:flex;justify-content:flex-start;height:100%;width:100%}.overflow-menu-opener.icon-button{height:40px;width:40px;border-radius:50px;display:flex;align-items:center;justify-content:center}.overflow-menu-opener:focus-visible{outline-color:#242424;outline-style:solid;outline-offset:2px!important;animation:focus-ring-animation .4s forwards}@keyframes focus-ring-animation{0%{outline-width:4px!important}to{outline-width:2px!important}}.overflow-menu-opener:hover{background:#e9e9e9}.overflow-menu-backdrop+* .mat-mdc-menu-panel{min-height:0;border-radius:8px;box-shadow:2px 24px 48px 8px #00000014}.overflow-menu-backdrop+* .mat-mdc-menu-content:not(:empty){padding:0}.overflow-menu-backdrop+* .mat-mdc-menu-content:not(:empty) .menu-title{padding:16px;font-weight:700}.overflow-menu-backdrop+* .mat-mdc-menu-content:not(:empty) .menu-option{padding:16px;display:flex;flex-flow:row nowrap;align-items:center;justify-content:space-between}.overflow-menu-backdrop+* .mat-mdc-menu-submenu-icon{padding-right:var(--mat-menu-item-spacing);padding-top:16px;padding-bottom:16px}.overflow-menu-backdrop+* ui-button:first-child button.mat-mdc-unelevated-button.menuCell{border-radius:8px 8px 0 0}.overflow-menu-backdrop+* ui-button:last-child button.mat-mdc-unelevated-button.menuCell{border-radius:0 0 8px 8px}.overflow-menu-backdrop+* ui-button.destructive button.mat-mdc-unelevated-button.menuCell{color:#cb7b7a}.overflow-menu-backdrop+* ui-button.destructive button.mat-mdc-unelevated-button.menuCell mat-icon.black svg{color:#cb7b7a}.overflow-menu-backdrop+* ui-button.destructive button.mat-mdc-unelevated-button.menuCell:hover{background-color:#f0dad9}.overflow-menu-backdrop+* ui-button.destructive button.mat-mdc-unelevated-button.menuCell:focus.cdk-focused.cdk-mouse-focused{background-color:#f0dad9}[theme=dark] .overflow-menu-backdrop+* .mat-mdc-menu-panel,[theme=light] .overflow-menu-backdrop+* .mat-mdc-menu-panel{min-height:0;border-radius:10px;box-shadow:0 4px 16px #24242414}[theme=dark] .overflow-menu-backdrop+* ui-button button.mat-mdc-unelevated-button.menuCell:hover,[theme=light] .overflow-menu-backdrop+* ui-button button.mat-mdc-unelevated-button.menuCell:hover{background-color:#fff2fc}[theme=dark] .overflow-menu-backdrop+* ui-button button.mat-mdc-unelevated-button.menuCell:active,[theme=light] .overflow-menu-backdrop+* ui-button button.mat-mdc-unelevated-button.menuCell:active{background-color:#ffe6fa}[theme=dark] .overflow-menu-backdrop+* ui-button.destructive button.mat-mdc-unelevated-button.menuCell,[theme=light] .overflow-menu-backdrop+* ui-button.destructive button.mat-mdc-unelevated-button.menuCell{color:#e02800!important}[theme=dark] .overflow-menu-backdrop+* ui-button.destructive button.mat-mdc-unelevated-button.menuCell mat-icon.black svg,[theme=light] .overflow-menu-backdrop+* ui-button.destructive button.mat-mdc-unelevated-button.menuCell mat-icon.black svg{color:#e02800!important}[theme=dark] .overflow-menu-backdrop+* ui-button.destructive button.mat-mdc-unelevated-button.menuCell:hover,[theme=light] .overflow-menu-backdrop+* ui-button.destructive button.mat-mdc-unelevated-button.menuCell:hover{background-color:#fff2fc}[theme=dark] .overflow-menu-backdrop+* ui-button.destructive button.mat-mdc-unelevated-button.menuCell:active,[theme=light] .overflow-menu-backdrop+* ui-button.destructive button.mat-mdc-unelevated-button.menuCell:active{background-color:#ffe6fa}[theme=dark] .overflow-menu-backdrop+* ui-button.destructive button.mat-mdc-unelevated-button.menuCell:focus.cdk-focused.cdk-mouse-focused,[theme=light] .overflow-menu-backdrop+* ui-button.destructive button.mat-mdc-unelevated-button.menuCell:focus.cdk-focused.cdk-mouse-focused{background-color:#ffe6fa}button.is-destructive{background-color:#fff;color:#e02800}button.is-destructive:hover{background-color:#e02800}button.is-destructive:hover ::ng-deep mat-icon.black svg{color:#fff}button.is-destructive:disabled,button.is-destructive:disabled:hover{color:#919191;background:transparent}button.is-destructive ::ng-deep mat-icon.black svg{color:#e02800}button.is-destructive .mat-mdc-progress-spinner ::ng-deep circle{stroke:#242424}button.is-destructive.classic-theme{border:unset;border-radius:4px;background-color:#cb7b7a;color:#fff}button.is-destructive.classic-theme:hover{background-color:#8e5655}button.is-destructive.classic-theme:disabled,button.is-destructive.classic-theme:disabled:hover{background-color:#e3c3c6}button.is-destructive.classic-theme ::ng-deep mat-icon.black svg{color:#fff}button.is-destructive.classic-theme .mat-mdc-progress-spinner ::ng-deep circle{stroke:#000}button .label{text-align:left;overflow:hidden;-webkit-line-clamp:2;display:-webkit-box!important;-webkit-box-orient:vertical;text-overflow:ellipsis;white-space:normal;line-height:16px}button.disabled{background:transparent;color:#888;cursor:not-allowed}button.disabled:hover{background:transparent!important}.overflow-menu-opener.no-hover:hover{background:transparent}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.ButtonComponent, selector: "ui-button", inputs: ["size", "variant", "label", "iconPosition", "justIcon", "iconName", "disabled", "loading", "fullWidth", "url", "urlTarget", "value", "tooltip", "isPremium", "type", "companyColor", "buttonBadgeConfig", "applicationTheme", "disabledScaleOnClick", "ariaLabel", "ariaRequired", "ariaLabelledby", "ariaDescribedby", "preventDefault", "hasBackground", "tooltipPosition", "role", "iconFilled"], outputs: ["buttonClickEvent", "buttonHoverEvent"] }, { kind: "component", type: i4.IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color", "filled", "toggleIconStyle", "applicationTheme", "useFullIconName"] }, { kind: "component", type: i5.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i5.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i5.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i8.EllipseTextDirective, selector: "[uiEllipseText]", inputs: ["isMultiline", "maxDiffPixels", "refresh"], outputs: ["onChangeTextState"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.UiTranslatePipe, name: "uiTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
203
- }
204
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OverflowMenuComponent, decorators: [{
205
- type: Component,
206
- args: [{ selector: 'ui-overflow-menu', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"overflow-menu-container\" [attr.theme]=\"applicationTheme\">\n <button\n #buttonElement\n mat-button\n [ngClass]=\"{\n 'icon-button': !contentTemplateRef && !buttonVariant,\n 'content-template': contentTemplateRef,\n 'no-hover': buttonVariant,\n }\"\n *ngIf=\"isMenuRendered()\"\n [matMenuTriggerFor]=\"matmenus.first\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-required]=\"ariaRequired\"\n [attr.aria-describedby]=\"'describedby'\"\n [attr.aria-haspopup]=\"true\"\n [attr.aria-expanded]=\"isMenuOpened()\"\n disableRipple\n (menuOpened)=\"onMenuOpened()\"\n (menuClosed)=\"onMenuClosed()\"\n class=\"overflow-menu-opener\"\n [matTooltip]=\"menuLabel\"\n >\n <span [id]=\"'describedby'\" [style.display]=\"'none'\">{{ describedby }}</span>\n @if (buttonVariant) {\n <ui-button\n [variant]=\"buttonVariant\"\n [justIcon]=\"true\"\n [iconName]=\"iconTrigger\"\n [applicationTheme]=\"applicationTheme\"\n [disabled]=\"false\"\n [size]=\"buttonSize\"\n >\n </ui-button>\n } @else if (contentTemplateRef) {\n <ng-container [ngTemplateOutlet]=\"contentTemplateRef\"></ng-container>\n } @else {\n <ui-icon\n [name]=\"iconTrigger\"\n [applicationTheme]=\"applicationTheme\"\n [size]=\"'24'\"\n [color]=\"'rebrand-black'\"\n ></ui-icon>\n }\n </button>\n\n @for (menu of submenus; track submenus[$index]) {\n <mat-menu\n [xPosition]=\"menuConfig.xPosition\"\n [yPosition]=\"menuConfig.yPosition\"\n #matMenu\n [class]=\"'overflow-menu ' + menuConfig.panelClass\"\n [overlapTrigger]=\"menuConfig.overlapTrigger\"\n backdropClass=\"overflow-menu-backdrop\"\n >\n <ng-container *ngFor=\"let button of menu; index as id; trackBy: trackByButton\">\n @if (button.btnTemplate) {\n <!-- Menu option by provided button template-->\n <ng-container\n [ngTemplateOutlet]=\"button.btnTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: button }\"\n ></ng-container>\n } @else if (withRemovableOption) {\n <!-- Simple menu option that can be removed dynamically -->\n <div class=\"menu-option\" [ngClass]=\"{ 'is-destructive': button.isDestructive, disabled: button.disabled }\">\n <span\n [id]=\"'labelledby-' + button.label + id\"\n class=\"label\"\n uiEllipseText\n [refresh]=\"isMenuOpened()\"\n [maxDiffPixels]=\"1\"\n [isMultiline]=\"true\"\n (onChangeTextState)=\"button.isTextEllipsed = $event\"\n >{{ button.label }}\n </span>\n\n @if (button.icon) {\n <ui-button\n variant=\"icon-button\"\n [applicationTheme]=\"applicationTheme\"\n [iconName]=\"button.icon\"\n [tooltip]=\"button.tooltipText ? button.tooltipText : button.isTextEllipsed ? button.label : ''\"\n [tooltipPosition]=\"'above'\"\n [size]=\"'medium'\"\n (focus)=\"onButtonFocus(button)\"\n (blur)=\"onButtonBlur(button)\"\n (mouseenter)=\"onButtonHover(button, true)\"\n (mouseleave)=\"onButtonHover(button, false)\"\n (click)=\"onSelectItem($event, button.value)\">\n </ui-button>\n }\n </div>\n } @else {\n <!-- Default non-removable menu option -->\n @if (button.isTitleButton && !button.hideTitleButton) {\n <div class=\"menu-title\">{{ button.label }}</div>\n }\n\n @if (!button.isTitleButton) {\n <button\n mat-menu-item\n [matMenuTriggerFor]=\"getMenu(button.subMenu)\"\n (menuOpened)=\"onSubmenuOpened()\"\n (focus)=\"onButtonFocus(button)\"\n (blur)=\"onButtonBlur(button)\"\n (mouseenter)=\"onButtonHover(button, true)\"\n (mouseleave)=\"onButtonHover(button, false)\"\n [ngClass]=\"{ 'is-destructive': button.isDestructive, disabled: button.disabled }\"\n disableRipple\n (click)=\"onButtonClick(button, $event)\"\n [matTooltip]=\"button.tooltipText ? button.tooltipText : button.isTextEllipsed ? button.label : ''\"\n [attr.aria-labelledby]=\"'labelledby-' + button.label + id\"\n [attr.aria-describedby]=\"'describedby-' + button.label + id\"\n [attr.aria-label]=\"button.ariaLabel || null\"\n role=\"menuitem\"\n matTooltipPosition=\"right\"\n >\n <span [id]=\"'describedby-' + button.label + id\" [style.display]=\"'none'\">\n {{\n button.disabled\n ? ('MENU.MENUITEM_DISABLED' | uiTranslate | async) + ' ' + (button.describedby || '')\n : button.describedby\n }}\n </span>\n @if (button.icon) {\n <ui-icon\n [name]=\"button.icon\"\n [toggleIconStyle]=\"true\"\n [filled]=\"\n button.disabled ? false : button.isHovered ? true : menuItemHasHovered ? false : !!button.isFocused\n \"\n [applicationTheme]=\"applicationTheme\"\n [size]=\"'24'\"\n [color]=\"button.isDestructive ? 'red' : button.disabled ? 'dark' : 'rebrand-black'\"\n ></ui-icon>\n }\n <span\n [id]=\"'labelledby-' + button.label + id\"\n class=\"label\"\n uiEllipseText\n [refresh]=\"isMenuOpened()\"\n [maxDiffPixels]=\"1\"\n [isMultiline]=\"true\"\n (onChangeTextState)=\"button.isTextEllipsed = $event\"\n >{{ button.label }}</span\n >\n </button>\n }\n }\n </ng-container>\n\n <ng-content select=\"[menu-content]\"></ng-content>\n </mat-menu>\n }\n</div>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}:host ::ng-deep .overflow-menu .mat-mdc-menu-content:not(:empty){padding:0}:host ::ng-deep .overflow-menu button{padding:0!important;width:fit-content!important}.overflow-menu-opener{background:transparent;border:unset;cursor:pointer}.overflow-menu-opener.content-template{display:flex;justify-content:flex-start;height:100%;width:100%}.overflow-menu-opener.icon-button{height:40px;width:40px;border-radius:50px;display:flex;align-items:center;justify-content:center}.overflow-menu-opener:focus-visible{outline-color:#242424;outline-style:solid;outline-offset:2px!important;animation:focus-ring-animation .4s forwards}@keyframes focus-ring-animation{0%{outline-width:4px!important}to{outline-width:2px!important}}.overflow-menu-opener:hover{background:#e9e9e9}.overflow-menu-backdrop+* .mat-mdc-menu-panel{min-height:0;border-radius:8px;box-shadow:2px 24px 48px 8px #00000014}.overflow-menu-backdrop+* .mat-mdc-menu-content:not(:empty){padding:0}.overflow-menu-backdrop+* .mat-mdc-menu-content:not(:empty) .menu-title{padding:16px;font-weight:700}.overflow-menu-backdrop+* .mat-mdc-menu-content:not(:empty) .menu-option{padding:16px;display:flex;flex-flow:row nowrap;align-items:center;justify-content:space-between}.overflow-menu-backdrop+* .mat-mdc-menu-submenu-icon{padding-right:var(--mat-menu-item-spacing);padding-top:16px;padding-bottom:16px}.overflow-menu-backdrop+* ui-button:first-child button.mat-mdc-unelevated-button.menuCell{border-radius:8px 8px 0 0}.overflow-menu-backdrop+* ui-button:last-child button.mat-mdc-unelevated-button.menuCell{border-radius:0 0 8px 8px}.overflow-menu-backdrop+* ui-button.destructive button.mat-mdc-unelevated-button.menuCell{color:#cb7b7a}.overflow-menu-backdrop+* ui-button.destructive button.mat-mdc-unelevated-button.menuCell mat-icon.black svg{color:#cb7b7a}.overflow-menu-backdrop+* ui-button.destructive button.mat-mdc-unelevated-button.menuCell:hover{background-color:#f0dad9}.overflow-menu-backdrop+* ui-button.destructive button.mat-mdc-unelevated-button.menuCell:focus.cdk-focused.cdk-mouse-focused{background-color:#f0dad9}[theme=dark] .overflow-menu-backdrop+* .mat-mdc-menu-panel,[theme=light] .overflow-menu-backdrop+* .mat-mdc-menu-panel{min-height:0;border-radius:10px;box-shadow:0 4px 16px #24242414}[theme=dark] .overflow-menu-backdrop+* ui-button button.mat-mdc-unelevated-button.menuCell:hover,[theme=light] .overflow-menu-backdrop+* ui-button button.mat-mdc-unelevated-button.menuCell:hover{background-color:#fff2fc}[theme=dark] .overflow-menu-backdrop+* ui-button button.mat-mdc-unelevated-button.menuCell:active,[theme=light] .overflow-menu-backdrop+* ui-button button.mat-mdc-unelevated-button.menuCell:active{background-color:#ffe6fa}[theme=dark] .overflow-menu-backdrop+* ui-button.destructive button.mat-mdc-unelevated-button.menuCell,[theme=light] .overflow-menu-backdrop+* ui-button.destructive button.mat-mdc-unelevated-button.menuCell{color:#e02800!important}[theme=dark] .overflow-menu-backdrop+* ui-button.destructive button.mat-mdc-unelevated-button.menuCell mat-icon.black svg,[theme=light] .overflow-menu-backdrop+* ui-button.destructive button.mat-mdc-unelevated-button.menuCell mat-icon.black svg{color:#e02800!important}[theme=dark] .overflow-menu-backdrop+* ui-button.destructive button.mat-mdc-unelevated-button.menuCell:hover,[theme=light] .overflow-menu-backdrop+* ui-button.destructive button.mat-mdc-unelevated-button.menuCell:hover{background-color:#fff2fc}[theme=dark] .overflow-menu-backdrop+* ui-button.destructive button.mat-mdc-unelevated-button.menuCell:active,[theme=light] .overflow-menu-backdrop+* ui-button.destructive button.mat-mdc-unelevated-button.menuCell:active{background-color:#ffe6fa}[theme=dark] .overflow-menu-backdrop+* ui-button.destructive button.mat-mdc-unelevated-button.menuCell:focus.cdk-focused.cdk-mouse-focused,[theme=light] .overflow-menu-backdrop+* ui-button.destructive button.mat-mdc-unelevated-button.menuCell:focus.cdk-focused.cdk-mouse-focused{background-color:#ffe6fa}button.is-destructive{background-color:#fff;color:#e02800}button.is-destructive:hover{background-color:#e02800}button.is-destructive:hover ::ng-deep mat-icon.black svg{color:#fff}button.is-destructive:disabled,button.is-destructive:disabled:hover{color:#919191;background:transparent}button.is-destructive ::ng-deep mat-icon.black svg{color:#e02800}button.is-destructive .mat-mdc-progress-spinner ::ng-deep circle{stroke:#242424}button.is-destructive.classic-theme{border:unset;border-radius:4px;background-color:#cb7b7a;color:#fff}button.is-destructive.classic-theme:hover{background-color:#8e5655}button.is-destructive.classic-theme:disabled,button.is-destructive.classic-theme:disabled:hover{background-color:#e3c3c6}button.is-destructive.classic-theme ::ng-deep mat-icon.black svg{color:#fff}button.is-destructive.classic-theme .mat-mdc-progress-spinner ::ng-deep circle{stroke:#000}button .label{text-align:left;overflow:hidden;-webkit-line-clamp:2;display:-webkit-box!important;-webkit-box-orient:vertical;text-overflow:ellipsis;white-space:normal;line-height:16px}button.disabled{background:transparent;color:#888;cursor:not-allowed}button.disabled:hover{background:transparent!important}.overflow-menu-opener.no-hover:hover{background:transparent}\n"] }]
207
- }], ctorParameters: () => [{ type: undefined, decorators: [{
208
- type: Optional
209
- }, {
210
- type: Inject,
211
- args: ['CANOPYUI_DEFAULT_APPLICATION_THEME']
212
- }] }, { type: i1.FocusMonitor }, { type: i0.NgZone }], propDecorators: { buttons: [{
213
- type: Input
214
- }], iconTrigger: [{
215
- type: Input
216
- }], menuLabel: [{
217
- type: Input
218
- }], applicationTheme: [{
219
- type: Input
220
- }], ariaLabel: [{
221
- type: Input
222
- }], ariaRequired: [{
223
- type: Input
224
- }], describedby: [{
225
- type: Input
226
- }], contentTemplateRef: [{
227
- type: Input
228
- }], buttonVariant: [{
229
- type: Input
230
- }], buttonSize: [{
231
- type: Input
232
- }], menuConfig: [{
233
- type: Input
234
- }], isDynamicMenu: [{
235
- type: Input
236
- }], withRemovableOption: [{
237
- type: Input
238
- }], selectItem: [{
239
- type: Output
240
- }], menuOpened: [{
241
- type: Output
242
- }], menuClosed: [{
243
- type: Output
244
- }], matmenus: [{
245
- type: ViewChildren,
246
- args: [MatMenu]
247
- }], matTrigger: [{
248
- type: ViewChildren,
249
- args: [MatMenuTrigger]
250
- }], buttonElement: [{
251
- type: ViewChild,
252
- args: ['buttonElement']
253
- }] } });
254
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmZsb3ctbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90Z28tY2Fub3B5LXVpL2NvbXBvbmVudHMvb3ZlcmZsb3ctbWVudS9vdmVyZmxvdy1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9vdmVyZmxvdy1tZW51L292ZXJmbG93LW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFFTixNQUFNLEVBR04sU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsR0FHbEIsTUFBTSxlQUFlLENBQUM7QUFLdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7QUFHakUsTUFBTSxtQkFBbUIsR0FBZTtJQUN0QyxjQUFjLEVBQUUsS0FBSztJQUNyQixVQUFVLEVBQUUsRUFBRTtJQUNkLFNBQVMsRUFBRSxPQUFPO0lBQ2xCLFNBQVMsRUFBRSxPQUFPO0NBQ25CLENBQUM7QUFTRixNQUFNLE9BQU8scUJBQXFCO0lBd0doQyxJQUFJLGtCQUFrQjtRQUNwQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxZQUM2RSxlQUFpQyxFQUNwRyxZQUEwQixFQUMxQixNQUFjO1FBRnFELG9CQUFlLEdBQWYsZUFBZSxDQUFrQjtRQUNwRyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixXQUFN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RSxNQUFNLEdBQUcsS0FBSyxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMzRyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQXZQVSxxQkFBcUIsa0JBNkdWLG9DQUFvQzttR0E3Ry9DLHFCQUFxQix1cUJBNkZsQixPQUFPLGdFQUNQLGNBQWMscUVDdkk5QixpbU1BMEpBOzs0RkRqSGEscUJBQXFCO2tCQVBqQyxTQUFTOytCQUNFLGtCQUFrQixpQkFHYixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNOzswQkErRzVDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsb0NBQW9DO3lGQXRHakQsT0FBTztzQkFBZixLQUFLO2dCQU9HLFdBQVc7c0JBQW5CLEtBQUs7Z0JBT0csU0FBUztzQkFBakIsS0FBSztnQkFTRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBUUcsU0FBUztzQkFBakIsS0FBSztnQkFRRyxZQUFZO3NCQUFwQixLQUFLO2dCQVFHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBUUcsa0JBQWtCO3NCQUExQixLQUFLO2dCQVNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBUUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUcsbUJBQW1CO3NCQUEzQixLQUFLO2dCQUVJLFVBQVU7c0JBQW5CLE1BQU07Z0JBRUcsVUFBVTtzQkFBbkIsTUFBTTtnQkFFRyxVQUFVO3NCQUFuQixNQUFNO2dCQUVnQixRQUFRO3NCQUE5QixZQUFZO3VCQUFDLE9BQU87Z0JBQ1MsVUFBVTtzQkFBdkMsWUFBWTt1QkFBQyxjQUFjO2dCQUNBLGFBQWE7c0JBQXhDLFNBQVM7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgc2lnbmFsLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBPbkNoYW5nZXMsXG4gIEFmdGVyVmlld0luaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWNvbk5hbWUgfSBmcm9tICcuLi9pY29uL2ljb24ubW9kZWwnO1xuaW1wb3J0IHsgTWVudUNvbmZpZywgT3ZlcmZsb3dNZW51QnV0dG9uTW9kaWZ5LCBPdmVyZmxvd01lbnVCdXR0b25zVHlwZSB9IGZyb20gJy4vb3ZlcmZsb3ctbWVudS5tb2RlbCc7XG5pbXBvcnQgeyBCdXR0b25Db2xvciwgQnV0dG9uU2l6ZSB9IGZyb20gJy4uL2J1dHRvbi9idXR0b24ubW9kZWwnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25UaGVtZSB9IGZyb20gJy4uLy4uL21vZGVscy9hcHBsaWNhdGlvbi10aGVtZS5tb2RlbCc7XG5pbXBvcnQgeyBNYXRNZW51LCBNYXRNZW51VHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgRm9jdXNNb25pdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuXG5jb25zdCBERUZBVUxUX01FTlVfQ09ORklHOiBNZW51Q29uZmlnID0ge1xuICBvdmVybGFwVHJpZ2dlcjogZmFsc2UsXG4gIHBhbmVsQ2xhc3M6ICcnLFxuICB4UG9zaXRpb246ICdhZnRlcicsXG4gIHlQb3NpdGlvbjogJ2JlbG93Jyxcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3VpLW92ZXJmbG93LW1lbnUnLFxuICB0ZW1wbGF0ZVVybDogJy4vb3ZlcmZsb3ctbWVudS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL292ZXJmbG93LW1lbnUuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE92ZXJmbG93TWVudUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcbiAgLyoqXG4gICAqIE1lbnUgYnV0dG9uc1xuICAgKlxuICAgKiBAdHlwZSB7T3ZlcmZsb3dNZW51QnV0dG9uc1R5cGVbXX1cbiAgICogQG1lbWJlcm9mIE92ZXJmbG93TWVudUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgYnV0dG9uczogT3ZlcmZsb3dNZW51QnV0dG9uc1R5cGVbXTtcblxuICAvKipcbiAgICogTWVudSBpY29uIHRyaWdnZXJcbiAgICpcbiAgICogQG1lbWJlcm9mIE92ZXJmbG93TWVudUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgaWNvblRyaWdnZXI6IEljb25OYW1lID0gJ01lbnUtZWxsaXBzaXMnO1xuXG4gIC8qKlxuICAgKiBMYWJlbCBtZW51XG4gICAqXG4gICAqIEBtZW1iZXJvZiBPdmVyZmxvd01lbnVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIG1lbnVMYWJlbCA9ICcnO1xuXG4gIC8qKlxuICAgKlxuICAgKiBEZWZpbmVzIHRoZSBhcHBsaWNhdGlvbiB0aGVtZVxuICAgKlxuICAgKiBAdHlwZSB7QXBwbGljYXRpb25UaGVtZX1cbiAgICogQG1lbWJlcm9mIE92ZXJmbG93TWVudUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgYXBwbGljYXRpb25UaGVtZTogQXBwbGljYXRpb25UaGVtZSA9ICdsaWdodCc7XG5cbiAgLyoqXG4gICAqIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgQVJJQSBsYWJlbCBmb3IgYWNjZXNzaWJpbGl0eS5cbiAgICogVGhpcyBsYWJlbCBpcyB1c2VkIHRvIHByb3ZpZGUgYW4gYWNjZXNzaWJsZSBuYW1lIGZvciB0aGUgaW5wdXQgZWxlbWVudC5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlcm9mIE92ZXJmbG93TWVudUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgYXJpYUxhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgQVJJQSByZXF1aXJlbWVudCBmb3IgYWNjZXNzaWJpbGl0eS5cbiAgICogVGhpcyBhdHRyaWJ1dGUgaXMgdXNlZCB0byBpbmRpY2F0ZSB3aGV0aGVyIGFuIGlucHV0IGZpZWxkIGlzIHJlcXVpcmVkIGZvciBmb3JtIHN1Ym1pc3Npb24uXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgT3ZlcmZsb3dNZW51Q29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBhcmlhUmVxdWlyZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBBUklBIHJlcXVpcmVtZW50IGZvciBhY2Nlc3NpYmlsaXR5LlxuICAgKiBUaGlzIGF0dHJpYnV0ZSBpcyB1c2VkIHRvIGluZGljYXRlIHdoZXRoZXIgYW4gaW5wdXQgZm9yIGRlc2NyaXB0aW9uLlxuICAgKiBAdHlwZSB7dGV4dH1cbiAgICogQG1lbWJlcm9mIE92ZXJmbG93TWVudUNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgZGVzY3JpYmVkYnkgPSAnJztcblxuICAvKipcbiAgICogQ3VzdG9tIHRlbXBsYXRlIGZvciB0aGUgYnV0dG9uIChvcHRpb25hbClcbiAgICpcbiAgICogQHR5cGUge1RlbXBsYXRlUmVmPGFueT59XG4gICAqIEBtZW1iZXJvZiBPdmVyZmxvd01lbnVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGNvbnRlbnRUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvKipcbiAgICogQnV0dG9uIHZhcmlhbnQgZm9yIHRoZSBvdmVyZmxvdyBtZW51IHRyaWdnZXJcbiAgICogV2hlbiBudWxsLCB1c2VzIHRoZSBkZWZhdWx0IGljb24gcmVuZGVyaW5nXG4gICAqXG4gICAqIEB0eXBlIHtCdXR0b25Db2xvciB8IG51bGx9XG4gICAqIEBtZW1iZXJvZiBPdmVyZmxvd01lbnVDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGJ1dHRvblZhcmlhbnQ6IEJ1dHRvbkNvbG9yIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIEJ1dHRvbiBzaXplIGZvciB0aGUgb3ZlcmZsb3cgbWVudSB0cmlnZ2VyXG4gICAqXG4gICAqIEB0eXBlIHtCdXR0b25TaXplfVxuICAgKiBAbWVtYmVyb2YgT3ZlcmZsb3dNZW51Q29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBidXR0b25TaXplOiBCdXR0b25TaXplID0gJ21lZGl1bSc7XG5cbiAgQElucHV0KCkgbWVudUNvbmZpZzogTWVudUNvbmZpZyA9IERFRkFVTFRfTUVOVV9DT05GSUc7XG5cbiAgQElucHV0KCkgaXNEeW5hbWljTWVudSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHdpdGhSZW1vdmFibGVPcHRpb24gPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgc2VsZWN0SXRlbTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBAT3V0cHV0KCkgbWVudU9wZW5lZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBAT3V0cHV0KCkgbWVudUNsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBAVmlld0NoaWxkcmVuKE1hdE1lbnUpIG1hdG1lbnVzOiBRdWVyeUxpc3Q8TWF0TWVudT47XG4gIEBWaWV3Q2hpbGRyZW4oTWF0TWVudVRyaWdnZXIpIG1hdFRyaWdnZXI6IFF1ZXJ5TGlzdDxNYXRNZW51VHJpZ2dlcj47XG4gIEBWaWV3Q2hpbGQoJ2J1dHRvbkVsZW1lbnQnKSBidXR0b25FbGVtZW50OiBhbnk7XG5cbiAgbWVudUl0ZW1zOiBzdHJpbmdbXSA9IFtdO1xuICBzdWJtZW51czogQXJyYXk8T3ZlcmZsb3dNZW51QnV0dG9uTW9kaWZ5W10+ID0gW107XG5cbiAgaXNNZW51UmVuZGVyZWQgPSBzaWduYWwoZmFsc2UpO1xuICBpc01lbnVPcGVuZWQgPSBzaWduYWwoZmFsc2UpO1xuICBpc0ZvY3VzZWQgPSBzaWduYWwoZmFsc2UpO1xuXG4gIGdldCBtZW51SXRlbUhhc0hvdmVyZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3VibWVudXMuc29tZShtZW51ID0+IG1lbnUuc29tZShpdGVtID0+IGl0ZW0uaXNIb3ZlcmVkKSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KCdDQU5PUFlVSV9ERUZBVUxUX0FQUExJQ0FUSU9OX1RIRU1FJykgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0QXBwVGhlbWU6IEFwcGxpY2F0aW9uVGhlbWUsXG4gICAgcHJpdmF0ZSBmb2N1c01vbml0b3I6IEZvY3VzTW9uaXRvcixcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lXG4gICkge1xuICAgIGlmIChkZWZhdWx0QXBwVGhlbWUpIHtcbiAgICAgIHRoaXMuYXBwbGljYXRpb25UaGVtZSA9IGRlZmF1bHRBcHBUaGVtZTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmNyZWF0ZVN1Ym1lbnVzKHRoaXMuYnV0dG9ucywgJ3MwJywgMSk7XG4gICAgdGhpcy5yZWluZGV4KCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ2J1dHRvbnMnXSAmJiB0aGlzLmlzRHluYW1pY01lbnUpIHtcbiAgICAgIHRoaXMucmVzZXRTdWJtZW51cygpO1xuICAgICAgdGhpcy5jcmVhdGVTdWJtZW51cyh0aGlzLmJ1dHRvbnMsICdzMCcsIDEpO1xuICAgICAgdGhpcy5yZWluZGV4KCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuaXNNZW51UmVuZGVyZWQuc2V0KHRydWUpO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmZvY3VzTW9uaXRvci5tb25pdG9yKHRoaXMuYnV0dG9uRWxlbWVudCkuc3Vic2NyaWJlKG9yaWdpbiA9PlxuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIGlmIChvcmlnaW4gPT09ICdrZXlib2FyZCcpIHtcbiAgICAgICAgICAgIHRoaXMuaXNGb2N1c2VkLnNldCh0cnVlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzTWVudU9wZW5lZCgpKSB7XG4gICAgICAgICAgICAgIHRoaXMuaXNGb2N1c2VkLnNldChmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9LCAzMDApO1xuICB9XG5cbiAgb25TZWxlY3RJdGVtKGV2ZW50OiBFdmVudCwgdmFsdWU6IHN0cmluZykge1xuICAgIGlmICghIXZhbHVlKSB7XG4gICAgICB0aGlzLnNlbGVjdEl0ZW0uZW1pdCh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgb25NZW51T3BlbmVkKCk6IHZvaWQge1xuICAgIHRoaXMubWVudU9wZW5lZC5lbWl0KCk7XG4gICAgdGhpcy5pc01lbnVPcGVuZWQuc2V0KHRydWUpO1xuXG4gICAgaWYgKHRoaXMuaXNGb2N1c2VkKCkpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLm1hdG1lbnVzLmZpcnN0Ll9hbGxJdGVtcy5maXJzdC5mb2N1cygna2V5Ym9hcmQnKTtcbiAgICAgIH0sIDMwMCk7XG4gICAgfVxuICB9XG5cbiAgb25NZW51Q2xvc2VkKCk6IHZvaWQge1xuICAgIHRoaXMuaXNNZW51T3BlbmVkLnNldChmYWxzZSk7XG4gICAgdGhpcy5tZW51Q2xvc2VkLmVtaXQoKTtcbiAgfVxuXG4gIG9uQnV0dG9uRm9jdXMoYnV0dG9uOiBPdmVyZmxvd01lbnVCdXR0b25Nb2RpZnkpIHtcbiAgICBpZiAodGhpcy5pc0ZvY3VzZWQoKSkge1xuICAgICAgYnV0dG9uLmlzRm9jdXNlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgb25CdXR0b25CbHVyKGJ1dHRvbjogT3ZlcmZsb3dNZW51QnV0dG9uTW9kaWZ5KSB7XG4gICAgYnV0dG9uLmlzRm9jdXNlZCA9IGZhbHNlO1xuICB9XG5cbiAgb25CdXR0b25DbGljayhidXR0b246IE92ZXJmbG93TWVudUJ1dHRvbk1vZGlmeSwgJGV2ZW50OiBFdmVudCkge1xuICAgIGlmIChidXR0b24uZGlzYWJsZWQpIHtcbiAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9uU2VsZWN0SXRlbSgkZXZlbnQsIGJ1dHRvbi52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgb25TdWJtZW51T3BlbmVkKCk6IHZvaWQge1xuICAgIHRoaXMuaXNNZW51T3BlbmVkLnNldCghdGhpcy5pc01lbnVPcGVuZWQpO1xuICAgIGlmICh0aGlzLmlzRm9jdXNlZCgpKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5tYXRtZW51cy5sYXN0Ll9hbGxJdGVtcy5maXJzdC5mb2N1cygna2V5Ym9hcmQnKTtcbiAgICAgIH0sIDMwMCk7XG4gICAgfVxuICB9XG5cbiAgdHJhY2tCeUJ1dHRvbiA9IChfOiBudW1iZXIsIGJ0bjogT3ZlcmZsb3dNZW51QnV0dG9uTW9kaWZ5KSA9PiBidG4uYWN0aW9uID8/IGJ0bi52YWx1ZSA/PyBidG4ubGFiZWw7XG5cbiAgb25CdXR0b25Ib3ZlcihidXR0b246IE92ZXJmbG93TWVudUJ1dHRvbk1vZGlmeSwgc3RhdGU6IGJvb2xlYW4pIHtcbiAgICBidXR0b24uaXNIb3ZlcmVkID0gc3RhdGU7XG4gIH1cblxuICBnZXRNZW51KGluZGV4OiBhbnkpIHtcbiAgICByZXR1cm4gaW5kZXggPj0gMCAmJiB0aGlzLm1hdG1lbnVzID8gKHRoaXMubWF0bWVudXMuZmluZCgoeCwgaSkgPT4gaSA9PT0gaW5kZXgpID8/IG51bGwpIDogbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgcmVpbmRleCgpIHtcbiAgICB0aGlzLnN1Ym1lbnVzLmZvckVhY2goKG1lbnU6IE92ZXJmbG93TWVudUJ1dHRvbnNUeXBlW10pID0+IHtcbiAgICAgIG1lbnUuZm9yRWFjaCgoaXRlbTogT3ZlcmZsb3dNZW51QnV0dG9uc1R5cGUpID0+IHtcbiAgICAgICAgaWYgKGl0ZW0uc3ViTWVudSAhPT0gLTEpIHtcbiAgICAgICAgICBpdGVtLnN1Yk1lbnUgPSB0aGlzLm1lbnVJdGVtcy5pbmRleE9mKGAke2l0ZW0uYWN0aW9ufWApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRTdWJtZW51cygpIHtcbiAgICB0aGlzLnN1Ym1lbnVzID0gW107XG4gICAgdGhpcy5tZW51SXRlbXMgPSBbXTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlU3VibWVudXMobWVudTogT3ZlcmZsb3dNZW51QnV0dG9uc1R5cGVbXSwgcHJlZml4OiBzdHJpbmcsIGNvdW50OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLm1lbnVJdGVtcy5wdXNoKHByZWZpeCk7XG4gICAgdGhpcy5zdWJtZW51cy5wdXNoKFxuICAgICAgbWVudS5tYXAoKGl0ZW06IE92ZXJmbG93TWVudUJ1dHRvbnNUeXBlLCBpbmRleDogbnVtYmVyKSA9PiAoe1xuICAgICAgICBsYWJlbDogaXRlbS5sYWJlbCxcbiAgICAgICAgaWNvbjogaXRlbS5pY29uLFxuICAgICAgICBpc0Rlc3RydWN0aXZlOiBpdGVtLmlzRGVzdHJ1Y3RpdmUsXG4gICAgICAgIHRvb2x0aXBUZXh0OiBpdGVtLnRvb2x0aXBUZXh0LFxuICAgICAgICB2YWx1ZTogaXRlbS52YWx1ZSxcbiAgICAgICAgZGlzYWJsZWQ6IGl0ZW0uZGlzYWJsZWQsXG4gICAgICAgIGJ0blRlbXBsYXRlOiBpdGVtLmJ0blRlbXBsYXRlLFxuICAgICAgICBzdWJNZW51OiBpdGVtLnN1Yk1lbnUgPyAwIDogLTEsXG4gICAgICAgIGFjdGlvbjogaXRlbS5hY3Rpb24gPyBpdGVtLmFjdGlvbiA6IHByZWZpeCArIGluZGV4LFxuICAgICAgICBpc1RpdGxlQnV0dG9uOiBpdGVtLmlzVGl0bGVCdXR0b24sXG4gICAgICAgIGhpZGVUaXRsZUJ1dHRvbjogaXRlbS5oaWRlVGl0bGVCdXR0b24sXG4gICAgICB9KSlcbiAgICApO1xuXG4gICAgbWVudS5mb3JFYWNoKChpdGVtOiBPdmVyZmxvd01lbnVCdXR0b25zVHlwZSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgaWYgKGl0ZW0uc3ViTWVudSkge1xuICAgICAgICB0aGlzLmNyZWF0ZVN1Ym1lbnVzKChpdGVtIGFzIHsgc3ViTWVudTogT3ZlcmZsb3dNZW51QnV0dG9uc1R5cGVbXSB9KS5zdWJNZW51LCBwcmVmaXggKyBpbmRleCwgY291bnQgKyAxKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm92ZXJmbG93LW1lbnUtY29udGFpbmVyXCIgW2F0dHIudGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiPlxuICA8YnV0dG9uXG4gICAgI2J1dHRvbkVsZW1lbnRcbiAgICBtYXQtYnV0dG9uXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ2ljb24tYnV0dG9uJzogIWNvbnRlbnRUZW1wbGF0ZVJlZiAmJiAhYnV0dG9uVmFyaWFudCxcbiAgICAgICdjb250ZW50LXRlbXBsYXRlJzogY29udGVudFRlbXBsYXRlUmVmLFxuICAgICAgJ25vLWhvdmVyJzogYnV0dG9uVmFyaWFudCxcbiAgICB9XCJcbiAgICAqbmdJZj1cImlzTWVudVJlbmRlcmVkKClcIlxuICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJtYXRtZW51cy5maXJzdFwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwiYXJpYVJlcXVpcmVkXCJcbiAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cIidkZXNjcmliZWRieSdcIlxuICAgIFthdHRyLmFyaWEtaGFzcG9wdXBdPVwidHJ1ZVwiXG4gICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJpc01lbnVPcGVuZWQoKVwiXG4gICAgZGlzYWJsZVJpcHBsZVxuICAgIChtZW51T3BlbmVkKT1cIm9uTWVudU9wZW5lZCgpXCJcbiAgICAobWVudUNsb3NlZCk9XCJvbk1lbnVDbG9zZWQoKVwiXG4gICAgY2xhc3M9XCJvdmVyZmxvdy1tZW51LW9wZW5lclwiXG4gICAgW21hdFRvb2x0aXBdPVwibWVudUxhYmVsXCJcbiAgPlxuICAgIDxzcGFuIFtpZF09XCInZGVzY3JpYmVkYnknXCIgW3N0eWxlLmRpc3BsYXldPVwiJ25vbmUnXCI+e3sgZGVzY3JpYmVkYnkgfX08L3NwYW4+XG4gICAgQGlmIChidXR0b25WYXJpYW50KSB7XG4gICAgICA8dWktYnV0dG9uXG4gICAgICAgIFt2YXJpYW50XT1cImJ1dHRvblZhcmlhbnRcIlxuICAgICAgICBbanVzdEljb25dPVwidHJ1ZVwiXG4gICAgICAgIFtpY29uTmFtZV09XCJpY29uVHJpZ2dlclwiXG4gICAgICAgIFthcHBsaWNhdGlvblRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZmFsc2VcIlxuICAgICAgICBbc2l6ZV09XCJidXR0b25TaXplXCJcbiAgICAgID5cbiAgICAgIDwvdWktYnV0dG9uPlxuICAgIH0gQGVsc2UgaWYgKGNvbnRlbnRUZW1wbGF0ZVJlZikge1xuICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250ZW50VGVtcGxhdGVSZWZcIj48L25nLWNvbnRhaW5lcj5cbiAgICB9IEBlbHNlIHtcbiAgICAgIDx1aS1pY29uXG4gICAgICAgIFtuYW1lXT1cImljb25UcmlnZ2VyXCJcbiAgICAgICAgW2FwcGxpY2F0aW9uVGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiXG4gICAgICAgIFtzaXplXT1cIicyNCdcIlxuICAgICAgICBbY29sb3JdPVwiJ3JlYnJhbmQtYmxhY2snXCJcbiAgICAgID48L3VpLWljb24+XG4gICAgfVxuICA8L2J1dHRvbj5cblxuICBAZm9yIChtZW51IG9mIHN1Ym1lbnVzOyB0cmFjayBzdWJtZW51c1skaW5kZXhdKSB7XG4gICAgPG1hdC1tZW51XG4gICAgICBbeFBvc2l0aW9uXT1cIm1lbnVDb25maWcueFBvc2l0aW9uXCJcbiAgICAgIFt5UG9zaXRpb25dPVwibWVudUNvbmZpZy55UG9zaXRpb25cIlxuICAgICAgI21hdE1lbnVcbiAgICAgIFtjbGFzc109XCInb3ZlcmZsb3ctbWVudSAnICsgbWVudUNvbmZpZy5wYW5lbENsYXNzXCJcbiAgICAgIFtvdmVybGFwVHJpZ2dlcl09XCJtZW51Q29uZmlnLm92ZXJsYXBUcmlnZ2VyXCJcbiAgICAgIGJhY2tkcm9wQ2xhc3M9XCJvdmVyZmxvdy1tZW51LWJhY2tkcm9wXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBidXR0b24gb2YgbWVudTsgaW5kZXggYXMgaWQ7IHRyYWNrQnk6IHRyYWNrQnlCdXR0b25cIj5cbiAgICAgICAgQGlmIChidXR0b24uYnRuVGVtcGxhdGUpIHtcbiAgICAgICAgICA8IS0tIE1lbnUgb3B0aW9uIGJ5IHByb3ZpZGVkIGJ1dHRvbiB0ZW1wbGF0ZS0tPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImJ1dHRvbi5idG5UZW1wbGF0ZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGJ1dHRvbiB9XCJcbiAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIH0gQGVsc2UgaWYgKHdpdGhSZW1vdmFibGVPcHRpb24pIHtcbiAgICAgICAgICA8IS0tICBTaW1wbGUgbWVudSBvcHRpb24gdGhhdCBjYW4gYmUgcmVtb3ZlZCBkeW5hbWljYWxseSAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVudS1vcHRpb25cIiBbbmdDbGFzc109XCJ7ICdpcy1kZXN0cnVjdGl2ZSc6IGJ1dHRvbi5pc0Rlc3RydWN0aXZlLCBkaXNhYmxlZDogYnV0dG9uLmRpc2FibGVkIH1cIj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIFtpZF09XCInbGFiZWxsZWRieS0nICsgYnV0dG9uLmxhYmVsICsgaWRcIlxuICAgICAgICAgICAgICBjbGFzcz1cImxhYmVsXCJcbiAgICAgICAgICAgICAgdWlFbGxpcHNlVGV4dFxuICAgICAgICAgICAgICBbcmVmcmVzaF09XCJpc01lbnVPcGVuZWQoKVwiXG4gICAgICAgICAgICAgIFttYXhEaWZmUGl4ZWxzXT1cIjFcIlxuICAgICAgICAgICAgICBbaXNNdWx0aWxpbmVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIChvbkNoYW5nZVRleHRTdGF0ZSk9XCJidXR0b24uaXNUZXh0RWxsaXBzZWQgPSAkZXZlbnRcIlxuICAgICAgICAgICAgICA+e3sgYnV0dG9uLmxhYmVsIH19XG4gICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgIEBpZiAoYnV0dG9uLmljb24pIHtcbiAgICAgICAgICAgICAgPHVpLWJ1dHRvblxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJpY29uLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgW2FwcGxpY2F0aW9uVGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiXG4gICAgICAgICAgICAgICAgW2ljb25OYW1lXT1cImJ1dHRvbi5pY29uXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcF09XCJidXR0b24udG9vbHRpcFRleHQgPyBidXR0b24udG9vbHRpcFRleHQgOiBidXR0b24uaXNUZXh0RWxsaXBzZWQgPyBidXR0b24ubGFiZWwgOiAnJ1wiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCInYWJvdmUnXCJcbiAgICAgICAgICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXG4gICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uQnV0dG9uRm9jdXMoYnV0dG9uKVwiXG4gICAgICAgICAgICAgICAgKGJsdXIpPVwib25CdXR0b25CbHVyKGJ1dHRvbilcIlxuICAgICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cIm9uQnV0dG9uSG92ZXIoYnV0dG9uLCB0cnVlKVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwib25CdXR0b25Ib3ZlcihidXR0b24sIGZhbHNlKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0SXRlbSgkZXZlbnQsIGJ1dHRvbi52YWx1ZSlcIj5cbiAgICAgICAgICAgICAgPC91aS1idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDwhLS0gIERlZmF1bHQgbm9uLXJlbW92YWJsZSBtZW51IG9wdGlvbiAtLT5cbiAgICAgICAgICBAaWYgKGJ1dHRvbi5pc1RpdGxlQnV0dG9uICYmICFidXR0b24uaGlkZVRpdGxlQnV0dG9uKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVudS10aXRsZVwiPnt7IGJ1dHRvbi5sYWJlbCB9fTwvZGl2PlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAoIWJ1dHRvbi5pc1RpdGxlQnV0dG9uKSB7XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cImdldE1lbnUoYnV0dG9uLnN1Yk1lbnUpXCJcbiAgICAgICAgICAgICAgKG1lbnVPcGVuZWQpPVwib25TdWJtZW51T3BlbmVkKClcIlxuICAgICAgICAgICAgICAoZm9jdXMpPVwib25CdXR0b25Gb2N1cyhidXR0b24pXCJcbiAgICAgICAgICAgICAgKGJsdXIpPVwib25CdXR0b25CbHVyKGJ1dHRvbilcIlxuICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJvbkJ1dHRvbkhvdmVyKGJ1dHRvbiwgdHJ1ZSlcIlxuICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJvbkJ1dHRvbkhvdmVyKGJ1dHRvbiwgZmFsc2UpXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtZGVzdHJ1Y3RpdmUnOiBidXR0b24uaXNEZXN0cnVjdGl2ZSwgZGlzYWJsZWQ6IGJ1dHRvbi5kaXNhYmxlZCB9XCJcbiAgICAgICAgICAgICAgZGlzYWJsZVJpcHBsZVxuICAgICAgICAgICAgICAoY2xpY2spPVwib25CdXR0b25DbGljayhidXR0b24sICRldmVudClcIlxuICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJidXR0b24udG9vbHRpcFRleHQgPyBidXR0b24udG9vbHRpcFRleHQgOiBidXR0b24uaXNUZXh0RWxsaXBzZWQgPyBidXR0b24ubGFiZWwgOiAnJ1wiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInbGFiZWxsZWRieS0nICsgYnV0dG9uLmxhYmVsICsgaWRcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cIidkZXNjcmliZWRieS0nICsgYnV0dG9uLmxhYmVsICsgaWRcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImJ1dHRvbi5hcmlhTGFiZWwgfHwgbnVsbFwiXG4gICAgICAgICAgICAgIHJvbGU9XCJtZW51aXRlbVwiXG4gICAgICAgICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4gW2lkXT1cIidkZXNjcmliZWRieS0nICsgYnV0dG9uLmxhYmVsICsgaWRcIiBbc3R5bGUuZGlzcGxheV09XCInbm9uZSdcIj5cbiAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgYnV0dG9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgID8gKCdNRU5VLk1FTlVJVEVNX0RJU0FCTEVEJyB8IHVpVHJhbnNsYXRlIHwgYXN5bmMpICsgJyAnICsgKGJ1dHRvbi5kZXNjcmliZWRieSB8fCAnJylcbiAgICAgICAgICAgICAgICAgICAgOiBidXR0b24uZGVzY3JpYmVkYnlcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIEBpZiAoYnV0dG9uLmljb24pIHtcbiAgICAgICAgICAgICAgICA8dWktaWNvblxuICAgICAgICAgICAgICAgICAgW25hbWVdPVwiYnV0dG9uLmljb25cIlxuICAgICAgICAgICAgICAgICAgW3RvZ2dsZUljb25TdHlsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIFtmaWxsZWRdPVwiXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbi5kaXNhYmxlZCA/IGZhbHNlIDogYnV0dG9uLmlzSG92ZXJlZCA/IHRydWUgOiBtZW51SXRlbUhhc0hvdmVyZWQgPyBmYWxzZSA6ICEhYnV0dG9uLmlzRm9jdXNlZFxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIFthcHBsaWNhdGlvblRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIlxuICAgICAgICAgICAgICAgICAgW3NpemVdPVwiJzI0J1wiXG4gICAgICAgICAgICAgICAgICBbY29sb3JdPVwiYnV0dG9uLmlzRGVzdHJ1Y3RpdmUgPyAncmVkJyA6IGJ1dHRvbi5kaXNhYmxlZCA/ICdkYXJrJyA6ICdyZWJyYW5kLWJsYWNrJ1wiXG4gICAgICAgICAgICAgICAgPjwvdWktaWNvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIFtpZF09XCInbGFiZWxsZWRieS0nICsgYnV0dG9uLmxhYmVsICsgaWRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgIHVpRWxsaXBzZVRleHRcbiAgICAgICAgICAgICAgICBbcmVmcmVzaF09XCJpc01lbnVPcGVuZWQoKVwiXG4gICAgICAgICAgICAgICAgW21heERpZmZQaXhlbHNdPVwiMVwiXG4gICAgICAgICAgICAgICAgW2lzTXVsdGlsaW5lXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIChvbkNoYW5nZVRleHRTdGF0ZSk9XCJidXR0b24uaXNUZXh0RWxsaXBzZWQgPSAkZXZlbnRcIlxuICAgICAgICAgICAgICAgID57eyBidXR0b24ubGFiZWwgfX08L3NwYW5cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21lbnUtY29udGVudF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9tYXQtbWVudT5cbiAgfVxuPC9kaXY+XG4iXX0=
@@ -1,25 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { NgModule } from '@angular/core';
3
- import { MatMenuModule } from '@angular/material/menu';
4
- import { ButtonComponentModule } from '../button/button.component.module';
5
- import { IconComponentModule } from '../icon/icon.component.module';
6
- import { OverflowMenuComponent } from './overflow-menu.component';
7
- import { MatButtonModule } from "@angular/material/button";
8
- import { MatTooltipModule } from "@angular/material/tooltip";
9
- import { EllipseTextDirective } from "../../directives/ellipse-text.directive";
10
- import { UiTranslatePipe } from "../../pipes/ui-translate.pipe";
11
- import * as i0 from "@angular/core";
12
- export class OverflowMenuComponentModule {
13
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OverflowMenuComponentModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
14
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: OverflowMenuComponentModule, declarations: [OverflowMenuComponent], imports: [CommonModule, ButtonComponentModule, IconComponentModule, MatMenuModule, MatButtonModule, MatTooltipModule, EllipseTextDirective, UiTranslatePipe], exports: [OverflowMenuComponent] }); }
15
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OverflowMenuComponentModule, imports: [CommonModule, ButtonComponentModule, IconComponentModule, MatMenuModule, MatButtonModule, MatTooltipModule] }); }
16
- }
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OverflowMenuComponentModule, decorators: [{
18
- type: NgModule,
19
- args: [{
20
- declarations: [OverflowMenuComponent],
21
- imports: [CommonModule, ButtonComponentModule, IconComponentModule, MatMenuModule, MatButtonModule, MatTooltipModule, EllipseTextDirective, UiTranslatePipe],
22
- exports: [OverflowMenuComponent],
23
- }]
24
- }] });
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmZsb3ctbWVudS5jb21wb25lbnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGdvLWNhbm9weS11aS9jb21wb25lbnRzL292ZXJmbG93LW1lbnUvb3ZlcmZsb3ctbWVudS5jb21wb25lbnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQU9oRSxNQUFNLE9BQU8sMkJBQTJCOytHQUEzQiwyQkFBMkI7Z0hBQTNCLDJCQUEyQixpQkFKdkIscUJBQXFCLGFBQzFCLFlBQVksRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixFQUFFLGVBQWUsYUFDakoscUJBQXFCO2dIQUVwQiwyQkFBMkIsWUFINUIsWUFBWSxFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCOzs0RkFHekcsMkJBQTJCO2tCQUx2QyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLHFCQUFxQixDQUFDO29CQUNyQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUscUJBQXFCLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxvQkFBb0IsRUFBRSxlQUFlLENBQUM7b0JBQzVKLE9BQU8sRUFBRSxDQUFDLHFCQUFxQixDQUFDO2lCQUNqQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQubW9kdWxlJztcbmltcG9ydCB7IEljb25Db21wb25lbnRNb2R1bGUgfSBmcm9tICcuLi9pY29uL2ljb24uY29tcG9uZW50Lm1vZHVsZSc7XG5pbXBvcnQgeyBPdmVyZmxvd01lbnVDb21wb25lbnQgfSBmcm9tICcuL292ZXJmbG93LW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9idXR0b25cIjtcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcFwiO1xuaW1wb3J0IHsgRWxsaXBzZVRleHREaXJlY3RpdmUgfSBmcm9tIFwiLi4vLi4vZGlyZWN0aXZlcy9lbGxpcHNlLXRleHQuZGlyZWN0aXZlXCI7XG5pbXBvcnQgeyBVaVRyYW5zbGF0ZVBpcGUgfSBmcm9tIFwiLi4vLi4vcGlwZXMvdWktdHJhbnNsYXRlLnBpcGVcIjtcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbT3ZlcmZsb3dNZW51Q29tcG9uZW50XSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQnV0dG9uQ29tcG9uZW50TW9kdWxlLCBJY29uQ29tcG9uZW50TW9kdWxlLCBNYXRNZW51TW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIE1hdFRvb2x0aXBNb2R1bGUsIEVsbGlwc2VUZXh0RGlyZWN0aXZlLCBVaVRyYW5zbGF0ZVBpcGVdLFxuICBleHBvcnRzOiBbT3ZlcmZsb3dNZW51Q29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgT3ZlcmZsb3dNZW51Q29tcG9uZW50TW9kdWxlIHt9XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmZsb3ctbWVudS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9vdmVyZmxvdy1tZW51L292ZXJmbG93LW1lbnUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEljb25OYW1lIH0gZnJvbSAnLi4vaWNvbi9pY29uLm1vZGVsJztcbmltcG9ydCB7IFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNZW51UG9zaXRpb25YLCBNZW51UG9zaXRpb25ZIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5cbmV4cG9ydCB0eXBlIE92ZXJmbG93TWVudUJ1dHRvbnNUeXBlID0ge1xuICBpY29uPzogSWNvbk5hbWU7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGlzRGVzdHJ1Y3RpdmU/OiBib29sZWFuO1xuICB2YWx1ZTogc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGJ0blRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcbiAgc3ViTWVudT86IE92ZXJmbG93TWVudUJ1dHRvbnNUeXBlW10gfCBudW1iZXI7XG4gIGFjdGlvbj86IG51bWJlciB8IHN0cmluZztcbiAgZGVzY3JpYmVkYnk/OiBzdHJpbmc7XG4gIGFyaWFMYWJlbD86IHN0cmluZztcbiAgdG9vbHRpcFRleHQ/OiBzdHJpbmc7XG4gIGlzVGl0bGVCdXR0b24/OiBib29sZWFuO1xuICBoaWRlVGl0bGVCdXR0b24/OiBib29sZWFuO1xufTtcblxudHlwZSBCdXR0b25PcHRpb25zID0ge1xuICBpc1RleHRFbGxpcHNlZD86IGJvb2xlYW47XG4gIGlzRm9jdXNlZD86IGJvb2xlYW47XG4gIGlzSG92ZXJlZD86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBNZW51Q29uZmlnID0ge1xuICB4UG9zaXRpb246IE1lbnVQb3NpdGlvblg7XG4gIHlQb3NpdGlvbjogTWVudVBvc2l0aW9uWTtcbiAgb3ZlcmxhcFRyaWdnZXI6IGJvb2xlYW47XG4gIHBhbmVsQ2xhc3M6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE92ZXJmbG93TWVudUJ1dHRvbk1vZGlmeSA9IE92ZXJmbG93TWVudUJ1dHRvbnNUeXBlICYgQnV0dG9uT3B0aW9ucztcbiJdfQ==
@@ -1,71 +0,0 @@
1
- import { booleanAttribute, Component, EventEmitter, HostBinding, Inject, Input, Optional, Output } from '@angular/core';
2
- import { IS_MOBILE_TOKEN } from '../../providers/is-mobile';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- import * as i2 from "../button/button.component";
6
- import * as i3 from "../../pipes/ui-translate.pipe";
7
- import * as i4 from "rxjs";
8
- export class PageHeaderComponent {
9
- constructor(defaultAppTheme, isMobile$) {
10
- this.defaultAppTheme = defaultAppTheme;
11
- this.isMobile$ = isMobile$;
12
- /**
13
- * Flag to determine whether the "Back" button should be displayed.
14
- * @default true
15
- * @memberof PageHeaderComponent
16
- */
17
- this.showBackButton = true;
18
- /**
19
- * Back button tooltip for mobile variation
20
- * @property tooltip
21
- * @memberof PageHeaderComponent
22
- */
23
- this.tooltip = 'COMMON.BACK';
24
- /**
25
- *
26
- * Defines the application theme
27
- *
28
- * @type {ApplicationTheme}
29
- * @memberof PageHeaderComponent
30
- */
31
- this.applicationTheme = 'light';
32
- /**
33
- * Event triggered when the "Back" button is clicked.
34
- * @memberof PageHeaderComponent
35
- */
36
- this.back = new EventEmitter();
37
- if (defaultAppTheme) {
38
- this.applicationTheme = defaultAppTheme;
39
- }
40
- }
41
- onBack() {
42
- this.back.emit();
43
- }
44
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageHeaderComponent, deps: [{ token: 'CANOPYUI_DEFAULT_APPLICATION_THEME', optional: true }, { token: IS_MOBILE_TOKEN }], target: i0.ɵɵFactoryTarget.Component }); }
45
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: PageHeaderComponent, selector: "ui-page-header", inputs: { showBackButton: ["showBackButton", "showBackButton", booleanAttribute], tooltip: "tooltip", applicationTheme: "applicationTheme" }, outputs: { back: "back" }, host: { properties: { "attr.theme": "this.applicationTheme" } }, ngImport: i0, template: "<ng-container>\n <div class=\"page-header-container\">\n <div class=\"page-header-content\">\n @if (!(isMobile$ | async)) {\n @if (showBackButton) {\n <ui-button\n [applicationTheme]=\"applicationTheme\"\n [tooltip]=\"(('COMMON.BACK') | uiTranslate | async)!\"\n (click)=\"onBack()\"\n [ariaLabel]=\"(('COMMON.BACK') | uiTranslate | async)!\"\n [variant]=\"'ghost'\"\n [justIcon]=\"true\"\n [iconName]=\"applicationTheme === 'classic' ? 'Arrow_left' : 'Arrow-chevron-left-in-line'\"\n ></ui-button>\n }\n }\n @else {\n <ui-button\n [applicationTheme]=\"applicationTheme\" class=\"mobile-back-btn\" [tooltip]=\"(('COMMON.BACK') | uiTranslate | async)!\"\n [variant]=\"'icon-button'\"\n [ariaLabel]=\"(('COMMON.BACK') | uiTranslate | async)!\"\n (click)=\"onBack()\"\n [justIcon]=\"true\"\n [iconName]=\"applicationTheme === 'classic' ? 'Arrow_left' : 'Arrow-chevron-left-in-line'\"\n ></ui-button>\n }\n\n <div class=\"main-content\" [ngClass]=\"{ 'remove-margin': !showBackButton }\">\n <ng-content select=\"[content]\"></ng-content>\n </div>\n\n <div class=\"right-side\">\n <ng-content select=\"[right-side]\"></ng-content>\n </div>\n </div>\n </div>\n\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}.page-header-container{border-bottom:1px solid #E0E0E0;background-color:#fff;padding-left:20px;padding-right:calc(20px - (100vw - 100%))}@media (min-width: 960px){.page-header-container{padding-left:40px;padding-right:calc(40px - (100vw - 100%))}}@media (min-width: 1280px){.page-header-container{padding-left:64px;padding-right:calc(64px - (100vw - 100%))}}.page-header-container .page-header-content{display:flex;flex-direction:row;align-items:center;padding-top:16px;padding-bottom:16px;max-width:1312px;min-height:48px;margin:0 auto}.page-header-container .page-header-content .main-content{margin:0 16px 0 24px}.page-header-container .page-header-content .main-content.remove-margin{margin-left:0}.page-header-container .page-header-content .desktop-back-btn{margin-right:24px}@media (max-width: 600px){.page-header-container .page-header-content{padding-top:8px;padding-bottom:8px;max-width:unset}.page-header-container .page-header-content .main-content{width:100%;margin:0 0 0 16px}.page-header-container .page-header-content .main-content .content{width:100%}.page-header-container .page-header-content .right-side{display:none}}.page-header-container .page-header-content .mobile-back-btn{top:-10px;position:relative}.page-header-container .page-header-content .right-side{margin-left:auto}:host[theme=dark] .page-header-container,:host[theme=light] .page-header-container{border-color:#d3d3d3}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.ButtonComponent, selector: "ui-button", inputs: ["size", "variant", "label", "iconPosition", "justIcon", "iconName", "disabled", "loading", "fullWidth", "url", "urlTarget", "value", "tooltip", "isPremium", "type", "companyColor", "buttonBadgeConfig", "applicationTheme", "disabledScaleOnClick", "ariaLabel", "ariaRequired", "ariaLabelledby", "ariaDescribedby", "preventDefault", "hasBackground", "tooltipPosition", "role", "iconFilled"], outputs: ["buttonClickEvent", "buttonHoverEvent"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.UiTranslatePipe, name: "uiTranslate" }] }); }
46
- }
47
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageHeaderComponent, decorators: [{
48
- type: Component,
49
- args: [{ selector: 'ui-page-header', template: "<ng-container>\n <div class=\"page-header-container\">\n <div class=\"page-header-content\">\n @if (!(isMobile$ | async)) {\n @if (showBackButton) {\n <ui-button\n [applicationTheme]=\"applicationTheme\"\n [tooltip]=\"(('COMMON.BACK') | uiTranslate | async)!\"\n (click)=\"onBack()\"\n [ariaLabel]=\"(('COMMON.BACK') | uiTranslate | async)!\"\n [variant]=\"'ghost'\"\n [justIcon]=\"true\"\n [iconName]=\"applicationTheme === 'classic' ? 'Arrow_left' : 'Arrow-chevron-left-in-line'\"\n ></ui-button>\n }\n }\n @else {\n <ui-button\n [applicationTheme]=\"applicationTheme\" class=\"mobile-back-btn\" [tooltip]=\"(('COMMON.BACK') | uiTranslate | async)!\"\n [variant]=\"'icon-button'\"\n [ariaLabel]=\"(('COMMON.BACK') | uiTranslate | async)!\"\n (click)=\"onBack()\"\n [justIcon]=\"true\"\n [iconName]=\"applicationTheme === 'classic' ? 'Arrow_left' : 'Arrow-chevron-left-in-line'\"\n ></ui-button>\n }\n\n <div class=\"main-content\" [ngClass]=\"{ 'remove-margin': !showBackButton }\">\n <ng-content select=\"[content]\"></ng-content>\n </div>\n\n <div class=\"right-side\">\n <ng-content select=\"[right-side]\"></ng-content>\n </div>\n </div>\n </div>\n\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}.page-header-container{border-bottom:1px solid #E0E0E0;background-color:#fff;padding-left:20px;padding-right:calc(20px - (100vw - 100%))}@media (min-width: 960px){.page-header-container{padding-left:40px;padding-right:calc(40px - (100vw - 100%))}}@media (min-width: 1280px){.page-header-container{padding-left:64px;padding-right:calc(64px - (100vw - 100%))}}.page-header-container .page-header-content{display:flex;flex-direction:row;align-items:center;padding-top:16px;padding-bottom:16px;max-width:1312px;min-height:48px;margin:0 auto}.page-header-container .page-header-content .main-content{margin:0 16px 0 24px}.page-header-container .page-header-content .main-content.remove-margin{margin-left:0}.page-header-container .page-header-content .desktop-back-btn{margin-right:24px}@media (max-width: 600px){.page-header-container .page-header-content{padding-top:8px;padding-bottom:8px;max-width:unset}.page-header-container .page-header-content .main-content{width:100%;margin:0 0 0 16px}.page-header-container .page-header-content .main-content .content{width:100%}.page-header-container .page-header-content .right-side{display:none}}.page-header-container .page-header-content .mobile-back-btn{top:-10px;position:relative}.page-header-container .page-header-content .right-side{margin-left:auto}:host[theme=dark] .page-header-container,:host[theme=light] .page-header-container{border-color:#d3d3d3}\n"] }]
50
- }], ctorParameters: () => [{ type: undefined, decorators: [{
51
- type: Optional
52
- }, {
53
- type: Inject,
54
- args: ['CANOPYUI_DEFAULT_APPLICATION_THEME']
55
- }] }, { type: i4.Observable, decorators: [{
56
- type: Inject,
57
- args: [IS_MOBILE_TOKEN]
58
- }] }], propDecorators: { showBackButton: [{
59
- type: Input,
60
- args: [{ transform: booleanAttribute }]
61
- }], tooltip: [{
62
- type: Input
63
- }], applicationTheme: [{
64
- type: HostBinding,
65
- args: ['attr.theme']
66
- }, {
67
- type: Input
68
- }], back: [{
69
- type: Output
70
- }] } });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGdvLWNhbm9weS11aS9jb21wb25lbnRzL3BhZ2UtaGVhZGVyL3BhZ2UtaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9wYWdlLWhlYWRlci9wYWdlLWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3hILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7O0FBTzVELE1BQU0sT0FBTyxtQkFBbUI7SUFnQzlCLFlBQzZFLGVBQWlDLEVBQ2hFLFNBQThCO1FBREMsb0JBQWUsR0FBZixlQUFlLENBQWtCO1FBQ2hFLGNBQVMsR0FBVCxTQUFTLENBQXFCO1FBakM1RTs7OztXQUlHO1FBQ3FDLG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBRTlEOzs7O1dBSUc7UUFDTSxZQUFPLEdBQUcsYUFBYSxDQUFDO1FBRWpDOzs7Ozs7V0FNRztRQUdILHFCQUFnQixHQUFxQixPQUFPLENBQUM7UUFFN0M7OztXQUdHO1FBQ08sU0FBSSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFNeEMsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDO1FBQzFDLENBQUM7SUFDSCxDQUFDO0lBRVMsTUFBTTtRQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbkIsQ0FBQzsrR0EzQ1UsbUJBQW1CLGtCQWlDUixvQ0FBb0MsNkJBQ2hELGVBQWU7bUdBbENkLG1CQUFtQiw2RkFNVixnQkFBZ0IsbUxDaEJ0QyxzNENBc0NBOzs0RkQ1QmEsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGdCQUFnQjs7MEJBcUN2QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLG9DQUFvQzs7MEJBQ3ZELE1BQU07MkJBQUMsZUFBZTt5Q0E1QmUsY0FBYztzQkFBckQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFPN0IsT0FBTztzQkFBZixLQUFLO2dCQVdOLGdCQUFnQjtzQkFGZixXQUFXO3VCQUFDLFlBQVk7O3NCQUN4QixLQUFLO2dCQU9JLElBQUk7c0JBQWIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGJvb2xlYW5BdHRyaWJ1dGUsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5qZWN0LCBJbnB1dCwgT3B0aW9uYWwsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25UaGVtZSB9IGZyb20gJy4uLy4uL21vZGVscy9hcHBsaWNhdGlvbi10aGVtZS5tb2RlbCc7XG5pbXBvcnQgeyBJU19NT0JJTEVfVE9LRU4gfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvaXMtbW9iaWxlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndWktcGFnZS1oZWFkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vcGFnZS1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wYWdlLWhlYWRlci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlSGVhZGVyQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIEZsYWcgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIFwiQmFja1wiIGJ1dHRvbiBzaG91bGQgYmUgZGlzcGxheWVkLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqIEBtZW1iZXJvZiBQYWdlSGVhZGVyQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2hvd0JhY2tCdXR0b24gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBCYWNrIGJ1dHRvbiB0b29sdGlwIGZvciBtb2JpbGUgdmFyaWF0aW9uXG4gICAqIEBwcm9wZXJ0eSB0b29sdGlwXG4gICAqIEBtZW1iZXJvZiBQYWdlSGVhZGVyQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSB0b29sdGlwID0gJ0NPTU1PTi5CQUNLJztcblxuICAvKipcbiAgICpcbiAgICogRGVmaW5lcyB0aGUgYXBwbGljYXRpb24gdGhlbWVcbiAgICpcbiAgICogQHR5cGUge0FwcGxpY2F0aW9uVGhlbWV9XG4gICAqIEBtZW1iZXJvZiBQYWdlSGVhZGVyQ29tcG9uZW50XG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2F0dHIudGhlbWUnKVxuICBASW5wdXQoKVxuICBhcHBsaWNhdGlvblRoZW1lOiBBcHBsaWNhdGlvblRoZW1lID0gJ2xpZ2h0JztcblxuICAvKipcbiAgICogRXZlbnQgdHJpZ2dlcmVkIHdoZW4gdGhlIFwiQmFja1wiIGJ1dHRvbiBpcyBjbGlja2VkLlxuICAgKiBAbWVtYmVyb2YgUGFnZUhlYWRlckNvbXBvbmVudFxuICAgKi9cbiAgQE91dHB1dCgpIGJhY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdCgnQ0FOT1BZVUlfREVGQVVMVF9BUFBMSUNBVElPTl9USEVNRScpIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdEFwcFRoZW1lOiBBcHBsaWNhdGlvblRoZW1lLFxuICAgIEBJbmplY3QoSVNfTU9CSUxFX1RPS0VOKSBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNNb2JpbGUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+XG4gICkge1xuICAgIGlmIChkZWZhdWx0QXBwVGhlbWUpIHtcbiAgICAgIHRoaXMuYXBwbGljYXRpb25UaGVtZSA9IGRlZmF1bHRBcHBUaGVtZTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb25CYWNrKCk6IHZvaWQge1xuICAgIHRoaXMuYmFjay5lbWl0KCk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXI+XG4gIDxkaXYgY2xhc3M9XCJwYWdlLWhlYWRlci1jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwicGFnZS1oZWFkZXItY29udGVudFwiPlxuICAgICAgQGlmICghKGlzTW9iaWxlJCB8IGFzeW5jKSkge1xuICAgICAgICBAaWYgKHNob3dCYWNrQnV0dG9uKSB7XG4gICAgICAgICAgPHVpLWJ1dHRvblxuICAgICAgICAgICAgW2FwcGxpY2F0aW9uVGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiXG4gICAgICAgICAgICBbdG9vbHRpcF09XCIoKCdDT01NT04uQkFDSycpIHwgdWlUcmFuc2xhdGUgfCBhc3luYykhXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkJhY2soKVwiXG4gICAgICAgICAgICBbYXJpYUxhYmVsXT1cIigoJ0NPTU1PTi5CQUNLJykgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jKSFcIlxuICAgICAgICAgICAgW3ZhcmlhbnRdPVwiJ2dob3N0J1wiXG4gICAgICAgICAgICBbanVzdEljb25dPVwidHJ1ZVwiXG4gICAgICAgICAgICBbaWNvbk5hbWVdPVwiYXBwbGljYXRpb25UaGVtZSA9PT0gJ2NsYXNzaWMnID8gJ0Fycm93X2xlZnQnIDogJ0Fycm93LWNoZXZyb24tbGVmdC1pbi1saW5lJ1wiXG4gICAgICAgICAgPjwvdWktYnV0dG9uPlxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIDx1aS1idXR0b25cbiAgICAgICAgICBbYXBwbGljYXRpb25UaGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCIgY2xhc3M9XCJtb2JpbGUtYmFjay1idG5cIiBbdG9vbHRpcF09XCIoKCdDT01NT04uQkFDSycpIHwgdWlUcmFuc2xhdGUgfCBhc3luYykhXCJcbiAgICAgICAgICBbdmFyaWFudF09XCInaWNvbi1idXR0b24nXCJcbiAgICAgICAgICBbYXJpYUxhYmVsXT1cIigoJ0NPTU1PTi5CQUNLJykgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jKSFcIlxuICAgICAgICAgIChjbGljayk9XCJvbkJhY2soKVwiXG4gICAgICAgICAgW2p1c3RJY29uXT1cInRydWVcIlxuICAgICAgICAgIFtpY29uTmFtZV09XCJhcHBsaWNhdGlvblRoZW1lID09PSAnY2xhc3NpYycgPyAnQXJyb3dfbGVmdCcgOiAnQXJyb3ctY2hldnJvbi1sZWZ0LWluLWxpbmUnXCJcbiAgICAgICAgPjwvdWktYnV0dG9uPlxuICAgICAgfVxuXG4gICAgICA8ZGl2IGNsYXNzPVwibWFpbi1jb250ZW50XCIgW25nQ2xhc3NdPVwieyAncmVtb3ZlLW1hcmdpbic6ICFzaG93QmFja0J1dHRvbiB9XCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltjb250ZW50XVwiPjwvbmctY29udGVudD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwicmlnaHQtc2lkZVwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbcmlnaHQtc2lkZV1cIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbjwvbmctY29udGFpbmVyPlxuIl19
@@ -1,20 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { PageHeaderComponent } from './page-header.component';
4
- import { ButtonComponentModule } from '../button/button.component.module';
5
- import { UiTranslatePipe } from '../../pipes/ui-translate.pipe';
6
- import * as i0 from "@angular/core";
7
- export class PageHeaderModule {
8
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageHeaderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
9
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: PageHeaderModule, declarations: [PageHeaderComponent], imports: [CommonModule, ButtonComponentModule, UiTranslatePipe], exports: [PageHeaderComponent] }); }
10
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageHeaderModule, imports: [CommonModule, ButtonComponentModule] }); }
11
- }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PageHeaderModule, decorators: [{
13
- type: NgModule,
14
- args: [{
15
- declarations: [PageHeaderComponent],
16
- imports: [CommonModule, ButtonComponentModule, UiTranslatePipe],
17
- exports: [PageHeaderComponent],
18
- }]
19
- }] });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1oZWFkZXIuY29tcG9uZW50Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9wYWdlLWhlYWRlci9wYWdlLWhlYWRlci5jb21wb25lbnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFPaEUsTUFBTSxPQUFPLGdCQUFnQjsrR0FBaEIsZ0JBQWdCO2dIQUFoQixnQkFBZ0IsaUJBSlosbUJBQW1CLGFBQ3hCLFlBQVksRUFBRSxxQkFBcUIsRUFBRSxlQUFlLGFBQ3BELG1CQUFtQjtnSEFFbEIsZ0JBQWdCLFlBSGpCLFlBQVksRUFBRSxxQkFBcUI7OzRGQUdsQyxnQkFBZ0I7a0JBTDVCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsbUJBQW1CLENBQUM7b0JBQ25DLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxxQkFBcUIsRUFBRSxlQUFlLENBQUM7b0JBQy9ELE9BQU8sRUFBRSxDQUFDLG1CQUFtQixDQUFDO2lCQUMvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUGFnZUhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vcGFnZS1oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudE1vZHVsZSB9IGZyb20gJy4uL2J1dHRvbi9idXR0b24uY29tcG9uZW50Lm1vZHVsZSc7XG5pbXBvcnQgeyBVaVRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy91aS10cmFuc2xhdGUucGlwZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1BhZ2VIZWFkZXJDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBCdXR0b25Db21wb25lbnRNb2R1bGUsIFVpVHJhbnNsYXRlUGlwZV0sXG4gIGV4cG9ydHM6IFtQYWdlSGVhZGVyQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZUhlYWRlck1vZHVsZSB7fVxuIl19