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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +280 -1
  3. package/compodoc/changelog.html +13 -0
  4. package/compodoc/components/AppsButtonComponent.html +185 -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 +11 -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 +183 -1
  26. package/compodoc/injectables/ExternalAppsService.html +1274 -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 +544 -1
  38. package/compodoc/miscellaneous/typealiases.html +40 -2
  39. package/compodoc/miscellaneous/variables.html +100 -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 +18 -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 +8546 -8346
  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/withFooterComponents.html +1 -0
  77. package/docs/functions/withHeaderComponents.html +1 -0
  78. package/docs/functions/withNavigationConfig.html +1 -0
  79. package/docs/functions/withNavigationInserts.html +1 -0
  80. package/docs/functions/withReleaseInfoModules.html +1 -0
  81. package/docs/functions/withSettingsMenuItems.html +1 -0
  82. package/docs/index.html +74 -2
  83. package/docs/interfaces/NavigationDividerItem.html +2 -2
  84. package/docs/interfaces/NavigationInsertItem.html +2 -2
  85. package/docs/interfaces/NavigationItem.html +2 -2
  86. package/docs/interfaces/NavigationStatus.html +2 -2
  87. package/docs/interfaces/ReleaseInfoModule.html +4 -0
  88. package/docs/interfaces/SettingsMenuItem.html +4 -0
  89. package/docs/modules.html +29 -17
  90. package/docs/types/ExternalApps.html +1 -0
  91. package/docs/types/ExtractUsernameFromProfileFn.html +1 -1
  92. package/docs/types/Navigation.html +1 -1
  93. package/docs/types/NavigationWithInserts.html +1 -1
  94. package/docs/types/SettingsMenuItemComponent.html +1 -0
  95. package/docs/variables/EXTRACT_USERNAME_FROM_PROFILE.html +1 -1
  96. package/docs/variables/RXAP_EXTERNAL_APP_FILTER.html +1 -0
  97. package/docs/variables/RXAP_FOOTER_COMPONENT.html +1 -1
  98. package/docs/variables/RXAP_HEADER_COMPONENT.html +1 -1
  99. package/docs/variables/RXAP_LAYOUT_APPS_GRID.html +1 -1
  100. package/docs/variables/RXAP_LOGO_CONFIG.html +1 -1
  101. package/docs/variables/RXAP_NAVIGATION_CONFIG.html +1 -1
  102. package/docs/variables/RXAP_NAVIGATION_CONFIG_INSERTS.html +1 -1
  103. package/docs/variables/RXAP_RELEASE_INFO_MODULE.html +1 -0
  104. package/docs/variables/RXAP_SETTINGS_MENU_ITEM.html +1 -0
  105. package/docs/variables/RXAP_SETTINGS_MENU_ITEM_COMPONENT.html +1 -0
  106. package/esm2022/index.mjs +35 -40
  107. package/esm2022/lib/base-layout/base-layout.component.mjs +16 -0
  108. package/esm2022/lib/default-header/apps-button/apps-button.component.mjs +38 -0
  109. package/esm2022/lib/default-header/default-header.component.mjs +32 -0
  110. package/esm2022/lib/default-header/settings-button/settings-button.component.mjs +73 -0
  111. package/esm2022/lib/default-header/sidenav-toggle-button/sidenav-toggle-button.component.mjs +24 -0
  112. package/esm2022/lib/default-header/user-profile-icon/user-profile-icon.component.mjs +35 -0
  113. package/esm2022/lib/external-apps.service.mjs +97 -0
  114. package/esm2022/lib/footer/footer.component.mjs +13 -13
  115. package/esm2022/lib/footer/footer.directive.mjs +30 -0
  116. package/esm2022/lib/footer.service.mjs +58 -0
  117. package/esm2022/lib/header/header.component.mjs +17 -65
  118. package/esm2022/lib/header/header.directive.mjs +30 -0
  119. package/esm2022/lib/header.service.mjs +60 -0
  120. package/esm2022/lib/layout/layout.component.mjs +33 -47
  121. package/esm2022/lib/layout.service.mjs +93 -0
  122. package/esm2022/lib/logo.service.mjs +23 -0
  123. package/esm2022/lib/minimal-layout/minimal-layout.component.mjs +14 -0
  124. package/esm2022/lib/navigation/navigation-item/navigation-item.component.mjs +30 -64
  125. package/esm2022/lib/navigation/navigation.component.mjs +22 -48
  126. package/esm2022/lib/navigation-progress-bar/navigation-progress-bar.component.mjs +23 -0
  127. package/esm2022/lib/navigation.service.mjs +141 -0
  128. package/esm2022/lib/provide.mjs +73 -0
  129. package/esm2022/lib/release-info/release-info.component.mjs +28 -0
  130. package/esm2022/lib/sidenav/sidenav.component.mjs +50 -33
  131. package/esm2022/lib/tokens.mjs +9 -1
  132. package/esm2022/lib/types.mjs +1 -1
  133. package/fesm2022/rxap-layout.mjs +845 -833
  134. package/fesm2022/rxap-layout.mjs.map +1 -1
  135. package/index.d.ts +18 -19
  136. package/lib/base-layout/base-layout.component.d.ts +5 -0
  137. package/lib/default-header/apps-button/apps-button.component.d.ts +15 -0
  138. package/lib/default-header/default-header.component.d.ts +11 -0
  139. package/lib/{header → default-header}/settings-button/settings-button.component.d.ts +6 -14
  140. package/lib/{header → default-header}/sidenav-toggle-button/sidenav-toggle-button.component.d.ts +3 -5
  141. package/lib/default-header/user-profile-icon/user-profile-icon.component.d.ts +10 -0
  142. package/lib/external-apps.service.d.ts +25 -0
  143. package/lib/footer/footer.component.d.ts +3 -3
  144. package/lib/{footer.directive.d.ts → footer/footer.directive.d.ts} +2 -4
  145. package/lib/footer.service.d.ts +32 -0
  146. package/lib/header/header.component.d.ts +6 -12
  147. package/lib/header/header.directive.d.ts +12 -0
  148. package/lib/header.service.d.ts +34 -0
  149. package/lib/layout/layout.component.d.ts +4 -17
  150. package/lib/layout.service.d.ts +26 -0
  151. package/lib/logo.service.d.ts +10 -0
  152. package/lib/minimal-layout/minimal-layout.component.d.ts +5 -0
  153. package/lib/navigation/navigation-item/navigation-item.component.d.ts +10 -18
  154. package/lib/navigation/navigation.component.d.ts +10 -15
  155. package/lib/{header/navigation-progress-bar → navigation-progress-bar}/navigation-progress-bar.component.d.ts +1 -3
  156. package/lib/{navigation/navigation.service.d.ts → navigation.service.d.ts} +4 -5
  157. package/lib/provide.d.ts +12 -0
  158. package/lib/release-info/release-info.component.d.ts +9 -0
  159. package/lib/sidenav/sidenav.component.d.ts +18 -6
  160. package/lib/tokens.d.ts +11 -3
  161. package/lib/types.d.ts +15 -4
  162. package/package.json +32 -66
  163. package/theme.css +1 -1
  164. package/docs/classes/AppUrlService.html +0 -13
  165. package/docs/classes/AuthenticationServiceMock.html +0 -3
  166. package/docs/classes/LanguageSelectorComponent.html +0 -3
  167. package/docs/classes/LayoutComponentService.html +0 -15
  168. package/docs/classes/ReplaceRouterPathsPipe.html +0 -4
  169. package/docs/classes/ReplaceRouterPathsService.html +0 -3
  170. package/docs/classes/ResetButtonComponent.html +0 -3
  171. package/docs/classes/SidenavComponentService.html +0 -5
  172. package/docs/classes/SignOutComponent.html +0 -4
  173. package/docs/classes/ToggleWindowSidenavButtonComponent.html +0 -5
  174. package/docs/classes/VersionComponent.html +0 -7
  175. package/docs/classes/WindowContainerSidenavComponent.html +0 -10
  176. package/docs/interfaces/ExternalApps.html +0 -8
  177. package/docs/interfaces/LogoConfig.html +0 -4
  178. package/esm2022/lib/app-url.service.mjs +0 -78
  179. package/esm2022/lib/authentication.service.mock.mjs +0 -13
  180. package/esm2022/lib/footer.directive.mjs +0 -40
  181. package/esm2022/lib/header/apps-button/apps-button.component.mjs +0 -46
  182. package/esm2022/lib/header/language-selector/language-selector.component.mjs +0 -35
  183. package/esm2022/lib/header/navigation-progress-bar/navigation-progress-bar.component.mjs +0 -30
  184. package/esm2022/lib/header/reset-button/reset-button.component.mjs +0 -23
  185. package/esm2022/lib/header/settings-button/settings-button.component.mjs +0 -87
  186. package/esm2022/lib/header/sidenav-toggle-button/sidenav-toggle-button.component.mjs +0 -26
  187. package/esm2022/lib/header/sign-out/sign-out.component.mjs +0 -23
  188. package/esm2022/lib/header/user-profile-icon/user-profile-icon.component.mjs +0 -45
  189. package/esm2022/lib/layout/layout.component.service.mjs +0 -77
  190. package/esm2022/lib/navigation/navigation.service.mjs +0 -145
  191. package/esm2022/lib/navigation/replace-router-paths.pipe.mjs +0 -22
  192. package/esm2022/lib/navigation/replace-router-paths.service.mjs +0 -15
  193. package/esm2022/lib/sidenav/sidenav.component.service.mjs +0 -22
  194. package/esm2022/lib/sidenav/version/version.component.mjs +0 -28
  195. package/esm2022/lib/toggle-window-sidenav-button/toggle-window-sidenav-button.component.mjs +0 -30
  196. package/esm2022/lib/window-container-sidenav/window-container-sidenav.component.mjs +0 -54
  197. package/lib/app-url.service.d.ts +0 -29
  198. package/lib/authentication.service.mock.d.ts +0 -6
  199. package/lib/header/apps-button/apps-button.component.d.ts +0 -16
  200. package/lib/header/language-selector/language-selector.component.d.ts +0 -8
  201. package/lib/header/reset-button/reset-button.component.d.ts +0 -8
  202. package/lib/header/sign-out/sign-out.component.d.ts +0 -9
  203. package/lib/header/user-profile-icon/user-profile-icon.component.d.ts +0 -15
  204. package/lib/layout/layout.component.service.d.ts +0 -25
  205. package/lib/navigation/replace-router-paths.pipe.d.ts +0 -11
  206. package/lib/navigation/replace-router-paths.service.d.ts +0 -7
  207. package/lib/sidenav/sidenav.component.service.d.ts +0 -11
  208. package/lib/sidenav/version/version.component.d.ts +0 -14
  209. package/lib/toggle-window-sidenav-button/toggle-window-sidenav-button.component.d.ts +0 -9
  210. 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/user-profile-icon/user-profile-icon.component.ts</code>
