@rxap/layout 18.0.3-dev.1 → 18.1.0-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (212) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +267 -1
  3. package/compodoc/changelog.html +16 -0
  4. package/compodoc/components/AppsButtonComponent.html +197 -153
  5. package/compodoc/components/BaseLayoutComponent.html +351 -0
  6. package/compodoc/components/DefaultHeaderComponent.html +545 -0
  7. package/compodoc/components/FooterComponent.html +58 -79
  8. package/compodoc/components/HeaderComponent.html +49 -294
  9. package/compodoc/components/LanguageSelectorComponent.html +6 -54
  10. package/compodoc/components/LayoutComponent.html +69 -464
  11. package/compodoc/components/MinimalLayoutComponent.html +349 -0
  12. package/compodoc/components/NavigationComponent.html +116 -312
  13. package/compodoc/components/NavigationItemComponent.html +130 -361
  14. package/compodoc/components/NavigationProgressBarComponent.html +41 -107
  15. package/compodoc/components/ReleaseInfoComponent.html +536 -0
  16. package/compodoc/components/SettingsButtonComponent.html +186 -225
  17. package/compodoc/components/SidenavComponent.html +566 -142
  18. package/compodoc/components/SidenavToggleButtonComponent.html +71 -91
  19. package/compodoc/components/SignOutComponent.html +7 -60
  20. package/compodoc/components/UserProfileIconComponent.html +97 -161
  21. package/compodoc/dependencies.html +9 -25
  22. package/compodoc/directives/FooterDirective-1.html +293 -0
  23. package/compodoc/directives/FooterDirective.html +8 -86
  24. package/compodoc/directives/HeaderDirective.html +293 -0
  25. package/compodoc/index.html +177 -2
  26. package/compodoc/injectables/ExternalAppsService.html +1311 -0
  27. package/compodoc/injectables/FooterService.html +573 -0
  28. package/compodoc/injectables/HeaderService.html +576 -0
  29. package/compodoc/injectables/LayoutService.html +899 -0
  30. package/compodoc/injectables/LogoService.html +411 -0
  31. package/compodoc/injectables/NavigationService.html +46 -57
  32. package/compodoc/interfaces/ReleaseInfoModule.html +385 -0
  33. package/compodoc/interfaces/SettingsMenuItem.html +385 -0
  34. package/compodoc/js/menu-wc.js +24 -40
  35. package/compodoc/js/menu-wc_es5.js +1 -1
  36. package/compodoc/js/search/search_index.js +2 -2
  37. package/compodoc/miscellaneous/functions.html +532 -0
  38. package/compodoc/miscellaneous/typealiases.html +40 -2
  39. package/compodoc/miscellaneous/variables.html +123 -9
  40. package/compodoc/overview.html +2 -10
  41. package/compodoc/properties.html +1 -1
  42. package/docs/assets/highlight.css +42 -0
  43. package/docs/assets/navigation.js +1 -1
  44. package/docs/assets/search.js +1 -1
  45. package/docs/classes/AppsButtonComponent.html +8 -8
  46. package/docs/classes/BaseLayoutComponent.html +2 -0
  47. package/docs/classes/DefaultHeaderComponent.html +7 -0
  48. package/docs/classes/ExternalAppsService.html +19 -0
  49. package/docs/classes/FooterComponent.html +5 -3
  50. package/docs/classes/FooterDirective.html +2 -2
  51. package/docs/classes/FooterService.html +14 -0
  52. package/docs/classes/HeaderComponent.html +6 -8
  53. package/docs/classes/HeaderDirective.html +8 -0
  54. package/docs/classes/HeaderService.html +14 -0
  55. package/docs/classes/LayoutComponent.html +4 -12
  56. package/docs/classes/LayoutService.html +20 -0
  57. package/docs/classes/LogoService.html +7 -0
  58. package/docs/classes/MinimalLayoutComponent.html +2 -0
  59. package/docs/classes/NavigationComponent.html +7 -8
  60. package/docs/classes/NavigationItemComponent.html +6 -9
  61. package/docs/classes/NavigationProgressBarComponent.html +3 -3
  62. package/docs/classes/NavigationService.html +3 -3
  63. package/docs/classes/ReleaseInfoComponent.html +6 -0
  64. package/docs/classes/SettingsButtonComponent.html +6 -11
  65. package/docs/classes/SidenavComponent.html +17 -5
  66. package/docs/classes/SidenavFooterDirective.html +2 -2
  67. package/docs/classes/SidenavHeaderDirective.html +2 -2
  68. package/docs/classes/SidenavToggleButtonComponent.html +4 -3
  69. package/docs/classes/UserProfileIconComponent.html +5 -4
  70. package/docs/documentation.json +9635 -9292
  71. package/docs/functions/IsNavigationDividerItem.html +1 -1
  72. package/docs/functions/IsNavigationInsertItem.html +1 -1
  73. package/docs/functions/IsNavigationItem.html +1 -1
  74. package/docs/functions/provideLayout.html +1 -0
  75. package/docs/functions/widthDefaultHeaderComponent.html +1 -0
  76. package/docs/functions/withExternalApps.html +1 -0
  77. package/docs/functions/withFooterComponents.html +1 -0
  78. package/docs/functions/withHeaderComponents.html +1 -0
  79. package/docs/functions/withNavigationConfig.html +1 -0
  80. package/docs/functions/withNavigationInserts.html +1 -0
  81. package/docs/functions/withReleaseInfoModules.html +1 -0
  82. package/docs/functions/withSettingsMenuItems.html +1 -0
  83. package/docs/index.html +65 -2
  84. package/docs/interfaces/NavigationDividerItem.html +2 -2
  85. package/docs/interfaces/NavigationInsertItem.html +2 -2
  86. package/docs/interfaces/NavigationItem.html +2 -2
  87. package/docs/interfaces/NavigationStatus.html +2 -2
  88. package/docs/interfaces/ReleaseInfoModule.html +4 -0
  89. package/docs/interfaces/SettingsMenuItem.html +4 -0
  90. package/docs/modules.html +31 -17
  91. package/docs/types/ExternalApp.html +1 -0
  92. package/docs/types/ExtractUsernameFromProfileFn.html +1 -1
  93. package/docs/types/Navigation.html +1 -1
  94. package/docs/types/NavigationWithInserts.html +1 -1
  95. package/docs/types/SettingsMenuItemComponent.html +1 -0
  96. package/docs/variables/EXTRACT_USERNAME_FROM_PROFILE.html +1 -1
  97. package/docs/variables/RXAP_EXTERNAL_APP.html +1 -0
  98. package/docs/variables/RXAP_EXTERNAL_APP_FILTER.html +1 -0
  99. package/docs/variables/RXAP_FOOTER_COMPONENT.html +1 -1
  100. package/docs/variables/RXAP_HEADER_COMPONENT.html +1 -1
  101. package/docs/variables/RXAP_LAYOUT_APPS_GRID.html +1 -1
  102. package/docs/variables/RXAP_LOGO_CONFIG.html +1 -1
  103. package/docs/variables/RXAP_NAVIGATION_CONFIG.html +1 -1
  104. package/docs/variables/RXAP_NAVIGATION_CONFIG_INSERTS.html +1 -1
  105. package/docs/variables/RXAP_RELEASE_INFO_MODULE.html +1 -0
  106. package/docs/variables/RXAP_SETTINGS_MENU_ITEM.html +1 -0
  107. package/docs/variables/RXAP_SETTINGS_MENU_ITEM_COMPONENT.html +1 -0
  108. package/esm2022/index.mjs +35 -40
  109. package/esm2022/lib/base-layout/base-layout.component.mjs +16 -0
  110. package/esm2022/lib/default-header/apps-button/apps-button.component.mjs +40 -0
  111. package/esm2022/lib/default-header/default-header.component.mjs +32 -0
  112. package/esm2022/lib/default-header/settings-button/settings-button.component.mjs +73 -0
  113. package/esm2022/lib/default-header/sidenav-toggle-button/sidenav-toggle-button.component.mjs +24 -0
  114. package/esm2022/lib/default-header/user-profile-icon/user-profile-icon.component.mjs +35 -0
  115. package/esm2022/lib/external-apps.service.mjs +99 -0
  116. package/esm2022/lib/footer/footer.component.mjs +13 -13
  117. package/esm2022/lib/footer/footer.directive.mjs +30 -0
  118. package/esm2022/lib/footer.service.mjs +58 -0
  119. package/esm2022/lib/header/header.component.mjs +17 -65
  120. package/esm2022/lib/header/header.directive.mjs +30 -0
  121. package/esm2022/lib/header.service.mjs +60 -0
  122. package/esm2022/lib/layout/layout.component.mjs +33 -47
  123. package/esm2022/lib/layout.service.mjs +93 -0
  124. package/esm2022/lib/logo.service.mjs +23 -0
  125. package/esm2022/lib/minimal-layout/minimal-layout.component.mjs +14 -0
  126. package/esm2022/lib/navigation/navigation-item/navigation-item.component.mjs +30 -64
  127. package/esm2022/lib/navigation/navigation.component.mjs +22 -48
  128. package/esm2022/lib/navigation-progress-bar/navigation-progress-bar.component.mjs +23 -0
  129. package/esm2022/lib/navigation.service.mjs +141 -0
  130. package/esm2022/lib/provide.mjs +80 -0
  131. package/esm2022/lib/release-info/release-info.component.mjs +28 -0
  132. package/esm2022/lib/sidenav/sidenav.component.mjs +50 -33
  133. package/esm2022/lib/tokens.mjs +10 -1
  134. package/esm2022/lib/types.mjs +1 -1
  135. package/fesm2022/rxap-layout.mjs +856 -833
  136. package/fesm2022/rxap-layout.mjs.map +1 -1
  137. package/index.d.ts +18 -19
  138. package/lib/base-layout/base-layout.component.d.ts +5 -0
  139. package/lib/default-header/apps-button/apps-button.component.d.ts +15 -0
  140. package/lib/default-header/default-header.component.d.ts +11 -0
  141. package/lib/{header → default-header}/settings-button/settings-button.component.d.ts +6 -14
  142. package/lib/{header → default-header}/sidenav-toggle-button/sidenav-toggle-button.component.d.ts +3 -5
  143. package/lib/default-header/user-profile-icon/user-profile-icon.component.d.ts +10 -0
  144. package/lib/external-apps.service.d.ts +26 -0
  145. package/lib/footer/footer.component.d.ts +3 -3
  146. package/lib/{footer.directive.d.ts → footer/footer.directive.d.ts} +2 -4
  147. package/lib/footer.service.d.ts +32 -0
  148. package/lib/header/header.component.d.ts +6 -12
  149. package/lib/header/header.directive.d.ts +12 -0
  150. package/lib/header.service.d.ts +34 -0
  151. package/lib/layout/layout.component.d.ts +4 -17
  152. package/lib/layout.service.d.ts +26 -0
  153. package/lib/logo.service.d.ts +10 -0
  154. package/lib/minimal-layout/minimal-layout.component.d.ts +5 -0
  155. package/lib/navigation/navigation-item/navigation-item.component.d.ts +10 -18
  156. package/lib/navigation/navigation.component.d.ts +10 -15
  157. package/lib/{header/navigation-progress-bar → navigation-progress-bar}/navigation-progress-bar.component.d.ts +1 -3
  158. package/lib/{navigation/navigation.service.d.ts → navigation.service.d.ts} +4 -5
  159. package/lib/provide.d.ts +13 -0
  160. package/lib/release-info/release-info.component.d.ts +9 -0
  161. package/lib/sidenav/sidenav.component.d.ts +18 -6
  162. package/lib/tokens.d.ts +12 -3
  163. package/lib/types.d.ts +15 -4
  164. package/package.json +30 -66
  165. package/theme.css +1 -1
  166. package/docs/classes/AppUrlService.html +0 -13
  167. package/docs/classes/AuthenticationServiceMock.html +0 -3
  168. package/docs/classes/LanguageSelectorComponent.html +0 -3
  169. package/docs/classes/LayoutComponentService.html +0 -15
  170. package/docs/classes/ReplaceRouterPathsPipe.html +0 -4
  171. package/docs/classes/ReplaceRouterPathsService.html +0 -3
  172. package/docs/classes/ResetButtonComponent.html +0 -3
  173. package/docs/classes/SidenavComponentService.html +0 -5
  174. package/docs/classes/SignOutComponent.html +0 -4
  175. package/docs/classes/ToggleWindowSidenavButtonComponent.html +0 -5
  176. package/docs/classes/VersionComponent.html +0 -7
  177. package/docs/classes/WindowContainerSidenavComponent.html +0 -10
  178. package/docs/interfaces/ExternalApps.html +0 -8
  179. package/docs/interfaces/LogoConfig.html +0 -4
  180. package/esm2022/lib/app-url.service.mjs +0 -78
  181. package/esm2022/lib/authentication.service.mock.mjs +0 -13
  182. package/esm2022/lib/footer.directive.mjs +0 -40
  183. package/esm2022/lib/header/apps-button/apps-button.component.mjs +0 -46
  184. package/esm2022/lib/header/language-selector/language-selector.component.mjs +0 -35
  185. package/esm2022/lib/header/navigation-progress-bar/navigation-progress-bar.component.mjs +0 -30
  186. package/esm2022/lib/header/reset-button/reset-button.component.mjs +0 -23
  187. package/esm2022/lib/header/settings-button/settings-button.component.mjs +0 -87
  188. package/esm2022/lib/header/sidenav-toggle-button/sidenav-toggle-button.component.mjs +0 -26
  189. package/esm2022/lib/header/sign-out/sign-out.component.mjs +0 -23
  190. package/esm2022/lib/header/user-profile-icon/user-profile-icon.component.mjs +0 -45
  191. package/esm2022/lib/layout/layout.component.service.mjs +0 -77
  192. package/esm2022/lib/navigation/navigation.service.mjs +0 -145
  193. package/esm2022/lib/navigation/replace-router-paths.pipe.mjs +0 -22
  194. package/esm2022/lib/navigation/replace-router-paths.service.mjs +0 -15
  195. package/esm2022/lib/sidenav/sidenav.component.service.mjs +0 -22
  196. package/esm2022/lib/sidenav/version/version.component.mjs +0 -28
  197. package/esm2022/lib/toggle-window-sidenav-button/toggle-window-sidenav-button.component.mjs +0 -30
  198. package/esm2022/lib/window-container-sidenav/window-container-sidenav.component.mjs +0 -54
  199. package/lib/app-url.service.d.ts +0 -29
  200. package/lib/authentication.service.mock.d.ts +0 -6
  201. package/lib/header/apps-button/apps-button.component.d.ts +0 -16
  202. package/lib/header/language-selector/language-selector.component.d.ts +0 -8
  203. package/lib/header/reset-button/reset-button.component.d.ts +0 -8
  204. package/lib/header/sign-out/sign-out.component.d.ts +0 -9
  205. package/lib/header/user-profile-icon/user-profile-icon.component.d.ts +0 -15
  206. package/lib/layout/layout.component.service.d.ts +0 -25
  207. package/lib/navigation/replace-router-paths.pipe.d.ts +0 -11
  208. package/lib/navigation/replace-router-paths.service.d.ts +0 -7
  209. package/lib/sidenav/sidenav.component.service.d.ts +0 -11
  210. package/lib/sidenav/version/version.component.d.ts +0 -14
  211. package/lib/toggle-window-sidenav-button/toggle-window-sidenav-button.component.d.ts +0 -9
  212. package/lib/window-container-sidenav/window-container-sidenav.component.d.ts +0 -17
