aril 0.0.5 → 0.0.7

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 (151) hide show
  1. package/aril-0.0.7.tgz +0 -0
  2. package/esm2022/http/lib/enums.mjs +2 -1
  3. package/esm2022/http/lib/interfaces.mjs +1 -1
  4. package/esm2022/http/src/httpClient.mjs +1 -1
  5. package/esm2022/http/src/serviceBase.mjs +5 -5
  6. package/esm2022/http/src/serviceStateMethods.mjs +5 -2
  7. package/esm2022/theme/layout/app/breadcrumb/app.breadcrumb.component.mjs +41 -0
  8. package/esm2022/theme/layout/app/config/app.config.component.mjs +134 -0
  9. package/esm2022/theme/layout/app/layout/app.layout.component.mjs +131 -0
  10. package/esm2022/theme/layout/app/menu/app.menu.component.mjs +399 -0
  11. package/esm2022/theme/layout/app/profileSidebar/app.profilesidebar.component.mjs +25 -0
  12. package/esm2022/theme/layout/app/sidebar/app.sidebar.component.mjs +41 -0
  13. package/esm2022/theme/layout/app/topbar/app.topbar.component.mjs +29 -0
  14. package/esm2022/theme/layout/aril-theme-layout.mjs +5 -0
  15. package/esm2022/theme/layout/index.mjs +2 -0
  16. package/esm2022/theme/layout/service/app.layout.service.mjs +132 -0
  17. package/esm2022/theme/layout/service/app.menu.service.mjs +27 -0
  18. package/esm2022/theme/layout/service/menuchangeevent.mjs +2 -0
  19. package/esm2022/ui/badge/src/badge.component.mjs +1 -1
  20. package/esm2022/ui/button/src/button.component.mjs +1 -1
  21. package/esm2022/ui/button/src/split-button.component.mjs +1 -1
  22. package/esm2022/ui/calendar/src/calendar.component.mjs +1 -1
  23. package/esm2022/ui/checkbox/src/check-box.component.mjs +3 -3
  24. package/esm2022/ui/checkbox/src/tri-state-checkbox.component.mjs +3 -3
  25. package/esm2022/ui/dxField/src/dx-field.component.mjs +3 -3
  26. package/esm2022/ui/field/src/field.component.mjs +1 -1
  27. package/esm2022/ui/fileUpload/src/file-upload.component.mjs +6 -4
  28. package/esm2022/ui/form/index.mjs +20 -2
  29. package/esm2022/ui/form/src/form-submit-button.component.mjs +4 -3
  30. package/esm2022/ui/form/src/form.component.mjs +3 -3
  31. package/esm2022/ui/lib/src/form/form-error-message.component.mjs +1 -1
  32. package/esm2022/ui/lib/src/form/form-error-message.directive.mjs +1 -1
  33. package/esm2022/ui/lib/src/input/baseInput.mjs +1 -1
  34. package/esm2022/ui/lib/src/input/common-input-validators.service.mjs +1 -1
  35. package/esm2022/ui/lib/src/input/dx-input-error-message.pipe.mjs +1 -1
  36. package/esm2022/ui/mask/src/mask.component.mjs +3 -3
  37. package/esm2022/ui/number/src/number.component.mjs +2 -2
  38. package/esm2022/ui/overlayPanel/src/overlay-panel.component.mjs +1 -1
  39. package/esm2022/ui/panel/src/panel.component.mjs +4 -5
  40. package/esm2022/ui/password/src/password.component.mjs +1 -1
  41. package/esm2022/ui/radioButton/src/radio-button.component.mjs +1 -1
  42. package/esm2022/ui/selectBox/src/select-box.component.mjs +4 -7
  43. package/esm2022/ui/switch/src/switch.component.mjs +1 -1
  44. package/esm2022/ui/table/index.mjs +26 -2
  45. package/esm2022/ui/table/src/table-column.component.mjs +6 -4
  46. package/esm2022/ui/table/src/table.component.mjs +24 -42
  47. package/esm2022/ui/tagBox/src/tag-box.component.mjs +4 -7
  48. package/esm2022/ui/text/src/text.component.mjs +1 -1
  49. package/esm2022/ui/textArea/src/text-area.component.mjs +5 -1
  50. package/esm2022/ui/tree/src/tree.component.mjs +29 -44
  51. package/esm2022/ui/treeTable/src/tree-table.component.mjs +39 -43
  52. package/esm2022/ui/value/src/value.component.mjs +3 -3
  53. package/fesm2022/aril-http.mjs +7 -4
  54. package/fesm2022/aril-http.mjs.map +1 -1
  55. package/fesm2022/aril-theme-layout.mjs +918 -0
  56. package/fesm2022/aril-theme-layout.mjs.map +1 -0
  57. package/fesm2022/aril-ui-badge.mjs.map +1 -1
  58. package/fesm2022/aril-ui-button.mjs.map +1 -1
  59. package/fesm2022/aril-ui-calendar.mjs.map +1 -1
  60. package/fesm2022/aril-ui-checkbox.mjs +4 -4
  61. package/fesm2022/aril-ui-checkbox.mjs.map +1 -1
  62. package/fesm2022/aril-ui-dxField.mjs +2 -2
  63. package/fesm2022/aril-ui-dxField.mjs.map +1 -1
  64. package/fesm2022/aril-ui-field.mjs.map +1 -1
  65. package/fesm2022/aril-ui-fileUpload.mjs +5 -3
  66. package/fesm2022/aril-ui-fileUpload.mjs.map +1 -1
  67. package/fesm2022/aril-ui-form.mjs +22 -8
  68. package/fesm2022/aril-ui-form.mjs.map +1 -1
  69. package/fesm2022/aril-ui-lib.mjs.map +1 -1
  70. package/fesm2022/aril-ui-mask.mjs +3 -3
  71. package/fesm2022/aril-ui-mask.mjs.map +1 -1
  72. package/fesm2022/aril-ui-number.mjs +2 -2
  73. package/fesm2022/aril-ui-number.mjs.map +1 -1
  74. package/fesm2022/aril-ui-overlayPanel.mjs.map +1 -1
  75. package/fesm2022/aril-ui-panel.mjs +2 -3
  76. package/fesm2022/aril-ui-panel.mjs.map +1 -1
  77. package/fesm2022/aril-ui-password.mjs.map +1 -1
  78. package/fesm2022/aril-ui-radioButton.mjs.map +1 -1
  79. package/fesm2022/aril-ui-selectBox.mjs +3 -6
  80. package/fesm2022/aril-ui-selectBox.mjs.map +1 -1
  81. package/fesm2022/aril-ui-switch.mjs.map +1 -1
  82. package/fesm2022/aril-ui-table.mjs +45 -42
  83. package/fesm2022/aril-ui-table.mjs.map +1 -1
  84. package/fesm2022/aril-ui-tagBox.mjs +3 -6
  85. package/fesm2022/aril-ui-tagBox.mjs.map +1 -1
  86. package/fesm2022/aril-ui-text.mjs.map +1 -1
  87. package/fesm2022/aril-ui-textArea.mjs +4 -0
  88. package/fesm2022/aril-ui-textArea.mjs.map +1 -1
  89. package/fesm2022/aril-ui-tree.mjs +28 -43
  90. package/fesm2022/aril-ui-tree.mjs.map +1 -1
  91. package/fesm2022/aril-ui-treeTable.mjs +38 -42
  92. package/fesm2022/aril-ui-treeTable.mjs.map +1 -1
  93. package/fesm2022/aril-ui-value.mjs +2 -2
  94. package/fesm2022/aril-ui-value.mjs.map +1 -1
  95. package/http/lib/enums.d.ts +1 -0
  96. package/http/lib/interfaces.d.ts +2 -0
  97. package/http/src/serviceStateMethods.d.ts +2 -1
  98. package/package.json +13 -13
  99. package/theme/layout/app/breadcrumb/app.breadcrumb.component.d.ts +16 -0
  100. package/theme/layout/app/breadcrumb/app.breadcrumb.component.html +10 -0
  101. package/theme/layout/app/breadcrumb/app.breadcrumb.component.ts +52 -0
  102. package/theme/layout/app/config/app.config.component.d.ts +36 -0
  103. package/theme/layout/app/config/app.config.component.html +191 -0
  104. package/theme/layout/app/config/app.config.component.ts +152 -0
  105. package/theme/layout/app/layout/app.layout.component.d.ts +51 -0
  106. package/theme/layout/app/layout/app.layout.component.html +13 -0
  107. package/theme/layout/app/layout/app.layout.component.ts +183 -0
  108. package/theme/layout/app/menu/app.menu.component.d.ts +44 -0
  109. package/theme/layout/app/menu/app.menu.component.html +9 -0
  110. package/theme/layout/app/menu/app.menu.component.ts +317 -0
  111. package/theme/layout/app/profileSidebar/app.profilesidebar.component.d.ts +10 -0
  112. package/theme/layout/app/profileSidebar/app.profilesidebar.component.html +165 -0
  113. package/theme/layout/app/profileSidebar/app.profilesidebar.component.ts +25 -0
  114. package/theme/layout/app/sidebar/app.sidebar.component.d.ts +15 -0
  115. package/theme/layout/app/sidebar/app.sidebar.component.html +67 -0
  116. package/theme/layout/app/sidebar/app.sidebar.component.ts +40 -0
  117. package/theme/layout/app/topbar/app.topbar.component.d.ts +13 -0
  118. package/theme/layout/app/topbar/app.topbar.component.html +41 -0
  119. package/theme/layout/app/topbar/app.topbar.component.ts +29 -0
  120. package/theme/layout/index.d.ts +1 -0
  121. package/theme/layout/index.ts +1 -0
  122. package/theme/layout/ng-package.json +6 -0
  123. package/theme/layout/service/app.layout.service.d.ts +51 -0
  124. package/theme/layout/service/app.layout.service.ts +197 -0
  125. package/theme/layout/service/app.menu.service.d.ts +14 -0
  126. package/theme/layout/service/app.menu.service.ts +28 -0
  127. package/theme/layout/service/menuchangeevent.d.ts +4 -0
  128. package/theme/layout/service/menuchangeevent.ts +4 -0
  129. package/ui/calendar/src/calendar.component.d.ts +1 -1
  130. package/ui/fileUpload/src/file-upload.component.d.ts +1 -1
  131. package/ui/form/index.d.ts +9 -0
  132. package/ui/form/src/form-submit-button.component.d.ts +1 -1
  133. package/ui/form/src/form.component.d.ts +1 -1
  134. package/ui/panel/src/panel.component.d.ts +1 -1
  135. package/ui/selectBox/src/select-box.component.d.ts +1 -3
  136. package/ui/table/index.d.ts +14 -0
  137. package/ui/table/src/table-column.component.d.ts +5 -4
  138. package/ui/table/src/table.component.d.ts +7 -15
  139. package/ui/tagBox/src/tag-box.component.d.ts +1 -3
  140. package/ui/text/src/text.component.d.ts +1 -1
  141. package/ui/textArea/src/text-area.component.d.ts +1 -1
  142. package/ui/tree/src/tree.component.d.ts +13 -18
  143. package/ui/treeTable/src/tree-table.component.d.ts +14 -18
  144. package/ui/value/src/value.component.d.ts +2 -2
  145. package/esm2022/ui/confirmPopup/aril-ui-confirmPopup.mjs +0 -5
  146. package/esm2022/ui/confirmPopup/index.mjs +0 -2
  147. package/esm2022/ui/confirmPopup/src/confirm-popup.component.mjs +0 -28
  148. package/fesm2022/aril-ui-confirmPopup.mjs +0 -35
  149. package/fesm2022/aril-ui-confirmPopup.mjs.map +0 -1
  150. package/ui/confirmPopup/index.d.ts +0 -1
  151. package/ui/confirmPopup/src/confirm-popup.component.d.ts +0 -9