123
+ <code>src/lib/default-header/user-profile-icon/user-profile-icon.component.ts</code>
124
124
  </p>
125
125
 
126
126
 
@@ -163,8 +163,6 @@
163
163
  <td class="col-md-9">
164
164
  <code>MatMenuModule</code>
165
165
  <code>MatIconModule</code>
166
- <code>NgIf</code>
167
- <code>AsyncPipe</code>
168
166
  </td>
169
167
  </tr>
170
168
 
@@ -205,6 +203,12 @@
205
203
  <ul class="index-list">
206
204
  <li>
207
205
  <span class="modifier">Public</span>
206
+ <span class="modifier">Readonly</span>
207
+ <a href="#profile" >profile</a>
208
+ </li>
209
+ <li>
210
+ <span class="modifier">Public</span>
211
+ <span class="modifier">Readonly</span>
208
212
  <a href="#username" >username</a>
209
213
  </li>
210
214
  </ul>
@@ -221,13 +225,26 @@
221
225
  <ul class="index-list">
222
226
  <li>
223
227
  <span class="modifier">Public</span>
224
- <span class="modifier">Async</span>
225
228
  <a href="#logout" >logout</a>
226
229
  </li>
227
230
  </ul>
228
231
  </td>
229
232
  </tr>
230
233
 