@@ -120,19 +120,12 @@
120
120
  <h3>File</h3>
121
121
  </p>
122
122
  <p class="comment">
123
- <code>src/lib/header/settings-button/settings-button.component.ts</code>
123
+ <code>src/lib/default-header/settings-button/settings-button.component.ts</code>
124
124
  </p>
125
125
 
126
126
 
127
127
 
128
128
 
129
- <p class="comment">
130
- <h3>Implements</h3>
131
- </p>
132
- <p class="comment">
133
- <code>OnInit</code>
134
- <code>OnDestroy</code>
135
- </p>
136
129
 
137
130
 
138
131
  <section data-compodoc="block-metadata">
@@ -164,12 +157,13 @@
164
157
  <tr>
165
158
  <td class="col-md-3">imports</td>
166
159
  <td class="col-md-9">
167
- <code>CommonModule</code>
168
- <code>MatButtonModule</code>
169
- <code>MatIconModule</code>
170
- <code><a href="../components/LanguageSelectorComponent.html" target="_self" >LanguageSelectorComponent</a></code>
171
- <code>MatMenuModule</code>
172
- <code>PortalModule</code>
160
+ <code>MatIconButton</code>
161
+ <code>MatIcon</code>
162
+ <code>MatMenu</code>
163
+ <code>MatMenuTrigger</code>
164
+ <code>MatMenuItem</code>
165
+ <code>CdkPortalOutlet</code>
166
+ <code>IconDirective</code>
173
167
  </td>