@@ -0,0 +1,918 @@
1
+ import { NgClass, NgTemplateOutlet, AsyncPipe, NgStyle } from '@angular/common';
2
+ import * as i0 from '@angular/core';
3
+ import { signal, Injectable, effect, Component, Input, HostBinding, ViewChild, inject, input } from '@angular/core';
4
+ import * as i3 from '@angular/router';
5
+ import { NavigationEnd, RouterLink, RouterLinkActive, RouterOutlet } from '@angular/router';
6
+ import { Subject, BehaviorSubject, filter as filter$1 } from 'rxjs';
7
+ import { trigger, state, style, transition, animate } from '@angular/animations';
8
+ import { DomHandler } from 'primeng/dom';
9
+ import * as i5 from 'primeng/ripple';
10
+ import { RippleModule } from 'primeng/ripple';
11
+ import * as i4 from 'primeng/tooltip';
12
+ import { TooltipModule } from 'primeng/tooltip';
13
+ import { filter } from 'rxjs/operators';
14
+ import * as i6 from 'primeng/button';
15
+ import { ButtonModule } from 'primeng/button';
16
+ import * as i3$1 from 'primeng/tag';
17
+ import { TagModule } from 'primeng/tag';
18
+ import * as i2 from 'primeng/sidebar';
19
+ import { SidebarModule } from 'primeng/sidebar';
20
+ import * as i3$2 from '@angular/forms';
21
+ import { FormsModule } from '@angular/forms';
22
+ import * as i5$1 from 'primeng/radiobutton';
23
+ import { RadioButtonModule } from 'primeng/radiobutton';
24
+ import * as i7 from 'primeng/inputswitch';
25
+ import { InputSwitchModule } from 'primeng/inputswitch';
26
+
27
+ class MenuService {
28
+ constructor() {
29
+ this.menuSource = new Subject();
30
+ this.resetSource = new Subject();
31
+ this.menuItems = signal([]);
32
+ this.menuSource$ = this.menuSource.asObservable();
33
+ this.resetSource$ = this.resetSource.asObservable();
34
+ }
35
+ onMenuStateChange(event) {
36
+ this.menuSource.next(event);
37
+ }
38
+ reset() {
39
+ this.resetSource.next(true);
40
+ }
41
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: MenuService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
42
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: MenuService, providedIn: 'root' }); }
43
+ }
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: MenuService, decorators: [{
45
+ type: Injectable,
46
+ args: [{
47
+ providedIn: 'root'
48
+ }]
49
+ }] });
50
+
51
+ class LayoutService {
52
+ constructor() {
53
+ this._config = {
54
+ ripple: false,
55
+ inputStyle: 'filled',
56
+ menuMode: 'horizontal',
57
+ colorScheme: 'light',
58
+ theme: 'indigo',
59
+ scale: 12,
60
+ menuTheme: 'colorScheme',
61
+ };
62
+ // TODO: Set User Config
63
+ this.config = signal(this._config);
64
+ this.state = {
65
+ staticMenuDesktopInactive: false,
66
+ overlayMenuActive: false,
67
+ profileSidebarVisible: false,
68
+ configSidebarVisible: false,
69
+ staticMenuMobileActive: false,
70
+ menuHoverActive: false,
71
+ sidebarActive: false,
72
+ anchored: false,
73
+ };
74
+ this.configUpdate = new Subject();
75
+ this.overlayOpen = new Subject();
76
+ this.configUpdate$ = this.configUpdate.asObservable();
77
+ this.overlayOpen$ = this.overlayOpen.asObservable();
78
+ effect(() => {
79
+ const config = this.config();
80
+ if (this.updateStyle(config)) {
81
+ this.changeTheme();
82
+ }
83
+ this.changeScale(config.scale);
84
+ this.onConfigUpdate();
85
+ });
86
+ }
87
+ updateStyle(config) {
88
+ return (config.theme !== this._config.theme ||
89
+ config.colorScheme !== this._config.colorScheme);
90
+ }
91
+ onMenuToggle() {
92
+ if (this.isOverlay()) {
93
+ this.state.overlayMenuActive = !this.state.overlayMenuActive;
94
+ if (this.state.overlayMenuActive) {
95
+ this.overlayOpen.next(null);
96
+ }
97
+ }
98
+ if (this.isDesktop()) {
99
+ this.state.staticMenuDesktopInactive =
100
+ !this.state.staticMenuDesktopInactive;
101
+ }
102
+ else {
103
+ this.state.staticMenuMobileActive =
104
+ !this.state.staticMenuMobileActive;
105
+ if (this.state.staticMenuMobileActive) {
106
+ this.overlayOpen.next(null);
107
+ }
108
+ }
109
+ }
110
+ onOverlaySubmenuOpen() {
111
+ this.overlayOpen.next(null);
112
+ }
113
+ showProfileSidebar() {
114
+ this.state.profileSidebarVisible = true;
115
+ }
116
+ showConfigSidebar() {
117
+ this.state.configSidebarVisible = true;
118
+ }
119
+ isOverlay() {
120
+ return this.config().menuMode === 'overlay';
121
+ }
122
+ isDesktop() {
123
+ return window.innerWidth > 991;
124
+ }
125
+ isSlim() {
126
+ return this.config().menuMode === 'slim';
127
+ }
128
+ isSlimPlus() {
129
+ return this.config().menuMode === 'slim-plus';
130
+ }
131
+ isHorizontal() {
132
+ return this.config().menuMode === 'horizontal';
133
+ }
134
+ isMobile() {
135
+ return !this.isDesktop();
136
+ }
137
+ onConfigUpdate() {
138
+ this._config = { ...this.config() };
139
+ this.configUpdate.next(this.config());
140
+ }
141
+ changeTheme() {
142
+ const config = this.config();
143
+ const themeLink = (document.getElementById('theme-link'));
144
+ const themeLinkHref = themeLink.getAttribute('href');
145
+ const newHref = themeLinkHref
146
+ .split('/')
147
+ .map((el) => el == this._config.theme
148
+ ? (el = config.theme)
149
+ : el == `theme-${this._config.colorScheme}`
150
+ ? (el = `theme-${config.colorScheme}`)
151
+ : el)
152
+ .join('/');
153
+ this.replaceThemeLink(newHref);
154
+ }
155
+ replaceThemeLink(href) {
156
+ const id = 'theme-link';
157
+ let themeLink = document.getElementById(id);
158
+ const cloneLinkElement = themeLink.cloneNode(true);
159
+ cloneLinkElement.setAttribute('href', href);
160
+ cloneLinkElement.setAttribute('id', id + '-clone');
161
+ themeLink.parentNode.insertBefore(cloneLinkElement, themeLink.nextSibling);
162
+ cloneLinkElement.addEventListener('load', () => {
163
+ themeLink.remove();
164
+ cloneLinkElement.setAttribute('id', id);
165
+ });
166
+ }
167
+ changeScale(value) {
168
+ document.documentElement.style.fontSize = `${value}px`;
169
+ }
170
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: LayoutService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
171
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: LayoutService, providedIn: 'root' }); }
172
+ }
173
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: LayoutService, decorators: [{
174
+ type: Injectable,
175
+ args: [{
176
+ providedIn: 'root',
177
+ }]
178
+ }], ctorParameters: () => [] });
179
+
180
+ class AppMenuItemComponent {
181
+ constructor(layoutService, cd, router, menuService) {
182
+ this.layoutService = layoutService;
183
+ this.cd = cd;
184
+ this.router = router;
185
+ this.menuService = menuService;
186
+ this.active = false;
187
+ this.key = "";
188
+ this.menuSourceSubscription = this.menuService.menuSource$.subscribe(value => {
189
+ Promise.resolve(null).then(() => {
190
+ if (value.routeEvent) {
191
+ this.active = (value.key === this.key || value.key.startsWith(this.key + '-')) ? true : false;
192
+ }
193
+ else {
194
+ if (value.key !== this.key && !value.key.startsWith(this.key + '-')) {
195
+ this.active = false;
196
+ }
197
+ }
198
+ });
199
+ });
200
+ this.menuResetSubscription = this.menuService.resetSource$.subscribe(() => {
201
+ this.active = false;
202
+ });
203
+ this.router.events.pipe(filter(event => event instanceof NavigationEnd))
204
+ .subscribe(params => {
205
+ if (this.isSlimPlus || this.isSlim || this.isHorizontal) {
206
+ this.active = false;
207
+ }
208
+ else {
209
+ if (this.item.routerLink) {
210
+ this.updateActiveStateFromRoute();
211
+ }
212
+ }
213
+ });
214
+ }
215
+ ngOnInit() {
216
+ this.key = this.parentKey ? this.parentKey + '-' + this.index : String(this.index);
217
+ if (!(this.isSlimPlus || this.isSlim || this.isHorizontal) && this.item.routerLink) {
218
+ this.updateActiveStateFromRoute();
219
+ }
220
+ }
221
+ ngAfterViewChecked() {
222
+ if (this.root && this.active && this.layoutService.isDesktop() && (this.layoutService.isHorizontal() || this.layoutService.isSlim() || this.layoutService.isSlimPlus())) {
223
+ this.calculatePosition(this.submenu?.nativeElement, this.submenu?.nativeElement.parentElement);
224
+ }
225
+ }
226
+ updateActiveStateFromRoute() {
227
+ let activeRoute = this.router.isActive(this.item.routerLink[0], { paths: 'exact', queryParams: 'ignored', matrixParams: 'ignored', fragment: 'ignored' });
228
+ if (activeRoute) {
229
+ this.menuService.onMenuStateChange({ key: this.key, routeEvent: true });
230
+ }
231
+ }
232
+ onSubmenuAnimated(event) {
233
+ if (event.toState === 'visible' && this.layoutService.isDesktop() && (this.layoutService.isHorizontal() || this.layoutService.isSlim() || this.layoutService.isSlimPlus())) {
234
+ const el = event.element;
235
+ const elParent = el.parentElement;
236
+ this.calculatePosition(el, elParent);
237
+ }
238
+ }
239
+ calculatePosition(overlay, target) {
240
+ if (overlay) {
241
+ const { left, top } = target.getBoundingClientRect();
242
+ const [vWidth, vHeight] = [window.innerWidth, window.innerHeight];
243
+ const [oWidth, oHeight] = [overlay.offsetWidth, overlay.offsetHeight];
244
+ const scrollbarWidth = DomHandler.calculateScrollbarWidth();
245
+ // reset
246
+ overlay.style.top = '';
247
+ overlay.style.left = '';
248
+ if (this.layoutService.isHorizontal()) {
249
+ const width = left + oWidth + scrollbarWidth;
250
+ overlay.style.left = vWidth < width ? `${left - (width - vWidth)}px` : `${left}px`;
251
+ }
252
+ else if (this.layoutService.isSlim() || this.layoutService.isSlimPlus()) {
253
+ const height = top + oHeight;
254
+ overlay.style.top = vHeight < height ? `${top - (height - vHeight)}px` : `${top}px`;
255
+ }
256
+ }
257
+ }
258
+ itemClick(event) {
259
+ // avoid processing disabled items
260
+ if (this.item.disabled) {
261
+ event.preventDefault();
262
+ return;
263
+ }
264
+ // navigate with hover
265
+ if (this.root && this.isSlim || this.isHorizontal || this.isSlimPlus) {
266
+ this.layoutService.state.menuHoverActive = !this.layoutService.state.menuHoverActive;
267
+ }
268
+ // execute command
269
+ if (this.item.command) {
270
+ this.item.command({ originalEvent: event, item: this.item });
271
+ }
272
+ // toggle active state
273
+ if (this.item.items) {
274
+ this.active = !this.active;
275
+ if (this.root && this.active && (this.isSlim || this.isHorizontal || this.isSlimPlus)) {
276
+ this.layoutService.onOverlaySubmenuOpen();
277
+ }
278
+ }
279
+ else {
280
+ if (this.layoutService.isMobile()) {
281
+ this.layoutService.state.staticMenuMobileActive = false;
282
+ }
283
+ if (this.isSlim || this.isHorizontal || this.isSlimPlus) {
284
+ this.menuService.reset();
285
+ this.layoutService.state.menuHoverActive = false;
286
+ }
287
+ }
288
+ this.menuService.onMenuStateChange({ key: this.key });
289
+ }
290
+ onMouseEnter() {
291
+ // activate item on hover
292
+ if (this.root && (this.isSlim || this.isHorizontal || this.isSlimPlus) && this.layoutService.isDesktop()) {
293
+ if (this.layoutService.state.menuHoverActive) {
294
+ this.active = true;
295
+ this.menuService.onMenuStateChange({ key: this.key });
296
+ }
297
+ }
298
+ }
299
+ get submenuAnimation() {
300
+ if (this.layoutService.isDesktop() && (this.layoutService.isHorizontal() || this.layoutService.isSlim() || this.layoutService.isSlimPlus())) {
301
+ return this.active ? 'visible' : 'hidden';
302
+ }
303
+ else
304
+ return this.root ? 'expanded' : (this.active ? 'expanded' : 'collapsed');
305
+ }
306
+ get isHorizontal() {
307
+ return this.layoutService.isHorizontal();
308
+ }
309
+ get isSlim() {
310
+ return this.layoutService.isSlim();
311
+ }
312
+ get isSlimPlus() {
313
+ return this.layoutService.isSlimPlus();
314
+ }
315
+ get activeClass() {
316
+ return this.active && !this.root;
317
+ }
318
+ ngOnDestroy() {
319
+ if (this.menuSourceSubscription) {
320
+ this.menuSourceSubscription.unsubscribe();
321
+ }
322
+ if (this.menuResetSubscription) {
323
+ this.menuResetSubscription.unsubscribe();
324
+ }
325
+ }
326
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppMenuItemComponent, deps: [{ token: LayoutService }, { token: i0.ChangeDetectorRef }, { token: i3.Router }, { token: MenuService }], target: i0.ɵɵFactoryTarget.Component }); }
327
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: AppMenuItemComponent, isStandalone: true, selector: "[app-menuitem]", inputs: { item: "item", index: "index", root: "root", parentKey: "parentKey" }, host: { properties: { "class.layout-root-menuitem": "this.root", "class.active-menuitem": "this.activeClass" } }, viewQueries: [{ propertyName: "submenu", first: true, predicate: ["submenu"], descendants: true }], ngImport: i0, template: `
328
+ <ng-container>
329
+ @if (root) {
330
+ <div class="layout-menuitem-root-text">
331
+ {{ item.label }}
332
+ </div>
333
+ }
334
+ @if (item.items?.length) {
335
+ <a
336
+ [attr.href]="item.url"
337
+ (click)="itemClick($event)"
338
+ (mouseenter)="onMouseEnter()"
339
+ [attr.target]="item.target"
340
+ tabindex="0"
341
+ pRipple
342
+ [pTooltip]="item.label"
343
+ [tooltipDisabled]="!(isSlim && root && !active)">
344
+ <i [ngClass]="item.icon" class="layout-menuitem-icon"></i>
345
+ <span class="layout-menuitem-text">{{ item.label }}</span>
346
+ @if (item.items) {
347
+ <i
348
+ class="pi pi-fw pi-angle-down layout-submenu-toggler"
349
+ ></i>
350
+ }
351
+ </a>
352
+ }
353
+ @else {
354
+ <a
355
+ (click)="itemClick($event)"
356
+ (mouseenter)="onMouseEnter()"
357
+ [routerLink]="item.routerLink"
358
+ routerLinkActive="active-route"
359
+ [routerLinkActiveOptions]="
360
+ item.routerLinkActiveOptions || {
361
+ paths: 'exact',
362
+ queryParams: 'ignored',
363
+ matrixParams: 'ignored',
364
+ fragment: 'ignored'
365
+ }
366
+ "
367
+ [fragment]="item.fragment"
368
+ [queryParamsHandling]="item.queryParamsHandling"
369
+ [preserveFragment]="item.preserveFragment"
370
+ [skipLocationChange]="item.skipLocationChange"
371
+ [replaceUrl]="item.replaceUrl"
372
+ [state]="item.state"
373
+ [queryParams]="item.queryParams"
374
+ [attr.target]="item.target"
375
+ tabindex="0"
376
+ pRipple
377
+ [pTooltip]="item.label"
378
+ [tooltipDisabled]="!(isSlim && root)">
379
+
380
+ <i [ngClass]="item.icon" class="layout-menuitem-icon"></i>
381
+
382
+ <span class="layout-menuitem-text">{{ item.label }}</span>
383
+
384
+ @if (item.items) {
385
+ <i
386
+ class="pi pi-fw pi-angle-down layout-submenu-toggler"
387
+ ></i>
388
+ }
389
+ </a>
390
+ }
391
+
392
+ @if (item.items) {
393
+ <ul
394
+ #submenu
395
+ [@children]="submenuAnimation"
396
+ (@children.done)="onSubmenuAnimated($event)">
397
+
398
+ @for (child of item.items; track child; let i = $index) {
399
+ <li
400
+ app-menuitem
401
+ [item]="child"
402
+ [index]="i"
403
+ [parentKey]="key">
404
+ </li>
405
+ }
406
+ </ul>
407
+ }
408
+ </ng-container>
409
+ `, isInline: true, dependencies: [{ kind: "component", type: AppMenuItemComponent, selector: "[app-menuitem]", inputs: ["item", "index", "root", "parentKey"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i4.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "ngmodule", type: RippleModule }, { kind: "directive", type: i5.Ripple, selector: "[pRipple]" }], animations: [
410
+ trigger('children', [
411
+ state('collapsed', style({
412
+ height: '0'
413
+ })),
414
+ state('expanded', style({
415
+ height: '*'
416
+ })),
417
+ state('hidden', style({
418
+ display: 'none'
419
+ })),
420
+ state('visible', style({
421
+ display: 'block'
422
+ })),
423
+ transition('collapsed <=> expanded', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)'))
424
+ ])
425
+ ] }); }
426
+ }
427
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppMenuItemComponent, decorators: [{
428
+ type: Component,
429
+ args: [{
430
+ standalone: true,
431
+ selector: '[app-menuitem]',
432
+ template: `
433
+ <ng-container>
434
+ @if (root) {
435
+ <div class="layout-menuitem-root-text">
436
+ {{ item.label }}
437
+ </div>
438
+ }
439
+ @if (item.items?.length) {
440
+ <a
441
+ [attr.href]="item.url"
442
+ (click)="itemClick($event)"
443
+ (mouseenter)="onMouseEnter()"
444
+ [attr.target]="item.target"
445
+ tabindex="0"
446
+ pRipple
447
+ [pTooltip]="item.label"
448
+ [tooltipDisabled]="!(isSlim && root && !active)">
449
+ <i [ngClass]="item.icon" class="layout-menuitem-icon"></i>
450
+ <span class="layout-menuitem-text">{{ item.label }}</span>
451
+ @if (item.items) {
452
+ <i
453
+ class="pi pi-fw pi-angle-down layout-submenu-toggler"
454
+ ></i>
455
+ }
456
+ </a>
457
+ }
458
+ @else {
459
+ <a
460
+ (click)="itemClick($event)"
461
+ (mouseenter)="onMouseEnter()"
462
+ [routerLink]="item.routerLink"
463
+ routerLinkActive="active-route"
464
+ [routerLinkActiveOptions]="
465
+ item.routerLinkActiveOptions || {
466
+ paths: 'exact',
467
+ queryParams: 'ignored',
468
+ matrixParams: 'ignored',
469
+ fragment: 'ignored'
470
+ }
471
+ "
472
+ [fragment]="item.fragment"
473
+ [queryParamsHandling]="item.queryParamsHandling"
474
+ [preserveFragment]="item.preserveFragment"
475
+ [skipLocationChange]="item.skipLocationChange"
476
+ [replaceUrl]="item.replaceUrl"
477
+ [state]="item.state"
478
+ [queryParams]="item.queryParams"
479
+ [attr.target]="item.target"
480
+ tabindex="0"
481
+ pRipple
482
+ [pTooltip]="item.label"
483
+ [tooltipDisabled]="!(isSlim && root)">
484
+
485
+ <i [ngClass]="item.icon" class="layout-menuitem-icon"></i>
486
+
487
+ <span class="layout-menuitem-text">{{ item.label }}</span>
488
+
489
+ @if (item.items) {
490
+ <i
491
+ class="pi pi-fw pi-angle-down layout-submenu-toggler"
492
+ ></i>
493
+ }
494
+ </a>
495
+ }
496
+
497
+ @if (item.items) {
498
+ <ul
499
+ #submenu
500
+ [@children]="submenuAnimation"
501
+ (@children.done)="onSubmenuAnimated($event)">
502
+
503
+ @for (child of item.items; track child; let i = $index) {
504
+ <li
505
+ app-menuitem
506
+ [item]="child"
507
+ [index]="i"
508
+ [parentKey]="key">
509
+ </li>
510
+ }
511
+ </ul>
512
+ }
513
+ </ng-container>
514
+ `,
515
+ imports: [NgClass, RouterLink, RouterLinkActive, NgTemplateOutlet, TooltipModule, RippleModule],
516
+ animations: [
517
+ trigger('children', [
518
+ state('collapsed', style({
519
+ height: '0'
520
+ })),
521
+ state('expanded', style({
522
+ height: '*'
523
+ })),
524
+ state('hidden', style({
525
+ display: 'none'
526
+ })),
527
+ state('visible', style({
528
+ display: 'block'
529
+ })),
530
+ transition('collapsed <=> expanded', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)'))
531
+ ])
532
+ ]
533
+ }]
534
+ }], ctorParameters: () => [{ type: LayoutService }, { type: i0.ChangeDetectorRef }, { type: i3.Router }, { type: MenuService }], propDecorators: { item: [{
535
+ type: Input
536
+ }], index: [{
537
+ type: Input
538
+ }], root: [{
539
+ type: Input
540
+ }, {
541
+ type: HostBinding,
542
+ args: ['class.layout-root-menuitem']
543
+ }], parentKey: [{
544
+ type: Input
545
+ }], submenu: [{
546
+ type: ViewChild,
547
+ args: ['submenu']
548
+ }], activeClass: [{
549
+ type: HostBinding,
550
+ args: ['class.active-menuitem']
551
+ }] } });
552
+ class AppMenuComponent {
553
+ constructor() {
554
+ this.menuService = inject(MenuService);
555
+ }
556
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
557
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: AppMenuComponent, isStandalone: true, selector: "app-menu", ngImport: i0, template: "<ul class=\"layout-menu\">\n\t@for (item of menuService.menuItems(); track $index) {\n\t\t@if (item.separator) {\n\t\t\t<li class=\"menu-separator\"></li>\n\t\t} @else {\n\t\t\t<li app-menuitem [item]=\"item\" [index]=\"$index\" [root]=\"true\"></li>\n\t\t}\n\t}\n</ul>\n", dependencies: [{ kind: "component", type: AppMenuItemComponent, selector: "[app-menuitem]", inputs: ["item", "index", "root", "parentKey"] }] }); }
558
+ }
559
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppMenuComponent, decorators: [{
560
+ type: Component,
561
+ args: [{ standalone: true, selector: 'app-menu', imports: [AppMenuItemComponent], template: "<ul class=\"layout-menu\">\n\t@for (item of menuService.menuItems(); track $index) {\n\t\t@if (item.separator) {\n\t\t\t<li class=\"menu-separator\"></li>\n\t\t} @else {\n\t\t\t<li app-menuitem [item]=\"item\" [index]=\"$index\" [root]=\"true\"></li>\n\t\t}\n\t}\n</ul>\n" }]
562
+ }] });
563
+
564
+ class AppSidebarComponent {
565
+ constructor(layoutService, el) {
566
+ this.layoutService = layoutService;
567
+ this.el = el;
568
+ this.timeout = null;
569
+ }
570
+ onMouseEnter() {
571
+ if (!this.layoutService.state.anchored) {
572
+ if (this.timeout) {
573
+ clearTimeout(this.timeout);
574
+ this.timeout = null;
575
+ }
576
+ this.layoutService.state.sidebarActive = true;
577
+ }
578
+ }
579
+ onMouseLeave() {
580
+ if (!this.layoutService.state.anchored) {
581
+ if (!this.timeout) {
582
+ this.timeout = setTimeout(() => this.layoutService.state.sidebarActive = false, 300);
583
+ }
584
+ }
585
+ }
586
+ anchor() {
587
+ this.layoutService.state.anchored = !this.layoutService.state.anchored;
588
+ }
589
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppSidebarComponent, deps: [{ token: LayoutService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
590
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: AppSidebarComponent, isStandalone: true, selector: "app-sidebar", viewQueries: [{ propertyName: "menuContainer", first: true, predicate: ["menuContainer"], descendants: true }], ngImport: i0, template: "<div\n\tclass=\"layout-sidebar\"\n\t(mouseenter)=\"onMouseEnter()\"\n\t(mouseleave)=\"onMouseLeave()\">\n\t<div class=\"sidebar-header\">\n\t\t<a [routerLink]=\"['/']\" class=\"app-logo\">\n\t\t\t<svg\n\t\t\t\tviewBox=\"0 0 124 22\"\n\t\t\t\tfill=\"none\"\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tclass=\"app-logo-normal\">\n\t\t\t\t<path\n\t\t\t\t\td=\"M10.4851 0L0 20.9465H3.53702L10.4856 6.07843L17.2944 20.9465H20.9715L10.4851 0Z\"\n\t\t\t\t\tfill=\"var(--logo-color)\" />\n\t\t\t\t<path\n\t\t\t\t\td=\"M13.84 15.7927L16.2077 21.0016H11.7682L13.84 15.7927Z\"\n\t\t\t\t\tfill=\"var(--logo-color)\" />\n\t\t\t\t<path\n\t\t\t\t\td=\"M9.04645 21.0016L6.67875 15.7927L4.60701 21.0016H9.04645Z\"\n\t\t\t\t\tfill=\"var(--logo-color)\" />\n\t\t\t\t<path\n\t\t\t\t\td=\"M40.9033 14.5217H34.771L33.1753 18.0007H30.8467L37.9346 2.77661L44.772 18.0007H42.4062L40.9033 14.5217ZM40.022 12.49L37.8975 7.61938L35.6709 12.49H40.022Z\"\n\t\t\t\t\tfill=\"var(--logo-color)\" />\n\t\t\t\t<path\n\t\t\t\t\td=\"M52.4927 12.1838V18.0007H50.3311V3.67651H52.7803C53.9802 3.67651 54.8862 3.76001 55.4985 3.927C56.117 4.09399 56.6613 4.40942 57.1314 4.87329C57.954 5.67733 58.3652 6.69165 58.3652 7.91626C58.3652 9.22746 57.9261 10.2665 57.0479 11.0334C56.1696 11.8004 54.9852 12.1838 53.4946 12.1838H52.4927ZM52.4927 10.1799H53.2998C55.2852 10.1799 56.2778 9.4161 56.2778 7.88843C56.2778 6.41024 55.2542 5.67114 53.207 5.67114H52.4927V10.1799Z\"\n\t\t\t\t\tfill=\"var(--logo-color)\" />\n\t\t\t\t<path\n\t\t\t\t\td=\"M63.6367 10.7737C63.6367 8.75741 64.3758 7.02563 65.854 5.57837C67.326 4.1311 69.0949 3.40747 71.1607 3.40747C73.2017 3.40747 74.952 4.13729 76.4116 5.59692C77.8775 7.05656 78.6104 8.80998 78.6104 10.8572C78.6104 12.9167 77.8744 14.664 76.4024 16.0989C74.9242 17.54 73.1398 18.2605 71.0493 18.2605C69.2001 18.2605 67.5394 17.6204 66.0674 16.3401C64.447 14.9237 63.6367 13.0683 63.6367 10.7737ZM65.8169 10.8015C65.8169 12.3848 66.3488 13.6868 67.4126 14.7073C68.4702 15.7278 69.6918 16.238 71.0772 16.238C72.5801 16.238 73.848 15.7185 74.8809 14.6794C75.9138 13.628 76.4302 12.3477 76.4302 10.8386C76.4302 9.31095 75.9199 8.03068 74.8994 6.9978C73.8851 5.95874 72.6296 5.43921 71.1328 5.43921C69.6423 5.43921 68.3836 5.95874 67.357 6.9978C66.3303 8.0245 65.8169 9.2924 65.8169 10.8015Z\"\n\t\t\t\t\tfill=\"var(--logo-color)\" />\n\t\t\t\t<path\n\t\t\t\t\td=\"M87.2495 3.67651V15.969H91.4615V18.0007H85.0879V3.67651H87.2495Z\"\n\t\t\t\t\tfill=\"var(--logo-color)\" />\n\t\t\t\t<path\n\t\t\t\t\td=\"M99.4327 3.67651V15.969H103.645V18.0007H97.271V3.67651H99.4327Z\"\n\t\t\t\t\tfill=\"var(--logo-color)\" />\n\t\t\t\t<path\n\t\t\t\t\td=\"M108.146 10.7737C108.146 8.75741 108.885 7.02563 110.363 5.57837C111.835 4.1311 113.604 3.40747 115.67 3.40747C117.711 3.40747 119.461 4.13729 120.921 5.59692C122.387 7.05656 123.12 8.80998 123.12 10.8572C123.12 12.9167 122.384 14.664 120.912 16.0989C119.433 17.54 117.649 18.2605 115.559 18.2605C113.709 18.2605 112.049 17.6204 110.577 16.3401C108.956 14.9237 108.146 13.0683 108.146 10.7737ZM110.326 10.8015C110.326 12.3848 110.858 13.6868 111.922 14.7073C112.98 15.7278 114.201 16.238 115.586 16.238C117.089 16.238 118.357 15.7185 119.39 14.6794C120.423 13.628 120.94 12.3477 120.94 10.8386C120.94 9.31095 120.429 8.03068 119.409 6.9978C118.394 5.95874 117.139 5.43921 115.642 5.43921C114.152 5.43921 112.893 5.95874 111.866 6.9978C110.84 8.0245 110.326 9.2924 110.326 10.8015Z\"\n\t\t\t\t\tfill=\"var(--logo-color)\" />\n\t\t\t</svg>\n\t\t\t<svg\n\t\t\t\twidth=\"21\"\n\t\t\t\theight=\"22\"\n\t\t\t\tviewBox=\"0 0 21 22\"\n\t\t\t\tfill=\"none\"\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tclass=\"app-logo-small\">\n\t\t\t\t<path\n\t\t\t\t\td=\"M10.4851 0L0 20.9465H3.53702L10.4856 6.07843L17.2944 20.9465H20.9715L10.4851 0Z\"\n\t\t\t\t\tfill=\"var(--logo-color)\" />\n\t\t\t\t<path\n\t\t\t\t\td=\"M13.8399 15.793L16.2076 21.0019H11.7681L13.8399 15.793Z\"\n\t\t\t\t\tfill=\"var(--logo-color)\" />\n\t\t\t\t<path\n\t\t\t\t\td=\"M9.04637 21.0019L6.67867 15.793L4.60693 21.0019H9.04637Z\"\n\t\t\t\t\tfill=\"var(--logo-color)\" />\n\t\t\t</svg>\n\t\t</a>\n\t\t<button\n\t\t\tclass=\"layout-sidebar-anchor p-link z-2 mb-2\"\n\t\t\ttype=\"button\"\n\t\t\t(click)=\"anchor()\"></button>\n\t</div>\n\n\t<div #menuContainer class=\"layout-menu-container\">\n\t\t<app-menu></app-menu>\n\t</div>\n</div>\n", dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: AppMenuComponent, selector: "app-menu" }] }); }
591
+ }
592
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppSidebarComponent, decorators: [{
593
+ type: Component,
594
+ args: [{ standalone: true, selector: 'app-sidebar', imports: [RouterLink, AppMenuComponent], template: "<div\n\tclass=\"layout-sidebar\"\n\t(mouseenter)=\"onMouseEnter()\"\n\t(mouseleave)=\"onMouseLeave()\">\n\t<div class=\"sidebar-header\">\n\t\t<a [routerLink]=\"['/']\" class=\"app-logo\">\n\t\t\t<svg\n\t\t\t\tviewBox=\"0 0 124 22\"\n\t\t\t\tfill=\"none\"\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tclass=\"app-logo-normal\">\n\t\t\t\t<path\n\t\t\t\t\td=\"M10.4851 0L0 20.9465H3.53702L10.4856 6.07843L17.2944 20.9465H20.9715L10.4851 0Z\"\n\t\t\t\t\tfill=\"var(--logo-color)\" />\n\t\t\t\t<path\n\t\t\t\t\td=\"M13.84 15.7927L16.2077 21.0016H11.7682L13.84 15.7927Z\"\n\t\t\t\t\tfill=\"var(--logo-color)\" />\n\t\t\t\t<path\n\t\t\t\t\td=\"M9.04645 21.0016L6.67875 15.7927L4.60701 21.0016H9.04645Z\"\n\t\t\t\t\tfill=\"var(--logo-color)\" />\n\t\t\t\t<path\n\t\t\t\t\td=\"M40.9033 14.5217H34.771L33.1753 18.0007H30.8467L37.9346 2.77661L44.772 18.0007H42.4062L40.9033 14.5217ZM40.022 12.49L37.8975 7.61938L35.6709 12.49H40.022Z\"\n\t\t\t\t\tfill=\"var(--logo-color)\" />\n\t\t\t\t<path\n\t\t\t\t\td=\"M52.4927 12.1838V18.0007H50.3311V3.67651H52.7803C53.9802 3.67651 54.8862 3.76001 55.4985 3.927C56.117 4.09399 56.6613 4.40942 57.1314 4.87329C57.954 5.67733 58.3652 6.69165 58.3652 7.91626C58.3652 9.22746 57.9261 10.2665 57.0479 11.0334C56.1696 11.8004 54.9852 12.1838 53.4946 12.1838H52.4927ZM52.4927 10.1799H53.2998C55.2852 10.1799 56.2778 9.4161 56.2778 7.88843C56.2778 6.41024 55.2542 5.67114 53.207 5.67114H52.4927V10.1799Z\"\n\t\t\t\t\tfill=\"var(--logo-color)\" />\n\t\t\t\t<path\n\t\t\t\t\td=\"M63.6367 10.7737C63.6367 8.75741 64.3758 7.02563 65.854 5.57837C67.326 4.1311 69.0949 3.40747 71.1607 3.40747C73.2017 3.40747 74.952 4.13729 76.4116 5.59692C77.8775 7.05656 78.6104 8.80998 78.6104 10.8572C78.6104 12.9167 77.8744 14.664 76.4024 16.0989C74.9242 17.54 73.1398 18.2605 71.0493 18.2605C69.2001 18.2605 67.5394 17.6204 66.0674 16.3401C64.447 14.9237 63.6367 13.0683 63.6367 10.7737ZM65.8169 10.8015C65.8169 12.3848 66.3488 13.6868 67.4126 14.7073C68.4702 15.7278 69.6918 16.238 71.0772 16.238C72.5801 16.238 73.848 15.7185 74.8809 14.6794C75.9138 13.628 76.4302 12.3477 76.4302 10.8386C76.4302 9.31095 75.9199 8.03068 74.8994 6.9978C73.8851 5.95874 72.6296 5.43921 71.1328 5.43921C69.6423 5.43921 68.3836 5.95874 67.357 6.9978C66.3303 8.0245 65.8169 9.2924 65.8169 10.8015Z\"\n\t\t\t\t\tfill=\"var(--logo-color)\" />\n\t\t\t\t<path\n\t\t\t\t\td=\"M87.2495 3.67651V15.969H91.4615V18.0007H85.0879V3.67651H87.2495Z\"\n\t\t\t\t\tfill=\"var(--logo-color)\" />\n\t\t\t\t<path\n\t\t\t\t\td=\"M99.4327 3.67651V15.969H103.645V18.0007H97.271V3.67651H99.4327Z\"\n\t\t\t\t\tfill=\"var(--logo-color)\" />\n\t\t\t\t<path\n\t\t\t\t\td=\"M108.146 10.7737C108.146 8.75741 108.885 7.02563 110.363 5.57837C111.835 4.1311 113.604 3.40747 115.67 3.40747C117.711 3.40747 119.461 4.13729 120.921 5.59692C122.387 7.05656 123.12 8.80998 123.12 10.8572C123.12 12.9167 122.384 14.664 120.912 16.0989C119.433 17.54 117.649 18.2605 115.559 18.2605C113.709 18.2605 112.049 17.6204 110.577 16.3401C108.956 14.9237 108.146 13.0683 108.146 10.7737ZM110.326 10.8015C110.326 12.3848 110.858 13.6868 111.922 14.7073C112.98 15.7278 114.201 16.238 115.586 16.238C117.089 16.238 118.357 15.7185 119.39 14.6794C120.423 13.628 120.94 12.3477 120.94 10.8386C120.94 9.31095 120.429 8.03068 119.409 6.9978C118.394 5.95874 117.139 5.43921 115.642 5.43921C114.152 5.43921 112.893 5.95874 111.866 6.9978C110.84 8.0245 110.326 9.2924 110.326 10.8015Z\"\n\t\t\t\t\tfill=\"var(--logo-color)\" />\n\t\t\t</svg>\n\t\t\t<svg\n\t\t\t\twidth=\"21\"\n\t\t\t\theight=\"22\"\n\t\t\t\tviewBox=\"0 0 21 22\"\n\t\t\t\tfill=\"none\"\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tclass=\"app-logo-small\">\n\t\t\t\t<path\n\t\t\t\t\td=\"M10.4851 0L0 20.9465H3.53702L10.4856 6.07843L17.2944 20.9465H20.9715L10.4851 0Z\"\n\t\t\t\t\tfill=\"var(--logo-color)\" />\n\t\t\t\t<path\n\t\t\t\t\td=\"M13.8399 15.793L16.2076 21.0019H11.7681L13.8399 15.793Z\"\n\t\t\t\t\tfill=\"var(--logo-color)\" />\n\t\t\t\t<path\n\t\t\t\t\td=\"M9.04637 21.0019L6.67867 15.793L4.60693 21.0019H9.04637Z\"\n\t\t\t\t\tfill=\"var(--logo-color)\" />\n\t\t\t</svg>\n\t\t</a>\n\t\t<button\n\t\t\tclass=\"layout-sidebar-anchor p-link z-2 mb-2\"\n\t\t\ttype=\"button\"\n\t\t\t(click)=\"anchor()\"></button>\n\t</div>\n\n\t<div #menuContainer class=\"layout-menu-container\">\n\t\t<app-menu></app-menu>\n\t</div>\n</div>\n" }]
595
+ }], ctorParameters: () => [{ type: LayoutService }, { type: i0.ElementRef }], propDecorators: { menuContainer: [{
596
+ type: ViewChild,
597
+ args: ['menuContainer']
598
+ }] } });
599
+
600
+ class AppBreadcrumbComponent {
601
+ constructor(router) {
602
+ this.router = router;
603
+ this._breadcrumbs$ = new BehaviorSubject([]);
604
+ this.breadcrumbs$ = this._breadcrumbs$.asObservable();
605
+ this.router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe(event => {
606
+ const root = this.router.routerState.snapshot.root;
607
+ const breadcrumbs = [];
608
+ this.addBreadcrumb(root, [], breadcrumbs);
609
+ this._breadcrumbs$.next(breadcrumbs);
610
+ });
611
+ }
612
+ addBreadcrumb(route, parentUrl, breadcrumbs) {
613
+ const routeUrl = parentUrl.concat(route.url.map(url => url.path));
614
+ const breadcrumb = route.data['breadcrumb'];
615
+ const parentBreadcrumb = route.parent && route.parent.data ? route.parent.data['breadcrumb'] : null;
616
+ if (breadcrumb && breadcrumb !== parentBreadcrumb) {
617
+ breadcrumbs.push({
618
+ label: route.data['breadcrumb'],
619
+ url: '/' + routeUrl.join('/')
620
+ });
621
+ }
622
+ if (route.firstChild) {
623
+ this.addBreadcrumb(route.firstChild, routeUrl, breadcrumbs);
624
+ }
625
+ }
626
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppBreadcrumbComponent, deps: [{ token: i3.Router }], target: i0.ɵɵFactoryTarget.Component }); }
627
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: AppBreadcrumbComponent, isStandalone: true, selector: "app-breadcrumb", ngImport: i0, template: "<nav class=\"layout-breadcrumb\">\n\t<ol>\n\t\t@for (item of breadcrumbs$ | async; track item; let last = $last) {\n\t\t\t<li>{{ item.label }}</li>\n\t\t\t@if (!last) {\n\t\t\t\t<li class=\"layout-breadcrumb-chevron\">/</li>\n\t\t\t}\n\t\t}\n\t</ol>\n</nav>\n", dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }] }); }
628
+ }
629
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppBreadcrumbComponent, decorators: [{
630
+ type: Component,
631
+ args: [{ standalone: true, selector: 'app-breadcrumb', imports: [NgTemplateOutlet, AsyncPipe], template: "<nav class=\"layout-breadcrumb\">\n\t<ol>\n\t\t@for (item of breadcrumbs$ | async; track item; let last = $last) {\n\t\t\t<li>{{ item.label }}</li>\n\t\t\t@if (!last) {\n\t\t\t\t<li class=\"layout-breadcrumb-chevron\">/</li>\n\t\t\t}\n\t\t}\n\t</ol>\n</nav>\n" }]
632
+ }], ctorParameters: () => [{ type: i3.Router }] });
633
+
634
+ class AppTopbarComponent {
635
+ constructor(layoutService) {
636
+ this.layoutService = layoutService;
637
+ }
638
+ onMenuButtonClick() {
639
+ this.layoutService.onMenuToggle();
640
+ }
641
+ onProfileButtonClick() {
642
+ this.layoutService.showProfileSidebar();
643
+ }
644
+ onConfigButtonClick() {
645
+ this.layoutService.showConfigSidebar();
646
+ }
647
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppTopbarComponent, deps: [{ token: LayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
648
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: AppTopbarComponent, isStandalone: true, selector: "app-topbar", viewQueries: [{ propertyName: "menuButton", first: true, predicate: ["menubutton"], descendants: true }], ngImport: i0, template: "<div class=\"layout-topbar\">\n\t<div class=\"topbar-start\">\n\t\t<button\n\t\t\t#menubutton\n\t\t\ttype=\"button\"\n\t\t\tclass=\"topbar-menubutton p-link p-trigger\"\n\t\t\t(click)=\"onMenuButtonClick()\">\n\t\t\t<i class=\"pi pi-bars\"></i>\n\t\t</button>\n\n\t\t<!-- <app-breadcrumb class=\"topbar-breadcrumb\"></app-breadcrumb> -->\n\t</div>\n\n\t<div class=\"topbar-end\">\n\t\t<ul class=\"topbar-menu\">\n\t\t\t<li class=\"topbar-search\">\n\t\t\t\t<span class=\"p-input-icon-left\">\n\t\t\t\t\t<i class=\"pi pi-search\"></i>\n\t\t\t\t\t<input\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\tpInputText\n\t\t\t\t\t\tplaceholder=\"Search\"\n\t\t\t\t\t\tclass=\"p-inputtext p-component p-element w-12rem sm:w-full\" />\n\t\t\t\t</span>\n\t\t\t</li>\n\t\t\t<!-- <li class=\"ml-3\">\n\t\t\t\t<button\n\t\t\t\t\tpButton\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\ticon=\"pi pi-cog\"\n\t\t\t\t\tclass=\"p-button-text p-button-secondary p-button-rounded flex-shrink-0\"\n\t\t\t\t\t(click)=\"onConfigButtonClick()\"></button>\n\t\t\t</li> -->\n\t\t\t<li class=\"topbar-profile\">\n\t\t\t\t<button type=\"button\" class=\"p-link\" (click)=\"onProfileButtonClick()\">\n\t\t\t\t\t<img src=\"assets/images/avatar.png\" alt=\"Profile\" />\n\t\t\t\t</button>\n\t\t\t</li>\n\t\t</ul>\n\t</div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: ButtonModule }] }); }
649
+ }
650
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppTopbarComponent, decorators: [{
651
+ type: Component,
652
+ args: [{ standalone: true, selector: 'app-topbar', imports: [ButtonModule, AppBreadcrumbComponent], template: "<div class=\"layout-topbar\">\n\t<div class=\"topbar-start\">\n\t\t<button\n\t\t\t#menubutton\n\t\t\ttype=\"button\"\n\t\t\tclass=\"topbar-menubutton p-link p-trigger\"\n\t\t\t(click)=\"onMenuButtonClick()\">\n\t\t\t<i class=\"pi pi-bars\"></i>\n\t\t</button>\n\n\t\t<!-- <app-breadcrumb class=\"topbar-breadcrumb\"></app-breadcrumb> -->\n\t</div>\n\n\t<div class=\"topbar-end\">\n\t\t<ul class=\"topbar-menu\">\n\t\t\t<li class=\"topbar-search\">\n\t\t\t\t<span class=\"p-input-icon-left\">\n\t\t\t\t\t<i class=\"pi pi-search\"></i>\n\t\t\t\t\t<input\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\tpInputText\n\t\t\t\t\t\tplaceholder=\"Search\"\n\t\t\t\t\t\tclass=\"p-inputtext p-component p-element w-12rem sm:w-full\" />\n\t\t\t\t</span>\n\t\t\t</li>\n\t\t\t<!-- <li class=\"ml-3\">\n\t\t\t\t<button\n\t\t\t\t\tpButton\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\ticon=\"pi pi-cog\"\n\t\t\t\t\tclass=\"p-button-text p-button-secondary p-button-rounded flex-shrink-0\"\n\t\t\t\t\t(click)=\"onConfigButtonClick()\"></button>\n\t\t\t</li> -->\n\t\t\t<li class=\"topbar-profile\">\n\t\t\t\t<button type=\"button\" class=\"p-link\" (click)=\"onProfileButtonClick()\">\n\t\t\t\t\t<img src=\"assets/images/avatar.png\" alt=\"Profile\" />\n\t\t\t\t</button>\n\t\t\t</li>\n\t\t</ul>\n\t</div>\n</div>\n" }]
653
+ }], ctorParameters: () => [{ type: LayoutService }], propDecorators: { menuButton: [{
654
+ type: ViewChild,
655
+ args: ['menubutton']
656
+ }] } });
657
+
658
+ class AppProfileSidebarComponent {
659
+ constructor(layoutService) {
660
+ this.layoutService = layoutService;
661
+ }
662
+ get visible() {
663
+ return this.layoutService.state.profileSidebarVisible;
664
+ }
665
+ set visible(_val) {
666
+ this.layoutService.state.profileSidebarVisible = _val;
667
+ }
668
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppProfileSidebarComponent, deps: [{ token: LayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
669
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: AppProfileSidebarComponent, isStandalone: true, selector: "app-profilemenu", ngImport: i0, template: "<p-sidebar\n\t[(visible)]=\"visible\"\n\tposition=\"right\"\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\n\tstyleClass=\"layout-profile-sidebar w-full sm:w-25rem\">\n\t<div class=\"flex flex-column mx-auto md:mx-0\">\n\t\t<span class=\"mb-2 font-semibold\">Welcome</span>\n\t\t<span class=\"text-color-secondary font-medium mb-5\">Isabella Andolini</span>\n\n\t\t<ul class=\"list-none m-0 p-0\">\n\t\t\t<li>\n\t\t\t\t<a\n\t\t\t\t\tclass=\"cursor-pointer flex surface-border mb-3 p-3 align-items-center border-1 surface-border border-round hover:surface-hover transition-colors transition-duration-150\">\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<i class=\"pi pi-user text-xl text-primary\"></i>\n\t\t\t\t\t</span>\n\t\t\t\t\t<div class=\"ml-3\">\n\t\t\t\t\t\t<span class=\"mb-2 font-semibold\">Profile</span>\n\t\t\t\t\t\t<p class=\"text-color-secondary m-0\">Lorem ipsum date visale</p>\n\t\t\t\t\t</div>\n\t\t\t\t</a>\n\t\t\t</li>\n\t\t\t<li>\n\t\t\t\t<a\n\t\t\t\t\tclass=\"cursor-pointer flex surface-border mb-3 p-3 align-items-center border-1 surface-border border-round hover:surface-hover transition-colors transition-duration-150\">\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<i class=\"pi pi-user text-xl text-primary\"></i>\n\t\t\t\t\t</span>\n\t\t\t\t\t<div class=\"ml-3\">\n\t\t\t\t\t\t<span class=\"mb-2 font-semibold\">Billing</span>\n\t\t\t\t\t\t<p class=\"text-color-secondary m-0\">Amet mimin m\u0131ollit</p>\n\t\t\t\t\t</div>\n\t\t\t\t</a>\n\t\t\t</li>\n\t\t\t<li>\n\t\t\t\t<a\n\t\t\t\t\tclass=\"cursor-pointer flex surface-border mb-3 p-3 align-items-center border-1 surface-border border-round hover:surface-hover transition-colors transition-duration-150\">\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<i class=\"pi pi-cog text-xl text-primary\"></i>\n\t\t\t\t\t</span>\n\t\t\t\t\t<div class=\"ml-3\">\n\t\t\t\t\t\t<span class=\"mb-2 font-semibold\">Settings</span>\n\t\t\t\t\t\t<p class=\"text-color-secondary m-0\">Exercitation veniam</p>\n\t\t\t\t\t</div>\n\t\t\t\t</a>\n\t\t\t</li>\n\t\t\t<li>\n\t\t\t\t<a\n\t\t\t\t\tclass=\"cursor-pointer flex surface-border mb-3 p-3 align-items-center border-1 surface-border border-round hover:surface-hover transition-colors transition-duration-150\">\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<i class=\"pi pi-power-off text-xl text-primary\"></i>\n\t\t\t\t\t</span>\n\t\t\t\t\t<div class=\"ml-3\">\n\t\t\t\t\t\t<span class=\"mb-2 font-semibold\">Sign Out</span>\n\t\t\t\t\t\t<p class=\"text-color-secondary m-0\">Sed ut perspiciatis</p>\n\t\t\t\t\t</div>\n\t\t\t\t</a>\n\t\t\t</li>\n\t\t</ul>\n\t</div>\n\n\t<div class=\"flex flex-column mt-5 mx-auto md:mx-0\">\n\t\t<span class=\"mb-2 font-semibold\">Notifications</span>\n\t\t<span class=\"text-color-secondary font-medium mb-5\"\n\t\t\t>You have 3 notifications</span\n\t\t>\n\n\t\t<ul class=\"list-none m-0 p-0\">\n\t\t\t<li>\n\t\t\t\t<a\n\t\t\t\t\tclass=\"cursor-pointer flex surface-border mb-3 p-3 align-items-center border-1 surface-border border-round hover:surface-hover transition-colors transition-duration-150\">\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<i class=\"pi pi-comment text-xl text-primary\"></i>\n\t\t\t\t\t</span>\n\t\t\t\t\t<div class=\"ml-3\">\n\t\t\t\t\t\t<span class=\"mb-2 font-semibold\">Your post has new comments</span>\n\t\t\t\t\t\t<p class=\"text-color-secondary m-0\">5 min ago</p>\n\t\t\t\t\t</div>\n\t\t\t\t</a>\n\t\t\t</li>\n\t\t\t<li>\n\t\t\t\t<a\n\t\t\t\t\tclass=\"cursor-pointer flex surface-border mb-3 p-3 align-items-center border-1 surface-border border-round hover:surface-hover transition-colors transition-duration-150\">\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<i class=\"pi pi-trash text-xl text-primary\"></i>\n\t\t\t\t\t</span>\n\t\t\t\t\t<div class=\"ml-3\">\n\t\t\t\t\t\t<span class=\"mb-2 font-semibold\">Your post has been deleted</span>\n\t\t\t\t\t\t<p class=\"text-color-secondary m-0\">15min ago</p>\n\t\t\t\t\t</div>\n\t\t\t\t</a>\n\t\t\t</li>\n\t\t\t<li>\n\t\t\t\t<a\n\t\t\t\t\tclass=\"cursor-pointer flex surface-border mb-3 p-3 align-items-center border-1 surface-border border-round hover:surface-hover transition-colors transition-duration-150\">\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<i class=\"pi pi-folder text-xl text-primary\"></i>\n\t\t\t\t\t</span>\n\t\t\t\t\t<div class=\"ml-3\">\n\t\t\t\t\t\t<span class=\"mb-2 font-semibold\">Post has been updated</span>\n\t\t\t\t\t\t<p class=\"text-color-secondary m-0\">3h ago</p>\n\t\t\t\t\t</div>\n\t\t\t\t</a>\n\t\t\t</li>\n\t\t</ul>\n\t</div>\n\n\t<div class=\"flex flex-column mt-5 mx-auto md:mx-0\">\n\t\t<span class=\"mb-2 font-semibold\">Messages</span>\n\t\t<span class=\"text-color-secondary font-medium mb-5\"\n\t\t\t>You have new messages</span\n\t\t>\n\n\t\t<ul class=\"list-none m-0 p-0\">\n\t\t\t<li>\n\t\t\t\t<a\n\t\t\t\t\tclass=\"cursor-pointer flex surface-border mb-3 p-3 align-items-center border-1 surface-border border-round hover:surface-hover transition-colors transition-duration-150\">\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tsrc=\"assets/demo/images/avatar/circle/avatar-m-8.png\"\n\t\t\t\t\t\t\talt=\"Avatar\"\n\t\t\t\t\t\t\tclass=\"w-2rem h-2rem\" />\n\t\t\t\t\t</span>\n\t\t\t\t\t<div class=\"ml-3\">\n\t\t\t\t\t\t<span class=\"mb-2 font-semibold\">James Robinson</span>\n\t\t\t\t\t\t<p class=\"text-color-secondary m-0\">10 min ago</p>\n\t\t\t\t\t</div>\n\t\t\t\t\t<p-tag value=\"3\" class=\"ml-auto\"></p-tag>\n\t\t\t\t</a>\n\t\t\t</li>\n\t\t\t<li>\n\t\t\t\t<a\n\t\t\t\t\tclass=\"cursor-pointer flex surface-border mb-3 p-3 align-items-center border-1 surface-border border-round hover:surface-hover transition-colors transition-duration-150\">\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tsrc=\"assets/demo/images/avatar/circle/avatar-f-8.png\"\n\t\t\t\t\t\t\talt=\"Avatar\"\n\t\t\t\t\t\t\tclass=\"w-2rem h-2rem\" />\n\t\t\t\t\t</span>\n\t\t\t\t\t<div class=\"ml-3\">\n\t\t\t\t\t\t<span class=\"mb-2 font-semibold\">Mary Watson</span>\n\t\t\t\t\t\t<p class=\"text-color-secondary m-0\">15min ago</p>\n\t\t\t\t\t</div>\n\t\t\t\t\t<p-tag value=\"1\" class=\"ml-auto\"></p-tag>\n\t\t\t\t</a>\n\t\t\t</li>\n\t\t\t<li>\n\t\t\t\t<a\n\t\t\t\t\tclass=\"cursor-pointer flex surface-border mb-3 p-3 align-items-center border-1 surface-border border-round hover:surface-hover transition-colors transition-duration-150\">\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tsrc=\"assets/demo/images/avatar/circle/avatar-f-4.png\"\n\t\t\t\t\t\t\talt=\"Avatar\"\n\t\t\t\t\t\t\tclass=\"w-2rem h-2rem\" />\n\t\t\t\t\t</span>\n\t\t\t\t\t<div class=\"ml-3\">\n\t\t\t\t\t\t<span class=\"mb-2 font-semibold\">Aisha Webb</span>\n\t\t\t\t\t\t<p class=\"text-color-secondary m-0\">3h ago</p>\n\t\t\t\t\t</div>\n\t\t\t\t\t<p-tag value=\"2\" class=\"ml-auto\"></p-tag>\n\t\t\t\t</a>\n\t\t\t</li>\n\t\t</ul>\n\t</div>\n</p-sidebar>\n", dependencies: [{ kind: "ngmodule", type: SidebarModule }, { kind: "component", type: i2.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "ngmodule", type: TagModule }, { kind: "component", type: i3$1.Tag, selector: "p-tag", inputs: ["style", "styleClass", "severity", "value", "icon", "rounded"] }] }); }
670
+ }
671
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppProfileSidebarComponent, decorators: [{
672
+ type: Component,
673
+ args: [{ standalone: true, selector: 'app-profilemenu', imports: [SidebarModule, TagModule], template: "<p-sidebar\n\t[(visible)]=\"visible\"\n\tposition=\"right\"\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\n\tstyleClass=\"layout-profile-sidebar w-full sm:w-25rem\">\n\t<div class=\"flex flex-column mx-auto md:mx-0\">\n\t\t<span class=\"mb-2 font-semibold\">Welcome</span>\n\t\t<span class=\"text-color-secondary font-medium mb-5\">Isabella Andolini</span>\n\n\t\t<ul class=\"list-none m-0 p-0\">\n\t\t\t<li>\n\t\t\t\t<a\n\t\t\t\t\tclass=\"cursor-pointer flex surface-border mb-3 p-3 align-items-center border-1 surface-border border-round hover:surface-hover transition-colors transition-duration-150\">\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<i class=\"pi pi-user text-xl text-primary\"></i>\n\t\t\t\t\t</span>\n\t\t\t\t\t<div class=\"ml-3\">\n\t\t\t\t\t\t<span class=\"mb-2 font-semibold\">Profile</span>\n\t\t\t\t\t\t<p class=\"text-color-secondary m-0\">Lorem ipsum date visale</p>\n\t\t\t\t\t</div>\n\t\t\t\t</a>\n\t\t\t</li>\n\t\t\t<li>\n\t\t\t\t<a\n\t\t\t\t\tclass=\"cursor-pointer flex surface-border mb-3 p-3 align-items-center border-1 surface-border border-round hover:surface-hover transition-colors transition-duration-150\">\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<i class=\"pi pi-user text-xl text-primary\"></i>\n\t\t\t\t\t</span>\n\t\t\t\t\t<div class=\"ml-3\">\n\t\t\t\t\t\t<span class=\"mb-2 font-semibold\">Billing</span>\n\t\t\t\t\t\t<p class=\"text-color-secondary m-0\">Amet mimin m\u0131ollit</p>\n\t\t\t\t\t</div>\n\t\t\t\t</a>\n\t\t\t</li>\n\t\t\t<li>\n\t\t\t\t<a\n\t\t\t\t\tclass=\"cursor-pointer flex surface-border mb-3 p-3 align-items-center border-1 surface-border border-round hover:surface-hover transition-colors transition-duration-150\">\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<i class=\"pi pi-cog text-xl text-primary\"></i>\n\t\t\t\t\t</span>\n\t\t\t\t\t<div class=\"ml-3\">\n\t\t\t\t\t\t<span class=\"mb-2 font-semibold\">Settings</span>\n\t\t\t\t\t\t<p class=\"text-color-secondary m-0\">Exercitation veniam</p>\n\t\t\t\t\t</div>\n\t\t\t\t</a>\n\t\t\t</li>\n\t\t\t<li>\n\t\t\t\t<a\n\t\t\t\t\tclass=\"cursor-pointer flex surface-border mb-3 p-3 align-items-center border-1 surface-border border-round hover:surface-hover transition-colors transition-duration-150\">\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<i class=\"pi pi-power-off text-xl text-primary\"></i>\n\t\t\t\t\t</span>\n\t\t\t\t\t<div class=\"ml-3\">\n\t\t\t\t\t\t<span class=\"mb-2 font-semibold\">Sign Out</span>\n\t\t\t\t\t\t<p class=\"text-color-secondary m-0\">Sed ut perspiciatis</p>\n\t\t\t\t\t</div>\n\t\t\t\t</a>\n\t\t\t</li>\n\t\t</ul>\n\t</div>\n\n\t<div class=\"flex flex-column mt-5 mx-auto md:mx-0\">\n\t\t<span class=\"mb-2 font-semibold\">Notifications</span>\n\t\t<span class=\"text-color-secondary font-medium mb-5\"\n\t\t\t>You have 3 notifications</span\n\t\t>\n\n\t\t<ul class=\"list-none m-0 p-0\">\n\t\t\t<li>\n\t\t\t\t<a\n\t\t\t\t\tclass=\"cursor-pointer flex surface-border mb-3 p-3 align-items-center border-1 surface-border border-round hover:surface-hover transition-colors transition-duration-150\">\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<i class=\"pi pi-comment text-xl text-primary\"></i>\n\t\t\t\t\t</span>\n\t\t\t\t\t<div class=\"ml-3\">\n\t\t\t\t\t\t<span class=\"mb-2 font-semibold\">Your post has new comments</span>\n\t\t\t\t\t\t<p class=\"text-color-secondary m-0\">5 min ago</p>\n\t\t\t\t\t</div>\n\t\t\t\t</a>\n\t\t\t</li>\n\t\t\t<li>\n\t\t\t\t<a\n\t\t\t\t\tclass=\"cursor-pointer flex surface-border mb-3 p-3 align-items-center border-1 surface-border border-round hover:surface-hover transition-colors transition-duration-150\">\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<i class=\"pi pi-trash text-xl text-primary\"></i>\n\t\t\t\t\t</span>\n\t\t\t\t\t<div class=\"ml-3\">\n\t\t\t\t\t\t<span class=\"mb-2 font-semibold\">Your post has been deleted</span>\n\t\t\t\t\t\t<p class=\"text-color-secondary m-0\">15min ago</p>\n\t\t\t\t\t</div>\n\t\t\t\t</a>\n\t\t\t</li>\n\t\t\t<li>\n\t\t\t\t<a\n\t\t\t\t\tclass=\"cursor-pointer flex surface-border mb-3 p-3 align-items-center border-1 surface-border border-round hover:surface-hover transition-colors transition-duration-150\">\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<i class=\"pi pi-folder text-xl text-primary\"></i>\n\t\t\t\t\t</span>\n\t\t\t\t\t<div class=\"ml-3\">\n\t\t\t\t\t\t<span class=\"mb-2 font-semibold\">Post has been updated</span>\n\t\t\t\t\t\t<p class=\"text-color-secondary m-0\">3h ago</p>\n\t\t\t\t\t</div>\n\t\t\t\t</a>\n\t\t\t</li>\n\t\t</ul>\n\t</div>\n\n\t<div class=\"flex flex-column mt-5 mx-auto md:mx-0\">\n\t\t<span class=\"mb-2 font-semibold\">Messages</span>\n\t\t<span class=\"text-color-secondary font-medium mb-5\"\n\t\t\t>You have new messages</span\n\t\t>\n\n\t\t<ul class=\"list-none m-0 p-0\">\n\t\t\t<li>\n\t\t\t\t<a\n\t\t\t\t\tclass=\"cursor-pointer flex surface-border mb-3 p-3 align-items-center border-1 surface-border border-round hover:surface-hover transition-colors transition-duration-150\">\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tsrc=\"assets/demo/images/avatar/circle/avatar-m-8.png\"\n\t\t\t\t\t\t\talt=\"Avatar\"\n\t\t\t\t\t\t\tclass=\"w-2rem h-2rem\" />\n\t\t\t\t\t</span>\n\t\t\t\t\t<div class=\"ml-3\">\n\t\t\t\t\t\t<span class=\"mb-2 font-semibold\">James Robinson</span>\n\t\t\t\t\t\t<p class=\"text-color-secondary m-0\">10 min ago</p>\n\t\t\t\t\t</div>\n\t\t\t\t\t<p-tag value=\"3\" class=\"ml-auto\"></p-tag>\n\t\t\t\t</a>\n\t\t\t</li>\n\t\t\t<li>\n\t\t\t\t<a\n\t\t\t\t\tclass=\"cursor-pointer flex surface-border mb-3 p-3 align-items-center border-1 surface-border border-round hover:surface-hover transition-colors transition-duration-150\">\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tsrc=\"assets/demo/images/avatar/circle/avatar-f-8.png\"\n\t\t\t\t\t\t\talt=\"Avatar\"\n\t\t\t\t\t\t\tclass=\"w-2rem h-2rem\" />\n\t\t\t\t\t</span>\n\t\t\t\t\t<div class=\"ml-3\">\n\t\t\t\t\t\t<span class=\"mb-2 font-semibold\">Mary Watson</span>\n\t\t\t\t\t\t<p class=\"text-color-secondary m-0\">15min ago</p>\n\t\t\t\t\t</div>\n\t\t\t\t\t<p-tag value=\"1\" class=\"ml-auto\"></p-tag>\n\t\t\t\t</a>\n\t\t\t</li>\n\t\t\t<li>\n\t\t\t\t<a\n\t\t\t\t\tclass=\"cursor-pointer flex surface-border mb-3 p-3 align-items-center border-1 surface-border border-round hover:surface-hover transition-colors transition-duration-150\">\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tsrc=\"assets/demo/images/avatar/circle/avatar-f-4.png\"\n\t\t\t\t\t\t\talt=\"Avatar\"\n\t\t\t\t\t\t\tclass=\"w-2rem h-2rem\" />\n\t\t\t\t\t</span>\n\t\t\t\t\t<div class=\"ml-3\">\n\t\t\t\t\t\t<span class=\"mb-2 font-semibold\">Aisha Webb</span>\n\t\t\t\t\t\t<p class=\"text-color-secondary m-0\">3h ago</p>\n\t\t\t\t\t</div>\n\t\t\t\t\t<p-tag value=\"2\" class=\"ml-auto\"></p-tag>\n\t\t\t\t</a>\n\t\t\t</li>\n\t\t</ul>\n\t</div>\n</p-sidebar>\n" }]
674
+ }], ctorParameters: () => [{ type: LayoutService }] });
675
+
676
+ class AppConfigComponent {
677
+ constructor(layoutService, menuService) {
678
+ this.layoutService = layoutService;
679
+ this.menuService = menuService;
680
+ this.minimal = false;
681
+ this.componentThemes = [];
682
+ this.scales = [12, 13, 14, 15, 16];
683
+ }
684
+ get visible() {
685
+ return this.layoutService.state.configSidebarVisible;
686
+ }
687
+ set visible(_val) {
688
+ this.layoutService.state.configSidebarVisible = _val;
689
+ }
690
+ get scale() {
691
+ return this.layoutService.config().scale;
692
+ }
693
+ set scale(_val) {
694
+ this.layoutService.config.update((config) => ({
695
+ ...config,
696
+ scale: _val,
697
+ }));
698
+ }
699
+ get menuMode() {
700
+ return this.layoutService.config().menuMode;
701
+ }
702
+ set menuMode(_val) {
703
+ this.layoutService.config.update((config) => ({
704
+ ...config,
705
+ menuMode: _val,
706
+ }));
707
+ if (this.layoutService.isSlimPlus() ||
708
+ this.layoutService.isSlim() ||
709
+ this.layoutService.isHorizontal()) {
710
+ this.menuService.reset();
711
+ }
712
+ }
713
+ get colorScheme() {
714
+ return this.layoutService.config().colorScheme;
715
+ }
716
+ set colorScheme(_val) {
717
+ this.layoutService.config.update((config) => ({
718
+ ...config,
719
+ colorScheme: _val,
720
+ }));
721
+ }
722
+ get inputStyle() {
723
+ return this.layoutService.config().inputStyle;
724
+ }
725
+ set inputStyle(_val) {
726
+ this.layoutService.config.update((config) => ({
727
+ ...config,
728
+ inputStyle: _val,
729
+ }));
730
+ }
731
+ get ripple() {
732
+ return this.layoutService.config().ripple;
733
+ }
734
+ set ripple(_val) {
735
+ this.layoutService.config.update((config) => ({
736
+ ...config,
737
+ ripple: _val,
738
+ }));
739
+ }
740
+ get menuTheme() {
741
+ return this.layoutService.config().menuTheme;
742
+ }
743
+ set menuTheme(_val) {
744
+ this.layoutService.config.update((config) => ({
745
+ ...config,
746
+ menuTheme: _val,
747
+ }));
748
+ }
749
+ get theme() {
750
+ return this.layoutService.config().theme;
751
+ }
752
+ set theme(_val) {
753
+ this.layoutService.config.update((config) => ({
754
+ ...config,
755
+ theme: _val,
756
+ }));
757
+ }
758
+ ngOnInit() {
759
+ this.componentThemes = [
760
+ { name: 'indigo', color: '#6366F1' },
761
+ { name: 'blue', color: '#3B82F6' },
762
+ { name: 'purple', color: '#8B5CF6' },
763
+ { name: 'teal', color: '#14B8A6' },
764
+ { name: 'cyan', color: '#06b6d4' },
765
+ { name: 'green', color: '#10b981' },
766
+ { name: 'orange', color: '#f59e0b' },
767
+ { name: 'pink', color: '#d946ef' },
768
+ ];
769
+ }
770
+ onConfigButtonClick() {
771
+ this.layoutService.showConfigSidebar();
772
+ }
773
+ changeColorScheme(colorScheme) {
774
+ this.colorScheme = colorScheme;
775
+ }
776
+ changeTheme(theme) {
777
+ this.theme = theme;
778
+ }
779
+ decrementScale() {
780
+ this.scale--;
781
+ }
782
+ incrementScale() {
783
+ this.scale++;
784
+ }
785
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppConfigComponent, deps: [{ token: LayoutService }, { token: MenuService }], target: i0.ɵɵFactoryTarget.Component }); }
786
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: AppConfigComponent, isStandalone: true, selector: "app-config", inputs: { minimal: "minimal" }, ngImport: i0, template: "<button\n\tclass=\"layout-config-button p-link\"\n\ttype=\"button\"\n\t(click)=\"onConfigButtonClick()\">\n\t<i class=\"pi pi-cog\"></i>\n</button>\n\n<p-sidebar\n\t[(visible)]=\"visible\"\n\tposition=\"right\"\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\n\tstyleClass=\"layout-config-sidebar w-18rem\">\n\t<h5>Themes</h5>\n\t<div class=\"flex flex-wrap row-gap-3\">\n\t\t@for (theme of componentThemes; track theme) {\n\t\t\t<div class=\"w-3\">\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclass=\"cursor-pointer p-link w-2rem h-2rem border-circle flex-shrink-0 flex align-items-center justify-content-center\"\n\t\t\t\t\t(click)=\"changeTheme(theme.name)\"\n\t\t\t\t\t[ngStyle]=\"{ 'background-color': theme.color }\">\n\t\t\t\t\t@if (theme.name == this.layoutService.config().theme) {\n\t\t\t\t\t\t<i class=\"pi pi-check text-white\"></i>\n\t\t\t\t\t}\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t}\n\t</div>\n\n\t<h5>Scale</h5>\n\t<div class=\"flex align-items-center\">\n\t\t<button\n\t\t\ticon=\"pi pi-minus\"\n\t\t\ttype=\"button\"\n\t\t\tpButton\n\t\t\t(click)=\"decrementScale()\"\n\t\t\tclass=\"p-button-text p-button-rounded w-2rem h-2rem mr-2\"\n\t\t\t[disabled]=\"scale === scales[0]\"></button>\n\t\t<div class=\"flex gap-2 align-items-center\">\n\t\t\t@for (s of scales; track s) {\n\t\t\t\t<i\n\t\t\t\t\tclass=\"pi pi-circle-fill text-300\"\n\t\t\t\t\t[ngClass]=\"{ 'text-primary-500': s === scale }\"></i>\n\t\t\t}\n\t\t</div>\n\t\t<button\n\t\t\ticon=\"pi pi-plus\"\n\t\t\ttype=\"button\"\n\t\t\tpButton\n\t\t\t(click)=\"incrementScale()\"\n\t\t\tclass=\"p-button-text p-button-rounded w-2rem h-2rem ml-2\"\n\t\t\t[disabled]=\"scale === scales[scales.length - 1]\"></button>\n\t</div>\n\n\t@if (!minimal) {\n\t\t<h5>Menu Type</h5>\n\t\t<div class=\"flex flex-wrap row-gap-3\">\n\t\t\t<div class=\"flex align-items-center gap-2 w-6\">\n\t\t\t\t<p-radioButton\n\t\t\t\t\tname=\"menuMode\"\n\t\t\t\t\tvalue=\"static\"\n\t\t\t\t\t[(ngModel)]=\"menuMode\"\n\t\t\t\t\tinputId=\"mode1\"></p-radioButton>\n\t\t\t\t<label for=\"mode1\">Static</label>\n\t\t\t</div>\n\t\t\t<div class=\"flex align-items-center gap-2 w-6\">\n\t\t\t\t<p-radioButton\n\t\t\t\t\tname=\"menuMode\"\n\t\t\t\t\tvalue=\"overlay\"\n\t\t\t\t\t[(ngModel)]=\"menuMode\"\n\t\t\t\t\tinputId=\"mode2\"></p-radioButton>\n\t\t\t\t<label for=\"mode2\">Overlay</label>\n\t\t\t</div>\n\t\t\t<div class=\"flex align-items-center gap-2 w-6\">\n\t\t\t\t<p-radioButton\n\t\t\t\t\tname=\"menuMode\"\n\t\t\t\t\tvalue=\"slim\"\n\t\t\t\t\t[(ngModel)]=\"menuMode\"\n\t\t\t\t\tinputId=\"mode3\"></p-radioButton>\n\t\t\t\t<label for=\"mode3\">Slim</label>\n\t\t\t</div>\n\t\t\t<div class=\"flex align-items-center gap-2 w-6\">\n\t\t\t\t<p-radioButton\n\t\t\t\t\tname=\"menuMode\"\n\t\t\t\t\tvalue=\"slim-plus\"\n\t\t\t\t\t[(ngModel)]=\"menuMode\"\n\t\t\t\t\tinputId=\"mode4\"></p-radioButton>\n\t\t\t\t<label for=\"mode3\">Slim +</label>\n\t\t\t</div>\n\t\t\t<div class=\"flex align-items-center gap-2 w-6\">\n\t\t\t\t<p-radioButton\n\t\t\t\t\tname=\"menuMode\"\n\t\t\t\t\tvalue=\"reveal\"\n\t\t\t\t\t[(ngModel)]=\"menuMode\"\n\t\t\t\t\tinputId=\"mode6\"></p-radioButton>\n\t\t\t\t<label for=\"mode5\">Reveal</label>\n\t\t\t</div>\n\t\t\t<div class=\"flex align-items-center gap-2 w-6\">\n\t\t\t\t<p-radioButton\n\t\t\t\t\tname=\"menuMode\"\n\t\t\t\t\tvalue=\"drawer\"\n\t\t\t\t\t[(ngModel)]=\"menuMode\"\n\t\t\t\t\tinputId=\"mode7\"></p-radioButton>\n\t\t\t\t<label for=\"mode6\">Drawer</label>\n\t\t\t</div>\n\t\t\t<div class=\"flex align-items-center gap-2 w-6\">\n\t\t\t\t<p-radioButton\n\t\t\t\t\tname=\"menuMode\"\n\t\t\t\t\tvalue=\"horizontal\"\n\t\t\t\t\t[(ngModel)]=\"menuMode\"\n\t\t\t\t\tinputId=\"mode5\"></p-radioButton>\n\t\t\t\t<label for=\"mode4\">Horizontal</label>\n\t\t\t</div>\n\t\t</div>\n\t\t<h5>Menu Theme</h5>\n\t\t<div class=\"field-radiobutton\">\n\t\t\t<p-radioButton\n\t\t\t\tname=\"menuTheme\"\n\t\t\t\tvalue=\"colorScheme\"\n\t\t\t\t[(ngModel)]=\"menuTheme\"\n\t\t\t\tinputId=\"menutheme-colorscheme\"></p-radioButton>\n\t\t\t<label for=\"menutheme-colorscheme\">Color Scheme</label>\n\t\t</div>\n\t\t<div class=\"field-radiobutton\">\n\t\t\t<p-radioButton\n\t\t\t\tname=\"menuTheme\"\n\t\t\t\tvalue=\"primaryColor\"\n\t\t\t\t[(ngModel)]=\"menuTheme\"\n\t\t\t\tinputId=\"menutheme-primarycolor\"></p-radioButton>\n\t\t\t<label for=\"menutheme-primarycolor\">Primary Color</label>\n\t\t</div>\n\t\t<div class=\"field-radiobutton\">\n\t\t\t<p-radioButton\n\t\t\t\tname=\"menuTheme\"\n\t\t\t\tvalue=\"transparent\"\n\t\t\t\t[(ngModel)]=\"menuTheme\"\n\t\t\t\tinputId=\"menutheme-transparent\"></p-radioButton>\n\t\t\t<label for=\"menutheme-transparent\">Transparent</label>\n\t\t</div>\n\t}\n\n\t<h5>Color Scheme</h5>\n\t<div class=\"field-radiobutton\">\n\t\t<p-radioButton\n\t\t\tname=\"colorScheme\"\n\t\t\tvalue=\"light\"\n\t\t\t[(ngModel)]=\"colorScheme\"\n\t\t\tinputId=\"mode-light\"></p-radioButton>\n\t\t<label for=\"mode-light\">Light</label>\n\t</div>\n\t<div class=\"field-radiobutton\">\n\t\t<p-radioButton\n\t\t\tname=\"colorScheme\"\n\t\t\tvalue=\"dim\"\n\t\t\t[(ngModel)]=\"colorScheme\"\n\t\t\tinputId=\"mode-dim\"></p-radioButton>\n\t\t<label for=\"mode-dim\">Dim</label>\n\t</div>\n\t<div class=\"field-radiobutton\">\n\t\t<p-radioButton\n\t\t\tname=\"colorScheme\"\n\t\t\tvalue=\"dark\"\n\t\t\t[(ngModel)]=\"colorScheme\"\n\t\t\tinputId=\"mode-dark\"></p-radioButton>\n\t\t<label for=\"mode-dark\">Dark</label>\n\t</div>\n\n\t@if (!minimal) {\n\t\t<h5>Input Style</h5>\n\t\t<div class=\"flex\">\n\t\t\t<div class=\"field-radiobutton flex-1\">\n\t\t\t\t<p-radioButton\n\t\t\t\t\tname=\"inputStyle\"\n\t\t\t\t\tvalue=\"outlined\"\n\t\t\t\t\t[(ngModel)]=\"inputStyle\"\n\t\t\t\t\tinputId=\"outlined_input\"></p-radioButton>\n\t\t\t\t<label for=\"outlined_input\">Outlined</label>\n\t\t\t</div>\n\t\t\t<div class=\"field-radiobutton flex-1\">\n\t\t\t\t<p-radioButton\n\t\t\t\t\tname=\"inputStyle\"\n\t\t\t\t\tvalue=\"filled\"\n\t\t\t\t\t[(ngModel)]=\"inputStyle\"\n\t\t\t\t\tinputId=\"filled_input\"></p-radioButton>\n\t\t\t\t<label for=\"filled_input\">Filled</label>\n\t\t\t</div>\n\t\t</div>\n\t\t<h5>Ripple Effect</h5>\n\t\t<p-inputSwitch [(ngModel)]=\"ripple\"></p-inputSwitch>\n\t}\n</p-sidebar>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: SidebarModule }, { kind: "component", type: i2.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "ngmodule", type: RadioButtonModule }, { kind: "component", type: i5$1.RadioButton, selector: "p-radioButton", inputs: ["value", "formControlName", "name", "disabled", "label", "tabindex", "inputId", "ariaLabelledBy", "ariaLabel", "style", "styleClass", "labelStyleClass"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i6.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "ngmodule", type: InputSwitchModule }, { kind: "component", type: i7.InputSwitch, selector: "p-inputSwitch", inputs: ["style", "styleClass", "tabindex", "inputId", "name", "disabled", "readonly", "trueValue", "falseValue", "ariaLabel", "ariaLabelledBy"], outputs: ["onChange"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
787
+ }
788
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppConfigComponent, decorators: [{
789
+ type: Component,
790
+ args: [{ standalone: true, selector: 'app-config', imports: [FormsModule, SidebarModule, RadioButtonModule, ButtonModule, InputSwitchModule, NgStyle, NgClass], template: "<button\n\tclass=\"layout-config-button p-link\"\n\ttype=\"button\"\n\t(click)=\"onConfigButtonClick()\">\n\t<i class=\"pi pi-cog\"></i>\n</button>\n\n<p-sidebar\n\t[(visible)]=\"visible\"\n\tposition=\"right\"\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\n\tstyleClass=\"layout-config-sidebar w-18rem\">\n\t<h5>Themes</h5>\n\t<div class=\"flex flex-wrap row-gap-3\">\n\t\t@for (theme of componentThemes; track theme) {\n\t\t\t<div class=\"w-3\">\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclass=\"cursor-pointer p-link w-2rem h-2rem border-circle flex-shrink-0 flex align-items-center justify-content-center\"\n\t\t\t\t\t(click)=\"changeTheme(theme.name)\"\n\t\t\t\t\t[ngStyle]=\"{ 'background-color': theme.color }\">\n\t\t\t\t\t@if (theme.name == this.layoutService.config().theme) {\n\t\t\t\t\t\t<i class=\"pi pi-check text-white\"></i>\n\t\t\t\t\t}\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t}\n\t</div>\n\n\t<h5>Scale</h5>\n\t<div class=\"flex align-items-center\">\n\t\t<button\n\t\t\ticon=\"pi pi-minus\"\n\t\t\ttype=\"button\"\n\t\t\tpButton\n\t\t\t(click)=\"decrementScale()\"\n\t\t\tclass=\"p-button-text p-button-rounded w-2rem h-2rem mr-2\"\n\t\t\t[disabled]=\"scale === scales[0]\"></button>\n\t\t<div class=\"flex gap-2 align-items-center\">\n\t\t\t@for (s of scales; track s) {\n\t\t\t\t<i\n\t\t\t\t\tclass=\"pi pi-circle-fill text-300\"\n\t\t\t\t\t[ngClass]=\"{ 'text-primary-500': s === scale }\"></i>\n\t\t\t}\n\t\t</div>\n\t\t<button\n\t\t\ticon=\"pi pi-plus\"\n\t\t\ttype=\"button\"\n\t\t\tpButton\n\t\t\t(click)=\"incrementScale()\"\n\t\t\tclass=\"p-button-text p-button-rounded w-2rem h-2rem ml-2\"\n\t\t\t[disabled]=\"scale === scales[scales.length - 1]\"></button>\n\t</div>\n\n\t@if (!minimal) {\n\t\t<h5>Menu Type</h5>\n\t\t<div class=\"flex flex-wrap row-gap-3\">\n\t\t\t<div class=\"flex align-items-center gap-2 w-6\">\n\t\t\t\t<p-radioButton\n\t\t\t\t\tname=\"menuMode\"\n\t\t\t\t\tvalue=\"static\"\n\t\t\t\t\t[(ngModel)]=\"menuMode\"\n\t\t\t\t\tinputId=\"mode1\"></p-radioButton>\n\t\t\t\t<label for=\"mode1\">Static</label>\n\t\t\t</div>\n\t\t\t<div class=\"flex align-items-center gap-2 w-6\">\n\t\t\t\t<p-radioButton\n\t\t\t\t\tname=\"menuMode\"\n\t\t\t\t\tvalue=\"overlay\"\n\t\t\t\t\t[(ngModel)]=\"menuMode\"\n\t\t\t\t\tinputId=\"mode2\"></p-radioButton>\n\t\t\t\t<label for=\"mode2\">Overlay</label>\n\t\t\t</div>\n\t\t\t<div class=\"flex align-items-center gap-2 w-6\">\n\t\t\t\t<p-radioButton\n\t\t\t\t\tname=\"menuMode\"\n\t\t\t\t\tvalue=\"slim\"\n\t\t\t\t\t[(ngModel)]=\"menuMode\"\n\t\t\t\t\tinputId=\"mode3\"></p-radioButton>\n\t\t\t\t<label for=\"mode3\">Slim</label>\n\t\t\t</div>\n\t\t\t<div class=\"flex align-items-center gap-2 w-6\">\n\t\t\t\t<p-radioButton\n\t\t\t\t\tname=\"menuMode\"\n\t\t\t\t\tvalue=\"slim-plus\"\n\t\t\t\t\t[(ngModel)]=\"menuMode\"\n\t\t\t\t\tinputId=\"mode4\"></p-radioButton>\n\t\t\t\t<label for=\"mode3\">Slim +</label>\n\t\t\t</div>\n\t\t\t<div class=\"flex align-items-center gap-2 w-6\">\n\t\t\t\t<p-radioButton\n\t\t\t\t\tname=\"menuMode\"\n\t\t\t\t\tvalue=\"reveal\"\n\t\t\t\t\t[(ngModel)]=\"menuMode\"\n\t\t\t\t\tinputId=\"mode6\"></p-radioButton>\n\t\t\t\t<label for=\"mode5\">Reveal</label>\n\t\t\t</div>\n\t\t\t<div class=\"flex align-items-center gap-2 w-6\">\n\t\t\t\t<p-radioButton\n\t\t\t\t\tname=\"menuMode\"\n\t\t\t\t\tvalue=\"drawer\"\n\t\t\t\t\t[(ngModel)]=\"menuMode\"\n\t\t\t\t\tinputId=\"mode7\"></p-radioButton>\n\t\t\t\t<label for=\"mode6\">Drawer</label>\n\t\t\t</div>\n\t\t\t<div class=\"flex align-items-center gap-2 w-6\">\n\t\t\t\t<p-radioButton\n\t\t\t\t\tname=\"menuMode\"\n\t\t\t\t\tvalue=\"horizontal\"\n\t\t\t\t\t[(ngModel)]=\"menuMode\"\n\t\t\t\t\tinputId=\"mode5\"></p-radioButton>\n\t\t\t\t<label for=\"mode4\">Horizontal</label>\n\t\t\t</div>\n\t\t</div>\n\t\t<h5>Menu Theme</h5>\n\t\t<div class=\"field-radiobutton\">\n\t\t\t<p-radioButton\n\t\t\t\tname=\"menuTheme\"\n\t\t\t\tvalue=\"colorScheme\"\n\t\t\t\t[(ngModel)]=\"menuTheme\"\n\t\t\t\tinputId=\"menutheme-colorscheme\"></p-radioButton>\n\t\t\t<label for=\"menutheme-colorscheme\">Color Scheme</label>\n\t\t</div>\n\t\t<div class=\"field-radiobutton\">\n\t\t\t<p-radioButton\n\t\t\t\tname=\"menuTheme\"\n\t\t\t\tvalue=\"primaryColor\"\n\t\t\t\t[(ngModel)]=\"menuTheme\"\n\t\t\t\tinputId=\"menutheme-primarycolor\"></p-radioButton>\n\t\t\t<label for=\"menutheme-primarycolor\">Primary Color</label>\n\t\t</div>\n\t\t<div class=\"field-radiobutton\">\n\t\t\t<p-radioButton\n\t\t\t\tname=\"menuTheme\"\n\t\t\t\tvalue=\"transparent\"\n\t\t\t\t[(ngModel)]=\"menuTheme\"\n\t\t\t\tinputId=\"menutheme-transparent\"></p-radioButton>\n\t\t\t<label for=\"menutheme-transparent\">Transparent</label>\n\t\t</div>\n\t}\n\n\t<h5>Color Scheme</h5>\n\t<div class=\"field-radiobutton\">\n\t\t<p-radioButton\n\t\t\tname=\"colorScheme\"\n\t\t\tvalue=\"light\"\n\t\t\t[(ngModel)]=\"colorScheme\"\n\t\t\tinputId=\"mode-light\"></p-radioButton>\n\t\t<label for=\"mode-light\">Light</label>\n\t</div>\n\t<div class=\"field-radiobutton\">\n\t\t<p-radioButton\n\t\t\tname=\"colorScheme\"\n\t\t\tvalue=\"dim\"\n\t\t\t[(ngModel)]=\"colorScheme\"\n\t\t\tinputId=\"mode-dim\"></p-radioButton>\n\t\t<label for=\"mode-dim\">Dim</label>\n\t</div>\n\t<div class=\"field-radiobutton\">\n\t\t<p-radioButton\n\t\t\tname=\"colorScheme\"\n\t\t\tvalue=\"dark\"\n\t\t\t[(ngModel)]=\"colorScheme\"\n\t\t\tinputId=\"mode-dark\"></p-radioButton>\n\t\t<label for=\"mode-dark\">Dark</label>\n\t</div>\n\n\t@if (!minimal) {\n\t\t<h5>Input Style</h5>\n\t\t<div class=\"flex\">\n\t\t\t<div class=\"field-radiobutton flex-1\">\n\t\t\t\t<p-radioButton\n\t\t\t\t\tname=\"inputStyle\"\n\t\t\t\t\tvalue=\"outlined\"\n\t\t\t\t\t[(ngModel)]=\"inputStyle\"\n\t\t\t\t\tinputId=\"outlined_input\"></p-radioButton>\n\t\t\t\t<label for=\"outlined_input\">Outlined</label>\n\t\t\t</div>\n\t\t\t<div class=\"field-radiobutton flex-1\">\n\t\t\t\t<p-radioButton\n\t\t\t\t\tname=\"inputStyle\"\n\t\t\t\t\tvalue=\"filled\"\n\t\t\t\t\t[(ngModel)]=\"inputStyle\"\n\t\t\t\t\tinputId=\"filled_input\"></p-radioButton>\n\t\t\t\t<label for=\"filled_input\">Filled</label>\n\t\t\t</div>\n\t\t</div>\n\t\t<h5>Ripple Effect</h5>\n\t\t<p-inputSwitch [(ngModel)]=\"ripple\"></p-inputSwitch>\n\t}\n</p-sidebar>\n" }]
791
+ }], ctorParameters: () => [{ type: LayoutService }, { type: MenuService }], propDecorators: { minimal: [{
792
+ type: Input
793
+ }] } });
794
+
795
+ class AppLayoutComponent {
796
+ constructor(menuService, layoutService, renderer, router, route) {
797
+ this.menuService = menuService;
798
+ this.layoutService = layoutService;
799
+ this.renderer = renderer;
800
+ this.router = router;
801
+ this.route = route;
802
+ this.sidebarItems = input([]);
803
+ this.overlayMenuOpenSubscription = this.layoutService.overlayOpen$.subscribe(() => {
804
+ if (!this.menuOutsideClickListener) {
805
+ this.menuOutsideClickListener = this.renderer.listen('document', 'click', (event) => {
806
+ const isOutsideClicked = !(this.appSidebar.el.nativeElement.isSameNode(event.target) ||
807
+ this.appSidebar.el.nativeElement.contains(event.target) ||
808
+ this.appTopbar.menuButton.nativeElement.isSameNode(event.target) ||
809
+ this.appTopbar.menuButton.nativeElement.contains(event.target));
810
+ if (isOutsideClicked) {
811
+ this.hideMenu();
812
+ }
813
+ });
814
+ }
815
+ if ((this.layoutService.isHorizontal() || this.layoutService.isSlim() || this.layoutService.isSlimPlus()) && !this.menuScrollListener) {
816
+ this.menuScrollListener = this.renderer.listen(this.appSidebar.menuContainer.nativeElement, 'scroll', (event) => {
817
+ if (this.layoutService.isDesktop()) {
818
+ this.hideMenu();
819
+ }
820
+ });
821
+ }
822
+ if (this.layoutService.state.staticMenuMobileActive) {
823
+ this.blockBodyScroll();
824
+ }
825
+ });
826
+ this.router.events.pipe(filter$1((event) => event instanceof NavigationEnd)).subscribe(() => {
827
+ this.hideMenu();
828
+ });
829
+ effect(() => {
830
+ this.menuService.menuItems.set(this.sidebarItems());
831
+ }, { allowSignalWrites: true });
832
+ }
833
+ blockBodyScroll() {
834
+ if (document.body.classList) {
835
+ document.body.classList.add('blocked-scroll');
836
+ }
837
+ else {
838
+ document.body.className += ' blocked-scroll';
839
+ }
840
+ }
841
+ unblockBodyScroll() {
842
+ if (document.body.classList) {
843
+ document.body.classList.remove('blocked-scroll');
844
+ }
845
+ else {
846
+ document.body.className = document.body.className.replace(new RegExp('(^|\\b)' +
847
+ 'blocked-scroll'.split(' ').join('|') +
848
+ '(\\b|$)', 'gi'), ' ');
849
+ }
850
+ }
851
+ hideMenu() {
852
+ this.layoutService.state.overlayMenuActive = false;
853
+ this.layoutService.state.staticMenuMobileActive = false;
854
+ this.layoutService.state.menuHoverActive = false;
855
+ this.menuService.reset();
856
+ if (this.menuOutsideClickListener) {
857
+ this.menuOutsideClickListener();
858
+ this.menuOutsideClickListener = null;
859
+ }
860
+ if (this.menuScrollListener) {
861
+ this.menuScrollListener();
862
+ this.menuScrollListener = null;
863
+ }
864
+ this.unblockBodyScroll();
865
+ }
866
+ get containerClass() {
867
+ return {
868
+ 'layout-light': this.layoutService.config().colorScheme === 'light',
869
+ 'layout-dim': this.layoutService.config().colorScheme === 'dim',
870
+ 'layout-dark': this.layoutService.config().colorScheme === 'dark',
871
+ 'layout-colorscheme-menu': this.layoutService.config().menuTheme === 'colorScheme',
872
+ 'layout-primarycolor-menu': this.layoutService.config().menuTheme === 'primaryColor',
873
+ 'layout-transparent-menu': this.layoutService.config().menuTheme === 'transparent',
874
+ 'layout-overlay': this.layoutService.config().menuMode === 'overlay',
875
+ 'layout-static': this.layoutService.config().menuMode === 'static',
876
+ 'layout-slim': this.layoutService.config().menuMode === 'slim',
877
+ 'layout-slim-plus': this.layoutService.config().menuMode === 'slim-plus',
878
+ 'layout-horizontal': this.layoutService.config().menuMode === 'horizontal',
879
+ 'layout-reveal': this.layoutService.config().menuMode === 'reveal',
880
+ 'layout-drawer': this.layoutService.config().menuMode === 'drawer',
881
+ 'layout-static-inactive': this.layoutService.state.staticMenuDesktopInactive &&
882
+ this.layoutService.config().menuMode === 'static',
883
+ 'layout-overlay-active': this.layoutService.state.overlayMenuActive,
884
+ 'layout-mobile-active': this.layoutService.state.staticMenuMobileActive,
885
+ 'p-input-filled': this.layoutService.config().inputStyle === 'filled',
886
+ 'p-ripple-disabled': !this.layoutService.config().ripple,
887
+ 'layout-sidebar-active': this.layoutService.state.sidebarActive,
888
+ 'layout-sidebar-anchored': this.layoutService.state.anchored,
889
+ };
890
+ }
891
+ ngOnDestroy() {
892
+ if (this.overlayMenuOpenSubscription) {
893
+ this.overlayMenuOpenSubscription.unsubscribe();
894
+ }
895
+ if (this.menuOutsideClickListener) {
896
+ this.menuOutsideClickListener();
897
+ }
898
+ }
899
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppLayoutComponent, deps: [{ token: MenuService }, { token: LayoutService }, { token: i0.Renderer2 }, { token: i3.Router }, { token: i3.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
900
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.1.2", type: AppLayoutComponent, isStandalone: true, selector: "app-layout", inputs: { sidebarItems: { classPropertyName: "sidebarItems", publicName: "sidebarItems", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "appSidebar", first: true, predicate: AppSidebarComponent, descendants: true }, { propertyName: "appTopbar", first: true, predicate: AppTopbarComponent, descendants: true }], ngImport: i0, template: "<div class=\"layout-container\" [ngClass]=\"containerClass\">\n\t<app-sidebar></app-sidebar>\n\t<div class=\"layout-content-wrapper\">\n\t\t<app-topbar></app-topbar>\n\t\t<!-- <app-breadcrumb class=\"content-breadcrumb\"></app-breadcrumb> -->\n\t\t<div class=\"layout-content\">\n\t\t\t<router-outlet></router-outlet>\n\t\t</div>\n\t</div>\n\t<app-profilemenu></app-profilemenu>\n\t<app-config></app-config>\n\t<div class=\"layout-mask\"></div>\n</div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: AppSidebarComponent, selector: "app-sidebar" }, { kind: "component", type: AppTopbarComponent, selector: "app-topbar" }, { kind: "component", type: AppProfileSidebarComponent, selector: "app-profilemenu" }, { kind: "component", type: AppConfigComponent, selector: "app-config", inputs: ["minimal"] }] }); }
901
+ }
902
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppLayoutComponent, decorators: [{
903
+ type: Component,
904
+ args: [{ standalone: true, selector: 'app-layout', imports: [NgClass, RouterOutlet, AppSidebarComponent, AppTopbarComponent, AppBreadcrumbComponent, AppProfileSidebarComponent, AppConfigComponent], template: "<div class=\"layout-container\" [ngClass]=\"containerClass\">\n\t<app-sidebar></app-sidebar>\n\t<div class=\"layout-content-wrapper\">\n\t\t<app-topbar></app-topbar>\n\t\t<!-- <app-breadcrumb class=\"content-breadcrumb\"></app-breadcrumb> -->\n\t\t<div class=\"layout-content\">\n\t\t\t<router-outlet></router-outlet>\n\t\t</div>\n\t</div>\n\t<app-profilemenu></app-profilemenu>\n\t<app-config></app-config>\n\t<div class=\"layout-mask\"></div>\n</div>\n" }]
905
+ }], ctorParameters: () => [{ type: MenuService }, { type: LayoutService }, { type: i0.Renderer2 }, { type: i3.Router }, { type: i3.ActivatedRoute }], propDecorators: { appSidebar: [{
906
+ type: ViewChild,
907
+ args: [AppSidebarComponent]
908
+ }], appTopbar: [{
909
+ type: ViewChild,
910
+ args: [AppTopbarComponent]
911
+ }] } });
912
+
913
+ /**
914
+ * Generated bundle index. Do not edit.
915
+ */
916
+
917
+ export { AppLayoutComponent };
918
+ //# sourceMappingURL=aril-theme-layout.mjs.map