234
+ <tr>
235
+ <td class="col-md-4">
236
+ <h6><b>Inputs</b></h6>
237
+ </td>
238
+ </tr>
239
+ <tr>
240
+ <td class="col-md-4">
241
+ <ul class="index-list">
242
+ <li>
243
+ <a href="#profile" >profile</a>
244
+ </li>
245
+ </ul>
246
+ </td>
247
+ </tr>
231
248
 
232
249
 
233
250
 
@@ -236,83 +253,33 @@
236
253
  </table>
237
254
  </section>
238
255
 
239
- <section data-compodoc="block-constructor">
240
- <h3 id="constructor">Constructor</h3>
256
+
257
+ <section data-compodoc="block-inputs">
258
+ <h3 id="inputs">Inputs</h3>
241
259
  <table class="table table-sm table-bordered">
242
260
  <tbody>
243
261
  <tr>
244
262
  <td class="col-md-4">
245
- <code>constructor(userProfileService: UserProfileDataSource<T>, authenticationService: RxapAuthenticationService, extractUsernameFromProfile: <a href="../undefineds/ExtractUsernameFromProfileFn.html" target="_self">ExtractUsernameFromProfileFn&lt;T&gt;</a>)</code>
263
+ <a name="profile"></a>
264
+ <b>profile</b>
246
265
  </td>