174
168
  </tr>
175
169
 
@@ -219,11 +213,14 @@
219
213
  <a href="#availableTypographies" >availableTypographies</a>
220
214
  </li>
221
215
  <li>
222
- <span class="modifier">Public</span>
223
- <a href="#isDevMode" >isDevMode</a>
216
+ <a href="#customItemComponents" >customItemComponents</a>
217
+ </li>
218
+ <li>
219
+ <a href="#customItems" >customItems</a>
224
220
  </li>
225
221
  <li>
226
- <a href="#items" >items</a>
222
+ <span class="modifier">Public</span>
223
+ <a href="#isDevMode" >isDevMode</a>
227
224
  </li>
228
225
  <li>
229
226
  <span class="modifier">Public</span>
@@ -243,7 +240,7 @@
243
240
  <td class="col-md-4">
244
241
  <ul class="index-list">
245
242
  <li>
246
- <a href="#openChangelogDialog" >openChangelogDialog</a>
243
+ <a href="#clickItem" >clickItem</a>
247
244
  </li>
248
245
  <li>
249
246
  <a href="#previewDensity" >previewDensity</a>
@@ -284,90 +281,6 @@
284
281
  </table>
285
282
  </section>
286
283
 
287
- <section data-compodoc="block-constructor">
288
- <h3 id="constructor">Constructor</h3>
289
- <table class="table table-sm table-bordered">
290
- <tbody>
291
- <tr>
292
- <td class="col-md-4">
293
- <code>constructor(theme: ThemeService, route: ActivatedRoute, injector: Injector, changelogService: ChangelogService)</code>
294
- </td>
295
- </tr>
296
- <tr>
297
- <td class="col-md-4">
298
- <div class="io-line">Defined in <a href="" data-line="54" class="link-to-prism">src/lib/header/settings-button/settings-button.component.ts:54</a></div>
299
- </td>
300
- </tr>
301
-
302
- <tr>
303
- <td class="col-md-4">
304
- <div>
305
- <b>Parameters :</b>
306
- <table class="params">
307
- <thead>
308
- <tr>
309
- <td>Name</td>
310
- <td>Type</td>
311
- <td>Optional</td>
312
- </tr>
313
- </thead>
314
- <tbody>
315
- <tr>
316
- <td>theme</td>
317
-
318
- <td>
319
- <code>ThemeService</code>
320
- </td>
321
-
322
- <td>
323
- No
324
- </td>
325
-
326
- </tr>
327
- <tr>
328
- <td>route</td>
329
-
330
- <td>
331
- <code>ActivatedRoute</code>
332
- </td>
333
-
334
- <td>
335
- No
336
- </td>
337
-
338
- </tr>
339
- <tr>
340
- <td>injector</td>
341
-
342
- <td>
343
- <code>Injector</code>
344
- </td>
345
-
346
- <td>
347
- No
348
- </td>
349
-
350
- </tr>
351
- <tr>
352
- <td>changelogService</td>
353
-
354
- <td>
355
- <code>ChangelogService</code>
356
- </td>
357
-
358
- <td>
359
- No
360
- </td>
361
-
362
- </tr>
363
- </tbody>
364
- </table>
365
- </div>
366
- </td>
367
- </tr>
368
- </tbody>
369
- </table>
370
- </section>
371
284
 
372
285
 
373
286
 
@@ -382,24 +295,24 @@
382
295
  <tbody>
383
296
  <tr>
384
297
  <td class="col-md-4">
385
- <a name="openChangelogDialog"></a>
298
+ <a name="clickItem"></a>
386
299
  <span class="name">
387
- <span ><b>openChangelogDialog</b></span>
388
- <a href="#openChangelogDialog"><span class="icon ion-ios-link"></span></a>
300
+ <span ><b>clickItem</b></span>
301
+ <a href="#clickItem"><span class="icon ion-ios-link"></span></a>
389
302
  </span>
390
303
  </td>
391
304
  </tr>
392
305
  <tr>
393
306
  <td class="col-md-4">
394
- <code>openChangelogDialog()</code>
307
+ <code>clickItem(item: <a href="../interfaces/SettingsMenuItem.html" target="_self">SettingsMenuItem</a>)</code>
395
308
  </td>
396
309
  </tr>
397
310
 
398
311
 
399
312
  <tr>
400
313
  <td class="col-md-4">
401
- <div class="io-line">Defined in <a href="" data-line="85"
402
- class="link-to-prism">src/lib/header/settings-button/settings-button.component.ts:85</a></div>
314
+ <div class="io-line">Defined in <a href="" data-line="109"
315
+ class="link-to-prism">src/lib/default-header/settings-button/settings-button.component.ts:109</a></div>
403
316
  </td>
404
317
  </tr>
405
318
 
@@ -407,10 +320,40 @@
407
320
  <tr>
408
321
  <td class="col-md-4">
409
322
 
323
+ <div class="io-description">
324
+ <b>Parameters :</b>
325
+
326
+ <table class="params">
327
+ <thead>
328
+ <tr>
329
+ <td>Name</td>
330
+ <td>Type</td>
331
+ <td>Optional</td>
332
+ </tr>
333
+ </thead>
334
+ <tbody>
335
+ <tr>
336
+ <td>item</td>
337
+ <td>
338
+ <code><a href="../interfaces/SettingsMenuItem.html" target="_self" >SettingsMenuItem</a></code>
339
+ </td>
340
+
341
+ <td>
342
+ No
343
+ </td>
344
+
345
+
346
+ </tr>
347
+ </tbody>
348
+ </table>
349
+ </div>
410
350
  <div class="io-description">
