@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,7 +120,7 @@
120
120
  <h3>File</h3>
121
121
  </p>
122
122
  <p class="comment">
123
- <code>src/lib/header/apps-button/apps-button.component.ts</code>
123
+ <code>src/lib/default-header/apps-button/apps-button.component.ts</code>
124
124
  </p>
125
125
 
126
126
 
@@ -131,7 +131,6 @@
131
131
  </p>
132
132
  <p class="comment">
133
133
  <code>OnInit</code>
134
- <code>OnDestroy</code>
135
134
  </p>
136
135
 
137
136
 
@@ -168,11 +167,13 @@
168
167
  <tr>
169
168
  <td class="col-md-3">imports</td>
170
169
  <td class="col-md-9">
171
- <code>NgIf</code>
172
- <code>NgFor</code>
173
- <code>MatButtonModule</code>
174
- <code>MatIconModule</code>
175
170
  <code>NgOptimizedImage</code>
171
+ <code>MatButton</code>
172
+ <code>RouterLink</code>
173
+ <code>MatAnchor</code>
174
+ <code>MatIconButton</code>
175
+ <code>MatIcon</code>
176
+ <code>IconDirective</code>
176
177
  </td>
177
178
  </tr>
178
179
 
@@ -218,12 +219,33 @@
218
219
  </li>
219
220
  <li>
220
221
  <span class="modifier">Public</span>
222
+ <span class="modifier">Readonly</span>
223
+ <a href="#hasApps" >hasApps</a>
224
+ </li>
225
+ <li>
226
+ <span class="modifier">Public</span>
227
+ <span class="modifier">Readonly</span>
221
228
  <a href="#isOpen" >isOpen</a>
222
229
  </li>
223
230
  </ul>
224
231
  </td>
225
232
  </tr>
226
233
 
234
+ <tr>
235
+ <td class="col-md-4">
236
+ <h6><b>Methods</b></h6>
237
+ </td>
238
+ </tr>
239
+ <tr>
240
+ <td class="col-md-4">
241
+ <ul class="index-list">
242
+ <li>
243
+ <span class="modifier">Public</span>
244
+ <a href="#toggle" >toggle</a>
245
+ </li>
246
+ </ul>
247
+ </td>
248
+ </tr>
227
249
 
228
250
 
229
251
 
@@ -233,84 +255,56 @@
233
255
  </table>
234
256
  </section>
235
257
 