247
266
  </tr>
248
- <tr>
249
- <td class="col-md-4">
250
- <div class="io-line">Defined in <a href="" data-line="52" class="link-to-prism">src/lib/header/user-profile-icon/user-profile-icon.component.ts:52</a></div>
251
- </td>
252
- </tr>
253
-
254
267
  <tr>
255
268
  <td class="col-md-4">
256
- <div>
257
- <b>Parameters :</b>
258
- <table class="params">
259
- <thead>
260
- <tr>
261
- <td>Name</td>
262
- <td>Type</td>
263
- <td>Optional</td>
264
- </tr>
265
- </thead>
266
- <tbody>
267
- <tr>
268
- <td>userProfileService</td>
269
-
270
- <td>
271
- <code>UserProfileDataSource&lt;T&gt;</code>
272
- </td>
273
-
274
- <td>
275
- No
276
- </td>
277
-
278
- </tr>
279
- <tr>
280
- <td>authenticationService</td>
281
-
282
- <td>
283
- <code>RxapAuthenticationService</code>
284
- </td>
285
-
286
- <td>
287
- No
288
- </td>
289
-
290
- </tr>
291
- <tr>
292
- <td>extractUsernameFromProfile</td>
293
-
294
- <td>
295
- <code><a href="../miscellaneous/typealiases.html#ExtractUsernameFromProfileFn" target="_self" >ExtractUsernameFromProfileFn&lt;T&gt;</a></code>
296
- </td>
297
-
298
- <td>
299
- No
300
- </td>
301
-
302
- </tr>
303
- </tbody>
304
- </table>
305
- </div>
269
+ <i>Required : </i>&nbsp;<b>true</b>
306
270
  </td>
307
271
  </tr>
272
+ <tr>
273
+ <td class="col-md-2" colspan="2">
274
+ <div class="io-line">Defined in <a href="" data-line="30" class="link-to-prism">src/lib/default-header/user-profile-icon/user-profile-icon.component.ts:30</a></div>
275
+ </td>
276
+ </tr>
308
277
  </tbody>
309
278
  </table>
310
279
  </section>
311
280
 
312
281
 
313
282
 
314
-
315
-
316
283
  <section data-compodoc="block-methods">
317
284
 
318
285
  <h3 id="methods">
@@ -325,7 +292,6 @@
325
292
  <a name="logout"></a>
326
293
  <span class="name">
327
294
  <span class="modifier">Public</span>
328
- <span class="modifier">Async</span>
329
295
  <span ><b>logout</b></span>
330
296
  <a href="#logout"><span class="icon ion-ios-link"></span></a>
331
297
  </span>
@@ -341,8 +307,8 @@
341
307
 
342
308
  <tr>
343
309
  <td class="col-md-4">
344
- <div class="io-line">Defined in <a href="" data-line="74"
345
- class="link-to-prism">src/lib/header/user-profile-icon/user-profile-icon.component.ts:74</a></div>
310
+ <div class="io-line">Defined in <a href="" data-line="40"
311
+ class="link-to-prism">src/lib/default-header/user-profile-icon/user-profile-icon.component.ts:40</a></div>
346
312
  </td>