411
351
  <b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>
412
352
 
413
353
  </div>
354
+ <div class="io-description">
355
+
356
+ </div>
414
357
  </td>
415
358
  </tr>
416
359
  </tbody>
@@ -435,8 +378,8 @@
435
378
 
436
379
  <tr>
437
380
  <td class="col-md-4">
438
- <div class="io-line">Defined in <a href="" data-line="89"
439
- class="link-to-prism">src/lib/header/settings-button/settings-button.component.ts:89</a></div>
381
+ <div class="io-line">Defined in <a href="" data-line="73"
382
+ class="link-to-prism">src/lib/default-header/settings-button/settings-button.component.ts:73</a></div>
440
383
  </td>
441
384
  </tr>
442
385
 
@@ -502,8 +445,8 @@
502
445
 
503
446
  <tr>
504
447
  <td class="col-md-4">
505
- <div class="io-line">Defined in <a href="" data-line="113"
506
- class="link-to-prism">src/lib/header/settings-button/settings-button.component.ts:113</a></div>
448
+ <div class="io-line">Defined in <a href="" data-line="97"
449
+ class="link-to-prism">src/lib/default-header/settings-button/settings-button.component.ts:97</a></div>
507
450
  </td>
508
451
  </tr>
509
452
 
@@ -569,8 +512,8 @@
569
512
 
570
513
  <tr>
571
514
  <td class="col-md-4">
572
- <div class="io-line">Defined in <a href="" data-line="101"
573
- class="link-to-prism">src/lib/header/settings-button/settings-button.component.ts:101</a></div>
515
+ <div class="io-line">Defined in <a href="" data-line="85"
516
+ class="link-to-prism">src/lib/default-header/settings-button/settings-button.component.ts:85</a></div>
574
517
  </td>
575
518
  </tr>
576
519
 
@@ -636,8 +579,8 @@
636
579
 
637
580
  <tr>
638
581
  <td class="col-md-4">
639
- <div class="io-line">Defined in <a href="" data-line="93"
640
- class="link-to-prism">src/lib/header/settings-button/settings-button.component.ts:93</a></div>
582
+ <div class="io-line">Defined in <a href="" data-line="77"
583
+ class="link-to-prism">src/lib/default-header/settings-button/settings-button.component.ts:77</a></div>
641
584
  </td>
642
585
  </tr>
643
586
 
@@ -673,8 +616,8 @@
673
616
 
674
617
  <tr>
675
618
  <td class="col-md-4">
676
- <div class="io-line">Defined in <a href="" data-line="117"
677
- class="link-to-prism">src/lib/header/settings-button/settings-button.component.ts:117</a></div>
619
+ <div class="io-line">Defined in <a href="" data-line="101"
620
+ class="link-to-prism">src/lib/default-header/settings-button/settings-button.component.ts:101</a></div>
678
621
  </td>
679
622
  </tr>
680
623
 
@@ -710,8 +653,8 @@
710
653
 
711
654
  <tr>
712
655
  <td class="col-md-4">
713
- <div class="io-line">Defined in <a href="" data-line="105"
714
- class="link-to-prism">src/lib/header/settings-button/settings-button.component.ts:105</a></div>
656
+ <div class="io-line">Defined in <a href="" data-line="89"
657
+ class="link-to-prism">src/lib/default-header/settings-button/settings-button.component.ts:89</a></div>
715
658
  </td>
716
659
  </tr>
717
660
 
@@ -747,8 +690,8 @@
747
690
 
748
691
  <tr>
749
692
  <td class="col-md-4">
750
- <div class="io-line">Defined in <a href="" data-line="97"
751
- class="link-to-prism">src/lib/header/settings-button/settings-button.component.ts:97</a></div>
693
+ <div class="io-line">Defined in <a href="" data-line="81"
694
+ class="link-to-prism">src/lib/default-header/settings-button/settings-button.component.ts:81</a></div>
752
695
  </td>
753
696
  </tr>
754
697
 
@@ -814,8 +757,8 @@
814
757
 
815
758
  <tr>
816
759
  <td class="col-md-4">
817
- <div class="io-line">Defined in <a href="" data-line="121"
818
- class="link-to-prism">src/lib/header/settings-button/settings-button.component.ts:121</a></div>
760
+ <div class="io-line">Defined in <a href="" data-line="105"
761
+ class="link-to-prism">src/lib/default-header/settings-button/settings-button.component.ts:105</a></div>
819
762
  </td>
820
763
  </tr>
821
764
 
@@ -881,8 +824,8 @@
881
824
 
882
825
  <tr>
883
826
  <td class="col-md-4">
884
- <div class="io-line">Defined in <a href="" data-line="109"
885
- class="link-to-prism">src/lib/header/settings-button/settings-button.component.ts:109</a></div>
827
+ <div class="io-line">Defined in <a href="" data-line="93"
828
+ class="link-to-prism">src/lib/default-header/settings-button/settings-button.component.ts:93</a></div>
886
829
  </td>
887
830
  </tr>
888
831
 
@@ -949,13 +892,12 @@
949
892
  </tr>
950
893
  <tr>
951
894
  <td class="col-md-4">
952
- <i>Type : </i> <code>string[] | null</code>
953
-
895
+ <i>Default value : </i><code>this.theme.getAvailableThemes()</code>
954
896
  </td>
955
897
  </tr>
956
898
  <tr>
957
899
  <td class="col-md-4">
958
- <div class="io-line">Defined in <a href="" data-line="53" class="link-to-prism">src/lib/header/settings-button/settings-button.component.ts:53</a></div>
900
+ <div class="io-line">Defined in <a href="" data-line="70" class="link-to-prism">src/lib/default-header/settings-button/settings-button.component.ts:70</a></div>
959
901
  </td>
960
902
  </tr>
961
903
 
@@ -977,13 +919,40 @@
977
919
  </tr>
978
920
  <tr>
979
921
  <td class="col-md-4">
980
- <i>Type : </i> <code>string[] | null</code>
922
+ <i>Default value : </i><code>this.theme.getAvailableTypographies()</code>
923
+ </td>
924
+ </tr>
925
+ <tr>
926
+ <td class="col-md-4">
927
+ <div class="io-line">Defined in <a href="" data-line="67" class="link-to-prism">src/lib/default-header/settings-button/settings-button.component.ts:67</a></div>
928
+ </td>
929
+ </tr>
981
930
 