236
- <section data-compodoc="block-constructor">
237
- <h3 id="constructor">Constructor</h3>
238
- <table class="table table-sm table-bordered">
239
- <tbody>
240
- <tr>
241
- <td class="col-md-4">
242
- <code>constructor(grid: <a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank">any</a>, appUrlService: <a href="../injectables/AppUrlService.html" target="_self">AppUrlService</a>, authenticationService: RxapAuthenticationService)</code>
243
- </td>
244
- </tr>
245
- <tr>
246
- <td class="col-md-4">
247
- <div class="io-line">Defined in <a href="" data-line="51" class="link-to-prism">src/lib/header/apps-button/apps-button.component.ts:51</a></div>
248
- </td>
249
- </tr>
250
258
 
251
- <tr>
252
- <td class="col-md-4">
253
- <div>
254
- <b>Parameters :</b>
255
- <table class="params">
256
- <thead>
257
- <tr>
258
- <td>Name</td>
259
- <td>Type</td>
260
- <td>Optional</td>
261
- </tr>
262
- </thead>
263
- <tbody>
264
- <tr>
265
- <td>grid</td>
266
-
267
- <td>
268
- <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>
269
- </td>
270
-
271
- <td>
272
- No
273
- </td>
274
-
275
- </tr>
276
- <tr>
277
- <td>appUrlService</td>
278
-
279
- <td>
280
- <code><a href="../injectables/AppUrlService.html" target="_self" >AppUrlService</a></code>
281
- </td>
282
-
283
- <td>
284
- No
285
- </td>
286
-
287
- </tr>
288
- <tr>
289
- <td>authenticationService</td>
290
-
291
- <td>
292
- <code>RxapAuthenticationService</code>
293
- </td>
294
-
295
- <td>
296
- No
297
- </td>
298
-
299
- </tr>
300
- </tbody>
301
- </table>
302
- </div>
303
- </td>
304
- </tr>
305
- </tbody>
306
- </table>
307
- </section>
308
259
 
309
260
 
310
261
 
311
262
 
263
+ <section data-compodoc="block-methods">
264
+
265
+ <h3 id="methods">
266
+ Methods
267
+ </h3>
268
+ <table class="table table-sm table-bordered">
269
+ <tbody>
270
+ <tr>
271
+ <td class="col-md-4">
272
+ <a name="toggle"></a>
273
+ <span class="name">
274
+ <span class="modifier">Public</span>
275
+ <span ><b>toggle</b></span>
276
+ <a href="#toggle"><span class="icon ion-ios-link"></span></a>
277
+ </span>
278
+ </td>
279
+ </tr>
280
+ <tr>
281
+ <td class="col-md-4">
282
+ <span class="modifier-icon icon ion-ios-reset"></span>
283
+ <code>toggle()</code>
284
+ </td>
285
+ </tr>
286
+
287
+
288
+ <tr>
289
+ <td class="col-md-4">
290
+ <div class="io-line">Defined in <a href="" data-line="46"
291
+ class="link-to-prism">src/lib/default-header/apps-button/apps-button.component.ts:46</a></div>
292
+ </td>
293
+ </tr>
294
+
295
+
296
+ <tr>
297
+ <td class="col-md-4">
312
298
 
299
+ <div class="io-description">
300
+ <b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>
313
301
 
302
+ </div>
303
+ </td>
304
+ </tr>
305
+ </tbody>
306
+ </table>
307
+ </section>
314
308
  <section data-compodoc="block-properties">
315
309
 
316
310
  <h3 id="inputs">
@@ -331,12 +325,39 @@
331
325
  </tr>
332
326
  <tr>
333
327
  <td class="col-md-4">
334
- <i>Default value : </i><code>signal&lt;Array&lt;ExternalApps&gt;&gt;([])</code>
328
+ <i>Default value : </i><code>computed(() &#x3D;&gt; this.externalAppsService.activeAppList())</code>
335
329
  </td>
336
330
  </tr>
337
331
  <tr>
338
332
  <td class="col-md-4">
339
- <div class="io-line">Defined in <a href="" data-line="49" class="link-to-prism">src/lib/header/apps-button/apps-button.component.ts:49</a></div>
333
+ <div class="io-line">Defined in <a href="" data-line="43" class="link-to-prism">src/lib/default-header/apps-button/apps-button.component.ts:43</a></div>
334
+ </td>
335
+ </tr>
336
+
337
+
338
+ </tbody>
339
+ </table>
340
+ <table class="table table-sm table-bordered">
341
+ <tbody>
342
+ <tr>
343
+ <td class="col-md-4">
344
+ <a name="hasApps"></a>
345
+ <span class="name">
346
+ <span class="modifier">Public</span>
347
+ <span class="modifier">Readonly</span>
348
+ <span ><b>hasApps</b></span>
349
+ <a href="#hasApps"><span class="icon ion-ios-link"></span></a>
350
+ </span>
351
+ </td>
352
+ </tr>
353
+ <tr>
354
+ <td class="col-md-4">
355
+ <i>Default value : </i><code>computed(() &#x3D;&gt; this.appList().length &gt; 0)</code>
356
+ </td>
357
+ </tr>
358
+ <tr>
359
+ <td class="col-md-4">
360
+ <div class="io-line">Defined in <a href="" data-line="44" class="link-to-prism">src/lib/default-header/apps-button/apps-button.component.ts:44</a></div>
340
361
  </td>
341
362
  </tr>
342
363
 
@@ -350,6 +371,7 @@
350
371
  <a name="isOpen"></a>
351
372
  <span class="name">
352
373
  <span class="modifier">Public</span>
374
+ <span class="modifier">Readonly</span>
353
375
  <span ><b>isOpen</b></span>
354
376
  <a href="#isOpen"><span class="icon ion-ios-link"></span></a>
355
377
  </span>
@@ -357,15 +379,21 @@
357
379
  </tr>
358
380
  <tr>
359
381
  <td class="col-md-4">
360
- <i>Default value : </i><code>false</code>
382
+ <i>Default value : </i><code>signal(false)</code>
361
383
  </td>
362
384
  </tr>
363
385
  <tr>
364
386
  <td class="col-md-4">
365
- <div class="io-line">Defined in <a href="" data-line="47" class="link-to-prism">src/lib/header/apps-button/apps-button.component.ts:47</a></div>
387
+ <div class="io-line">Defined in <a href="" data-line="40" class="link-to-prism">src/lib/default-header/apps-button/apps-button.component.ts:40</a></div>
366
388
  </td>
367
389
  </tr>
368
390
 
391
+ <tr>
392
+ <td class="col-md-4">
393
+ <div class="io-description"><p>The signal that indicates if the app list is open</p>
394
+ </div>
395
+ </td>
396
+ </tr>
369
397
 
370
398
  </tbody>
371
399
  </table>
@@ -375,36 +403,24 @@
375
403
 
376
404
 
377
405
  <div class="tab-pane fade tab-source-code" id="source">
378
- <pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import {
406
+ <pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import { NgOptimizedImage } from &#x27;@angular/common&#x27;;
407
+ import {
379
408
  ChangeDetectionStrategy,
380
409
  Component,
381
- Inject,
382
- OnDestroy,
410
+ computed,
411
+ inject,
383
412
  OnInit,
384
- Optional,
385
413
  signal,
386
414
  } from &#x27;@angular/core&#x27;;
387
- import { RXAP_LAYOUT_APPS_GRID } from &#x27;../../tokens&#x27;;
388
- import { MatIconModule } from &#x27;@angular/material/icon&#x27;;
389
- import { MatButtonModule } from &#x27;@angular/material/button&#x27;;
390
- import {
391
- NgFor,
392
- NgIf,
393
- NgOptimizedImage,
394
- } from &#x27;@angular/common&#x27;;
395
- import {
396
- AppUrlService,
397
- ExternalApps,
398
- } from &#x27;../../app-url.service&#x27;;
399
- import { RxapAuthenticationService } from &#x27;@rxap/authentication&#x27;;
400
- import {
401
- Subscription,
402
- switchMap,
403
- } from &#x27;rxjs&#x27;;
404
415
  import {
405
- filter,
406
- tap,
407
- } from &#x27;rxjs/operators&#x27;;
416
+ MatAnchor,
417
+ MatButton,
418
+ MatIconButton,
419
+ } from &#x27;@angular/material/button&#x27;;
420
+ import { MatIcon } from &#x27;@angular/material/icon&#x27;;
421
+ import { RouterLink } from &#x27;@angular/router&#x27;;
422
+ import { IconDirective } from &#x27;@rxap/material-directives/icon&#x27;;
423
+ import { ExternalAppsService } from &#x27;../../external-apps.service&#x27;;
408
424
 
409
425
  @Component({
410
426
  selector: &#x27;rxap-apps-button&#x27;,
@@ -413,38 +429,31 @@ import {
413
429
  changeDetection: ChangeDetectionStrategy.OnPush,
414
430
  standalone: true,
415
431
  imports: [
416
- NgIf,
417
- NgFor,
418
- MatButtonModule,
419
- MatIconModule,
420
432
  NgOptimizedImage,
433
+ MatButton,
434
+ RouterLink,
435
+ MatAnchor,
436
+ MatIconButton,
437
+ MatIcon,
438
+ IconDirective,
421
439
  ],
422
440
  })
423
- export class AppsButtonComponent implements OnInit, OnDestroy {
424
- public isOpen &#x3D; false;
425
-
426
- public readonly appList &#x3D; signal&lt;Array&lt;ExternalApps&gt;&gt;([]);
427
-
428
- private _subscription?: Subscription;
429
-
430
- constructor(
431
- @Optional()
432
- @Inject(RXAP_LAYOUT_APPS_GRID)
433
- grid: any,
434
- private readonly appUrlService: AppUrlService,
435
- private readonly authenticationService: RxapAuthenticationService,
436
- ) {}
437
-
438
- ngOnInit() {
439
- this._subscription &#x3D; this.authenticationService.isAuthenticated$.pipe(
440
- filter(Boolean),
441
- switchMap(() &#x3D;&gt; this.appUrlService.getAppList()),
442
- tap((apps) &#x3D;&gt; this.appList.set(apps)),
443
- ).subscribe();
441
+ export class AppsButtonComponent implements OnInit {
442
+ /**
443
+ * The signal that indicates if the app list is open
444
+ */
445
+ public readonly isOpen &#x3D; signal(false);
446
+
447
+ private readonly externalAppsService &#x3D; inject(ExternalAppsService);
448
+ public readonly appList &#x3D; computed(() &#x3D;&gt; this.externalAppsService.activeAppList());
449
+ public readonly hasApps &#x3D; computed(() &#x3D;&gt; this.appList().length &gt; 0);
450
+
451
+ public toggle(): void {
452
+ this.isOpen.update(isOpen &#x3D;&gt; !isOpen);
444
453
  }
445
454
 
446
- ngOnDestroy() {
447
- this._subscription?.unsubscribe();
455
+ public ngOnInit(): void {
456
+ this.externalAppsService.getAppList();
448
457
  }
449
458
 
450
459
  }
@@ -452,26 +461,61 @@ export class AppsButtonComponent implements OnInit, OnDestroy {
452
461
  </div>
453
462
 
454
463
  <div class="tab-pane fade " id="templateData">
455
- <pre class="line-numbers"><code class="language-html">&lt;div *ngIf&#x3D;&quot;appList()?.length&quot; class&#x3D;&quot;flex flex-row items-center gap-8&quot;&gt;
456
-
457
- &lt;div *ngIf&#x3D;&quot;isOpen&quot; class&#x3D;&quot;flex flex-row items-center gap-6&quot;&gt;
458
-
459
- &lt;div *ngFor&#x3D;&quot;let app of appList()&quot; class&#x3D;&quot;h-10&quot;&gt;
460
- &lt;a [href]&#x3D;&quot;app.href&quot; mat-stroked-button&gt;
461
- &lt;span class&#x3D;&quot;flex flex-row items-center gap-4&quot;&gt;
462
- &lt;img *ngIf&#x3D;&quot;app.image&quot; [alt]&#x3D;&quot;app.label&quot; [ngSrc]&#x3D;&quot;app.image&quot; height&#x3D;&quot;40&quot; width&#x3D;&quot;40&quot;&gt;
463
- &lt;span class&#x3D;&quot;label grow-0&quot;&gt;{{app.label}}&lt;/span&gt;
464
- &lt;/span&gt;
465
- &lt;/a&gt;
466
- &lt;/div&gt;
464
+ <pre class="line-numbers"><code class="language-html">@if (hasApps()) {
465
+ &lt;div class&#x3D;&quot;flex flex-row items-center gap-8&quot;&gt;
466
+
467
+ @if (isOpen()) {
468
+ &lt;div class&#x3D;&quot;flex flex-row items-center gap-6 h-10&quot;&gt;
469
+
470
+ @for (app of appList(); track app.label) {
471
+ @if (app.href) {
472
+ &lt;a [href]&#x3D;&quot;app.href&quot; [target]&#x3D;&quot;app.target ?? &#x27;_self&#x27;&quot; mat-stroked-button&gt;
473
+ &lt;span class&#x3D;&quot;flex flex-row items-center gap-4&quot;&gt;
474
+ @if (app.icon) {
475
+ &lt;mat-icon [rxapIcon]&#x3D;&quot;app.icon&quot;&gt;&lt;/mat-icon&gt;
476
+ }
477
+ @if (app.image) {
478
+ &lt;img [alt]&#x3D;&quot;app.label&quot; [ngSrc]&#x3D;&quot;app.image&quot; height&#x3D;&quot;40&quot; width&#x3D;&quot;40&quot;&gt;
479
+ }
480
+ &lt;span class&#x3D;&quot;label grow-0&quot;&gt;{{ app.label }}&lt;/span&gt;
481
+ &lt;/span&gt;
482
+ &lt;/a&gt;
483
+ } @else if (app.routerLink) {
484
+ &lt;a mat-stroked-button [routerLink]&#x3D;&quot;app.routerLink&quot;&gt;
485
+ &lt;span class&#x3D;&quot;flex flex-row items-center gap-4&quot;&gt;
486
+ @if (app.icon) {
487
+ &lt;mat-icon [rxapIcon]&#x3D;&quot;app.icon&quot;&gt;&lt;/mat-icon&gt;
488
+ }
489
+ @if (app.image) {
490
+ &lt;img [alt]&#x3D;&quot;app.label&quot; [ngSrc]&#x3D;&quot;app.image&quot; height&#x3D;&quot;40&quot; width&#x3D;&quot;40&quot;&gt;
491
+ }
492
+ &lt;span class&#x3D;&quot;label grow-0&quot;&gt;{{ app.label }}&lt;/span&gt;
493
+ &lt;/span&gt;
494
+ &lt;/a&gt;
495
+ } @else {
496
+ &lt;button mat-stroked-button [disabled]&#x3D;&quot;true&quot;&gt;
497
+ &lt;span class&#x3D;&quot;flex flex-row items-center gap-4&quot;&gt;
498
+ @if (app.icon) {
499
+ &lt;mat-icon [rxapIcon]&#x3D;&quot;app.icon&quot;&gt;&lt;/mat-icon&gt;
500
+ }
501
+ @if (app.image) {
502
+ &lt;img [alt]&#x3D;&quot;app.label&quot; [ngSrc]&#x3D;&quot;app.image&quot; height&#x3D;&quot;40&quot; width&#x3D;&quot;40&quot;&gt;
503
+ }
504
+ &lt;span class&#x3D;&quot;label grow-0&quot;&gt;{{ app.label }}&lt;/span&gt;
505
+ &lt;/span&gt;
506
+ &lt;/button&gt;
507
+ }
508
+ }
509
+
510
+ &lt;/div&gt;
511
+ }
512
+
513
+ &lt;button (click)&#x3D;&quot;toggle()&quot; mat-icon-button&gt;
514
+ &lt;mat-icon svgIcon&#x3D;&quot;apps&quot;&gt;&lt;/mat-icon&gt;
515
+ &lt;/button&gt;
467
516
 
468
517
  &lt;/div&gt;
469
-
470
- &lt;button (click)&#x3D;&quot;isOpen &#x3D; !isOpen&quot; mat-icon-button&gt;
471
- &lt;mat-icon svgIcon&#x3D;&quot;apps&quot;&gt;&lt;/mat-icon&gt;
472
- &lt;/button&gt;
473
-
474
- &lt;/div&gt;
518
+ }
475
519
  </code></pre>
476
520
  </div>
477
521
 
@@ -507,9 +551,9 @@ export class AppsButtonComponent implements OnInit, OnDestroy {
507
551
  <script src="../js/libs/htmlparser.js"></script>
508
552
  <script src="../js/libs/deep-iterator.js"></script>
509
553
  <script>
510
- var COMPONENT_TEMPLATE = '<div><div *ngIf="appList()?.length" class="flex flex-row items-center gap-8"> <div *ngIf="isOpen" class="flex flex-row items-center gap-6"> <div *ngFor="let app of appList()" class="h-10"> <a [href]="app.href" mat-stroked-button> <span class="flex flex-row items-center gap-4"> <img *ngIf="app.image" [alt]="app.label" [ngSrc]="app.image" height="40" width="40"> <span class="label grow-0">{{app.label}}</span> </span> </a> </div> </div> <button (click)="isOpen = !isOpen" mat-icon-button> <mat-icon svgIcon="apps"></mat-icon> </button></div></div>'
511
- 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'}];
512
- var DIRECTIVES = [{'name': 'FooterDirective', 'selector': '[rxapFooter]'},{'name': 'SidenavFooterDirective', 'selector': '[rxapSidenavFooter]'},{'name': 'SidenavHeaderDirective', 'selector': '[rxapSidenavHeader]'}];
554
+ var COMPONENT_TEMPLATE = '<div>@if (hasApps()) { <div class="flex flex-row items-center gap-8"> @if (isOpen()) { <div class="flex flex-row items-center gap-6 h-10"> @for (app of appList(); track app.label) { @if (app.href) { <a [href]="app.href" [target]="app.target ?? \'_self\'" mat-stroked-button> <span class="flex flex-row items-center gap-4"> @if (app.icon) { <mat-icon [rxapIcon]="app.icon"></mat-icon> } @if (app.image) { <img [alt]="app.label" [ngSrc]="app.image" height="40" width="40"> } <span class="label grow-0">{{ app.label }}</span> </span> </a> } @else if (app.routerLink) { <a mat-stroked-button [routerLink]="app.routerLink"> <span class="flex flex-row items-center gap-4"> @if (app.icon) { <mat-icon [rxapIcon]="app.icon"></mat-icon> } @if (app.image) { <img [alt]="app.label" [ngSrc]="app.image" height="40" width="40"> } <span class="label grow-0">{{ app.label }}</span> </span> </a> } @else { <button mat-stroked-button [disabled]="true"> <span class="flex flex-row items-center gap-4"> @if (app.icon) { <mat-icon [rxapIcon]="app.icon"></mat-icon> } @if (app.image) { <img [alt]="app.label" [ngSrc]="app.image" height="40" width="40"> } <span class="label grow-0">{{ app.label }}</span> </span> </button> } } </div> } <button (click)="toggle()" mat-icon-button> <mat-icon svgIcon="apps"></mat-icon> </button> </div>}</div>'
555
+ 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'}];
556
+ var DIRECTIVES = [{'name': 'FooterDirective', 'selector': '[rxapFooter]'},{'name': 'HeaderDirective', 'selector': '[rxapHeader]'},{'name': 'SidenavFooterDirective', 'selector': '[rxapSidenavFooter]'},{'name': 'SidenavHeaderDirective', 'selector': '[rxapSidenavHeader]'}];
513
557
  var ACTUAL_COMPONENT = {'name': 'AppsButtonComponent'};
514
558
  </script>
515
559
  <script src="../js/tree.js"></script>