347
313
  </tr>
348
314
 
@@ -351,7 +317,7 @@
351
317
  <td class="col-md-4">
352
318
 
353
319
  <div class="io-description">
354
- <b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>
320
+ <b>Returns : </b> <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>
355
321
 
356
322
  </div>
357
323
  </td>
@@ -364,6 +330,28 @@
364
330
  <h3 id="inputs">
365
331
  Properties
366
332
  </h3>
333
+ <table class="table table-sm table-bordered">
334
+ <tbody>
335
+ <tr>
336
+ <td class="col-md-4">
337
+ <a name="profile"></a>
338
+ <span class="name">
339
+ <span class="modifier">Public</span>
340
+ <span class="modifier">Readonly</span>
341
+ <span ><b>profile</b></span>
342
+ <a href="#profile"><span class="icon ion-ios-link"></span></a>
343
+ </span>
344
+ </td>
345
+ </tr>
346
+ <tr>
347
+ <td class="col-md-4">
348
+ <div class="io-line">Defined in <a href="" data-line="30" class="link-to-prism">src/lib/default-header/user-profile-icon/user-profile-icon.component.ts:30</a></div>
349
+ </td>
350
+ </tr>
351
+
352
+
353
+ </tbody>
354
+ </table>
367
355
  <table class="table table-sm table-bordered">
368
356
  <tbody>
369
357
  <tr>
@@ -371,6 +359,7 @@
371
359
  <a name="username"></a>
372
360
  <span class="name">
373
361
  <span class="modifier">Public</span>
362
+ <span class="modifier">Readonly</span>
374
363
  <span ><b>username</b></span>
375
364
  <a href="#username"><span class="icon ion-ios-link"></span></a>
376
365
  </span>
@@ -378,13 +367,18 @@
378
367
  </tr>
379
368
  <tr>
380
369
  <td class="col-md-4">
381
- <i>Type : </i> <code>Signal&lt;string | null&gt;</code>
382
-
370
+ <i>Default value : </i><code>computed(() &#x3D;&gt; {
371
+ const profile &#x3D; this.profile();
372
+ if (profile) {
373
+ return this.extractUsernameFromProfile(profile);
374
+ }
375
+ return null;
376
+ })</code>
383
377
  </td>
384
378
  </tr>
385
379
  <tr>
386
380
  <td class="col-md-4">
387
- <div class="io-line">Defined in <a href="" data-line="52" class="link-to-prism">src/lib/header/user-profile-icon/user-profile-icon.component.ts:52</a></div>
381
+ <div class="io-line">Defined in <a href="" data-line="32" class="link-to-prism">src/lib/default-header/user-profile-icon/user-profile-icon.component.ts:32</a></div>
388
382
  </td>
389
383
  </tr>
390
384
 
@@ -398,40 +392,17 @@
398
392
 
399
393
  <div class="tab-pane fade tab-source-code" id="source">
400
394
  <pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import {
401
- AsyncPipe,
402
- NgIf,
403
- } from &#x27;@angular/common&#x27;;
404
- import {
405
395
  ChangeDetectionStrategy,
406
396
  Component,
407
- Inject,
408
- InjectionToken,
409
- Signal,
397
+ computed,
398
+ inject,
399
+ input,
410
400
  } from &#x27;@angular/core&#x27;;
411
- import { toSignal } from &#x27;@angular/core/rxjs-interop&#x27;;
412
401
  import { MatIconModule } from &#x27;@angular/material/icon&#x27;;
413
402
  import { MatMenuModule } from &#x27;@angular/material/menu&#x27;;
