@mediusinc/mng-commons-layout 6.0.0-rc.4 → 6.0.0-rc.6

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 (195) hide show
  1. package/components/pages/error/index.d.ts +1 -3
  2. package/components/pages/not-found/index.d.ts +1 -3
  3. package/fesm2022/mediusinc-mng-commons-layout-components-pages-error.mjs +6 -7
  4. package/fesm2022/mediusinc-mng-commons-layout-components-pages-error.mjs.map +1 -1
  5. package/fesm2022/mediusinc-mng-commons-layout-components-pages-main.mjs +3 -3
  6. package/fesm2022/mediusinc-mng-commons-layout-components-pages-main.mjs.map +1 -1
  7. package/fesm2022/mediusinc-mng-commons-layout-components-pages-not-found.mjs +6 -7
  8. package/fesm2022/mediusinc-mng-commons-layout-components-pages-not-found.mjs.map +1 -1
  9. package/fesm2022/mediusinc-mng-commons-layout-components.mjs +62 -58
  10. package/fesm2022/mediusinc-mng-commons-layout-components.mjs.map +1 -1
  11. package/fesm2022/mediusinc-mng-commons-layout.mjs +21 -14
  12. package/fesm2022/mediusinc-mng-commons-layout.mjs.map +1 -1
  13. package/package.json +11 -21
  14. package/scss/commons.scss +1 -0
  15. package/scss/layout/_breadcrumb.scss +14 -11
  16. package/scss/layout/_config.scss +75 -7
  17. package/scss/layout/_content.scss +1 -1
  18. package/scss/layout/_main.scss +7 -9
  19. package/scss/layout/_profile.scss +1 -1
  20. package/scss/layout/_responsive.scss +4 -2
  21. package/scss/layout/_sass_variables.scss +1 -0
  22. package/scss/layout/_sidebar_drawer.scss +6 -5
  23. package/scss/layout/_sidebar_horizontal.scss +15 -11
  24. package/scss/layout/_sidebar_reveal.scss +16 -10
  25. package/scss/layout/_sidebar_slim.scss +5 -3
  26. package/scss/layout/_sidebar_slim_plus.scss +5 -2
  27. package/scss/layout/_sidebar_vertical.scss +13 -7
  28. package/scss/layout/_topbar.scss +75 -45
  29. package/scss/layout/_utils.scss +1 -5
  30. package/scss/layout/layout.scss +29 -22
  31. package/scss/layout/mng/{_mng_layout_menu.scss → layout/_mng_layout_menu.scss} +0 -4
  32. package/scss/layout/mng/{_mng_layout_topbar.scss → layout/_mng_layout_topbar.scss} +2 -2
  33. package/scss/layout/mng/theme/_mng_theme_button.scss +63 -0
  34. package/scss/{theme/theme-base/mng → layout/mng/theme}/_mng_theme_dialog.scss +44 -46
  35. package/scss/{theme/theme-base/mng → layout/mng/theme}/_mng_theme_toast.scss +4 -4
  36. package/scss/layout/mng/theme/_mng_theme_toggleswitch.scss +3 -0
  37. package/scss/layout/mng/variables/_mng-variables-common.scss +22 -0
  38. package/scss/layout/variables/_common.scss +15 -0
  39. package/scss/layout/variables/_dark.scss +10 -0
  40. package/scss/layout/variables/_light.scss +10 -0
  41. package/version-info.json +3 -3
  42. package/esm2022/components/index.mjs +0 -12
  43. package/esm2022/components/lib/components/breadcrumb.component.mjs +0 -29
  44. package/esm2022/components/lib/components/footer.component.mjs +0 -23
  45. package/esm2022/components/lib/components/main-layout.component.mjs +0 -86
  46. package/esm2022/components/lib/components/menu-item.component.mjs +0 -169
  47. package/esm2022/components/lib/components/menu.component.mjs +0 -36
  48. package/esm2022/components/lib/components/settings.component.mjs +0 -87
  49. package/esm2022/components/lib/components/sidebar.component.mjs +0 -51
  50. package/esm2022/components/lib/components/topbar-user.component.mjs +0 -51
  51. package/esm2022/components/lib/components/topbar.component.mjs +0 -37
  52. package/esm2022/components/lib/components/version.component.mjs +0 -95
  53. package/esm2022/components/mediusinc-mng-commons-layout-components.mjs +0 -5
  54. package/esm2022/components/pages/error/index.mjs +0 -4
  55. package/esm2022/components/pages/error/lib/error.page.component.mjs +0 -20
  56. package/esm2022/components/pages/error/mediusinc-mng-commons-layout-components-pages-error.mjs +0 -5
  57. package/esm2022/components/pages/main/index.mjs +0 -3
  58. package/esm2022/components/pages/main/lazy/index.mjs +0 -2
  59. package/esm2022/components/pages/main/lazy/lib/route-builder.mjs +0 -11
  60. package/esm2022/components/pages/main/lazy/mediusinc-mng-commons-layout-components-pages-main-lazy.mjs +0 -5
  61. package/esm2022/components/pages/main/lib/main-layout.component.mjs +0 -84
  62. package/esm2022/components/pages/main/lib/route-builder.mjs +0 -12
  63. package/esm2022/components/pages/main/mediusinc-mng-commons-layout-components-pages-main.mjs +0 -5
  64. package/esm2022/components/pages/not-found/index.mjs +0 -4
  65. package/esm2022/components/pages/not-found/lib/not-found.page.component.mjs +0 -20
  66. package/esm2022/components/pages/not-found/mediusinc-mng-commons-layout-components-pages-not-found.mjs +0 -5
  67. package/esm2022/index.mjs +0 -13
  68. package/esm2022/lib/helpers/menu-items.mjs +0 -29
  69. package/esm2022/lib/models/layout-state.model.mjs +0 -2
  70. package/esm2022/lib/models/menu.model.mjs +0 -2
  71. package/esm2022/lib/provide.mjs +0 -25
  72. package/esm2022/lib/services/layout-feature-config.token.mjs +0 -3
  73. package/esm2022/lib/services/layout.service.mjs +0 -167
  74. package/esm2022/lib/services/menu.service.mjs +0 -121
  75. package/esm2022/lib/services/version.service.mjs +0 -45
  76. package/esm2022/mediusinc-mng-commons-layout.mjs +0 -5
  77. package/scss/commons-dark.scss +0 -9
  78. package/scss/commons-light.scss +0 -9
  79. package/scss/layout/_animation.scss +0 -53
  80. package/scss/layout/_fonts.scss +0 -40
  81. package/scss/layout/_layout_dark.scss +0 -12
  82. package/scss/layout/_layout_light.scss +0 -12
  83. package/scss/layout/_typography.scss +0 -67
  84. package/scss/layout/mng/_mng_layout_styles.scss +0 -4
  85. package/scss/layout/preloading.scss +0 -84
  86. package/scss/theme/extensions/_fullcalendar.scss +0 -328
  87. package/scss/theme/theme-base/_colors.scss +0 -17
  88. package/scss/theme/theme-base/_common.scss +0 -76
  89. package/scss/theme/theme-base/_components.scss +0 -110
  90. package/scss/theme/theme-base/_mixins.scss +0 -337
  91. package/scss/theme/theme-base/components/button/_button.scss +0 -576
  92. package/scss/theme/theme-base/components/button/_speeddial.scss +0 -96
  93. package/scss/theme/theme-base/components/button/_splitbutton.scss +0 -348
  94. package/scss/theme/theme-base/components/data/_carousel.scss +0 -37
  95. package/scss/theme/theme-base/components/data/_datatable.scss +0 -338
  96. package/scss/theme/theme-base/components/data/_dataview.scss +0 -46
  97. package/scss/theme/theme-base/components/data/_filter.scss +0 -137
  98. package/scss/theme/theme-base/components/data/_orderlist.scss +0 -114
  99. package/scss/theme/theme-base/components/data/_organizationchart.scss +0 -50
  100. package/scss/theme/theme-base/components/data/_paginator.scss +0 -92
  101. package/scss/theme/theme-base/components/data/_picklist.scss +0 -114
  102. package/scss/theme/theme-base/components/data/_timeline.scss +0 -35
  103. package/scss/theme/theme-base/components/data/_tree.scss +0 -150
  104. package/scss/theme/theme-base/components/data/_treetable.scss +0 -255
  105. package/scss/theme/theme-base/components/data/_virtualscroller.scss +0 -28
  106. package/scss/theme/theme-base/components/file/_fileupload.scss +0 -64
  107. package/scss/theme/theme-base/components/input/_autocomplete.scss +0 -136
  108. package/scss/theme/theme-base/components/input/_calendar.scss +0 -267
  109. package/scss/theme/theme-base/components/input/_cascadeselect.scss +0 -135
  110. package/scss/theme/theme-base/components/input/_checkbox.scss +0 -94
  111. package/scss/theme/theme-base/components/input/_chips.scss +0 -65
  112. package/scss/theme/theme-base/components/input/_colorpicker.scss +0 -19
  113. package/scss/theme/theme-base/components/input/_dropdown.scss +0 -151
  114. package/scss/theme/theme-base/components/input/_editor.scss +0 -122
  115. package/scss/theme/theme-base/components/input/_inputgroup.scss +0 -74
  116. package/scss/theme/theme-base/components/input/_inputmask.scss +0 -16
  117. package/scss/theme/theme-base/components/input/_inputnumber.scss +0 -28
  118. package/scss/theme/theme-base/components/input/_inputswitch.scss +0 -60
  119. package/scss/theme/theme-base/components/input/_inputtext.scss +0 -100
  120. package/scss/theme/theme-base/components/input/_listbox.scss +0 -97
  121. package/scss/theme/theme-base/components/input/_multiselect.scss +0 -177
  122. package/scss/theme/theme-base/components/input/_password.scss +0 -52
  123. package/scss/theme/theme-base/components/input/_radiobutton.scss +0 -78
  124. package/scss/theme/theme-base/components/input/_rating.scss +0 -60
  125. package/scss/theme/theme-base/components/input/_selectbutton.scss +0 -50
  126. package/scss/theme/theme-base/components/input/_slider.scss +0 -75
  127. package/scss/theme/theme-base/components/input/_togglebutton.scss +0 -48
  128. package/scss/theme/theme-base/components/input/_treeselect.scss +0 -139
  129. package/scss/theme/theme-base/components/menu/_breadcrumb.scss +0 -42
  130. package/scss/theme/theme-base/components/menu/_contextmenu.scss +0 -39
  131. package/scss/theme/theme-base/components/menu/_dock.scss +0 -95
  132. package/scss/theme/theme-base/components/menu/_megamenu.scss +0 -55
  133. package/scss/theme/theme-base/components/menu/_menu.scss +0 -37
  134. package/scss/theme/theme-base/components/menu/_menubar.scss +0 -140
  135. package/scss/theme/theme-base/components/menu/_panelmenu.scss +0 -153
  136. package/scss/theme/theme-base/components/menu/_slidemenu.scss +0 -59
  137. package/scss/theme/theme-base/components/menu/_steps.scss +0 -56
  138. package/scss/theme/theme-base/components/menu/_tabmenu.scss +0 -73
  139. package/scss/theme/theme-base/components/menu/_tieredmenu.scss +0 -43
  140. package/scss/theme/theme-base/components/messages/_inlinemessage.scss +0 -69
  141. package/scss/theme/theme-base/components/messages/_message.scss +0 -107
  142. package/scss/theme/theme-base/components/messages/_toast.scss +0 -99
  143. package/scss/theme/theme-base/components/misc/_avatar.scss +0 -30
  144. package/scss/theme/theme-base/components/misc/_badge.scss +0 -48
  145. package/scss/theme/theme-base/components/misc/_blockui.scss +0 -0
  146. package/scss/theme/theme-base/components/misc/_chip.scss +0 -42
  147. package/scss/theme/theme-base/components/misc/_inplace.scss +0 -16
  148. package/scss/theme/theme-base/components/misc/_progressbar.scss +0 -17
  149. package/scss/theme/theme-base/components/misc/_scrolltop.scss +0 -25
  150. package/scss/theme/theme-base/components/misc/_skeleton.scss +0 -8
  151. package/scss/theme/theme-base/components/misc/_tag.scss +0 -40
  152. package/scss/theme/theme-base/components/misc/_terminal.scss +0 -12
  153. package/scss/theme/theme-base/components/multimedia/_galleria.scss +0 -155
  154. package/scss/theme/theme-base/components/multimedia/_image.scss +0 -49
  155. package/scss/theme/theme-base/components/overlay/_confirmpopup.scss +0 -70
  156. package/scss/theme/theme-base/components/overlay/_dialog.scss +0 -69
  157. package/scss/theme/theme-base/components/overlay/_overlaypanel.scss +0 -62
  158. package/scss/theme/theme-base/components/overlay/_sidebar.scss +0 -27
  159. package/scss/theme/theme-base/components/overlay/_tooltip.scss +0 -33
  160. package/scss/theme/theme-base/components/panel/_accordion.scss +0 -119
  161. package/scss/theme/theme-base/components/panel/_card.scss +0 -30
  162. package/scss/theme/theme-base/components/panel/_divider.scss +0 -31
  163. package/scss/theme/theme-base/components/panel/_fieldset.scss +0 -47
  164. package/scss/theme/theme-base/components/panel/_panel.scss +0 -63
  165. package/scss/theme/theme-base/components/panel/_scrollpanel.scss +0 -6
  166. package/scss/theme/theme-base/components/panel/_splitter.scss +0 -19
  167. package/scss/theme/theme-base/components/panel/_tabview.scss +0 -82
  168. package/scss/theme/theme-base/components/panel/_toolbar.scss +0 -11
  169. package/scss/theme/theme-base/mng/_mng_mixins.scss +0 -69
  170. package/scss/theme/theme-base/mng/_mng_theme_autocomplete.scss +0 -34
  171. package/scss/theme/theme-base/mng/_mng_theme_button.scss +0 -68
  172. package/scss/theme/theme-base/mng/_mng_theme_datatable.scss +0 -157
  173. package/scss/theme/theme-base/mng/_mng_theme_datepicker.scss +0 -21
  174. package/scss/theme/theme-base/mng/_mng_theme_dropdown.scss +0 -32
  175. package/scss/theme/theme-base/mng/_mng_theme_fileupload.scss +0 -24
  176. package/scss/theme/theme-base/mng/_mng_theme_forms.scss +0 -66
  177. package/scss/theme/theme-base/mng/_mng_theme_image.scss +0 -27
  178. package/scss/theme/theme-base/mng/_mng_theme_input.scss +0 -42
  179. package/scss/theme/theme-base/mng/_mng_theme_menu.scss +0 -5
  180. package/scss/theme/theme-base/mng/_mng_theme_multiselect.scss +0 -20
  181. package/scss/theme/theme-base/mng/_mng_theme_styles.scss +0 -19
  182. package/scss/theme/theme-base/mng/_mng_theme_table.scss +0 -54
  183. package/scss/theme/theme-base/mng/_mng_theme_tableview.scss +0 -41
  184. package/scss/theme/theme-base/mng/_mng_theme_tabview.scss +0 -14
  185. package/scss/theme/theme-base/mng/_mng_theme_tag.scss +0 -11
  186. package/scss/theme/theme-base/mng/_mng_theme_toolbar.scss +0 -5
  187. package/scss/theme/theme-base/mng/_mng_variables.scss +0 -15
  188. package/scss/theme/theme-dark/_extensions.scss +0 -109
  189. package/scss/theme/theme-dark/_variables.scss +0 -941
  190. package/scss/theme/theme-dark/blue/theme.scss +0 -14
  191. package/scss/theme/theme-light/_extensions.scss +0 -109
  192. package/scss/theme/theme-light/_variables.scss +0 -937
  193. package/scss/theme/theme-light/blue/theme.scss +0 -14
  194. /package/scss/layout/mng/{_mng_layout_footer.scss → layout/_mng_layout_footer.scss} +0 -0
  195. /package/scss/layout/mng/{_mng_sidebar_vertical.scss → layout/_mng_sidebar_vertical.scss} +0 -0