931
+
932
+ </tbody>
933
+ </table>
934
+ <table class="table table-sm table-bordered">
935
+ <tbody>
936
+ <tr>
937
+ <td class="col-md-4">
938
+ <a name="customItemComponents"></a>
939
+ <span class="name">
940
+ <span ><b>customItemComponents</b></span>
941
+ <a href="#customItemComponents"><span class="icon ion-ios-link"></span></a>
942
+ </span>
943
+ </td>
944
+ </tr>
945
+ <tr>
946
+ <td class="col-md-4">
947
+ <i>Default value : </i><code>signal(
948
+ coerceArray(inject(RXAP_SETTINGS_MENU_ITEM_COMPONENT, { optional: true }))
949
+ .map(item &#x3D;&gt; new ComponentPortal(item, null, this.injector)),
950
+ )</code>
982
951
  </td>
983
952
  </tr>
984
953
  <tr>
985
954
  <td class="col-md-4">
986
- <div class="io-line">Defined in <a href="" data-line="50" class="link-to-prism">src/lib/header/settings-button/settings-button.component.ts:50</a></div>
955
+ <div class="io-line">Defined in <a href="" data-line="54" class="link-to-prism">src/lib/default-header/settings-button/settings-button.component.ts:54</a></div>
987
956
  </td>
988
957
  </tr>
989
958
 
@@ -994,22 +963,21 @@
994
963
  <tbody>
995
964
  <tr>
996
965
  <td class="col-md-4">
997
- <a name="isDevMode"></a>
966
+ <a name="customItems"></a>
998
967
  <span class="name">
999
- <span class="modifier">Public</span>
1000
- <span ><b>isDevMode</b></span>
1001
- <a href="#isDevMode"><span class="icon ion-ios-link"></span></a>
968
+ <span ><b>customItems</b></span>
969
+ <a href="#customItems"><span class="icon ion-ios-link"></span></a>
1002
970
  </span>
1003
971
  </td>
1004
972
  </tr>
1005
973
  <tr>
1006
974
  <td class="col-md-4">
1007
- <i>Default value : </i><code>isDevMode()</code>
975
+ <i>Default value : </i><code>signal(coerceArray(inject(RXAP_SETTINGS_MENU_ITEM, { optional: true })))</code>
1008
976
  </td>
1009
977
  </tr>
1010
978
  <tr>
1011
979
  <td class="col-md-4">
1012
- <div class="io-line">Defined in <a href="" data-line="40" class="link-to-prism">src/lib/header/settings-button/settings-button.component.ts:40</a></div>
980
+ <div class="io-line">Defined in <a href="" data-line="59" class="link-to-prism">src/lib/default-header/settings-button/settings-button.component.ts:59</a></div>
1013
981
  </td>
1014
982
  </tr>
1015
983
 
@@ -1020,21 +988,22 @@
1020
988
  <tbody>
1021
989
  <tr>
1022
990
  <td class="col-md-4">
1023
- <a name="items"></a>
991
+ <a name="isDevMode"></a>
1024
992
  <span class="name">
1025
- <span ><b>items</b></span>
1026
- <a href="#items"><span class="icon ion-ios-link"></span></a>
993
+ <span class="modifier">Public</span>
994
+ <span ><b>isDevMode</b></span>
995
+ <a href="#isDevMode"><span class="icon ion-ios-link"></span></a>
1027
996
  </span>
1028
997
  </td>
1029
998
  </tr>
1030
999
  <tr>
1031
1000
  <td class="col-md-4">
1032
- <i>Default value : </i><code>signal&lt;Array&lt;ComponentPortal&lt;unknown&gt;&gt;&gt;([])</code>
1001
+ <i>Default value : </i><code>isDevMode()</code>
1033
1002
  </td>
1034
1003
  </tr>
1035
1004
  <tr>
1036
1005
  <td class="col-md-4">
1037
- <div class="io-line">Defined in <a href="" data-line="41" class="link-to-prism">src/lib/header/settings-button/settings-button.component.ts:41</a></div>
1006
+ <div class="io-line">Defined in <a href="" data-line="49" class="link-to-prism">src/lib/default-header/settings-button/settings-button.component.ts:49</a></div>
1038
1007
  </td>
1039
1008
  </tr>
1040
1009
 
@@ -1056,13 +1025,12 @@
1056
1025
  </tr>
1057
1026
  <tr>
1058
1027
  <td class="col-md-4">
1059
- <i>Type : </i> <code>ThemeService</code>
1060
-
1028
+ <i>Default value : </i><code>inject(ThemeService)</code>
1061
1029
  </td>
1062
1030
  </tr>
1063
1031
  <tr>
1064
1032
  <td class="col-md-4">
1065
- <div class="io-line">Defined in <a href="" data-line="57" class="link-to-prism">src/lib/header/settings-button/settings-button.component.ts:57</a></div>
1033
+ <div class="io-line">Defined in <a href="" data-line="51" class="link-to-prism">src/lib/default-header/settings-button/settings-button.component.ts:51</a></div>
1066
1034
  </td>
1067
1035
  </tr>
1068
1036
 
@@ -1076,47 +1044,64 @@
1076
1044
 
1077
1045
  <div class="tab-pane fade tab-source-code" id="source">
1078
1046
  <pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import {
1047
+ CdkPortalOutlet,
1079
1048
  ComponentPortal,
1080
- ComponentType,
1081
- PortalModule,
1082
1049
  } from &#x27;@angular/cdk/portal&#x27;;
1083
- import { CommonModule } from &#x27;@angular/common&#x27;;
1084
1050
  import {
1085
1051
  Component,
1052
+ inject,
1086
1053
  Injector,
1087
1054
  isDevMode,
1088
- OnDestroy,
1089
- OnInit,
1055
+ runInInjectionContext,
1090
1056
  signal,
1091
1057
  } from &#x27;@angular/core&#x27;;
1092
- import { MatButtonModule } from &#x27;@angular/material/button&#x27;;
1093
- import { MatIconModule } from &#x27;@angular/material/icon&#x27;;
1094
- import { MatMenuModule } from &#x27;@angular/material/menu&#x27;;
1095
- import { ActivatedRoute } from &#x27;@angular/router&#x27;;
1096
- import { ChangelogService } from &#x27;@rxap/ngx-changelog&#x27;;
1058
+ import { MatIconButton } from &#x27;@angular/material/button&#x27;;
1059
+ import { MatIcon } from &#x27;@angular/material/icon&#x27;;
1060
+ import {
1061
+ MatMenu,
1062
+ MatMenuItem,
1063
+ MatMenuTrigger,
1064
+ } from &#x27;@angular/material/menu&#x27;;
1065
+ import { IconDirective } from &#x27;@rxap/material-directives/icon&#x27;;
1097
1066
  import {
1098
1067
  ThemeDensity,
1099
1068
  ThemeService,
1100
1069
  } from &#x27;@rxap/ngx-theme&#x27;;
1101
- import { Subscription } from &#x27;rxjs&#x27;;
1070
+ import { coerceArray } from &#x27;@rxap/utilities&#x27;;
1102
1071
  import {
1103
- map,
1104
- tap,
1105
- } from &#x27;rxjs/operators&#x27;;
1106
- import { LanguageSelectorComponent } from &#x27;../language-selector/language-selector.component&#x27;;
1072
+ RXAP_SETTINGS_MENU_ITEM,
1073
+ RXAP_SETTINGS_MENU_ITEM_COMPONENT,
1074
+ } from &#x27;../../tokens&#x27;;
1075
+ import { SettingsMenuItem } from &#x27;../../types&#x27;;
1107
1076
 