414
- import { RxapAuthenticationService } from &#x27;@rxap/authentication&#x27;;
415
- import { UserProfileDataSource } from &#x27;@rxap/ngx-user&#x27;;
416
- import {
417
- distinctUntilChanged,
418
- filter,
419
- skip,
420
- } from &#x27;rxjs&#x27;;
421
- import {
422
- map,
423
- switchMap,
424
- } from &#x27;rxjs/operators&#x27;;
425
-
426
- export type ExtractUsernameFromProfileFn&lt;T &#x3D; unknown&gt; &#x3D; (profile: T) &#x3D;&gt; string | null;
427
-
428
- export const EXTRACT_USERNAME_FROM_PROFILE &#x3D; new InjectionToken&lt;ExtractUsernameFromProfileFn&gt;(
429
- &#x27;extract-username-from-profile&#x27;,
430
- {
431
- providedIn: &#x27;root&#x27;,
432
- factory: () &#x3D;&gt; (profile: any) &#x3D;&gt; (profile ? profile.username ?? profile.email ?? profile.name : null) ?? null,
433
- },
434
- );
403
+ import { PubSubService } from &#x27;@rxap/ngx-pub-sub&#x27;;
404
+ import { EXTRACT_USERNAME_FROM_PROFILE } from &#x27;../../tokens&#x27;;
405
+ import { ExtractUsernameFromProfileFn } from &#x27;../../types&#x27;;
435
406
 
436
407
  @Component({
437
408
  selector: &#x27;rxap-user-profile-icon&#x27;,
@@ -442,36 +413,25 @@ export const EXTRACT_USERNAME_FROM_PROFILE &#x3D; new InjectionToken&lt;ExtractU
442
413
  imports: [
443
414
  MatMenuModule,
444
415
  MatIconModule,
445
- NgIf,
446
- AsyncPipe,
447
416
  ],
448
417
  })