@@ -1,169 +0,0 @@
1
- import { animate, state, style, transition, trigger } from '@angular/animations';
2
- import { NgClass } from '@angular/common';
3
- import { ChangeDetectionStrategy, Component, computed, effect, inject, input, output, viewChild } from '@angular/core';
4
- import { toObservable as ngToObservable, toSignal } from '@angular/core/rxjs-interop';
5
- import { RouterModule } from '@angular/router';
6
- import { TranslateModule } from '@ngx-translate/core';
7
- import { RippleModule } from 'primeng/ripple';
8
- import { TooltipModule } from 'primeng/tooltip';
9
- import { distinctUntilChanged, of, switchMap } from 'rxjs';
10
- import { LayoutService, MenuService } from '@mediusinc/mng-commons-layout';
11
- import { PermissionService, toObservable } from '@mediusinc/mng-commons/core';
12
- import * as i0 from "@angular/core";
13
- import * as i1 from "primeng/ripple";
14
- import * as i2 from "@angular/router";
15
- import * as i3 from "@ngx-translate/core";
16
- export class MenuItemComponent {
17
- constructor() {
18
- this.menuService = inject(MenuService);
19
- this.permissionService = inject(PermissionService);
20
- this.layout = inject(LayoutService);
21
- this.item = input.required();
22
- this.root = input(false);
23
- this.visibleChange = output();
24
- this.submenuElRef = viewChild('submenu');
25
- this.isPermitted = toSignal(ngToObservable(this.item).pipe(switchMap(i => (i.permissions ? this.permissionService.isMenuItemVisible(i.permissions, i.config) : of(true)))));
26
- this.isVisibleFromItemSettings = toSignal(ngToObservable(this.item).pipe(switchMap(i => (typeof i.isVisible === 'function' ? toObservable(i.isVisible(i.config)) : of(i.isVisible ?? true)))));
27
- this.menuChangeEvents = toSignal(this.menuService.menuChange$.pipe(distinctUntilChanged((v1, v2) => v1.key === v2.key)));
28
- this.active = computed(() => {
29
- if (!this.isPermitted()) {
30
- return false;
31
- }
32
- const menuChangeEvent = this.menuChangeEvents();
33
- if (menuChangeEvent) {
34
- return menuChangeEvent.eventType === 'reset' || !menuChangeEvent.key
35
- ? false
36
- : this.item().key === menuChangeEvent.key || menuChangeEvent.key.startsWith((this.item().key ?? '') + '-');
37
- }
38
- return false;
39
- });
40
- this.visible = computed(() => {
41
- const isPermitted = this.isPermitted();
42
- if (!isPermitted) {
43
- return false;
44
- }
45
- if (!this.isVisibleFromItemSettings()) {
46
- return false;
47
- }
48
- const items = this.item().items();
49
- if (Array.isArray(items) &&
50
- items.length > 0 &&
51
- this.item()
52
- .itemsVisibility()
53
- .every(v => !v())) {
54
- return false;
55
- }
56
- return true;
57
- });
58
- this.submenuAnimation = computed(() => {
59
- if (this.layout.isDesktop() && (this.layout.isSlim() || this.layout.isSlimPlus())) {
60
- return this.layout.submenuOverlayKey() === this.item().key ? 'visible' : 'hidden';
61
- }
62
- else {
63
- return this.root() ? 'expanded' : this.active() ? 'expanded' : 'collapsed';
64
- }
65
- });
66
- effect(() => {
67
- if (this.root() && this.active() && this.layout.isDesktop() && (this.layout.isSlim() || this.layout.isSlimPlus())) {
68
- this.calculatePosition(this.submenuElRef()?.nativeElement, this.submenuElRef()?.nativeElement.parentElement);
69
- }
70
- });
71
- }
72
- itemClick(event) {
73
- const item = this.item();
74
- // avoid processing disabled items
75
- if (item.disabled) {
76
- event.preventDefault();
77
- return;
78
- }
79
- if (item.hasItemsOrLazyChildren()) {
80
- // open submenu in slim/slim+ mode
81
- if (this.root() && (this.layout.isSlim() || this.layout.isSlimPlus())) {
82
- this.layout.onOverlaySubmenuOpen(item.key);
83
- }
84
- }
85
- else {
86
- if (this.layout.isMobile()) {
87
- this.layout.state.update(state => ({
88
- ...state,
89
- staticMenuMobileActive: false
90
- }));
91
- }
92
- if (this.layout.isSlim() || this.layout.isSlimPlus()) {
93
- this.layout.state.update(state => ({
94
- ...state,
95
- menuHoverActive: false
96
- }));
97
- }
98
- if (this.layout.submenuOverlayKey() !== undefined) {
99
- this.layout.onOverlaySubmenuClose();
100
- }
101
- }
102
- }
103
- onSubmenuAnimated(event) {
104
- if (event.toState === 'visible' && this.layout.isDesktop() && (this.layout.isSlim() || this.layout.isSlimPlus())) {
105
- const el = event.element;
106
- const elParent = el.parentElement;
107
- this.calculatePosition(el, elParent);
108
- }
109
- }
110
- onChildVisibleChange(visible, item, idx) {
111
- this.item().itemsVisibility()[idx]?.set(visible);
112
- }
113
- calculatePosition(overlay, target) {
114
- if (overlay) {
115
- const top = target.getBoundingClientRect().top;
116
- const vHeight = window.innerHeight;
117
- const oHeight = overlay.offsetHeight;
118
- // reset
119
- overlay.style.top = '';
120
- overlay.style.left = '';
121
- if (this.layout.isSlim() || this.layout.isSlimPlus()) {
122
- const height = top + oHeight;
123
- overlay.style.top = vHeight < height ? `${top - (height - vHeight)}px` : `${top}px`;
124
- }
125
- }
126
- }
127
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: MenuItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
128
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: MenuItemComponent, isStandalone: true, selector: "[mng-menuitem]", inputs: { item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: true, transformFunction: null }, root: { classPropertyName: "root", publicName: "root", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visibleChange: "visibleChange" }, host: { properties: { "class.active-menuitem": "!root() && active()", "class.layout-root-menuitem": "root()" } }, providers: [PermissionService], viewQueries: [{ propertyName: "submenuElRef", first: true, predicate: ["submenu"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (visible()) {\n @if (root()) {\n <div class=\"layout-menuitem-root-text\">\n {{ item().label! | translate }}\n </div>\n }\n @if (!item().href) {\n @if (!item().routerLink || item().hasItems()) {\n <a\n [attr.href]=\"item().href\"\n [routerLink]=\"layout.isSlim() || layout.isSlimPlus() ? null : item().routerLink\"\n (click)=\"itemClick($event)\"\n (keydown.enter)=\"itemClick($event)\"\n [attr.target]=\"item().target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item().className ?? '' + (this.active() ? ' active-route' : '')\"\n pRipple>\n <i [ngClass]=\"item().icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item().label! | translate }}</span>\n @if (item().hasItemsOrLazyChildren()) {\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"></i>\n }\n @if (item().badge) {\n <span class=\"menuitem-badge\">{{ item().badge }}</span>\n }\n </a>\n } @else if (item().routerLink && !item().hasItems()) {\n <a\n (click)=\"itemClick($event)\"\n [routerLink]=\"item().routerLink\"\n [attr.target]=\"item().target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item().className ?? '' + (this.active() ? ' active-route' : '')\"\n [preserveFragment]=\"item().preserveFragment\"\n [skipLocationChange]=\"item().skipLocationChange\"\n [replaceUrl]=\"item().replaceUrl\"\n [queryParams]=\"item().queryParams\"\n pRipple>\n <i [ngClass]=\"item().icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item().label! | translate }}</span>\n @if (item().hasItemsOrLazyChildren()) {\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"></i>\n }\n @if (item().badge) {\n <span class=\"menuitem-badge\">{{ item().badge }}</span>\n }\n </a>\n }\n } @else {\n @if (!item().hasItems()) {\n <a (click)=\"itemClick($event)\" [attr.href]=\"item().href\" [attr.target]=\"item().target\" [attr.tabindex]=\"0\" [ngClass]=\"item().className ?? ''\" pRipple>\n <i [ngClass]=\"item().icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item().label! | translate }}</span>\n @if (item().hasItemsOrLazyChildren()) {\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"></i>\n }\n @if (item().badge) {\n <span class=\"menuitem-badge\">{{ item().badge }}</span>\n }\n </a>\n }\n }\n @if (item().hasItems()) {\n <ul #submenu [@children]=\"submenuAnimation()\" (@children.done)=\"onSubmenuAnimated($event)\">\n @for (child of item().items(); track child; let i = $index) {\n <li mng-menuitem [item]=\"child\" [class]=\"child.badgeClassName\" (visibleChange)=\"onChildVisibleChange($event, child, i)\"></li>\n }\n </ul>\n }\n}\n", dependencies: [{ kind: "component", type: MenuItemComponent, selector: "[mng-menuitem]", inputs: ["item", "root"], outputs: ["visibleChange"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: RippleModule }, { kind: "directive", type: i1.Ripple, selector: "[pRipple]" }, { kind: "ngmodule", type: TooltipModule }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], animations: [
129
- trigger('children', [
130
- state('collapsed', style({
131
- height: '0'
132
- })),
133
- state('expanded', style({
134
- height: '*'
135
- })),
136
- state('hidden', style({
137
- display: 'none'
138
- })),
139
- state('visible', style({
140
- display: 'block'
141
- })),
142
- transition('collapsed <=> expanded', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)'))
143
- ])
144
- ], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
145
- }
146
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: MenuItemComponent, decorators: [{
147
- type: Component,
148
- args: [{ standalone: true, selector: '[mng-menuitem]', imports: [NgClass, RippleModule, TooltipModule, RouterModule, TranslateModule], changeDetection: ChangeDetectionStrategy.OnPush, animations: [
149
- trigger('children', [
150
- state('collapsed', style({
151
- height: '0'
152
- })),
153
- state('expanded', style({
154
- height: '*'
155
- })),
156
- state('hidden', style({
157
- display: 'none'
158
- })),
159
- state('visible', style({
160
- display: 'block'
161
- })),
162
- transition('collapsed <=> expanded', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)'))
163
- ])
164
- ], host: {
165
- '[class.active-menuitem]': '!root() && active()',
166
- '[class.layout-root-menuitem]': 'root()'
167
- }, providers: [PermissionService], template: "@if (visible()) {\n @if (root()) {\n <div class=\"layout-menuitem-root-text\">\n {{ item().label! | translate }}\n </div>\n }\n @if (!item().href) {\n @if (!item().routerLink || item().hasItems()) {\n <a\n [attr.href]=\"item().href\"\n [routerLink]=\"layout.isSlim() || layout.isSlimPlus() ? null : item().routerLink\"\n (click)=\"itemClick($event)\"\n (keydown.enter)=\"itemClick($event)\"\n [attr.target]=\"item().target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item().className ?? '' + (this.active() ? ' active-route' : '')\"\n pRipple>\n <i [ngClass]=\"item().icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item().label! | translate }}</span>\n @if (item().hasItemsOrLazyChildren()) {\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"></i>\n }\n @if (item().badge) {\n <span class=\"menuitem-badge\">{{ item().badge }}</span>\n }\n </a>\n } @else if (item().routerLink && !item().hasItems()) {\n <a\n (click)=\"itemClick($event)\"\n [routerLink]=\"item().routerLink\"\n [attr.target]=\"item().target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item().className ?? '' + (this.active() ? ' active-route' : '')\"\n [preserveFragment]=\"item().preserveFragment\"\n [skipLocationChange]=\"item().skipLocationChange\"\n [replaceUrl]=\"item().replaceUrl\"\n [queryParams]=\"item().queryParams\"\n pRipple>\n <i [ngClass]=\"item().icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item().label! | translate }}</span>\n @if (item().hasItemsOrLazyChildren()) {\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"></i>\n }\n @if (item().badge) {\n <span class=\"menuitem-badge\">{{ item().badge }}</span>\n }\n </a>\n }\n } @else {\n @if (!item().hasItems()) {\n <a (click)=\"itemClick($event)\" [attr.href]=\"item().href\" [attr.target]=\"item().target\" [attr.tabindex]=\"0\" [ngClass]=\"item().className ?? ''\" pRipple>\n <i [ngClass]=\"item().icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item().label! | translate }}</span>\n @if (item().hasItemsOrLazyChildren()) {\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"></i>\n }\n @if (item().badge) {\n <span class=\"menuitem-badge\">{{ item().badge }}</span>\n }\n </a>\n }\n }\n @if (item().hasItems()) {\n <ul #submenu [@children]=\"submenuAnimation()\" (@children.done)=\"onSubmenuAnimated($event)\">\n @for (child of item().items(); track child; let i = $index) {\n <li mng-menuitem [item]=\"child\" [class]=\"child.badgeClassName\" (visibleChange)=\"onChildVisibleChange($event, child, i)\"></li>\n }\n </ul>\n }\n}\n" }]
168
- }], ctorParameters: () => [] });
169
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL21lbnUtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9tZW51LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDL0YsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3hDLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQWMsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakksT0FBTyxFQUFDLFlBQVksSUFBSSxjQUFjLEVBQUUsUUFBUSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDcEYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxvQkFBb0IsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRXpELE9BQU8sRUFBQyxhQUFhLEVBQUUsV0FBVyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDekUsT0FBTyxFQUEwQixpQkFBaUIsRUFBRSxZQUFZLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7QUE0Q3JHLE1BQU0s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QUFTLEVBQ1QsS0FBSyxDQUFDO29CQUNGLE9BQU8sRUFBRSxPQUFPO2lCQUNuQixDQUFDLENBQ0w7Z0JBQ0QsVUFBVSxDQUFDLHdCQUF3QixFQUFFLE9BQU8sQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO2FBQ3hGLENBQUM7U0FDTDs7NEZBT1EsaUJBQWlCO2tCQTFDN0IsU0FBUztpQ0FDTSxJQUFJLFlBRU4sZ0JBQWdCLFdBRWpCLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGVBQWUsQ0FBQyxtQkFDN0QsdUJBQXVCLENBQUMsTUFBTSxjQUNuQzt3QkFDUixPQUFPLENBQUMsVUFBVSxFQUFFOzRCQUNoQixLQUFLLENBQ0QsV0FBVyxFQUNYLEtBQUssQ0FBQztnQ0FDRixNQUFNLEVBQUUsR0FBRzs2QkFDZCxDQUFDLENBQ0w7NEJBQ0QsS0FBSyxDQUNELFVBQVUsRUFDVixLQUFLLENBQUM7Z0NBQ0YsTUFBTSxFQUFFLEdBQUc7NkJBQ2QsQ0FBQyxDQUNMOzRCQUNELEtBQUssQ0FDRCxRQUFRLEVBQ1IsS0FBSyxDQUFDO2dDQUNGLE9BQU8sRUFBRSxNQUFNOzZCQUNsQixDQUFDLENBQ0w7NEJBQ0QsS0FBSyxDQUNELFNBQVMsRUFDVCxLQUFLLENBQUM7Z0NBQ0YsT0FBTyxFQUFFLE9BQU87NkJBQ25CLENBQUMsQ0FDTDs0QkFDRCxVQUFVLENBQUMsd0JBQXdCLEVBQUUsT0FBTyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7eUJBQ3hGLENBQUM7cUJBQ0wsUUFDSzt3QkFDRix5QkFBeUIsRUFBRSxxQkFBcUI7d0JBQ2hELDhCQUE4QixFQUFFLFFBQVE7cUJBQzNDLGFBQ1UsQ0FBQyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QW5pbWF0aW9uRXZlbnQsIGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlcn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge05nQ2xhc3N9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgaW5wdXQsIG91dHB1dCwgdmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dG9PYnNlcnZhYmxlIGFzIG5nVG9PYnNlcnZhYmxlLCB0b1NpZ25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtSb3V0ZXJNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7UmlwcGxlTW9kdWxlfSBmcm9tICdwcmltZW5nL3JpcHBsZSc7XG5pbXBvcnQge1Rvb2x0aXBNb2R1bGV9IGZyb20gJ3ByaW1lbmcvdG9vbHRpcCc7XG5pbXBvcnQge2Rpc3RpbmN0VW50aWxDaGFuZ2VkLCBvZiwgc3dpdGNoTWFwfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtMYXlvdXRTZXJ2aWNlLCBNZW51U2VydmljZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy1sYXlvdXQnO1xuaW1wb3J0IHtJbnRlcm5hbENvbW1vbnNNZW51SXRlbSwgUGVybWlzc2lvblNlcnZpY2UsIHRvT2JzZXJ2YWJsZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnW21uZy1tZW51aXRlbV0nLFxuICAgIHRlbXBsYXRlVXJsOiAnbWVudS1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgICBpbXBvcnRzOiBbTmdDbGFzcywgUmlwcGxlTW9kdWxlLCBUb29sdGlwTW9kdWxlLCBSb3V0ZXJNb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICB0cmlnZ2VyKCdjaGlsZHJlbicsIFtcbiAgICAgICAgICAgIHN0YXRlKFxuICAgICAgICAgICAgICAgICdjb2xsYXBzZWQnLFxuICAgICAgICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMCdcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0YXRlKFxuICAgICAgICAgICAgICAgICdleHBhbmRlZCcsXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcqJ1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhdGUoXG4gICAgICAgICAgICAgICAgJ2hpZGRlbicsXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnbm9uZSdcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0YXRlKFxuICAgICAgICAgICAgICAgICd2aXNpYmxlJyxcbiAgICAgICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdibG9jaydcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ2NvbGxhcHNlZCA8PT4gZXhwYW5kZWQnLCBhbmltYXRlKCc0MDBtcyBjdWJpYy1iZXppZXIoMC44NiwgMCwgMC4wNywgMSknKSlcbiAgICAgICAgXSlcbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tjbGFzcy5hY3RpdmUtbWVudWl0ZW1dJzogJyFyb290KCkgJiYgYWN0aXZlKCknLFxuICAgICAgICAnW2NsYXNzLmxheW91dC1yb290LW1lbnVpdGVtXSc6ICdyb290KCknXG4gICAgfSxcbiAgICBwcm92aWRlcnM6IFtQZXJtaXNzaW9uU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgTWVudUl0ZW1Db21wb25lbnQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbWVudVNlcnZpY2UgPSBpbmplY3QoTWVudVNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcGVybWlzc2lvblNlcnZpY2UgPSBpbmplY3QoUGVybWlzc2lvblNlcnZpY2UpO1xuICAgIHB1YmxpYyByZWFkb25seSBsYXlvdXQgPSBpbmplY3QoTGF5b3V0U2VydmljZSk7XG5cbiAgICBwdWJsaWMgaXRlbSA9IGlucHV0LnJlcXVpcmVkPEludGVybmFsQ29tbW9uc01lbnVJdGVtPigpO1xuICAgIHB1YmxpYyByb290ID0gaW5wdXQoZmFsc2UpO1xuICAgIHB1YmxpYyB2aXNpYmxlQ2hhbmdlID0gb3V0cHV0PGJvb2xlYW4+KCk7XG5cbiAgICBwcml2YXRlIHN1Ym1lbnVFbFJlZiA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPignc3VibWVudScpO1xuXG4gICAgcHVibGljIGlzUGVybWl0dGVkID0gdG9TaWduYWwobmdUb09ic2VydmFibGUodGhpcy5pdGVtKS5waXBlKHN3aXRjaE1hcChpID0+IChpLnBlcm1pc3Npb25zID8gdGhpcy5wZXJtaXNzaW9uU2VydmljZS5pc01lbnVJdGVtVmlzaWJsZShpLnBlcm1pc3Npb25zLCBpLmNvbmZpZykgOiBvZih0cnVlKSkpKSk7XG4gICAgcHVibGljIGlzVmlzaWJsZUZyb21JdGVtU2V0dGluZ3MgPSB0b1NpZ25hbChcbiAgICAgICAgbmdUb09ic2VydmFibGUodGhpcy5pdGVtKS5waXBlKHN3aXRjaE1hcChpID0+ICh0eXBlb2YgaS5pc1Zpc2libGUgPT09ICdmdW5jdGlvbicgPyB0b09ic2VydmFibGUoaS5pc1Zpc2libGUoaS5jb25maWcpKSA6IG9mKGkuaXNWaXNpYmxlID8/IHRydWUpKSkpXG4gICAgKTtcbiAgICBwcml2YXRlIG1lbnVDaGFuZ2VFdmVudHMgPSB0b1NpZ25hbCh0aGlzLm1lbnVTZXJ2aWNlLm1lbnVDaGFuZ2UkLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKHYxLCB2MikgPT4gdjEua2V5ID09PSB2Mi5rZXkpKSk7XG4gICAgcHVibGljIGFjdGl2ZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmlzUGVybWl0dGVkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtZW51Q2hhbmdlRXZlbnQgPSB0aGlzLm1lbnVDaGFuZ2VFdmVudHMoKTtcbiAgICAgICAgaWYgKG1lbnVDaGFuZ2VFdmVudCkge1xuICAgICAgICAgICAgcmV0dXJuIG1lbnVDaGFuZ2VFdmVudC5ldmVudFR5cGUgPT09ICdyZXNldCcgfHwgIW1lbnVDaGFuZ2VFdmVudC5rZXlcbiAgICAgICAgICAgICAgICA/IGZhbHNlXG4gICAgICAgICAgICAgICAgOiB0aGlzLml0ZW0oKS5rZXkgPT09IG1lbnVDaGFuZ2VFdmVudC5rZXkgfHwgbWVudUNoYW5nZUV2ZW50LmtleS5zdGFydHNXaXRoKCh0aGlzLml0ZW0oKS5rZXkgPz8gJycpICsgJy0nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG4gICAgcHVibGljIHZpc2libGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGlzUGVybWl0dGVkID0gdGhpcy5pc1Blcm1pdHRlZCgpO1xuICAgICAgICBpZiAoIWlzUGVybWl0dGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmlzVmlzaWJsZUZyb21JdGVtU2V0dGluZ3MoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5pdGVtKCkuaXRlbXMoKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgQXJyYXkuaXNBcnJheShpdGVtcykgJiZcbiAgICAgICAgICAgIGl0ZW1zLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgIHRoaXMuaXRlbSgpXG4gICAgICAgICAgICAgICAgLml0ZW1zVmlzaWJpbGl0eSgpXG4gICAgICAgICAgICAgICAgLmV2ZXJ5KHYgPT4gIXYoKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG5cbiAgICBwdWJsaWMgc3VibWVudUFuaW1hdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMubGF5b3V0LmlzRGVza3RvcCgpICYmICh0aGlzLmxheW91dC5pc1NsaW0oKSB8fCB0aGlzLmxheW91dC5pc1NsaW1QbHVzKCkpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sYXlvdXQuc3VibWVudU92ZXJsYXlLZXkoKSA9PT0gdGhpcy5pdGVtKCkua2V5ID8gJ3Zpc2libGUnIDogJ2hpZGRlbic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yb290KCkgPyAnZXhwYW5kZWQnIDogdGhpcy5hY3RpdmUoKSA/ICdleHBhbmRlZCcgOiAnY29sbGFwc2VkJztcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5yb290KCkgJiYgdGhpcy5hY3RpdmUoKSAmJiB0aGlzLmxheW91dC5pc0Rlc2t0b3AoKSAmJiAodGhpcy5sYXlvdXQuaXNTbGltKCkgfHwgdGhpcy5sYXlvdXQuaXNTbGltUGx1cygpKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlUG9zaXRpb24odGhpcy5zdWJtZW51RWxSZWYoKT8ubmF0aXZlRWxlbWVudCwgdGhpcy5zdWJtZW51RWxSZWYoKT8ubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGl0ZW1DbGljayhldmVudDogRXZlbnQpIHtcbiAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMuaXRlbSgpO1xuICAgICAgICAvLyBhdm9pZCBwcm9jZXNzaW5nIGRpc2FibGVkIGl0ZW1zXG4gICAgICAgIGlmIChpdGVtLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGl0ZW0uaGFzSXRlbXNPckxhenlDaGlsZHJlbigpKSB7XG4gICAgICAgICAgICAvLyBvcGVuIHN1Ym1lbnUgaW4gc2xpbS9zbGltKyBtb2RlXG4gICAgICAgICAgICBpZiAodGhpcy5yb290KCkgJiYgKHRoaXMubGF5b3V0LmlzU2xpbSgpIHx8IHRoaXMubGF5b3V0LmlzU2xpbVBsdXMoKSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxheW91dC5vbk92ZXJsYXlTdWJtZW51T3BlbihpdGVtLmtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5sYXlvdXQuaXNNb2JpbGUoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMubGF5b3V0LnN0YXRlLnVwZGF0ZShzdGF0ZSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgc3RhdGljTWVudU1vYmlsZUFjdGl2ZTogZmFsc2VcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5sYXlvdXQuaXNTbGltKCkgfHwgdGhpcy5sYXlvdXQuaXNTbGltUGx1cygpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXlvdXQuc3RhdGUudXBkYXRlKHN0YXRlID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgICAgICAgICBtZW51SG92ZXJBY3RpdmU6IGZhbHNlXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5sYXlvdXQuc3VibWVudU92ZXJsYXlLZXkoKSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXlvdXQub25PdmVybGF5U3VibWVudUNsb3NlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblN1Ym1lbnVBbmltYXRlZChldmVudDogQW5pbWF0aW9uRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LnRvU3RhdGUgPT09ICd2aXNpYmxlJyAmJiB0aGlzLmxheW91dC5pc0Rlc2t0b3AoKSAmJiAodGhpcy5sYXlvdXQuaXNTbGltKCkgfHwgdGhpcy5sYXlvdXQuaXNTbGltUGx1cygpKSkge1xuICAgICAgICAgICAgY29uc3QgZWwgPSA8SFRNTFVMaXN0RWxlbWVudD5ldmVudC5lbGVtZW50O1xuICAgICAgICAgICAgY29uc3QgZWxQYXJlbnQgPSA8SFRNTFVMaXN0RWxlbWVudD5lbC5wYXJlbnRFbGVtZW50O1xuICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVQb3NpdGlvbihlbCwgZWxQYXJlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2hpbGRWaXNpYmxlQ2hhbmdlKHZpc2libGU6IGJvb2xlYW4sIGl0ZW06IEludGVybmFsQ29tbW9uc01lbnVJdGVtLCBpZHg6IG51bWJlcikge1xuICAgICAgICB0aGlzLml0ZW0oKS5pdGVtc1Zpc2liaWxpdHkoKVtpZHhdPy5zZXQodmlzaWJsZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVQb3NpdGlvbihvdmVybGF5OiBIVE1MRWxlbWVudCwgdGFyZ2V0OiBIVE1MRWxlbWVudCkge1xuICAgICAgICBpZiAob3ZlcmxheSkge1xuICAgICAgICAgICAgY29uc3QgdG9wID0gdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcbiAgICAgICAgICAgIGNvbnN0IHZIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG4gICAgICAgICAgICBjb25zdCBvSGVpZ2h0ID0gb3ZlcmxheS5vZmZzZXRIZWlnaHQ7XG5cbiAgICAgICAgICAgIC8vIHJlc2V0XG4gICAgICAgICAgICBvdmVybGF5LnN0eWxlLnRvcCA9ICcnO1xuICAgICAgICAgICAgb3ZlcmxheS5zdHlsZS5sZWZ0ID0gJyc7XG4gICAgICAgICAgICBpZiAodGhpcy5sYXlvdXQuaXNTbGltKCkgfHwgdGhpcy5sYXlvdXQuaXNTbGltUGx1cygpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaGVpZ2h0ID0gdG9wICsgb0hlaWdodDtcbiAgICAgICAgICAgICAgICBvdmVybGF5LnN0eWxlLnRvcCA9IHZIZWlnaHQgPCBoZWlnaHQgPyBgJHt0b3AgLSAoaGVpZ2h0IC0gdkhlaWdodCl9cHhgIDogYCR7dG9wfXB4YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIkBpZiAodmlzaWJsZSgpKSB7XG4gICAgQGlmIChyb290KCkpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dC1tZW51aXRlbS1yb290LXRleHRcIj5cbiAgICAgICAgICAgIHt7IGl0ZW0oKS5sYWJlbCEgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuICAgIEBpZiAoIWl0ZW0oKS5ocmVmKSB7XG4gICAgICAgIEBpZiAoIWl0ZW0oKS5yb3V0ZXJMaW5rIHx8IGl0ZW0oKS5oYXNJdGVtcygpKSB7XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIFthdHRyLmhyZWZdPVwiaXRlbSgpLmhyZWZcIlxuICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cImxheW91dC5pc1NsaW0oKSB8fCBsYXlvdXQuaXNTbGltUGx1cygpID8gbnVsbCA6IGl0ZW0oKS5yb3V0ZXJMaW5rXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiaXRlbUNsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIml0ZW1DbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbYXR0ci50YXJnZXRdPVwiaXRlbSgpLnRhcmdldFwiXG4gICAgICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiMFwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiaXRlbSgpLmNsYXNzTmFtZSA/PyAnJyArICh0aGlzLmFjdGl2ZSgpID8gJyBhY3RpdmUtcm91dGUnIDogJycpXCJcbiAgICAgICAgICAgICAgICBwUmlwcGxlPlxuICAgICAgICAgICAgICAgIDxpIFtuZ0NsYXNzXT1cIml0ZW0oKS5pY29uID8/ICcnXCIgY2xhc3M9XCJsYXlvdXQtbWVudWl0ZW0taWNvblwiPjwvaT5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxheW91dC1tZW51aXRlbS10ZXh0XCI+e3sgaXRlbSgpLmxhYmVsISB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICBAaWYgKGl0ZW0oKS5oYXNJdGVtc09yTGF6eUNoaWxkcmVuKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1mdyBwaS1hbmdsZS1kb3duIGxheW91dC1zdWJtZW51LXRvZ2dsZXJcIj48L2k+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZiAoaXRlbSgpLmJhZGdlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudWl0ZW0tYmFkZ2VcIj57eyBpdGVtKCkuYmFkZ2UgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9hPlxuICAgICAgICB9IEBlbHNlIGlmIChpdGVtKCkucm91dGVyTGluayAmJiAhaXRlbSgpLmhhc0l0ZW1zKCkpIHtcbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIml0ZW1DbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJpdGVtKCkucm91dGVyTGlua1wiXG4gICAgICAgICAgICAgICAgW2F0dHIudGFyZ2V0XT1cIml0ZW0oKS50YXJnZXRcIlxuICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cIjBcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIml0ZW0oKS5jbGFzc05hbWUgPz8gJycgKyAodGhpcy5hY3RpdmUoKSA/ICcgYWN0aXZlLXJvdXRlJyA6ICcnKVwiXG4gICAgICAgICAgICAgICAgW3ByZXNlcnZlRnJhZ21lbnRdPVwiaXRlbSgpLnByZXNlcnZlRnJhZ21lbnRcIlxuICAgICAgICAgICAgICAgIFtza2lwTG9jYXRpb25DaGFuZ2VdPVwiaXRlbSgpLnNraXBMb2NhdGlvbkNoYW5nZVwiXG4gICAgICAgICAgICAgICAgW3JlcGxhY2VVcmxdPVwiaXRlbSgpLnJlcGxhY2VVcmxcIlxuICAgICAgICAgICAgICAgIFtxdWVyeVBhcmFtc109XCJpdGVtKCkucXVlcnlQYXJhbXNcIlxuICAgICAgICAgICAgICAgIHBSaXBwbGU+XG4gICAgICAgICAgICAgICAgPGkgW25nQ2xhc3NdPVwiaXRlbSgpLmljb24gPz8gJydcIiBjbGFzcz1cImxheW91dC1tZW51aXRlbS1pY29uXCI+PC9pPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGF5b3V0LW1lbnVpdGVtLXRleHRcIj57eyBpdGVtKCkubGFiZWwhIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIEBpZiAoaXRlbSgpLmhhc0l0ZW1zT3JMYXp5Q2hpbGRyZW4oKSkge1xuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWZ3IHBpLWFuZ2xlLWRvd24gbGF5b3V0LXN1Ym1lbnUtdG9nZ2xlclwiPjwvaT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGlmIChpdGVtKCkuYmFkZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51aXRlbS1iYWRnZVwiPnt7IGl0ZW0oKS5iYWRnZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgICAgQGlmICghaXRlbSgpLmhhc0l0ZW1zKCkpIHtcbiAgICAgICAgICAgIDxhIChjbGljayk9XCJpdGVtQ2xpY2soJGV2ZW50KVwiIFthdHRyLmhyZWZdPVwiaXRlbSgpLmhyZWZcIiBbYXR0ci50YXJnZXRdPVwiaXRlbSgpLnRhcmdldFwiIFthdHRyLnRhYmluZGV4XT1cIjBcIiBbbmdDbGFzc109XCJpdGVtKCkuY2xhc3NOYW1lID8/ICcnXCIgcFJpcHBsZT5cbiAgICAgICAgICAgICAgICA8aSBbbmdDbGFzc109XCJpdGVtKCkuaWNvbiA/PyAnJ1wiIGNsYXNzPVwibGF5b3V0LW1lbnVpdGVtLWljb25cIj48L2k+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYXlvdXQtbWVudWl0ZW0tdGV4dFwiPnt7IGl0ZW0oKS5sYWJlbCEgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgQGlmIChpdGVtKCkuaGFzSXRlbXNPckxhenlDaGlsZHJlbigpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktZncgcGktYW5nbGUtZG93biBsYXlvdXQtc3VibWVudS10b2dnbGVyXCI+PC9pPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYgKGl0ZW0oKS5iYWRnZSkge1xuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnVpdGVtLWJhZGdlXCI+e3sgaXRlbSgpLmJhZGdlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgfVxuICAgIH1cbiAgICBAaWYgKGl0ZW0oKS5oYXNJdGVtcygpKSB7XG4gICAgICAgIDx1bCAjc3VibWVudSBbQGNoaWxkcmVuXT1cInN1Ym1lbnVBbmltYXRpb24oKVwiIChAY2hpbGRyZW4uZG9uZSk9XCJvblN1Ym1lbnVBbmltYXRlZCgkZXZlbnQpXCI+XG4gICAgICAgICAgICBAZm9yIChjaGlsZCBvZiBpdGVtKCkuaXRlbXMoKTsgdHJhY2sgY2hpbGQ7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgPGxpIG1uZy1tZW51aXRlbSBbaXRlbV09XCJjaGlsZFwiIFtjbGFzc109XCJjaGlsZC5iYWRnZUNsYXNzTmFtZVwiICh2aXNpYmxlQ2hhbmdlKT1cIm9uQ2hpbGRWaXNpYmxlQ2hhbmdlKCRldmVudCwgY2hpbGQsIGkpXCI+PC9saT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC91bD5cbiAgICB9XG59XG4iXX0=
@@ -1,36 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, effect, inject, untracked } from '@angular/core';
2
- import { toSignal } from '@angular/core/rxjs-interop';
3
- import { ActivatedRoute } from '@angular/router';
4
- import { COMMONS_LAYOUT_FEATURE_CONFIG_IT, LayoutService, MenuService } from '@mediusinc/mng-commons-layout';
5
- import { MenuItemComponent } from './menu-item.component';
6
- import * as i0 from "@angular/core";
7
- export class MenuComponent {
8
- constructor() {
9
- this.route = inject(ActivatedRoute);
10
- this.config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, { optional: true });
11
- this.layout = inject(LayoutService);
12
- this.menuService = inject(MenuService);
13
- this.routeData = toSignal(this.route.data);
14
- effect(() => {
15
- let items = [];
16
- if (this.config?.menuItems && Array.isArray(this.config.menuItems)) {
17
- items = this.config.menuItems;
18
- }
19
- else if (Array.isArray(this.routeData()?.menuItems)) {
20
- items = this.routeData().menuItems;
21
- }
22
- // Wraps menu items
23
- if (!(this.layout.isSlim() || this.layout.isSlimPlus())) {
24
- items = [{ items }];
25
- }
26
- untracked(() => this.menuService.setItems(items));
27
- });
28
- }
29
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: MenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
30
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: MenuComponent, isStandalone: true, selector: "mng-menu", ngImport: i0, template: "<ul class=\"layout-menu\">\n @for (item of menuService.menuItems(); track item) {\n @if (!item.separator) {\n <li mng-menuitem [item]=\"item\" [root]=\"true\"></li>\n }\n @if (item.separator) {\n <li class=\"menu-separator\"></li>\n }\n }\n</ul>\n", dependencies: [{ kind: "component", type: MenuItemComponent, selector: "[mng-menuitem]", inputs: ["item", "root"], outputs: ["visibleChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
31
- }
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: MenuComponent, decorators: [{
33
- type: Component,
34
- args: [{ standalone: true, selector: 'mng-menu', imports: [MenuItemComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ul class=\"layout-menu\">\n @for (item of menuService.menuItems(); track item) {\n @if (!item.separator) {\n <li mng-menuitem [item]=\"item\" [root]=\"true\"></li>\n }\n @if (item.separator) {\n <li class=\"menu-separator\"></li>\n }\n }\n</ul>\n" }]
35
- }], ctorParameters: () => [] });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL21lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM1RixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDcEQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBQyxnQ0FBZ0MsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFHM0csT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7O0FBU3hELE1BQU0sT0FBTyxhQUFhO0lBUXRCO1FBUGlCLFVBQUssR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDL0IsV0FBTSxHQUFHLE1BQU0sQ0FBQyxnQ0FBZ0MsRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBQ3BFLFdBQU0sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDaEMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFM0MsY0FBUyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBR3pDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDUixJQUFJLEtBQUssR0FBc0IsRUFBRSxDQUFDO1lBQ2xDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxTQUFTLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pFLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztZQUNsQyxDQUFDO2lCQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBRSxJQUFJLENBQUMsU0FBUyxFQUFtQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RGLEtBQUssR0FBSSxJQUFJLENBQUMsU0FBUyxFQUF1QixDQUFDLFNBQVUsQ0FBQztZQUM5RCxDQUFDO1lBQ0QsbUJBQW1CO1lBQ25CLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RELEtBQUssR0FBRyxDQUFDLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQztZQUN0QixDQUFDO1lBRUQsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOytHQXZCUSxhQUFhO21HQUFiLGFBQWEsb0VDaEIxQixpVEFVQSw0Q0RFYyxpQkFBaUI7OzRGQUlsQixhQUFhO2tCQVB6QixTQUFTO2lDQUNNLElBQUksWUFDTixVQUFVLFdBQ1gsQ0FBQyxpQkFBaUIsQ0FBQyxtQkFFWCx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBlZmZlY3QsIGluamVjdCwgdW50cmFja2VkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dG9TaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7Q09NTU9OU19MQVlPVVRfRkVBVFVSRV9DT05GSUdfSVQsIExheW91dFNlcnZpY2UsIE1lbnVTZXJ2aWNlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zLWxheW91dCc7XG5pbXBvcnQge0NvbW1vbnNNZW51SXRlbSwgQ29tbW9uc1JvdXRlRGF0YX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcblxuaW1wb3J0IHtNZW51SXRlbUNvbXBvbmVudH0gZnJvbSAnLi9tZW51LWl0ZW0uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ21uZy1tZW51JyxcbiAgICBpbXBvcnRzOiBbTWVudUl0ZW1Db21wb25lbnRdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBNZW51Q29tcG9uZW50IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZyA9IGluamVjdChDT01NT05TX0xBWU9VVF9GRUFUVVJFX0NPTkZJR19JVCwge29wdGlvbmFsOiB0cnVlfSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBsYXlvdXQgPSBpbmplY3QoTGF5b3V0U2VydmljZSk7XG4gICAgcHVibGljIHJlYWRvbmx5IG1lbnVTZXJ2aWNlID0gaW5qZWN0KE1lbnVTZXJ2aWNlKTtcblxuICAgIHB1YmxpYyByb3V0ZURhdGEgPSB0b1NpZ25hbCh0aGlzLnJvdXRlLmRhdGEpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBsZXQgaXRlbXM6IENvbW1vbnNNZW51SXRlbVtdID0gW107XG4gICAgICAgICAgICBpZiAodGhpcy5jb25maWc/Lm1lbnVJdGVtcyAmJiBBcnJheS5pc0FycmF5KHRoaXMuY29uZmlnLm1lbnVJdGVtcykpIHtcbiAgICAgICAgICAgICAgICBpdGVtcyA9IHRoaXMuY29uZmlnLm1lbnVJdGVtcztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSgodGhpcy5yb3V0ZURhdGEoKSBhcyBDb21tb25zUm91dGVEYXRhIHwgdW5kZWZpbmVkKT8ubWVudUl0ZW1zKSkge1xuICAgICAgICAgICAgICAgIGl0ZW1zID0gKHRoaXMucm91dGVEYXRhKCkgYXMgQ29tbW9uc1JvdXRlRGF0YSkubWVudUl0ZW1zITtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFdyYXBzIG1lbnUgaXRlbXNcbiAgICAgICAgICAgIGlmICghKHRoaXMubGF5b3V0LmlzU2xpbSgpIHx8IHRoaXMubGF5b3V0LmlzU2xpbVBsdXMoKSkpIHtcbiAgICAgICAgICAgICAgICBpdGVtcyA9IFt7aXRlbXN9XTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdW50cmFja2VkKCgpID0+IHRoaXMubWVudVNlcnZpY2Uuc2V0SXRlbXMoaXRlbXMpKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPHVsIGNsYXNzPVwibGF5b3V0LW1lbnVcIj5cbiAgICBAZm9yIChpdGVtIG9mIG1lbnVTZXJ2aWNlLm1lbnVJdGVtcygpOyB0cmFjayBpdGVtKSB7XG4gICAgICAgIEBpZiAoIWl0ZW0uc2VwYXJhdG9yKSB7XG4gICAgICAgICAgICA8bGkgbW5nLW1lbnVpdGVtIFtpdGVtXT1cIml0ZW1cIiBbcm9vdF09XCJ0cnVlXCI+PC9saT5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKGl0ZW0uc2VwYXJhdG9yKSB7XG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJtZW51LXNlcGFyYXRvclwiPjwvbGk+XG4gICAgICAgIH1cbiAgICB9XG48L3VsPlxuIl19
@@ -1,87 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, inject, signal } from '@angular/core';
2
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
- import { FormsModule } from '@angular/forms';
4
- import { TranslateModule, TranslateService } from '@ngx-translate/core';
5
- import { Button } from 'primeng/button';
6
- import { DropdownModule } from 'primeng/dropdown';
7
- import { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';
8
- import { InputSwitchModule } from 'primeng/inputswitch';
9
- import { RadioButtonModule } from 'primeng/radiobutton';
10
- import { SelectButtonModule } from 'primeng/selectbutton';
11
- import { LayoutService } from '@mediusinc/mng-commons-layout';
12
- import { CommonsService } from '@mediusinc/mng-commons/core';
13
- import * as i0 from "@angular/core";
14
- import * as i1 from "@ngx-translate/core";
15
- import * as i2 from "primeng/radiobutton";
16
- import * as i3 from "@angular/forms";
17
- import * as i4 from "primeng/dropdown";
18
- import * as i5 from "primeng/selectbutton";
19
- const defaultColorSchemeOpts = [
20
- {
21
- value: 'auto',
22
- label: 'system'
23
- },
24
- {
25
- value: 'light',
26
- label: 'light'
27
- },
28
- {
29
- value: 'dark',
30
- label: 'dark'
31
- }
32
- ];
33
- export class SettingsComponent {
34
- constructor() {
35
- this.dynamicDialogConfig = inject(DynamicDialogConfig);
36
- this.dynamicDialogRef = inject(DynamicDialogRef);
37
- this.colorSchemeOptions = signal(defaultColorSchemeOpts);
38
- this.injector = this.dynamicDialogConfig.data.injector;
39
- this.translate = this.injector.get(TranslateService);
40
- this.commons = this.injector.get(CommonsService);
41
- this.layout = this.injector.get(LayoutService);
42
- this.menuModes = this.layout.menuModes;
43
- this.translate
44
- .stream('mngSettings.title')
45
- .pipe(takeUntilDestroyed())
46
- .subscribe(t => {
47
- setTimeout(() => (this.dynamicDialogConfig.header = t));
48
- });
49
- const translateKey = 'mngSettings.colorScheme.options';
50
- this.translate
51
- .stream(translateKey)
52
- .pipe(takeUntilDestroyed())
53
- .subscribe(t => {
54
- if (t === translateKey) {
55
- this.colorSchemeOptions.set(defaultColorSchemeOpts);
56
- }
57
- else {
58
- this.colorSchemeOptions.update(options => options.map(o => ({
59
- value: o.value,
60
- label: `${t[o.value]}`
61
- })));
62
- }
63
- });
64
- }
65
- switchLocale(language) {
66
- this.commons.setAppLocale(language);
67
- }
68
- switchDataLocale(language) {
69
- this.commons.setAppDataLocale(language);
70
- }
71
- onMenuModeChange(mode) {
72
- this.layout.onMenuModeChange(mode);
73
- }
74
- onColorSchemeChange(scheme) {
75
- this.layout.setColorScheme(scheme);
76
- }
77
- closeDialog() {
78
- this.dynamicDialogRef.close();
79
- }
80
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: SettingsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
81
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: SettingsComponent, isStandalone: true, selector: "mng-settings", ngImport: i0, template: "<div class=\"h-full flex flex-column\">\n <div class=\"flex-grow-1 mng-action-editor-form-container\">\n @if (commons.appLocales().length > 1 || commons.appDataLocales().length > 1) {\n <h5>{{ 'mngSettings.locales' | translate }}</h5>\n <div class=\"formgrid grid\">\n @if (commons.appLocales().length > 1) {\n <div class=\"field pr-4\">\n <i class=\"pi pi-fw pi-globe\"></i>\n <p-dropdown [ngModel]=\"commons.appLocale()\" [options]=\"commons.appLocales()\" (onChange)=\"switchLocale($event.value)\"></p-dropdown>\n </div>\n }\n @if (commons.appDataLocales().length > 1) {\n <div class=\"field pr-4\">\n <i class=\"pi pi-fw pi-database\"></i>\n <p-dropdown [ngModel]=\"commons.appDataLocale()\" [options]=\"commons.appDataLocales()\" (onChange)=\"switchDataLocale($event.value)\"></p-dropdown>\n </div>\n }\n </div>\n }\n\n <h5>{{ 'mngSettings.colorScheme.title' | translate }}</h5>\n <div class=\"formgrid grid\">\n <p-selectButton\n [options]=\"colorSchemeOptions()\"\n [ngModel]=\"layout.colorSchemeSetting()\"\n (ngModelChange)=\"onColorSchemeChange($event)\"\n optionLabel=\"label\"\n optionValue=\"value\"\n allowEmpty=\"false\" />\n </div>\n\n @if (menuModes.length > 1) {\n <h5>{{ 'mngSettings.menuMode.title' | translate }}</h5>\n <div class=\"formgrid grid\">\n @for (mode of menuModes; track mode) {\n <div class=\"field-radiobutton col-6 md:col-4\">\n <p-radioButton name=\"category\" [value]=\"mode\" [ngModel]=\"layout.menuMode()\" (ngModelChange)=\"onMenuModeChange(mode)\" />\n <label [for]=\"mode\" class=\"ml-2\">\n {{ 'mngSettings.menuMode.' + mode | translate }}\n </label>\n </div>\n }\n </div>\n }\n\n <div class=\"flex flex-row justify-content-between mng-action-editor-footer-container\">\n <div></div>\n <div>\n <p-button (onClick)=\"closeDialog()\" [label]=\"'general.close' | translate\" icon=\"pi pi-times\" styleClass=\"p-button-primary p-button-text\" />\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: RadioButtonModule }, { kind: "component", type: i2.RadioButton, selector: "p-radioButton", inputs: ["value", "formControlName", "name", "disabled", "label", "variant", "tabindex", "inputId", "ariaLabelledBy", "ariaLabel", "style", "styleClass", "labelStyleClass", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i4.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "autoShowPanelOnPrintableCharacterKeyDown", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "ngmodule", type: InputSwitchModule }, { kind: "ngmodule", type: SelectButtonModule }, { kind: "component", type: i5.SelectButton, selector: "p-selectButton", inputs: ["options", "optionLabel", "optionValue", "optionDisabled", "unselectable", "tabindex", "multiple", "allowEmpty", "style", "styleClass", "ariaLabelledBy", "disabled", "dataKey", "autofocus"], outputs: ["onOptionClick", "onChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
82
- }
83
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: SettingsComponent, decorators: [{
84
- type: Component,
85
- args: [{ standalone: true, selector: 'mng-settings', imports: [TranslateModule, RadioButtonModule, FormsModule, Button, DropdownModule, InputSwitchModule, SelectButtonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"h-full flex flex-column\">\n <div class=\"flex-grow-1 mng-action-editor-form-container\">\n @if (commons.appLocales().length > 1 || commons.appDataLocales().length > 1) {\n <h5>{{ 'mngSettings.locales' | translate }}</h5>\n <div class=\"formgrid grid\">\n @if (commons.appLocales().length > 1) {\n <div class=\"field pr-4\">\n <i class=\"pi pi-fw pi-globe\"></i>\n <p-dropdown [ngModel]=\"commons.appLocale()\" [options]=\"commons.appLocales()\" (onChange)=\"switchLocale($event.value)\"></p-dropdown>\n </div>\n }\n @if (commons.appDataLocales().length > 1) {\n <div class=\"field pr-4\">\n <i class=\"pi pi-fw pi-database\"></i>\n <p-dropdown [ngModel]=\"commons.appDataLocale()\" [options]=\"commons.appDataLocales()\" (onChange)=\"switchDataLocale($event.value)\"></p-dropdown>\n </div>\n }\n </div>\n }\n\n <h5>{{ 'mngSettings.colorScheme.title' | translate }}</h5>\n <div class=\"formgrid grid\">\n <p-selectButton\n [options]=\"colorSchemeOptions()\"\n [ngModel]=\"layout.colorSchemeSetting()\"\n (ngModelChange)=\"onColorSchemeChange($event)\"\n optionLabel=\"label\"\n optionValue=\"value\"\n allowEmpty=\"false\" />\n </div>\n\n @if (menuModes.length > 1) {\n <h5>{{ 'mngSettings.menuMode.title' | translate }}</h5>\n <div class=\"formgrid grid\">\n @for (mode of menuModes; track mode) {\n <div class=\"field-radiobutton col-6 md:col-4\">\n <p-radioButton name=\"category\" [value]=\"mode\" [ngModel]=\"layout.menuMode()\" (ngModelChange)=\"onMenuModeChange(mode)\" />\n <label [for]=\"mode\" class=\"ml-2\">\n {{ 'mngSettings.menuMode.' + mode | translate }}\n </label>\n </div>\n }\n </div>\n }\n\n <div class=\"flex flex-row justify-content-between mng-action-editor-footer-container\">\n <div></div>\n <div>\n <p-button (onClick)=\"closeDialog()\" [label]=\"'general.close' | translate\" icon=\"pi pi-times\" styleClass=\"p-button-primary p-button-text\" />\n </div>\n </div>\n </div>\n</div>\n" }]
86
- }], ctorParameters: () => [] });
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc2V0dGluZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBWSxNQUFNLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUMsZUFBZSxFQUFFLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUV4RCxPQUFPLEVBQWlCLGFBQWEsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQzVFLE9BQU8sRUFBYyxjQUFjLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7OztBQU94RSxNQUFNLHNCQUFzQixHQUF3QjtJQUNoRDtRQUNJLEtBQUssRUFBRSxNQUFNO1FBQ2IsS0FBSyxFQUFFLFFBQVE7S0FDbEI7SUFD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QUFlLDJGQUFFLGlCQUFpQiw0VUFBRSxXQUFXLCtWQUFFLE1BQU0scVZBQUUsY0FBYyx1dENBQUUsaUJBQWlCLDhCQUFFLGtCQUFrQjs7NEZBSS9HLGlCQUFpQjtrQkFQN0IsU0FBUztpQ0FDTSxJQUFJLFlBQ04sY0FBYyxXQUNmLENBQUMsZUFBZSxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixDQUFDLG1CQUV4Ryx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbmplY3RvciwgaW5qZWN0LCBzaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7Rm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtCdXR0b259IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcbmltcG9ydCB7RHJvcGRvd25Nb2R1bGV9IGZyb20gJ3ByaW1lbmcvZHJvcGRvd24nO1xuaW1wb3J0IHtEeW5hbWljRGlhbG9nQ29uZmlnLCBEeW5hbWljRGlhbG9nUmVmfSBmcm9tICdwcmltZW5nL2R5bmFtaWNkaWFsb2cnO1xuaW1wb3J0IHtJbnB1dFN3aXRjaE1vZHVsZX0gZnJvbSAncHJpbWVuZy9pbnB1dHN3aXRjaCc7XG5pbXBvcnQge1JhZGlvQnV0dG9uTW9kdWxlfSBmcm9tICdwcmltZW5nL3JhZGlvYnV0dG9uJztcbmltcG9ydCB7U2VsZWN0QnV0dG9uTW9kdWxlfSBmcm9tICdwcmltZW5nL3NlbGVjdGJ1dHRvbic7XG5cbmltcG9ydCB7TGF5b3V0TWVudU1vZGUsIExheW91dFNlcnZpY2V9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMtbGF5b3V0JztcbmltcG9ydCB7Q29sb3JTY2hlbWUsIENvbW1vbnNTZXJ2aWNlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuXG5pbnRlcmZhY2UgQ29sb3JTY2hlbWVPcHRpb24ge1xuICAgIHZhbHVlOiBDb2xvclNjaGVtZTtcbiAgICBsYWJlbDogc3RyaW5nO1xufVxuXG5jb25zdCBkZWZhdWx0Q29sb3JTY2hlbWVPcHRzOiBDb2xvclNjaGVtZU9wdGlvbltdID0gW1xuICAgIHtcbiAgICAgICAgdmFsdWU6ICdhdXRvJyxcbiAgICAgICAgbGFiZWw6ICdzeXN0ZW0nXG4gICAgfSxcbiAgICB7XG4gICAgICAgIHZhbHVlOiAnbGlnaHQnLFxuICAgICAgICBsYWJlbDogJ2xpZ2h0J1xuICAgIH0sXG4gICAge1xuICAgICAgICB2YWx1ZTogJ2RhcmsnLFxuICAgICAgICBsYWJlbDogJ2RhcmsnXG4gICAgfVxuXTtcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ21uZy1zZXR0aW5ncycsXG4gICAgaW1wb3J0czogW1RyYW5zbGF0ZU1vZHVsZSwgUmFkaW9CdXR0b25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBCdXR0b24sIERyb3Bkb3duTW9kdWxlLCBJbnB1dFN3aXRjaE1vZHVsZSwgU2VsZWN0QnV0dG9uTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFNldHRpbmdzQ29tcG9uZW50IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGR5bmFtaWNEaWFsb2dDb25maWcgPSBpbmplY3QoRHluYW1pY0RpYWxvZ0NvbmZpZyk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkeW5hbWljRGlhbG9nUmVmID0gaW5qZWN0KER5bmFtaWNEaWFsb2dSZWYpO1xuICAgIHB1YmxpYyByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3I7XG4gICAgcHVibGljIHJlYWRvbmx5IHRyYW5zbGF0ZTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29tbW9ucztcbiAgICBwdWJsaWMgcmVhZG9ubHkgbGF5b3V0O1xuXG4gICAgcHVibGljIHJlYWRvbmx5IG1lbnVNb2RlcztcblxuICAgIHB1YmxpYyBjb2xvclNjaGVtZU9wdGlvbnMgPSBzaWduYWwoZGVmYXVsdENvbG9yU2NoZW1lT3B0cyk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5pbmplY3RvciA9IHRoaXMuZHluYW1pY0RpYWxvZ0NvbmZpZy5kYXRhLmluamVjdG9yO1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuICAgICAgICB0aGlzLmNvbW1vbnMgPSB0aGlzLmluamVjdG9yLmdldChDb21tb25zU2VydmljZSk7XG4gICAgICAgIHRoaXMubGF5b3V0ID0gdGhpcy5pbmplY3Rvci5nZXQoTGF5b3V0U2VydmljZSk7XG4gICAgICAgIHRoaXMubWVudU1vZGVzID0gdGhpcy5sYXlvdXQubWVudU1vZGVzO1xuXG4gICAgICAgIHRoaXMudHJhbnNsYXRlXG4gICAgICAgICAgICAuc3RyZWFtKCdtbmdTZXR0aW5ncy50aXRsZScpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUodCA9PiB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiAodGhpcy5keW5hbWljRGlhbG9nQ29uZmlnLmhlYWRlciA9IHQpKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHRyYW5zbGF0ZUtleSA9ICdtbmdTZXR0aW5ncy5jb2xvclNjaGVtZS5vcHRpb25zJztcbiAgICAgICAgdGhpcy50cmFuc2xhdGVcbiAgICAgICAgICAgIC5zdHJlYW0odHJhbnNsYXRlS2V5KVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHQgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0ID09PSB0cmFuc2xhdGVLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2xvclNjaGVtZU9wdGlvbnMuc2V0KGRlZmF1bHRDb2xvclNjaGVtZU9wdHMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29sb3JTY2hlbWVPcHRpb25zLnVwZGF0ZShvcHRpb25zID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLm1hcChvID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG8udmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGAke3Rbby52YWx1ZV19YFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc3dpdGNoTG9jYWxlKGxhbmd1YWdlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5jb21tb25zLnNldEFwcExvY2FsZShsYW5ndWFnZSk7XG4gICAgfVxuXG4gICAgc3dpdGNoRGF0YUxvY2FsZShsYW5ndWFnZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuY29tbW9ucy5zZXRBcHBEYXRhTG9jYWxlKGxhbmd1YWdlKTtcbiAgICB9XG5cbiAgICBvbk1lbnVNb2RlQ2hhbmdlKG1vZGU6IExheW91dE1lbnVNb2RlKSB7XG4gICAgICAgIHRoaXMubGF5b3V0Lm9uTWVudU1vZGVDaGFuZ2UobW9kZSk7XG4gICAgfVxuXG4gICAgb25Db2xvclNjaGVtZUNoYW5nZShzY2hlbWU6IENvbG9yU2NoZW1lKSB7XG4gICAgICAgIHRoaXMubGF5b3V0LnNldENvbG9yU2NoZW1lKHNjaGVtZSk7XG4gICAgfVxuXG4gICAgY2xvc2VEaWFsb2coKSB7XG4gICAgICAgIHRoaXMuZHluYW1pY0RpYWxvZ1JlZi5jbG9zZSgpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJoLWZ1bGwgZmxleCBmbGV4LWNvbHVtblwiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMSBtbmctYWN0aW9uLWVkaXRvci1mb3JtLWNvbnRhaW5lclwiPlxuICAgICAgICBAaWYgKGNvbW1vbnMuYXBwTG9jYWxlcygpLmxlbmd0aCA+IDEgfHwgY29tbW9ucy5hcHBEYXRhTG9jYWxlcygpLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIDxoNT57eyAnbW5nU2V0dGluZ3MubG9jYWxlcycgfCB0cmFuc2xhdGUgfX08L2g1PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1ncmlkIGdyaWRcIj5cbiAgICAgICAgICAgICAgICBAaWYgKGNvbW1vbnMuYXBwTG9jYWxlcygpLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIHByLTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktZncgcGktZ2xvYmVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cC1kcm9wZG93biBbbmdNb2RlbF09XCJjb21tb25zLmFwcExvY2FsZSgpXCIgW29wdGlvbnNdPVwiY29tbW9ucy5hcHBMb2NhbGVzKClcIiAob25DaGFuZ2UpPVwic3dpdGNoTG9jYWxlKCRldmVudC52YWx1ZSlcIj48L3AtZHJvcGRvd24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYgKGNvbW1vbnMuYXBwRGF0YUxvY2FsZXMoKS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBwci00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWZ3IHBpLWRhdGFiYXNlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAtZHJvcGRvd24gW25nTW9kZWxdPVwiY29tbW9ucy5hcHBEYXRhTG9jYWxlKClcIiBbb3B0aW9uc109XCJjb21tb25zLmFwcERhdGFMb2NhbGVzKClcIiAob25DaGFuZ2UpPVwic3dpdGNoRGF0YUxvY2FsZSgkZXZlbnQudmFsdWUpXCI+PC9wLWRyb3Bkb3duPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIDxoNT57eyAnbW5nU2V0dGluZ3MuY29sb3JTY2hlbWUudGl0bGUnIHwgdHJhbnNsYXRlIH19PC9oNT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1ncmlkIGdyaWRcIj5cbiAgICAgICAgICAgIDxwLXNlbGVjdEJ1dHRvblxuICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cImNvbG9yU2NoZW1lT3B0aW9ucygpXCJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJsYXlvdXQuY29sb3JTY2hlbWVTZXR0aW5nKClcIlxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ29sb3JTY2hlbWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgb3B0aW9uTGFiZWw9XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgICAgYWxsb3dFbXB0eT1cImZhbHNlXCIgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgQGlmIChtZW51TW9kZXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgPGg1Pnt7ICdtbmdTZXR0aW5ncy5tZW51TW9kZS50aXRsZScgfCB0cmFuc2xhdGUgfX08L2g1PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1ncmlkIGdyaWRcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChtb2RlIG9mIG1lbnVNb2RlczsgdHJhY2sgbW9kZSkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtcmFkaW9idXR0b24gY29sLTYgbWQ6Y29sLTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwLXJhZGlvQnV0dG9uIG5hbWU9XCJjYXRlZ29yeVwiIFt2YWx1ZV09XCJtb2RlXCIgW25nTW9kZWxdPVwibGF5b3V0Lm1lbnVNb2RlKClcIiAobmdNb2RlbENoYW5nZSk9XCJvbk1lbnVNb2RlQ2hhbmdlKG1vZGUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cIm1vZGVcIiBjbGFzcz1cIm1sLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnbW5nU2V0dGluZ3MubWVudU1vZGUuJyArIG1vZGUgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1jb250ZW50LWJldHdlZW4gbW5nLWFjdGlvbi1lZGl0b3ItZm9vdGVyLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGRpdj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPHAtYnV0dG9uIChvbkNsaWNrKT1cImNsb3NlRGlhbG9nKClcIiBbbGFiZWxdPVwiJ2dlbmVyYWwuY2xvc2UnIHwgdHJhbnNsYXRlXCIgaWNvbj1cInBpIHBpLXRpbWVzXCIgc3R5bGVDbGFzcz1cInAtYnV0dG9uLXByaW1hcnkgcC1idXR0b24tdGV4dFwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -1,51 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, ElementRef, inject, signal } from '@angular/core';
2
- import { RouterModule } from '@angular/router';
3
- import { COMMONS_LAYOUT_FEATURE_CONFIG_IT, LayoutService } from '@mediusinc/mng-commons-layout';
4
- import { ComponentDirective } from '@mediusinc/mng-commons/core';
5
- import { MenuComponent } from './menu.component';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/router";
8
- export class SidebarComponent {
9
- constructor() {
10
- this.config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, { optional: true });
11
- this.layout = inject(LayoutService);
12
- this.el = inject(ElementRef);
13
- this.menuComponent = signal(this.config?.components?.menu === false ? undefined : (this.config?.components?.menu ?? MenuComponent));
14
- this.timeout = null;
15
- }
16
- onMouseEnter() {
17
- if (!this.layout.state().anchored) {
18
- if (this.timeout) {
19
- clearTimeout(this.timeout);
20
- this.timeout = null;
21
- }
22
- this.layout.state.update(state => ({
23
- ...state,
24
- sidebarActive: true
25
- }));
26
- }
27
- }
28
- onMouseLeave() {
29
- if (!this.layout.state().anchored) {
30
- if (!this.timeout) {
31
- this.timeout = setTimeout(() => this.layout.state.update(state => ({
32
- ...state,
33
- sidebarActive: false
34
- })), 300);
35
- }
36
- }
37
- }
38
- anchor() {
39
- this.layout.state.update(state => ({
40
- ...state,
41
- anchored: !state.anchored
42
- }));
43
- }
44
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: SidebarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
45
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: SidebarComponent, isStandalone: true, selector: "mng-sidebar", ngImport: i0, template: "<div class=\"layout-sidebar\" (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\n <div class=\"sidebar-header\">\n <a [routerLink]=\"['/']\" class=\"app-logo\">\n <div class=\"app-logo-small h-2rem\">\n @if (layout.appLogo()) {\n <img [src]=\"layout.appLogo()\" [alt]=\"'App logo'\" />\n }\n </div>\n <div class=\"app-logo-normal\">\n @if (layout.appLogo()) {\n <img class=\"h-2rem mr-3\" [src]=\"layout.appLogo()\" [alt]=\"'App logo'\" />\n }\n @if (layout.appLogoName()) {\n <img class=\"h-2rem\" [src]=\"layout.appLogoName()\" [alt]=\"'App name'\" />\n }\n </div>\n </a>\n <button class=\"layout-sidebar-anchor p-link z-2\" type=\"button\" (click)=\"anchor()\"></button>\n </div>\n\n @if (menuComponent()) {\n <div #menuContainer class=\"layout-menu-container\">\n <div [mngComponent]=\"menuComponent()\" [attachToHost]=\"true\"></div>\n </div>\n }\n</div>\n", dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: ComponentDirective, selector: "[mngComponent]", inputs: ["mngComponent", "injectionToken", "inputs", "attachToHost", "parentInjector"], outputs: ["instanceCreated"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
46
- }
47
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: SidebarComponent, decorators: [{
48
- type: Component,
49
- args: [{ standalone: true, selector: 'mng-sidebar', imports: [RouterModule, ComponentDirective], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"layout-sidebar\" (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\n <div class=\"sidebar-header\">\n <a [routerLink]=\"['/']\" class=\"app-logo\">\n <div class=\"app-logo-small h-2rem\">\n @if (layout.appLogo()) {\n <img [src]=\"layout.appLogo()\" [alt]=\"'App logo'\" />\n }\n </div>\n <div class=\"app-logo-normal\">\n @if (layout.appLogo()) {\n <img class=\"h-2rem mr-3\" [src]=\"layout.appLogo()\" [alt]=\"'App logo'\" />\n }\n @if (layout.appLogoName()) {\n <img class=\"h-2rem\" [src]=\"layout.appLogoName()\" [alt]=\"'App name'\" />\n }\n </div>\n </a>\n <button class=\"layout-sidebar-anchor p-link z-2\" type=\"button\" (click)=\"anchor()\"></button>\n </div>\n\n @if (menuComponent()) {\n <div #menuContainer class=\"layout-menu-container\">\n <div [mngComponent]=\"menuComponent()\" [attachToHost]=\"true\"></div>\n </div>\n }\n</div>\n" }]
50
- }] });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9zaWRlYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3NpZGViYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQVEsTUFBTSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFN0MsT0FBTyxFQUFDLGdDQUFnQyxFQUFFLGFBQWEsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQzlGLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBRS9ELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQzs7O0FBUy9DLE1BQU0sT0FBTyxnQkFBZ0I7SUFQN0I7UUFRcUIsV0FBTSxHQUFHLE1BQU0sQ0FBQyxnQ0FBZ0MsRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBQ3JFLFdBQU0sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDL0IsT0FBRSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVqQyxrQkFBYSxHQUFHLE1BQU0sQ0FBd0IsSUFBSSxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLElBQUksSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQ3JKLFlBQU8sR0FBeUMsSUFBSSxDQUFDO0tBb0NoRTtJQWxDRyxZQUFZO1FBQ1IsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2YsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDeEIsQ0FBQztZQUNELElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQy9CLEdBQUcsS0FBSztnQkFDUixhQUFhLEVBQUUsSUFBSTthQUN0QixDQUFDLENBQUMsQ0FBQztRQUNSLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWTtRQUNSLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2hCLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUNyQixHQUFHLEVBQUUsQ0FDRCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUMvQixHQUFHLEtBQUs7b0JBQ1IsYUFBYSxFQUFFLEtBQUs7aUJBQ3ZCLENBQUMsQ0FBQyxFQUNQLEdBQUcsQ0FDTixDQUFDO1lBQ04sQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTTtRQUNGLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDL0IsR0FBRyxLQUFLO1lBQ1IsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVE7U0FDNUIsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDOytHQXpDUSxnQkFBZ0I7bUdBQWhCLGdCQUFnQix1RUNmN0IsdW1DQTBCQSwyQ0RmYyxZQUFZLGdSQUFFLGtCQUFrQjs7NEZBSWpDLGdCQUFnQjtrQkFQNUIsU0FBUztpQ0FDTSxJQUFJLFlBQ04sYUFBYSxXQUNkLENBQUMsWUFBWSxFQUFFLGtCQUFrQixDQUFDLG1CQUUxQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBUeXBlLCBpbmplY3QsIHNpZ25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1JvdXRlck1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHtDT01NT05TX0xBWU9VVF9GRUFUVVJFX0NPTkZJR19JVCwgTGF5b3V0U2VydmljZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy1sYXlvdXQnO1xuaW1wb3J0IHtDb21wb25lbnREaXJlY3RpdmV9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5cbmltcG9ydCB7TWVudUNvbXBvbmVudH0gZnJvbSAnLi9tZW51LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdtbmctc2lkZWJhcicsXG4gICAgaW1wb3J0czogW1JvdXRlck1vZHVsZSwgQ29tcG9uZW50RGlyZWN0aXZlXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2lkZWJhci5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgU2lkZWJhckNvbXBvbmVudCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWcgPSBpbmplY3QoQ09NTU9OU19MQVlPVVRfRkVBVFVSRV9DT05GSUdfSVQsIHtvcHRpb25hbDogdHJ1ZX0pO1xuICAgIHB1YmxpYyByZWFkb25seSBsYXlvdXQgPSBpbmplY3QoTGF5b3V0U2VydmljZSk7XG4gICAgcHVibGljIHJlYWRvbmx5IGVsID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gICAgcHVibGljIG1lbnVDb21wb25lbnQgPSBzaWduYWw8VHlwZTxhbnk+IHwgdW5kZWZpbmVkPih0aGlzLmNvbmZpZz8uY29tcG9uZW50cz8ubWVudSA9PT0gZmFsc2UgPyB1bmRlZmluZWQgOiAodGhpcy5jb25maWc/LmNvbXBvbmVudHM/Lm1lbnUgPz8gTWVudUNvbXBvbmVudCkpO1xuICAgIHByaXZhdGUgdGltZW91dDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsID0gbnVsbDtcblxuICAgIG9uTW91c2VFbnRlcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLmxheW91dC5zdGF0ZSgpLmFuY2hvcmVkKSB7XG4gICAgICAgICAgICBpZiAodGhpcy50aW1lb3V0KSB7XG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7XG4gICAgICAgICAgICAgICAgdGhpcy50aW1lb3V0ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubGF5b3V0LnN0YXRlLnVwZGF0ZShzdGF0ZSA9PiAoe1xuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgICAgIHNpZGViYXJBY3RpdmU6IHRydWVcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTW91c2VMZWF2ZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmxheW91dC5zdGF0ZSgpLmFuY2hvcmVkKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMudGltZW91dCkge1xuICAgICAgICAgICAgICAgIHRoaXMudGltZW91dCA9IHNldFRpbWVvdXQoXG4gICAgICAgICAgICAgICAgICAgICgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxheW91dC5zdGF0ZS51cGRhdGUoc3RhdGUgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWRlYmFyQWN0aXZlOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgICAgICAzMDBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgYW5jaG9yKCkge1xuICAgICAgICB0aGlzLmxheW91dC5zdGF0ZS51cGRhdGUoc3RhdGUgPT4gKHtcbiAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgYW5jaG9yZWQ6ICFzdGF0ZS5hbmNob3JlZFxuICAgICAgICB9KSk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImxheW91dC1zaWRlYmFyXCIgKG1vdXNlZW50ZXIpPVwib25Nb3VzZUVudGVyKClcIiAobW91c2VsZWF2ZSk9XCJvbk1vdXNlTGVhdmUoKVwiPlxuICAgIDxkaXYgY2xhc3M9XCJzaWRlYmFyLWhlYWRlclwiPlxuICAgICAgICA8YSBbcm91dGVyTGlua109XCJbJy8nXVwiIGNsYXNzPVwiYXBwLWxvZ29cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtbG9nby1zbWFsbCBoLTJyZW1cIj5cbiAgICAgICAgICAgICAgICBAaWYgKGxheW91dC5hcHBMb2dvKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImxheW91dC5hcHBMb2dvKClcIiBbYWx0XT1cIidBcHAgbG9nbydcIiAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcC1sb2dvLW5vcm1hbFwiPlxuICAgICAgICAgICAgICAgIEBpZiAobGF5b3V0LmFwcExvZ28oKSkge1xuICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaC0ycmVtIG1yLTNcIiBbc3JjXT1cImxheW91dC5hcHBMb2dvKClcIiBbYWx0XT1cIidBcHAgbG9nbydcIiAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYgKGxheW91dC5hcHBMb2dvTmFtZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJoLTJyZW1cIiBbc3JjXT1cImxheW91dC5hcHBMb2dvTmFtZSgpXCIgW2FsdF09XCInQXBwIG5hbWUnXCIgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwibGF5b3V0LXNpZGViYXItYW5jaG9yIHAtbGluayB6LTJcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFuY2hvcigpXCI+PC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICBAaWYgKG1lbnVDb21wb25lbnQoKSkge1xuICAgICAgICA8ZGl2ICNtZW51Q29udGFpbmVyIGNsYXNzPVwibGF5b3V0LW1lbnUtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8ZGl2IFttbmdDb21wb25lbnRdPVwibWVudUNvbXBvbmVudCgpXCIgW2F0dGFjaFRvSG9zdF09XCJ0cnVlXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbjwvZGl2PlxuIl19
@@ -1,51 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, Injector, computed, inject, signal } from '@angular/core';
2
- import { DomSanitizer } from '@angular/platform-browser';
3
- import { TranslateModule } from '@ngx-translate/core';
4
- import { DialogService } from 'primeng/dynamicdialog';
5
- import { RippleModule } from 'primeng/ripple';
6
- import { StyleClassModule } from 'primeng/styleclass';
7
- import { COMMONS_LAYOUT_FEATURE_CONFIG_IT } from '@mediusinc/mng-commons-layout';
8
- import { CommonsService } from '@mediusinc/mng-commons/core';
9
- import { SettingsComponent } from './settings.component';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "@ngx-translate/core";
12
- import * as i2 from "primeng/ripple";
13
- import * as i3 from "primeng/styleclass";
14
- export class TopbarUserComponent {
15
- constructor() {
16
- this.injector = inject(Injector);
17
- this.dialogService = inject(DialogService);
18
- this.commons = inject(CommonsService);
19
- this.hrefJsVoid = inject(DomSanitizer).bypassSecurityTrustUrl('javascript:void(0)');
20
- this.config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, { optional: true });
21
- this.user = computed(() => this.commons.user());
22
- this.userRoles = computed(() => this.commons.userRoles());
23
- this.settingsDisabled = signal(this.config?.components?.settings === false);
24
- }
25
- logout(user, event) {
26
- if (typeof user?.logout === 'function') {
27
- event.preventDefault();
28
- event.stopPropagation();
29
- user.logout();
30
- }
31
- }
32
- openSettings() {
33
- if (this.config?.components?.settings === false) {
34
- return;
35
- }
36
- this.dialogService.open(this.config?.components?.settings ?? SettingsComponent, {
37
- modal: true,
38
- styleClass: 'mng-dialog mng-action-editor-dialog mng-dialog-xs',
39
- data: {
40
- injector: this.injector
41
- }
42
- });
43
- }
44
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: TopbarUserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
45
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: TopbarUserComponent, isStandalone: true, selector: "mng-topbar-user-component", ngImport: i0, template: "<a\n class=\"cursor-pointer lg:pr-4\"\n pStyleClass=\"@next\"\n enterFromClass=\"ng-hidden\"\n enterActiveClass=\"px-scalein\"\n leaveToClass=\"ng-hidden\"\n leaveActiveClass=\"px-fadeout\"\n [hideOnOutsideClick]=\"true\"\n pRipple>\n <i class=\"pi pi-fw pi-user text-2xl\"></i>\n <span class=\"hidden sm:inline-block\">&nbsp; {{ user()?.displayName ?? user()?.username }}</span>\n</a>\n<ul class=\"topbar-menu active-topbar-menu w-15rem z-5 ng-hidden border-round\">\n <li role=\"menuitem\">\n <a\n class=\"flex align-items-center transition-duration-200\"\n pStyleClass=\"@grandparent\"\n enterFromClass=\"ng-hidden\"\n enterActiveClass=\"px-scalein\"\n leaveToClass=\"ng-hidden\"\n leaveActiveClass=\"px-fadeout\">\n <i class=\"pi pi-fw pi-user text-base mr-2\"></i>\n <div>\n <strong>{{ user()?.displayName ?? user()?.username }}</strong>\n @if (userRoles().length > 0) {\n <small>\n <br />\n {{ userRoles() }}\n </small>\n }\n </div>\n </a>\n </li>\n @if (!settingsDisabled()) {\n <li role=\"menuitem\">\n <a\n [href]=\"hrefJsVoid\"\n (click)=\"openSettings()\"\n class=\"flex align-items-center transition-duration-200\"\n pStyleClass=\"@grandparent\"\n enterFromClass=\"ng-hidden\"\n enterActiveClass=\"px-scalein\"\n leaveToClass=\"ng-hidden\"\n leaveActiveClass=\"px-fadeout\">\n <i class=\"pi pi-fw pi-cog text-base mr-2\"></i>\n {{ 'mngSettings.title' | translate }}\n </a>\n </li>\n }\n @if (user()?.logout || user()?.logoutUrl) {\n <li role=\"menuitem\">\n <a\n [href]=\"user()?.logoutUrl ?? hrefJsVoid\"\n (click)=\"logout(user(), $event)\"\n class=\"flex align-items-center hover:text-primary-500 transition-duration-200\"\n pStyleClass=\"@grandparent\"\n enterFromClass=\"ng-hidden\"\n enterActiveClass=\"px-scalein\"\n leaveToClass=\"ng-hidden\"\n leaveActiveClass=\"px-fadeout\">\n <i class=\"pi pi-fw pi-sign-out text-base mr-2\"></i>\n <span>{{ 'mngTopbar.logout' | translate }}</span>\n </a>\n </li>\n }\n</ul>\n", dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: RippleModule }, { kind: "directive", type: i2.Ripple, selector: "[pRipple]" }, { kind: "ngmodule", type: StyleClassModule }, { kind: "directive", type: i3.StyleClass, selector: "[pStyleClass]", inputs: ["pStyleClass", "enterClass", "enterFromClass", "enterActiveClass", "enterToClass", "leaveClass", "leaveFromClass", "leaveActiveClass", "leaveToClass", "hideOnOutsideClick", "toggleClass", "hideOnEscape"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
46
- }
47
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: TopbarUserComponent, decorators: [{
48
- type: Component,
49
- args: [{ standalone: true, selector: 'mng-topbar-user-component', imports: [TranslateModule, RippleModule, StyleClassModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<a\n class=\"cursor-pointer lg:pr-4\"\n pStyleClass=\"@next\"\n enterFromClass=\"ng-hidden\"\n enterActiveClass=\"px-scalein\"\n leaveToClass=\"ng-hidden\"\n leaveActiveClass=\"px-fadeout\"\n [hideOnOutsideClick]=\"true\"\n pRipple>\n <i class=\"pi pi-fw pi-user text-2xl\"></i>\n <span class=\"hidden sm:inline-block\">&nbsp; {{ user()?.displayName ?? user()?.username }}</span>\n</a>\n<ul class=\"topbar-menu active-topbar-menu w-15rem z-5 ng-hidden border-round\">\n <li role=\"menuitem\">\n <a\n class=\"flex align-items-center transition-duration-200\"\n pStyleClass=\"@grandparent\"\n enterFromClass=\"ng-hidden\"\n enterActiveClass=\"px-scalein\"\n leaveToClass=\"ng-hidden\"\n leaveActiveClass=\"px-fadeout\">\n <i class=\"pi pi-fw pi-user text-base mr-2\"></i>\n <div>\n <strong>{{ user()?.displayName ?? user()?.username }}</strong>\n @if (userRoles().length > 0) {\n <small>\n <br />\n {{ userRoles() }}\n </small>\n }\n </div>\n </a>\n </li>\n @if (!settingsDisabled()) {\n <li role=\"menuitem\">\n <a\n [href]=\"hrefJsVoid\"\n (click)=\"openSettings()\"\n class=\"flex align-items-center transition-duration-200\"\n pStyleClass=\"@grandparent\"\n enterFromClass=\"ng-hidden\"\n enterActiveClass=\"px-scalein\"\n leaveToClass=\"ng-hidden\"\n leaveActiveClass=\"px-fadeout\">\n <i class=\"pi pi-fw pi-cog text-base mr-2\"></i>\n {{ 'mngSettings.title' | translate }}\n </a>\n </li>\n }\n @if (user()?.logout || user()?.logoutUrl) {\n <li role=\"menuitem\">\n <a\n [href]=\"user()?.logoutUrl ?? hrefJsVoid\"\n (click)=\"logout(user(), $event)\"\n class=\"flex align-items-center hover:text-primary-500 transition-duration-200\"\n pStyleClass=\"@grandparent\"\n enterFromClass=\"ng-hidden\"\n enterActiveClass=\"px-scalein\"\n leaveToClass=\"ng-hidden\"\n leaveActiveClass=\"px-fadeout\">\n <i class=\"pi pi-fw pi-sign-out text-base mr-2\"></i>\n <span>{{ 'mngTopbar.logout' | translate }}</span>\n </a>\n </li>\n }\n</ul>\n" }]
50
- }] });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9wYmFyLXVzZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvdG9wYmFyLXVzZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvdG9wYmFyLXVzZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBRXZELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBRXBELE9BQU8sRUFBQyxnQ0FBZ0MsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQy9FLE9BQU8sRUFBQyxjQUFjLEVBQVEsTUFBTSw2QkFBNkIsQ0FBQztBQUVsRSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7QUFTdkQsTUFBTSxPQUFPLG1CQUFtQjtJQVBoQztRQVFxQixhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3RDLFlBQU8sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDM0MsZUFBVSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3JFLFdBQU0sR0FBRyxNQUFNLENBQUMsZ0NBQWdDLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUU5RSxTQUFJLEdBQUcsUUFBUSxDQUFvQixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDOUQsY0FBUyxHQUFHLFFBQVEsQ0FBVyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFFL0QscUJBQWdCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsS0FBSyxLQUFLLENBQUMsQ0FBQztLQXVCakY7SUFyQlUsTUFBTSxDQUFDLElBQXVCLEVBQUUsS0FBWTtRQUMvQyxJQUFJLE9BQU8sSUFBSSxFQUFFLE1BQU0sS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNyQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNsQixDQUFDO0lBQ0wsQ0FBQztJQUVNLFlBQVk7UUFDZixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUM5QyxPQUFPO1FBQ1gsQ0FBQztRQUVELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsSUFBSSxpQkFBaUIsRUFBRTtZQUM1RSxLQUFLLEVBQUUsSUFBSTtZQUNYLFVBQVUsRUFBRSxtREFBbUQ7WUFDL0QsSUFBSSxFQUFFO2dCQUNGLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTthQUMxQjtTQUNKLENBQUMsQ0FBQztJQUNQLENBQUM7K0dBaENRLG1CQUFtQjttR0FBbkIsbUJBQW1CLHFGQ3BCaEMscWlGQWtFQSwyQ0RsRGMsZUFBZSwyRkFBRSxZQUFZLDZGQUFFLGdCQUFnQjs7NEZBSWhELG1CQUFtQjtrQkFQL0IsU0FBUztpQ0FDTSxJQUFJLFlBQ04sMkJBQTJCLFdBQzVCLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQyxtQkFFekMsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0b3IsIGNvbXB1dGVkLCBpbmplY3QsIHNpZ25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0RvbVNhbml0aXplcn0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7RGlhbG9nU2VydmljZX0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcbmltcG9ydCB7UmlwcGxlTW9kdWxlfSBmcm9tICdwcmltZW5nL3JpcHBsZSc7XG5pbXBvcnQge1N0eWxlQ2xhc3NNb2R1bGV9IGZyb20gJ3ByaW1lbmcvc3R5bGVjbGFzcyc7XG5cbmltcG9ydCB7Q09NTU9OU19MQVlPVVRfRkVBVFVSRV9DT05GSUdfSVR9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMtbGF5b3V0JztcbmltcG9ydCB7Q29tbW9uc1NlcnZpY2UsIElVc2VyfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuXG5pbXBvcnQge1NldHRpbmdzQ29tcG9uZW50fSBmcm9tICcuL3NldHRpbmdzLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdtbmctdG9wYmFyLXVzZXItY29tcG9uZW50JyxcbiAgICBpbXBvcnRzOiBbVHJhbnNsYXRlTW9kdWxlLCBSaXBwbGVNb2R1bGUsIFN0eWxlQ2xhc3NNb2R1bGVdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90b3BiYXItdXNlci5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgVG9wYmFyVXNlckNvbXBvbmVudCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2dTZXJ2aWNlID0gaW5qZWN0KERpYWxvZ1NlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29tbW9ucyA9IGluamVjdChDb21tb25zU2VydmljZSk7XG4gICAgcHVibGljIGhyZWZKc1ZvaWQgPSBpbmplY3QoRG9tU2FuaXRpemVyKS5ieXBhc3NTZWN1cml0eVRydXN0VXJsKCdqYXZhc2NyaXB0OnZvaWQoMCknKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZyA9IGluamVjdChDT01NT05TX0xBWU9VVF9GRUFUVVJFX0NPTkZJR19JVCwge29wdGlvbmFsOiB0cnVlfSk7XG5cbiAgICBwdWJsaWMgdXNlciA9IGNvbXB1dGVkPElVc2VyIHwgdW5kZWZpbmVkPigoKSA9PiB0aGlzLmNvbW1vbnMudXNlcigpKTtcbiAgICBwdWJsaWMgdXNlclJvbGVzID0gY29tcHV0ZWQ8c3RyaW5nW10+KCgpID0+IHRoaXMuY29tbW9ucy51c2VyUm9sZXMoKSk7XG5cbiAgICBwdWJsaWMgc2V0dGluZ3NEaXNhYmxlZCA9IHNpZ25hbCh0aGlzLmNvbmZpZz8uY29tcG9uZW50cz8uc2V0dGluZ3MgPT09IGZhbHNlKTtcblxuICAgIHB1YmxpYyBsb2dvdXQodXNlcjogSVVzZXIgfCB1bmRlZmluZWQsIGV2ZW50OiBFdmVudCkge1xuICAgICAgICBpZiAodHlwZW9mIHVzZXI/LmxvZ291dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgdXNlci5sb2dvdXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvcGVuU2V0dGluZ3MoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZz8uY29tcG9uZW50cz8uc2V0dGluZ3MgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uub3Blbih0aGlzLmNvbmZpZz8uY29tcG9uZW50cz8uc2V0dGluZ3MgPz8gU2V0dGluZ3NDb21wb25lbnQsIHtcbiAgICAgICAgICAgIG1vZGFsOiB0cnVlLFxuICAgICAgICAgICAgc3R5bGVDbGFzczogJ21uZy1kaWFsb2cgbW5nLWFjdGlvbi1lZGl0b3ItZGlhbG9nIG1uZy1kaWFsb2cteHMnLFxuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGluamVjdG9yOiB0aGlzLmluamVjdG9yXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxhXG4gICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBsZzpwci00XCJcbiAgICBwU3R5bGVDbGFzcz1cIkBuZXh0XCJcbiAgICBlbnRlckZyb21DbGFzcz1cIm5nLWhpZGRlblwiXG4gICAgZW50ZXJBY3RpdmVDbGFzcz1cInB4LXNjYWxlaW5cIlxuICAgIGxlYXZlVG9DbGFzcz1cIm5nLWhpZGRlblwiXG4gICAgbGVhdmVBY3RpdmVDbGFzcz1cInB4LWZhZGVvdXRcIlxuICAgIFtoaWRlT25PdXRzaWRlQ2xpY2tdPVwidHJ1ZVwiXG4gICAgcFJpcHBsZT5cbiAgICA8aSBjbGFzcz1cInBpIHBpLWZ3IHBpLXVzZXIgdGV4dC0yeGxcIj48L2k+XG4gICAgPHNwYW4gY2xhc3M9XCJoaWRkZW4gc206aW5saW5lLWJsb2NrXCI+Jm5ic3A7IHt7IHVzZXIoKT8uZGlzcGxheU5hbWUgPz8gdXNlcigpPy51c2VybmFtZSB9fTwvc3Bhbj5cbjwvYT5cbjx1bCBjbGFzcz1cInRvcGJhci1tZW51IGFjdGl2ZS10b3BiYXItbWVudSB3LTE1cmVtIHotNSBuZy1oaWRkZW4gYm9yZGVyLXJvdW5kXCI+XG4gICAgPGxpIHJvbGU9XCJtZW51aXRlbVwiPlxuICAgICAgICA8YVxuICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciB0cmFuc2l0aW9uLWR1cmF0aW9uLTIwMFwiXG4gICAgICAgICAgICBwU3R5bGVDbGFzcz1cIkBncmFuZHBhcmVudFwiXG4gICAgICAgICAgICBlbnRlckZyb21DbGFzcz1cIm5nLWhpZGRlblwiXG4gICAgICAgICAgICBlbnRlckFjdGl2ZUNsYXNzPVwicHgtc2NhbGVpblwiXG4gICAgICAgICAgICBsZWF2ZVRvQ2xhc3M9XCJuZy1oaWRkZW5cIlxuICAgICAgICAgICAgbGVhdmVBY3RpdmVDbGFzcz1cInB4LWZhZGVvdXRcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktZncgcGktdXNlciB0ZXh0LWJhc2UgbXItMlwiPjwvaT5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyB1c2VyKCk/LmRpc3BsYXlOYW1lID8/IHVzZXIoKT8udXNlcm5hbWUgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICBAaWYgKHVzZXJSb2xlcygpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyB1c2VyUm9sZXMoKSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2E+XG4gICAgPC9saT5cbiAgICBAaWYgKCFzZXR0aW5nc0Rpc2FibGVkKCkpIHtcbiAgICAgICAgPGxpIHJvbGU9XCJtZW51aXRlbVwiPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICBbaHJlZl09XCJocmVmSnNWb2lkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlblNldHRpbmdzKClcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgdHJhbnNpdGlvbi1kdXJhdGlvbi0yMDBcIlxuICAgICAgICAgICAgICAgIHBTdHlsZUNsYXNzPVwiQGdyYW5kcGFyZW50XCJcbiAgICAgICAgICAgICAgICBlbnRlckZyb21DbGFzcz1cIm5nLWhpZGRlblwiXG4gICAgICAgICAgICAgICAgZW50ZXJBY3RpdmVDbGFzcz1cInB4LXNjYWxlaW5cIlxuICAgICAgICAgICAgICAgIGxlYXZlVG9DbGFzcz1cIm5nLWhpZGRlblwiXG4gICAgICAgICAgICAgICAgbGVhdmVBY3RpdmVDbGFzcz1cInB4LWZhZGVvdXRcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWZ3IHBpLWNvZyB0ZXh0LWJhc2UgbXItMlwiPjwvaT5cbiAgICAgICAgICAgICAgICB7eyAnbW5nU2V0dGluZ3MudGl0bGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgIDwvbGk+XG4gICAgfVxuICAgIEBpZiAodXNlcigpPy5sb2dvdXQgfHwgdXNlcigpPy5sb2dvdXRVcmwpIHtcbiAgICAgICAgPGxpIHJvbGU9XCJtZW51aXRlbVwiPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICBbaHJlZl09XCJ1c2VyKCk/LmxvZ291dFVybCA/PyBocmVmSnNWb2lkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwibG9nb3V0KHVzZXIoKSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBob3Zlcjp0ZXh0LXByaW1hcnktNTAwIHRyYW5zaXRpb24tZHVyYXRpb24tMjAwXCJcbiAgICAgICAgICAgICAgICBwU3R5bGVDbGFzcz1cIkBncmFuZHBhcmVudFwiXG4gICAgICAgICAgICAgICAgZW50ZXJGcm9tQ2xhc3M9XCJuZy1oaWRkZW5cIlxuICAgICAgICAgICAgICAgIGVudGVyQWN0aXZlQ2xhc3M9XCJweC1zY2FsZWluXCJcbiAgICAgICAgICAgICAgICBsZWF2ZVRvQ2xhc3M9XCJuZy1oaWRkZW5cIlxuICAgICAgICAgICAgICAgIGxlYXZlQWN0aXZlQ2xhc3M9XCJweC1mYWRlb3V0XCI+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1mdyBwaS1zaWduLW91dCB0ZXh0LWJhc2UgbXItMlwiPjwvaT5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyAnbW5nVG9wYmFyLmxvZ291dCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgIDwvbGk+XG4gICAgfVxuPC91bD5cbiJdfQ==