1108
1077
  @Component({
1109
1078
  selector: &#x27;rxap-settings-button&#x27;,
1110
1079
  standalone: true,
1111
- imports: [ CommonModule, MatButtonModule, MatIconModule, LanguageSelectorComponent, MatMenuModule, PortalModule ],
1112
1080
  templateUrl: &#x27;./settings-button.component.html&#x27;,
1113
1081
  styleUrls: [ &#x27;./settings-button.component.scss&#x27; ],
1082
+ imports: [
1083
+ MatIconButton,
1084
+ MatIcon,
1085
+ MatMenu,
1086
+ MatMenuTrigger,
1087
+ MatMenuItem,
1088
+ CdkPortalOutlet,
1089
+ IconDirective,
1090
+ ],
1114
1091
  })
1115
- export class SettingsButtonComponent implements OnInit, OnDestroy {
1092
+ export class SettingsButtonComponent {
1116
1093
 
1117
1094
  public isDevMode &#x3D; isDevMode();
1118
- items &#x3D; signal&lt;Array&lt;ComponentPortal&lt;unknown&gt;&gt;&gt;([]);
1119
- private _subscription?: Subscription;
1095
+
1096
+ public readonly theme &#x3D; inject(ThemeService);
1097
+ private readonly injector &#x3D; inject(Injector);
1098
+
1099
+ customItemComponents &#x3D; signal(
1100
+ coerceArray(inject(RXAP_SETTINGS_MENU_ITEM_COMPONENT, { optional: true }))
1101
+ .map(item &#x3D;&gt; new ComponentPortal(item, null, this.injector)),
1102
+ );
1103
+
1104
+ customItems &#x3D; signal(coerceArray(inject(RXAP_SETTINGS_MENU_ITEM, { optional: true })));
1120
1105
 
1121
1106
  private savePreviewDensityValue &#x3D; false;
1122
1107
  private currentDensityValue: ThemeDensity | null &#x3D; null;
@@ -1124,45 +1109,12 @@ export class SettingsButtonComponent implements OnInit, OnDestroy {
1124
1109
  private savePreviewTypographyValue &#x3D; false;
1125
1110
  private currentTypographyValue: string | null &#x3D; null;
1126
1111
 
1127
- public readonly availableTypographies: string[] | null;
1112
+ public readonly availableTypographies &#x3D; this.theme.getAvailableTypographies();
1128
1113
  private savePreviewThemeValue &#x3D; false;
1129
1114
 
1130
- public readonly availableThemes: string[] | null;
1115
+ public readonly availableThemes &#x3D; this.theme.getAvailableThemes();
1131
1116
  private currentThemeValue: string | null &#x3D; null;
1132
1117
 
1133
- constructor(
1134
- public readonly theme: ThemeService,
1135
- private readonly route: ActivatedRoute,
1136
- private readonly injector: Injector,
1137
- private readonly changelogService: ChangelogService,
1138
- ) {
1139
- this.availableThemes &#x3D; this.theme.getAvailableThemes();
1140
- this.availableTypographies &#x3D; this.theme.getAvailableTypographies();
1141
- }
1142
-
1143
- ngOnDestroy() {
1144
- this._subscription?.unsubscribe();
1145
- }
1146
-
1147
- ngOnInit() {
1148
- this._subscription &#x3D; this.route.data.pipe(
1149
- map(data &#x3D;&gt; this.getCustomMenuItems(data)),
1150
- map(items &#x3D;&gt; items.map(item &#x3D;&gt; new ComponentPortal(item, undefined, this.injector))),
1151
- tap(items &#x3D;&gt; this.items.set(items)),
1152
- ).subscribe();
1153
- }
1154
-
1155
- private getCustomMenuItems(data: any): Array&lt;ComponentType&lt;unknown&gt;&gt; {
1156
- if (data?.layout?.header?.menu?.items?.length) {
1157
- return data.layout.header.menu.items;
1158
- }
1159
- return [];
1160
- }
1161
-
1162
- openChangelogDialog() {
1163
- this.changelogService.showChangelogDialog();
1164
- }
1165
-
1166
1118
  previewDensity(density: ThemeDensity) {
1167
1119
  this.theme.applyDensity(density);
1168
1120
  }
@@ -1199,6 +1151,9 @@ export class SettingsButtonComponent implements OnInit, OnDestroy {
1199
1151
  this.theme.setTheme(theme);
1200
1152
  }
1201
1153
 
1154
+ clickItem(item: SettingsMenuItem) {
1155
+ runInInjectionContext(this.injector, () &#x3D;&gt; item.action());
1156
+ }
1202
1157
  }
1203
1158
  </code></pre>
1204
1159
  </div>
@@ -1210,22 +1165,26 @@ export class SettingsButtonComponent implements OnInit, OnDestroy {
1210
1165
 
1211
1166
  &lt;mat-menu #menu&#x3D;&quot;matMenu&quot;&gt;
1212
1167
  &lt;button (click)&#x3D;&quot;theme.toggleDarkTheme()&quot; mat-menu-item&gt;
1213
- &lt;mat-icon *ngIf&#x3D;&quot;theme.darkMode()&quot; svgIcon&#x3D;&quot;brightness-2&quot;&gt;&lt;/mat-icon&gt;
1214
- &lt;mat-icon *ngIf&#x3D;&quot;!theme.darkMode()&quot; svgIcon&#x3D;&quot;brightness-5&quot;&gt;&lt;/mat-icon&gt;
1168
+ @if (theme.darkMode()) {
1169
+ &lt;mat-icon svgIcon&#x3D;&quot;brightness-2&quot;&gt;&lt;/mat-icon&gt;
1170
+ } @else {
1171
+ &lt;mat-icon svgIcon&#x3D;&quot;brightness-5&quot;&gt;&lt;/mat-icon&gt;
1172
+ }
1215
1173
  &lt;span i18n&gt;Mode&lt;/span&gt;
1216
1174
  &lt;/button&gt;
1217
1175
  &lt;button [matMenuTriggerFor]&#x3D;&quot;themeMenu&quot; mat-menu-item&gt;
1218
1176
  &lt;mat-icon svgIcon&#x3D;&quot;compare&quot;&gt;&lt;/mat-icon&gt;
1219
1177
  &lt;span i18n&gt;Theme&lt;/span&gt;
1220
1178
  &lt;/button&gt;
1221
- &lt;rxap-language-selector&gt;&lt;/rxap-language-selector&gt;
1222
- &lt;button (click)&#x3D;&quot;openChangelogDialog()&quot; mat-menu-item&gt;
1223
- &lt;mat-icon svgIcon&#x3D;&quot;format-list-numbered&quot;&gt;&lt;/mat-icon&gt;
1224
- &lt;span i18n&gt;What&#x27;s new&lt;/span&gt;
1225
- &lt;/button&gt;
1226
- &lt;ng-container *ngFor&#x3D;&quot;let item of items()&quot;&gt;
1179
+ @for (item of customItems(); track item.label) {
1180
+ &lt;button (click)&#x3D;&quot;clickItem(item)&quot; mat-menu-item&gt;
1181
+ &lt;mat-icon [rxapIcon]&#x3D;&quot;item.icon&quot;&gt;&lt;/mat-icon&gt;
1182
+ &lt;span&gt;{{ item.label }}&lt;/span&gt;
1183
+ &lt;/button&gt;
1184
+ }
1185
+ @for (item of customItemComponents(); track item) {
1227
1186
  &lt;ng-template [cdkPortalOutlet]&#x3D;&quot;item&quot;&gt;&lt;/ng-template&gt;
1228
- &lt;/ng-container&gt;
1187
+ }
1229
1188
  &lt;/mat-menu&gt;
1230
1189
 
1231
1190
  &lt;mat-menu #themeMenu&#x3D;&quot;matMenu&quot; xPosition&#x3D;&quot;before&quot;&gt;
@@ -1233,14 +1192,18 @@ export class SettingsButtonComponent implements OnInit, OnDestroy {
1233
1192
  &lt;mat-icon svgIcon&#x3D;&quot;move-resize&quot;&gt;&lt;/mat-icon&gt;
1234
1193
  &lt;span i18n&gt;Density&lt;/span&gt;
1235
1194
  &lt;/button&gt;
1236
- &lt;button *ngIf&#x3D;&quot;availableTypographies?.length&quot; [matMenuTriggerFor]&#x3D;&quot;themeFontMenu&quot; mat-menu-item&gt;
1237
- &lt;mat-icon svgIcon&#x3D;&quot;format-font&quot;&gt;&lt;/mat-icon&gt;
1238
- &lt;span i18n&gt;Font&lt;/span&gt;
1239
- &lt;/button&gt;
1240
- &lt;button *ngIf&#x3D;&quot;availableThemes?.length&quot; [matMenuTriggerFor]&#x3D;&quot;themePresetMenu&quot; mat-menu-item&gt;
1241
- &lt;mat-icon svgIcon&#x3D;&quot;shape-outline&quot;&gt;&lt;/mat-icon&gt;
1242
- &lt;span i18n&gt;Preset&lt;/span&gt;
1243
- &lt;/button&gt;
1195
+ @if (availableTypographies?.length) {
1196
+ &lt;button [matMenuTriggerFor]&#x3D;&quot;themeFontMenu&quot; mat-menu-item&gt;
1197
+ &lt;mat-icon svgIcon&#x3D;&quot;format-font&quot;&gt;&lt;/mat-icon&gt;
1198
+ &lt;span i18n&gt;Font&lt;/span&gt;
1199
+ &lt;/button&gt;
1200
+ }
1201
+ @if (availableThemes?.length) {
1202
+ &lt;button [matMenuTriggerFor]&#x3D;&quot;themePresetMenu&quot; mat-menu-item&gt;
1203
+ &lt;mat-icon svgIcon&#x3D;&quot;shape-outline&quot;&gt;&lt;/mat-icon&gt;
1204
+ &lt;span i18n&gt;Preset&lt;/span&gt;
1205
+ &lt;/button&gt;
1206
+ }
1244
1207
  &lt;/mat-menu&gt;
1245
1208
 
1246
1209
  &lt;mat-menu #themeDensityMenu&#x3D;&quot;matMenu&quot; xPosition&#x3D;&quot;before&quot;&gt;
@@ -1262,27 +1225,25 @@ export class SettingsButtonComponent implements OnInit, OnDestroy {
1262
1225
  &lt;/button&gt;
1263
1226
  &lt;/mat-menu&gt;
1264
1227
  &lt;mat-menu #themeFontMenu&#x3D;&quot;matMenu&quot; xPosition&#x3D;&quot;before&quot;&gt;
1265
- &lt;ng-template [ngIf]&#x3D;&quot;availableTypographies?.length&quot;&gt;
1228
+ @for (typographyName of availableTypographies ?? []; track typographyName) {
1266
1229
  &lt;button (click)&#x3D;&quot;setTypography(typographyName)&quot;
1267
1230
  (mouseenter)&#x3D;&quot;previewTypography(typographyName)&quot;
1268
1231
  (mouseleave)&#x3D;&quot;restoreTypography()&quot;
1269
- *ngFor&#x3D;&quot;let typographyName of availableTypographies&quot;
1270
1232
  mat-menu-item&gt;
1271
1233
  {{ typographyName }}
1272
1234
  &lt;/button&gt;
1273
- &lt;/ng-template&gt;
1235
+ }
1274
1236
  &lt;/mat-menu&gt;
1275
1237
 
1276
1238
  &lt;mat-menu #themePresetMenu&#x3D;&quot;matMenu&quot; xPosition&#x3D;&quot;before&quot;&gt;
1277
- &lt;ng-template [ngIf]&#x3D;&quot;availableThemes?.length&quot;&gt;
1239
+ @for (themeName of availableThemes ?? []; track themeName) {
1278
1240
  &lt;button (click)&#x3D;&quot;setTheme(themeName)&quot;
1279
1241
  (mouseenter)&#x3D;&quot;previewTheme(themeName)&quot;
1280
1242
  (mouseleave)&#x3D;&quot;restoreTheme()&quot;
1281
- *ngFor&#x3D;&quot;let themeName of availableThemes&quot;
1282
1243
  mat-menu-item&gt;
1283
1244
  {{ themeName }}
1284
1245
  &lt;/button&gt;
1285
- &lt;/ng-template&gt;
1246
+ }
1286
1247
  &lt;/mat-menu&gt;
1287
1248
  </code></pre>
1288
1249
  </div>
@@ -1319,9 +1280,9 @@ export class SettingsButtonComponent implements OnInit, OnDestroy {
1319
1280
  <script src="../js/libs/htmlparser.js"></script>
1320
1281
  <script src="../js/libs/deep-iterator.js"></script>
1321
1282
  <script>
1322
- var COMPONENT_TEMPLATE = '<div><button [matMenuTriggerFor]="menu" mat-icon-button> <mat-icon svgIcon="cog"></mat-icon></button><mat-menu #menu="matMenu"> <button (click)="theme.toggleDarkTheme()" mat-menu-item> <mat-icon *ngIf="theme.darkMode()" svgIcon="brightness-2"></mat-icon> <mat-icon *ngIf="!theme.darkMode()" svgIcon="brightness-5"></mat-icon> <span i18n>Mode</span> </button> <button [matMenuTriggerFor]="themeMenu" mat-menu-item> <mat-icon svgIcon="compare"></mat-icon> <span i18n>Theme</span> </button> <rxap-language-selector></rxap-language-selector> <button (click)="openChangelogDialog()" mat-menu-item> <mat-icon svgIcon="format-list-numbered"></mat-icon> <span i18n>What\'s new</span> </button> <ng-container *ngFor="let item of items()"> <ng-template [cdkPortalOutlet]="item"></ng-template> </ng-container></mat-menu><mat-menu #themeMenu="matMenu" xPosition="before"> <button [matMenuTriggerFor]="themeDensityMenu" mat-menu-item> <mat-icon svgIcon="move-resize"></mat-icon> <span i18n>Density</span> </button> <button *ngIf="availableTypographies?.length" [matMenuTriggerFor]="themeFontMenu" mat-menu-item> <mat-icon svgIcon="format-font"></mat-icon> <span i18n>Font</span> </button> <button *ngIf="availableThemes?.length" [matMenuTriggerFor]="themePresetMenu" mat-menu-item> <mat-icon svgIcon="shape-outline"></mat-icon> <span i18n>Preset</span> </button></mat-menu><mat-menu #themeDensityMenu="matMenu" xPosition="before"> <button (click)="setDensity(0)" (mouseenter)="previewDensity(0)" (mouseleave)="restoreDensity()" mat-menu-item> <mat-icon svgIcon="size-l"></mat-icon> <span i18n>Normal</span> </button> <button (click)="setDensity(-1)" (mouseenter)="previewDensity(-1)" (mouseleave)="restoreDensity()" mat-menu-item> <mat-icon svgIcon="size-m"></mat-icon> <span i18n>Dense</span> </button> <button (click)="setDensity(-2)" (mouseenter)="previewDensity(-2)" (mouseleave)="restoreDensity()" mat-menu-item> <mat-icon svgIcon="size-s"></mat-icon> <span i18n>Very Dense</span> </button> <button (click)="setDensity(-3)" (mouseenter)="previewDensity(-3)" (mouseleave)="restoreDensity()" mat-menu-item> <mat-icon svgIcon="size-xs"></mat-icon> <span i18n>Extreme Dense</span> </button></mat-menu><mat-menu #themeFontMenu="matMenu" xPosition="before"> <ng-template [ngIf]="availableTypographies?.length"> <button (click)="setTypography(typographyName)" (mouseenter)="previewTypography(typographyName)" (mouseleave)="restoreTypography()" *ngFor="let typographyName of availableTypographies" mat-menu-item> {{ typographyName }} </button> </ng-template></mat-menu><mat-menu #themePresetMenu="matMenu" xPosition="before"> <ng-template [ngIf]="availableThemes?.length"> <button (click)="setTheme(themeName)" (mouseenter)="previewTheme(themeName)" (mouseleave)="restoreTheme()" *ngFor="let themeName of availableThemes" mat-menu-item> {{ themeName }} </button> </ng-template></mat-menu></div>'
1323
- var COMPONENTS = [{'name': 'AppsButtonComponent', 'selector': 'rxap-apps-button'},{'name': 'FooterComponent', 'selector': 'rxap-footer'},{'name': 'HeaderComponent', 'selector': 'rxap-header'},{'name': 'LanguageSelectorComponent', 'selector': 'rxap-language-selector'},{'name': 'LayoutComponent', 'selector': 'rxap-layout'},{'name': 'NavigationComponent', 'selector': 'ul[rxap-navigation]'},{'name': 'NavigationItemComponent', 'selector': 'li[rxap-navigation-item]'},{'name': 'NavigationProgressBarComponent', 'selector': 'rxap-navigation-progress-bar'},{'name': 'ResetButtonComponent', 'selector': 'rxap-reset-button'},{'name': 'SettingsButtonComponent', 'selector': 'rxap-settings-button'},{'name': 'SidenavComponent', 'selector': 'rxap-sidenav'},{'name': 'SidenavToggleButtonComponent', 'selector': 'rxap-sidenav-toggle-button'},{'name': 'SignOutComponent', 'selector': 'rxap-sign-out'},{'name': 'ToggleWindowSidenavButtonComponent', 'selector': 'rxap-toggle-window-sidenav-button'},{'name': 'UserProfileIconComponent', 'selector': 'rxap-user-profile-icon'},{'name': 'VersionComponent', 'selector': 'rxap-version'},{'name': 'WindowContainerSidenavComponent', 'selector': 'rxap-window-container-sidenav'}];
1324
- var DIRECTIVES = [{'name': 'FooterDirective', 'selector': '[rxapFooter]'},{'name': 'SidenavFooterDirective', 'selector': '[rxapSidenavFooter]'},{'name': 'SidenavHeaderDirective', 'selector': '[rxapSidenavHeader]'}];
1283
+ var COMPONENT_TEMPLATE = '<div><button [matMenuTriggerFor]="menu" mat-icon-button> <mat-icon svgIcon="cog"></mat-icon></button><mat-menu #menu="matMenu"> <button (click)="theme.toggleDarkTheme()" mat-menu-item> @if (theme.darkMode()) { <mat-icon svgIcon="brightness-2"></mat-icon> } @else { <mat-icon svgIcon="brightness-5"></mat-icon> } <span i18n>Mode</span> </button> <button [matMenuTriggerFor]="themeMenu" mat-menu-item> <mat-icon svgIcon="compare"></mat-icon> <span i18n>Theme</span> </button> @for (item of customItems(); track item.label) { <button (click)="clickItem(item)" mat-menu-item> <mat-icon [rxapIcon]="item.icon"></mat-icon> <span>{{ item.label }}</span> </button> } @for (item of customItemComponents(); track item) { <ng-template [cdkPortalOutlet]="item"></ng-template> }</mat-menu><mat-menu #themeMenu="matMenu" xPosition="before"> <button [matMenuTriggerFor]="themeDensityMenu" mat-menu-item> <mat-icon svgIcon="move-resize"></mat-icon> <span i18n>Density</span> </button> @if (availableTypographies?.length) { <button [matMenuTriggerFor]="themeFontMenu" mat-menu-item> <mat-icon svgIcon="format-font"></mat-icon> <span i18n>Font</span> </button> } @if (availableThemes?.length) { <button [matMenuTriggerFor]="themePresetMenu" mat-menu-item> <mat-icon svgIcon="shape-outline"></mat-icon> <span i18n>Preset</span> </button> }</mat-menu><mat-menu #themeDensityMenu="matMenu" xPosition="before"> <button (click)="setDensity(0)" (mouseenter)="previewDensity(0)" (mouseleave)="restoreDensity()" mat-menu-item> <mat-icon svgIcon="size-l"></mat-icon> <span i18n>Normal</span> </button> <button (click)="setDensity(-1)" (mouseenter)="previewDensity(-1)" (mouseleave)="restoreDensity()" mat-menu-item> <mat-icon svgIcon="size-m"></mat-icon> <span i18n>Dense</span> </button> <button (click)="setDensity(-2)" (mouseenter)="previewDensity(-2)" (mouseleave)="restoreDensity()" mat-menu-item> <mat-icon svgIcon="size-s"></mat-icon> <span i18n>Very Dense</span> </button> <button (click)="setDensity(-3)" (mouseenter)="previewDensity(-3)" (mouseleave)="restoreDensity()" mat-menu-item> <mat-icon svgIcon="size-xs"></mat-icon> <span i18n>Extreme Dense</span> </button></mat-menu><mat-menu #themeFontMenu="matMenu" xPosition="before"> @for (typographyName of availableTypographies ?? []; track typographyName) { <button (click)="setTypography(typographyName)" (mouseenter)="previewTypography(typographyName)" (mouseleave)="restoreTypography()" mat-menu-item> {{ typographyName }} </button> }</mat-menu><mat-menu #themePresetMenu="matMenu" xPosition="before"> @for (themeName of availableThemes ?? []; track themeName) { <button (click)="setTheme(themeName)" (mouseenter)="previewTheme(themeName)" (mouseleave)="restoreTheme()" mat-menu-item> {{ themeName }} </button> }</mat-menu></div>'
1284
+ var COMPONENTS = [{'name': 'AppsButtonComponent', 'selector': 'rxap-apps-button'},{'name': 'BaseLayoutComponent', 'selector': 'rxap-base-layout'},{'name': 'DefaultHeaderComponent', 'selector': 'rxap-default-header'},{'name': 'FooterComponent', 'selector': 'rxap-footer'},{'name': 'HeaderComponent', 'selector': 'rxap-header'},{'name': 'LayoutComponent', 'selector': 'rxap-layout'},{'name': 'MinimalLayoutComponent', 'selector': 'rxap-minimal-layout'},{'name': 'NavigationComponent', 'selector': 'ul[rxap-navigation]'},{'name': 'NavigationItemComponent', 'selector': 'li[rxap-navigation-item]'},{'name': 'NavigationProgressBarComponent', 'selector': 'rxap-navigation-progress-bar'},{'name': 'ReleaseInfoComponent', 'selector': 'rxap-release-info'},{'name': 'SettingsButtonComponent', 'selector': 'rxap-settings-button'},{'name': 'SidenavComponent', 'selector': 'rxap-sidenav'},{'name': 'SidenavToggleButtonComponent', 'selector': 'rxap-sidenav-toggle-button'},{'name': 'UserProfileIconComponent', 'selector': 'rxap-user-profile-icon'}];
1285
+ var DIRECTIVES = [{'name': 'FooterDirective', 'selector': '[rxapFooter]'},{'name': 'HeaderDirective', 'selector': '[rxapHeader]'},{'name': 'SidenavFooterDirective', 'selector': '[rxapSidenavFooter]'},{'name': 'SidenavHeaderDirective', 'selector': '[rxapSidenavHeader]'}];
1325
1286
  var ACTUAL_COMPONENT = {'name': 'SettingsButtonComponent'};
1326
1287
  </script>
1327
1288
  <script src="../js/tree.js"></script>