449
- export class UserProfileIconComponent&lt;T &#x3D; unknown&gt; {
450
-
451
- public username: Signal&lt;string | null&gt;;
452
-
453
- constructor(
454
- private readonly userProfileService: UserProfileDataSource&lt;T&gt;,
455
- private readonly authenticationService: RxapAuthenticationService,
456
- @Inject(EXTRACT_USERNAME_FROM_PROFILE)
457
- extractUsernameFromProfile: ExtractUsernameFromProfileFn&lt;T&gt;,
458
- ) {
459
- this.username &#x3D; toSignal(this.authenticationService.isAuthenticated$.pipe(
460
- filter(Boolean),
461
- switchMap(() &#x3D;&gt; this.userProfileService.connect({
462
- viewChange: this.authenticationService.isAuthenticated$.pipe(
463
- skip(1),
464
- filter(Boolean),
465
- distinctUntilChanged(),
466
- ),
467
- })),
468
- filter(Boolean),
469
- map(extractUsernameFromProfile),
470
- ), { initialValue: null });
471
- }
418
+ export class UserProfileIconComponent {
419
+
420
+ private readonly extractUsernameFromProfile: ExtractUsernameFromProfileFn &#x3D; inject(EXTRACT_USERNAME_FROM_PROFILE);
421
+ private readonly pubSubService &#x3D; inject(PubSubService);
422
+
423
+ public readonly profile &#x3D; input.required();
472
424
 
473
- public async logout() {
474
- await this.authenticationService.signOut();
425
+ public readonly username &#x3D; computed(() &#x3D;&gt; {
426
+ const profile &#x3D; this.profile();
427
+ if (profile) {
428
+ return this.extractUsernameFromProfile(profile);
429
+ }
430
+ return null;
431
+ });
432
+
433
+ public logout() {
434
+ this.pubSubService.publish(&#x27;authentication.logout&#x27;);
475
435
  }
476
436
 
477
437
 
@@ -481,18 +441,19 @@ export class UserProfileIconComponent&lt;T &#x3D; unknown&gt; {
481
441
 
482
442
  <div class="tab-pane fade " id="templateData">
483
443
  <pre class="line-numbers"><code class="language-html">&lt;button [matMenuTriggerFor]&#x3D;&quot;menu&quot;
484
- [disabled]&#x3D;&quot;!username()&quot;
485
- class&#x3D;&quot;profile-icon flex flex-row justify-center items-center&quot;&gt;
486
- &lt;mat-icon class&#x3D;&quot;avatar-icon&quot; svgIcon&#x3D;&quot;account-circle&quot;&gt;&lt;/mat-icon&gt;
444
+ class&#x3D;&quot;rounded-full cursor-pointer outline-none overflow-hidden h-8 w-8 bg-center bg-no-repeat bg-cover flex flex-row justify-center items-center&quot;&gt;
445
+ &lt;mat-icon class&#x3D;&quot;h-8 w-8 text-[32px]&quot; svgIcon&#x3D;&quot;account-circle&quot;&gt;&lt;/mat-icon&gt;
487
446
  &lt;/button&gt;
488
447
 
489
448
  &lt;mat-menu #menu&#x3D;&quot;matMenu&quot; [yPosition]&#x3D;&quot;&#x27;below&#x27;&quot; class&#x3D;&quot;!max-w-none&quot;&gt;
449
+ @if (this.username(); as username) {
490
450
  &lt;button mat-menu-item&gt;
491
451
  &lt;span class&#x3D;&quot;flex flex-row gap-2&quot;&gt;
492
452
  &lt;mat-icon svgIcon&#x3D;&quot;account&quot;&gt;&lt;/mat-icon&gt;
493
- &lt;span&gt;{{username()}}&lt;/span&gt;
453
+ &lt;span&gt;{{username}}&lt;/span&gt;
494
454
  &lt;/span&gt;
495
455
  &lt;/button&gt;
456
+ }
496
457
  &lt;button (click)&#x3D;&quot;logout()&quot; mat-menu-item&gt;
497
458
  &lt;span class&#x3D;&quot;flex flex-row gap-2&quot;&gt;
498
459
  &lt;mat-icon svgIcon&#x3D;&quot;logout&quot;&gt;&lt;/mat-icon&gt;
@@ -507,32 +468,7 @@ export class UserProfileIconComponent&lt;T &#x3D; unknown&gt; {
507
468
  <p class="comment">
508
469
  <code>./user-profile-icon.component.scss</code>
509
470
  </p>
510
- <pre class="line-numbers"><code class="language-scss">.profile-icon {
511
- border-radius: 100%;
512
- border: none;
513
- height: 32px;
514
- width: 32px;
515
- overflow: hidden;
516
- background-position: center center;
517
- background-repeat: no-repeat;
518
- background-size: cover;
519
-
520
- .avatar-icon {
521
- width: 32px;
522
- height: 32px;
523
- font-size: 32px;
524
- }
525
-
526
- &amp;:hover {
527
- cursor: pointer;
528
- }
529
-
530
- &amp;:focus {
531
- outline: none;
532
- }
533
-
534
- }
535
- </code></pre>
471
+ <pre class="line-numbers"><code class="language-scss"></code></pre>
536
472
  </div>
537
473
 
538
474
  <div class="tab-pane fade " id="tree">
@@ -560,9 +496,9 @@ export class UserProfileIconComponent&lt;T &#x3D; unknown&gt; {
560
496
  <script src="../js/libs/htmlparser.js"></script>
561
497
  <script src="../js/libs/deep-iterator.js"></script>
562
498
  <script>
563
- var COMPONENT_TEMPLATE = '<div><button [matMenuTriggerFor]="menu" [disabled]="!username()" class="profile-icon flex flex-row justify-center items-center"> <mat-icon class="avatar-icon" svgIcon="account-circle"></mat-icon></button><mat-menu #menu="matMenu" [yPosition]="\'below\'" class="!max-w-none"> <button mat-menu-item> <span class="flex flex-row gap-2"> <mat-icon svgIcon="account"></mat-icon> <span>{{username()}}</span> </span> </button> <button (click)="logout()" mat-menu-item> <span class="flex flex-row gap-2"> <mat-icon svgIcon="logout"></mat-icon> <span i18n>Logout</span> </span> </button></mat-menu></div>'
564
- 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'}];
565
- var DIRECTIVES = [{'name': 'FooterDirective', 'selector': '[rxapFooter]'},{'name': 'SidenavFooterDirective', 'selector': '[rxapSidenavFooter]'},{'name': 'SidenavHeaderDirective', 'selector': '[rxapSidenavHeader]'}];
499
+ var COMPONENT_TEMPLATE = '<div><button [matMenuTriggerFor]="menu" class="rounded-full cursor-pointer outline-none overflow-hidden h-8 w-8 bg-center bg-no-repeat bg-cover flex flex-row justify-center items-center"> <mat-icon class="h-8 w-8 text-[32px]" svgIcon="account-circle"></mat-icon></button><mat-menu #menu="matMenu" [yPosition]="\'below\'" class="!max-w-none"> @if (this.username(); as username) { <button mat-menu-item> <span class="flex flex-row gap-2"> <mat-icon svgIcon="account"></mat-icon> <span>{{username}}</span> </span> </button> } <button (click)="logout()" mat-menu-item> <span class="flex flex-row gap-2"> <mat-icon svgIcon="logout"></mat-icon> <span i18n>Logout</span> </span> </button></mat-menu></div>'
500
+ 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'}];
501
+ var DIRECTIVES = [{'name': 'FooterDirective', 'selector': '[rxapFooter]'},{'name': 'HeaderDirective', 'selector': '[rxapHeader]'},{'name': 'SidenavFooterDirective', 'selector': '[rxapSidenavFooter]'},{'name': 'SidenavHeaderDirective', 'selector': '[rxapSidenavHeader]'}];
566
502
  var ACTUAL_COMPONENT = {'name': 'UserProfileIconComponent'};
567
503
  </script>
568
504
  <script src="../js/tree.js"></script>
@@ -100,6 +100,8 @@
100
100
  <li class="breadcrumb-item">Dependencies</li>
101
101
  </ol>
102
102
  <ul class="dependencies-list">
103
+ <li>
104
+ <b>@nx/devkit</b> : 19.3.0</li>
103
105
  <li>
104
106
  <b>tslib</b> : 2.6.2</li>
105
107
  </ul>
@@ -118,44 +120,28 @@
118
120
  <b>@angular/common</b> : ^18.0.1</li>
119
121
  <li>
120
122
  <b>@angular/core</b> : ^18.0.1</li>
121
- <li>
122
- <b>@angular/forms</b> : ^18.0.1</li>
123
123
  <li>
124
124
  <b>@angular/material</b> : ^18.0.0</li>
125
125
  <li>
126
126
  <b>@angular/router</b> : ^18.0.1</li>
127
127
  <li>
128
- <b>@rxap/authentication</b> : ^18.0.2</li>
129
- <li>
130
- <b>@rxap/authorization</b> : ^18.0.2</li>
131
- <li>
132
- <b>@rxap/browser-utilities</b> : ^1.1.3</li>
133
- <li>
134
- <b>@rxap/config</b> : ^18.1.0</li>
135
- <li>
136
- <b>@rxap/data-source</b> : ^18.1.0</li>
137
- <li>
138
- <b>@rxap/directives</b> : ^18.0.2</li>
139
- <li>
140
- <b>@rxap/environment</b> : ^18.0.2</li>
141
- <li>
142
- <b>@rxap/icon</b> : ^18.0.2</li>
128
+ <b>@rxap/browser-utilities</b> : ^1.1.4-dev.1</li>
143
129
  <li>
144
- <b>@rxap/material-directives</b> : ^18.0.2</li>
130
+ <b>@rxap/config</b> : ^18.1.1-dev.1</li>
145
131
  <li>
146
- <b>@rxap/ngx-changelog</b> : ^18.0.2</li>
132
+ <b>@rxap/environment</b> : ^18.0.3-dev.1</li>
147
133
  <li>
148
- <b>@rxap/ngx-localize</b> : ^18.0.2</li>
134
+ <b>@rxap/material-directives</b> : ^18.0.3-dev.1</li>
149
135
  <li>
150
- <b>@rxap/ngx-status-check</b> : ^18.0.2</li>
136
+ <b>@rxap/ngx-pub-sub</b> : ^18.0.3-dev.1</li>
151
137
  <li>
152
- <b>@rxap/ngx-theme</b> : ^18.0.2</li>
138
+ <b>@rxap/ngx-theme</b> : ^18.0.3-dev.1</li>
153
139
  <li>
154
- <b>@rxap/ngx-user</b> : ^18.0.2</li>
140
+ <b>@rxap/ngx-user</b> : ^18.0.3-dev.1</li>
155
141
  <li>
156
- <b>@rxap/services</b> : ^18.0.2</li>
142
+ <b>@rxap/pattern</b> : ^1.1.5-dev.1</li>
157
143
  <li>
158
- <b>@rxap/utilities</b> : ^16.2.3</li>
144
+ <b>@rxap/utilities</b> : ^16.2.4-dev.1</li>
159
145
  <li>
160
146
  <b>rxjs</b> : ^7.8.1</li>
161
147
  </ul>