@dflat-core/web 1.0.41 → 1.0.43

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 (178) hide show
  1. package/core-services/index.d.ts +2 -0
  2. package/core-services/lib/services/application-menu.service.d.ts +22 -0
  3. package/core-services/lib/services/module-menu-services.token.d.ts +8 -0
  4. package/core-ux/index.d.ts +1 -0
  5. package/core-ux/lib/services/entity-selectors.d.ts +37 -0
  6. package/core-ux/lib/services/selectorMapperBase.service.d.ts +7 -1
  7. package/core-ux/lib/v2/models/contexts/section-context.d.ts +12 -0
  8. package/fesm2022/dflat-core-web-core-services.mjs +56 -2
  9. package/fesm2022/dflat-core-web-core-services.mjs.map +1 -1
  10. package/fesm2022/dflat-core-web-core-ux.mjs +95 -10
  11. package/fesm2022/dflat-core-web-core-ux.mjs.map +1 -1
  12. package/fesm2022/dflat-core-web-system-model.mjs.map +1 -1
  13. package/fesm2022/dflat-core-web-system-root.mjs +261 -108
  14. package/fesm2022/dflat-core-web-system-root.mjs.map +1 -1
  15. package/fesm2022/dflat-core-web-system-ux.mjs +4780 -2445
  16. package/fesm2022/dflat-core-web-system-ux.mjs.map +1 -1
  17. package/package.json +9 -9
  18. package/system-model/lib/model/interface.generated.d.ts +18 -0
  19. package/system-root/index.d.ts +4 -1
  20. package/system-root/lib/generated/system-entity-keys.generated.d.ts +63 -0
  21. package/system-root/lib/generated/system-menu-item-provider.generated.d.ts +67 -0
  22. package/system-root/lib/generated/system-menu-service.generated.d.ts +26 -0
  23. package/system-root/lib/system-entity-keys.d.ts +6 -31
  24. package/system-root/lib/system-menu-item-provider.d.ts +6 -23
  25. package/system-root/lib/system-menu-service.d.ts +8 -9
  26. package/system-ux/index.d.ts +136 -44
  27. package/system-ux/lib/data-components/address.component.d.ts +7 -0
  28. package/system-ux/lib/{company → data-components}/company.component.d.ts +3 -7
  29. package/system-ux/lib/data-components/country.component.d.ts +6 -0
  30. package/system-ux/lib/data-components/currency.component.d.ts +6 -0
  31. package/system-ux/lib/{custom-field/custom-field.component.d.ts → data-components/customfield.component.d.ts} +3 -7
  32. package/system-ux/lib/{custom-field-group/custom-field-group.component.d.ts → data-components/customfieldgroup.component.d.ts} +4 -6
  33. package/system-ux/lib/{custom-field-group/custom-field-group-entity/custom-field-group-entity.component.d.ts → data-components/customfieldgroupentity.component.d.ts} +4 -7
  34. package/system-ux/lib/{custom-field-group/custom-field-group-item/custom-field-group-item.component.d.ts → data-components/customfieldgroupitem.component.d.ts} +5 -7
  35. package/system-ux/lib/{custom-field-options/custom-field-options.component.d.ts → data-components/customfieldoptions.component.d.ts} +3 -6
  36. package/system-ux/lib/data-components/customfieldvalue.component.d.ts +10 -0
  37. package/system-ux/lib/data-components/dayinfo.component.d.ts +10 -0
  38. package/system-ux/lib/data-components/errorcategory.component.d.ts +10 -0
  39. package/system-ux/lib/{exchange-rate/exchange-rate.component.d.ts → data-components/exchangerate.component.d.ts} +3 -10
  40. package/system-ux/lib/data-components/files.component.d.ts +10 -0
  41. package/system-ux/lib/data-components/generated/address.component.generated.d.ts +18 -0
  42. package/system-ux/lib/data-components/generated/company.component.generated.d.ts +25 -0
  43. package/system-ux/lib/data-components/generated/country.component.generated.d.ts +25 -0
  44. package/system-ux/lib/data-components/generated/currency.component.generated.d.ts +25 -0
  45. package/system-ux/lib/data-components/generated/customfield.component.generated.d.ts +25 -0
  46. package/system-ux/lib/data-components/generated/customfieldgroup.component.generated.d.ts +25 -0
  47. package/system-ux/lib/data-components/generated/customfieldgroupentity.component.generated.d.ts +18 -0
  48. package/system-ux/lib/data-components/generated/customfieldgroupitem.component.generated.d.ts +18 -0
  49. package/system-ux/lib/data-components/generated/customfieldoptions.component.generated.d.ts +18 -0
  50. package/system-ux/lib/data-components/generated/customfieldvalue.component.generated.d.ts +18 -0
  51. package/system-ux/lib/data-components/generated/dayinfo.component.generated.d.ts +18 -0
  52. package/system-ux/lib/data-components/generated/entityfiles.component.generated.d.ts +18 -0
  53. package/system-ux/lib/data-components/generated/errorcategory.component.generated.d.ts +18 -0
  54. package/system-ux/lib/data-components/generated/exchangerate.component.generated.d.ts +18 -0
  55. package/system-ux/lib/data-components/generated/files.component.generated.d.ts +18 -0
  56. package/system-ux/lib/data-components/generated/keyword.component.generated.d.ts +25 -0
  57. package/system-ux/lib/data-components/generated/metaentity.component.generated.d.ts +25 -0
  58. package/system-ux/lib/data-components/generated/metaentityfield.component.generated.d.ts +25 -0
  59. package/system-ux/lib/data-components/generated/metaentityform.component.generated.d.ts +25 -0
  60. package/system-ux/lib/data-components/generated/metaentityformfield.component.generated.d.ts +18 -0
  61. package/system-ux/lib/data-components/generated/metaentityformsection.component.generated.d.ts +25 -0
  62. package/system-ux/lib/data-components/generated/metaentitykeyword.component.generated.d.ts +18 -0
  63. package/system-ux/lib/data-components/generated/metaentityrelation.component.generated.d.ts +25 -0
  64. package/system-ux/lib/data-components/generated/metaentityrelationdefinition.component.generated.d.ts +18 -0
  65. package/system-ux/lib/data-components/generated/metaentitytranslation.component.generated.d.ts +18 -0
  66. package/system-ux/lib/data-components/generated/metaentityviewfield.component.generated.d.ts +25 -0
  67. package/system-ux/lib/data-components/generated/news.component.generated.d.ts +25 -0
  68. package/system-ux/lib/data-components/generated/parameter.component.generated.d.ts +25 -0
  69. package/system-ux/lib/data-components/generated/parametersection.component.generated.d.ts +25 -0
  70. package/system-ux/lib/data-components/generated/parametervalue.component.generated.d.ts +18 -0
  71. package/system-ux/lib/data-components/generated/permission.component.generated.d.ts +25 -0
  72. package/system-ux/lib/data-components/generated/presentationprofile.component.generated.d.ts +25 -0
  73. package/system-ux/lib/data-components/generated/presentationprofileitem.component.generated.d.ts +18 -0
  74. package/system-ux/lib/data-components/generated/rating.component.generated.d.ts +18 -0
  75. package/system-ux/lib/data-components/generated/ratingsummary.component.generated.d.ts +25 -0
  76. package/system-ux/lib/data-components/generated/request.component.generated.d.ts +25 -0
  77. package/system-ux/lib/data-components/generated/requestentity.component.generated.d.ts +25 -0
  78. package/system-ux/lib/data-components/generated/requestresult.component.generated.d.ts +18 -0
  79. package/system-ux/lib/data-components/generated/resourcekey.component.generated.d.ts +25 -0
  80. package/system-ux/lib/data-components/generated/resourcelanguage.component.generated.d.ts +25 -0
  81. package/system-ux/lib/data-components/generated/resourcetranslation.component.generated.d.ts +18 -0
  82. package/system-ux/lib/data-components/generated/role.component.generated.d.ts +25 -0
  83. package/system-ux/lib/data-components/generated/rolepermission.component.generated.d.ts +18 -0
  84. package/system-ux/lib/data-components/generated/subcompany.component.generated.d.ts +18 -0
  85. package/system-ux/lib/data-components/generated/supplier.component.generated.d.ts +25 -0
  86. package/system-ux/lib/data-components/generated/suppliercompany.component.generated.d.ts +18 -0
  87. package/system-ux/lib/data-components/generated/synchronizedcompany.component.generated.d.ts +18 -0
  88. package/system-ux/lib/data-components/generated/system-components.generated.d.ts +69 -0
  89. package/system-ux/lib/data-components/generated/tvarate.component.generated.d.ts +18 -0
  90. package/system-ux/lib/data-components/generated/useraccount.component.generated.d.ts +25 -0
  91. package/system-ux/lib/data-components/generated/useraccountcompany.component.generated.d.ts +18 -0
  92. package/system-ux/lib/data-components/generated/useraccountnews.component.generated.d.ts +18 -0
  93. package/system-ux/lib/data-components/generated/useraccountrole.component.generated.d.ts +18 -0
  94. package/system-ux/lib/data-components/generated/useraccounttoken.component.generated.d.ts +18 -0
  95. package/system-ux/lib/data-components/generated/userfavorite.component.generated.d.ts +18 -0
  96. package/system-ux/lib/data-components/generated/usergroup.component.generated.d.ts +18 -0
  97. package/system-ux/lib/data-components/generated/usergroupdefinition.component.generated.d.ts +18 -0
  98. package/system-ux/lib/data-components/generated/userhistory.component.generated.d.ts +18 -0
  99. package/system-ux/lib/data-components/generated/userpermissionview.component.generated.d.ts +18 -0
  100. package/system-ux/lib/data-components/generated/usersession.component.generated.d.ts +18 -0
  101. package/system-ux/lib/data-components/generated/version.component.generated.d.ts +18 -0
  102. package/system-ux/lib/data-components/keyword.component.d.ts +10 -0
  103. package/system-ux/lib/{meta-entity/meta-entity.component.d.ts → data-components/metaentity.component.d.ts} +3 -9
  104. package/system-ux/lib/{meta-entity-field/meta-entity-field.component.d.ts → data-components/metaentityfield.component.d.ts} +3 -6
  105. package/system-ux/lib/data-components/metaentityform.component.d.ts +10 -0
  106. package/system-ux/lib/data-components/metaentityformfield.component.d.ts +10 -0
  107. package/system-ux/lib/data-components/metaentityformsection.component.d.ts +10 -0
  108. package/system-ux/lib/data-components/metaentitykeyword.component.d.ts +10 -0
  109. package/system-ux/lib/data-components/metaentityrelation.component.d.ts +10 -0
  110. package/system-ux/lib/data-components/metaentityrelationdefinition.component.d.ts +10 -0
  111. package/system-ux/lib/data-components/metaentitytranslation.component.d.ts +10 -0
  112. package/system-ux/lib/data-components/metaentityviewfield.component.d.ts +10 -0
  113. package/system-ux/lib/data-components/news.component.d.ts +8 -0
  114. package/system-ux/lib/data-components/parameter.component.d.ts +10 -0
  115. package/system-ux/lib/data-components/parametersection.component.d.ts +10 -0
  116. package/system-ux/lib/data-components/parametervalue.component.d.ts +15 -0
  117. package/system-ux/lib/data-components/permission.component.d.ts +8 -0
  118. package/system-ux/lib/data-components/presentationprofileitem.component.d.ts +10 -0
  119. package/system-ux/lib/data-components/rating.component.d.ts +10 -0
  120. package/system-ux/lib/data-components/ratingsummary.component.d.ts +10 -0
  121. package/system-ux/lib/{request → data-components}/request.component.d.ts +3 -7
  122. package/system-ux/lib/data-components/requestentity.component.d.ts +10 -0
  123. package/system-ux/lib/data-components/requestresult.component.d.ts +10 -0
  124. package/system-ux/lib/data-components/resourcekey.component.d.ts +11 -0
  125. package/system-ux/lib/data-components/resourcelanguage.component.d.ts +9 -0
  126. package/system-ux/lib/data-components/resourcetranslation.component.d.ts +10 -0
  127. package/system-ux/lib/{role/role-component.d.ts → data-components/role.component.d.ts} +3 -7
  128. package/system-ux/lib/data-components/rolepermission.component.d.ts +10 -0
  129. package/system-ux/lib/data-components/subcompany.component.d.ts +11 -0
  130. package/system-ux/lib/data-components/supplier.component.d.ts +8 -0
  131. package/system-ux/lib/data-components/suppliercompany.component.d.ts +10 -0
  132. package/system-ux/lib/data-components/synchronizedcompany.component.d.ts +15 -0
  133. package/system-ux/lib/{tva-rate/tva-rate.component.d.ts → data-components/tvarate.component.d.ts} +4 -7
  134. package/system-ux/lib/data-components/useraccount.component.d.ts +11 -0
  135. package/system-ux/lib/data-components/useraccountcompany.component.d.ts +10 -0
  136. package/system-ux/lib/data-components/useraccountnews.component.d.ts +10 -0
  137. package/system-ux/lib/data-components/useraccountrole.component.d.ts +10 -0
  138. package/system-ux/lib/data-components/useraccounttoken.component.d.ts +10 -0
  139. package/system-ux/lib/{user-company/user-company-component.d.ts → data-components/usercompany.component.d.ts} +4 -6
  140. package/system-ux/lib/data-components/userfavorite.component.d.ts +10 -0
  141. package/system-ux/lib/data-components/usergroup.component.d.ts +8 -0
  142. package/system-ux/lib/{user-group/user-group-definition.component.d.ts → data-components/usergroupdefinition.component.d.ts} +3 -6
  143. package/system-ux/lib/data-components/userhistory.component.d.ts +10 -0
  144. package/system-ux/lib/{user-permission/user-permission-component.d.ts → data-components/userpermission.component.d.ts} +3 -6
  145. package/system-ux/lib/data-components/userpermissionview.component.d.ts +10 -0
  146. package/system-ux/lib/{user-role/user-role-component.d.ts → data-components/userrole.component.d.ts} +3 -6
  147. package/system-ux/lib/data-components/usersession.component.d.ts +10 -0
  148. package/system-ux/lib/data-components/version.component.d.ts +10 -0
  149. package/system-ux/lib/system-ux.module.d.ts +125 -92
  150. package/system-ux/lib/address/address.component.d.ts +0 -15
  151. package/system-ux/lib/country/country.component.d.ts +0 -14
  152. package/system-ux/lib/currency/currency.component.d.ts +0 -14
  153. package/system-ux/lib/global-parameter/global-parameter.component.d.ts +0 -15
  154. package/system-ux/lib/news/news-component.d.ts +0 -16
  155. package/system-ux/lib/permission/permission-component.d.ts +0 -16
  156. package/system-ux/lib/resource-key/resource-key.component.d.ts +0 -18
  157. package/system-ux/lib/resource-language/resource-language.component.d.ts +0 -16
  158. package/system-ux/lib/resource-translation/resource-translation.component.d.ts +0 -16
  159. package/system-ux/lib/sub-company/sub-company.component.d.ts +0 -15
  160. package/system-ux/lib/supplier/supplier.component.d.ts +0 -16
  161. package/system-ux/lib/synchronised-company/synchronised-company.component.d.ts +0 -16
  162. package/system-ux/lib/user-account/user-account-component.d.ts +0 -18
  163. package/system-ux/lib/user-group/user-group.component.d.ts +0 -16
  164. /package/system-root/lib/{system-permissions.generated.d.ts → generated/system-permissions.generated.d.ts} +0 -0
  165. /package/system-ux/lib/{company → editor-components}/company-editor.component.d.ts +0 -0
  166. /package/system-ux/lib/{country → editor-components}/country-editor.component.d.ts +0 -0
  167. /package/system-ux/lib/{currency → editor-components}/currency-editor.component.d.ts +0 -0
  168. /package/system-ux/lib/{custom-field-group → editor-components}/custom-field-group-editor.component.d.ts +0 -0
  169. /package/system-ux/lib/{custom-field-group/custom-field-group-entity → editor-components}/custom-field-group-entity-editor.component.d.ts +0 -0
  170. /package/system-ux/lib/{custom-field-group/custom-field-group-item → editor-components}/custom-field-group-item-editor.component.d.ts +0 -0
  171. /package/system-ux/lib/{news → editor-components}/news-editor.component.d.ts +0 -0
  172. /package/system-ux/lib/{permission → editor-components}/permission-editor.component.d.ts +0 -0
  173. /package/system-ux/lib/{request → editor-components}/request-editor.component.d.ts +0 -0
  174. /package/system-ux/lib/{resource-translation → editor-components}/resource-translation-editor.component.d.ts +0 -0
  175. /package/system-ux/lib/{role → editor-components}/role-editor.component.d.ts +0 -0
  176. /package/system-ux/lib/{user-account → editor-components}/user-account-editor.component.d.ts +0 -0
  177. /package/system-ux/lib/{user-account-profile → editor-components}/user-account-profile.component.d.ts +0 -0
  178. /package/system-ux/lib/{user-group → editor-components}/user-group-editor.component.d.ts +0 -0
@@ -18,6 +18,8 @@ export * from './lib/services/server-url';
18
18
  export * from './lib/services/string.function';
19
19
  export * from './lib/services/user.service';
20
20
  export * from './lib/services/menu.service';
21
+ export * from './lib/services/module-menu-services.token';
22
+ export * from './lib/services/application-menu.service';
21
23
  export * from './lib/services/filter.service';
22
24
  export * from './lib/services/screen.service';
23
25
  export * from './lib/model/model';
@@ -0,0 +1,22 @@
1
+ import { MenuItem } from '../model/model';
2
+ import { MenuService } from './menu.service';
3
+ import { PermissionService } from './permission.service';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * Menu de l'application : réunion des menus de tous ses modules (déclarés sous
7
+ * MODULE_MENU_SERVICES), dans l'ordre de déclaration. Les thèmes de même libellé sont fusionnés
8
+ * et leurs éléments réunis sans doublon (même lien). Chaque module filtre ses éléments selon les
9
+ * permissions de l'utilisateur connecté.
10
+ *
11
+ * Fourni sous MenuService par DflatAppModule.
12
+ */
13
+ export declare class ApplicationMenuService extends MenuService {
14
+ private moduleMenus;
15
+ constructor(permissionService: PermissionService, moduleMenus: MenuService[] | null);
16
+ getAllMenuItems(isAdmin: boolean): MenuItem[];
17
+ getAccessGrantedMenuItems(): MenuItem[];
18
+ /** Éléments sans doublon : le premier élément de chaque lien est gardé. */
19
+ private distinctItems;
20
+ static ɵfac: i0.ɵɵFactoryDeclaration<ApplicationMenuService, [null, { optional: true; }]>;
21
+ static ɵprov: i0.ɵɵInjectableDeclaration<ApplicationMenuService>;
22
+ }
@@ -0,0 +1,8 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ import { MenuService } from './menu.service';
3
+ /**
4
+ * Menus des modules de l'application : chaque module racine ([module]-root) y déclare le sien,
5
+ * `{ provide: MODULE_MENU_SERVICES, useExisting: <Module>MenuService, multi: true }`.
6
+ * ApplicationMenuService les réunit en un seul menu.
7
+ */
8
+ export declare const MODULE_MENU_SERVICES: InjectionToken<MenuService[]>;
@@ -25,6 +25,7 @@ export * from './lib/services/modal.service';
25
25
  export * from './lib/services/application.service';
26
26
  export * from './lib/services/presentation-profile.token';
27
27
  export * from './lib/services/selectorMapperBase.service';
28
+ export * from './lib/services/entity-selectors';
28
29
  export * from './lib/services/action.service';
29
30
  export * from './lib/components/actions/actions.component';
30
31
  export * from './lib/components/actions/actions-content.component';
@@ -0,0 +1,37 @@
1
+ import { Injector, Type } from '@angular/core';
2
+ import { EntityDataService } from '@dflat-core/web/core-data';
3
+ /**
4
+ * Sélecteur d'une entité (champ de formulaire FilterType Custom, dont ModalEntityKey désigne
5
+ * l'entité) : composant de recherche ouvert en fenêtre modale et service de données dont la
6
+ * recherche alimente la liste du sélecteur.
7
+ */
8
+ export interface EntitySelector {
9
+ /** Clé de l'entité : route de son contrôleur, en minuscule (ex. country). */
10
+ key: string;
11
+ /** Composant de recherche de l'entité. */
12
+ component: Type<any>;
13
+ /** Libellé de l'entité (titre de la fenêtre de sélection). */
14
+ title?: string;
15
+ /** Service de données de l'entité (recherche). */
16
+ dataService?: Type<EntityDataService<any, any>>;
17
+ }
18
+ /**
19
+ * Sélecteurs d'entité des modules de l'application. Chaque librairie [module]-ux enregistre ceux
20
+ * de ses entités, générés par codegenerator (dflat -g ts) dans [module]-components.generated.ts,
21
+ * dans le constructeur de son module Angular :
22
+ * `constructor(injector: Injector) { EntitySelectors.register(<Module>GeneratedSelectors, injector); }`.
23
+ * Le registre est global et garde l'injecteur du module : il sert aussi aux modules chargés à la
24
+ * demande (loadChildren), dont les services de données ne sont pas visibles de l'injecteur
25
+ * racine. SelectorMapperServiceBase s'en sert pour toute clé que l'application ne traite pas
26
+ * elle-même.
27
+ */
28
+ export declare class EntitySelectors {
29
+ private static readonly selectors;
30
+ /** Enregistre des sélecteurs et l'injecteur de leur module (le dernier enregistré l'emporte pour une même clé). */
31
+ static register(selectors: EntitySelector[], injector?: Injector): void;
32
+ /** Sélecteur de l'entité de clé `key` (insensible à la casse) et injecteur de son module, sinon undefined. */
33
+ static find(key: string): {
34
+ selector: EntitySelector;
35
+ injector?: Injector;
36
+ } | undefined;
37
+ }
@@ -16,9 +16,15 @@ export interface ModalConfig {
16
16
  }
17
17
  export declare abstract class SelectorMapperServiceBase {
18
18
  protected modalService: ModalService;
19
+ private readonly injector;
19
20
  constructor(modalService: ModalService);
20
21
  getInputSelectorContext(key: string, title: string, filter?: FilterViewModel, params?: any): IInputSelectorContext;
21
- abstract getComponentParams(key: string, params?: any): {
22
+ /**
23
+ * Composants et recherche du sélecteur de l'entité de clé `key` : par défaut, le sélecteur
24
+ * généré de l'entité (EntitySelectors, enregistrés par les librairies [module]-ux). Une
25
+ * application dérivée traite ses propres clés, puis appelle super.getComponentParams.
26
+ */
27
+ getComponentParams(key: string, params?: any): {
22
28
  selectionCompType: Type<any>;
23
29
  selectionModalTitle?: string;
24
30
  creationComType: Type<any>;
@@ -48,6 +48,18 @@ export declare class SectionContext<P extends EntityViewModel> {
48
48
  registerDynamicContainers(containers: ViewContainerRef[]): void;
49
49
  private defaultLayoutOverride;
50
50
  registerSection<F extends FilterViewModel, T extends EntityViewModel>(name: string, template: Type<ISectionComponent<T>>, config?: ISectionConfig<T, F, P>): ISpecificSectionContext<T, F, P>;
51
+ /**
52
+ * Onglet d'une entité liée (relation 1..*), décrit par une section du formulaire par défaut et
53
+ * enregistré par le composant généré (Base[X]Component.registerFormSections) : liste des
54
+ * enregistrements de l'entité dont le critère `filterProperty` vaut l'Id de l'enregistrement
55
+ * sélectionné. Ignoré si le composant spécifique a déjà enregistré un onglet du même titre ou
56
+ * de la même entité (clé d'entité du composant, ex. variante dérivée du composant généré).
57
+ */
58
+ registerRelatedSection<F extends FilterViewModel, T extends EntityViewModel>(name: string, template: Type<ISectionComponent<T>>, filterProperty: keyof F): void;
59
+ /** Onglets d'entités liées enregistrés par registerRelatedSection (une entité peut en avoir plusieurs, un par clé). */
60
+ private relatedSections;
61
+ /** Clé d'entité d'un composant (getEntityKey sans instance, valeur constante), sinon null. */
62
+ private static getEntityKey;
51
63
  getActiveTab(): number;
52
64
  renderSection(section: ISpecificSectionContext<any, any, P>, container: ViewContainerRef): void;
53
65
  private attachComponentOverrides;
@@ -5,7 +5,7 @@ import { CommonModule } from '@angular/common';
5
5
  import * as i3 from '@angular/common/http';
6
6
  import { HttpHeaders, provideHttpClient, withInterceptorsFromDi, HttpErrorResponse } from '@angular/common/http';
7
7
  import * as i0 from '@angular/core';
8
- import { Injectable, EventEmitter, Optional, SkipSelf, NgModule } from '@angular/core';
8
+ import { Injectable, EventEmitter, Optional, SkipSelf, NgModule, InjectionToken, Inject } from '@angular/core';
9
9
  import * as i1 from '@angular/router';
10
10
  import jwt_decode from 'jwt-decode';
11
11
  import { Subject, ReplaySubject, timer, throwError, BehaviorSubject, empty } from 'rxjs';
@@ -1548,6 +1548,13 @@ function trimChar(str, c) {
1548
1548
  return str.replace(new RegExp(`^[${c}]+|[${c}]+$`, "g"), "");
1549
1549
  }
1550
1550
 
1551
+ /**
1552
+ * Menus des modules de l'application : chaque module racine ([module]-root) y déclare le sien,
1553
+ * `{ provide: MODULE_MENU_SERVICES, useExisting: <Module>MenuService, multi: true }`.
1554
+ * ApplicationMenuService les réunit en un seul menu.
1555
+ */
1556
+ const MODULE_MENU_SERVICES = new InjectionToken('MODULE_MENU_SERVICES');
1557
+
1551
1558
  class MenuItem {
1552
1559
  constructor(title, link, icon, sublinks, permissionKey) {
1553
1560
  this.external = false;
@@ -1560,9 +1567,56 @@ class MenuItem {
1560
1567
  }
1561
1568
  }
1562
1569
 
1570
+ /**
1571
+ * Menu de l'application : réunion des menus de tous ses modules (déclarés sous
1572
+ * MODULE_MENU_SERVICES), dans l'ordre de déclaration. Les thèmes de même libellé sont fusionnés
1573
+ * et leurs éléments réunis sans doublon (même lien). Chaque module filtre ses éléments selon les
1574
+ * permissions de l'utilisateur connecté.
1575
+ *
1576
+ * Fourni sous MenuService par DflatAppModule.
1577
+ */
1578
+ class ApplicationMenuService extends MenuService {
1579
+ constructor(permissionService, moduleMenus) {
1580
+ super(permissionService);
1581
+ this.moduleMenus = moduleMenus;
1582
+ }
1583
+ getAllMenuItems(isAdmin) {
1584
+ // Copies : merge complète les éléments de son premier thème de chaque libellé.
1585
+ const themes = (this.moduleMenus ?? [])
1586
+ .reduce((all, menu) => all.concat(menu.getAllMenuItems(isAdmin)), new Array())
1587
+ .map(theme => new MenuItem(theme.title, theme.link, theme.icon, [...(theme.sublinks ?? [])], theme.permissionKey));
1588
+ return this.merge(themes)
1589
+ .map(theme => new MenuItem(theme.title, theme.link, theme.icon, this.distinctItems(theme.sublinks), theme.permissionKey));
1590
+ }
1591
+ getAccessGrantedMenuItems() {
1592
+ return (this.moduleMenus ?? [])
1593
+ .reduce((all, menu) => all.concat(menu.getAccessGrantedMenuItems() ?? []), new Array());
1594
+ }
1595
+ /** Éléments sans doublon : le premier élément de chaque lien est gardé. */
1596
+ distinctItems(items) {
1597
+ const links = new Set();
1598
+ return (items ?? []).filter(item => {
1599
+ if (item.link !== undefined && links.has(item.link))
1600
+ return false;
1601
+ links.add(item.link);
1602
+ return true;
1603
+ });
1604
+ }
1605
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ApplicationMenuService, deps: [{ token: PermissionService }, { token: MODULE_MENU_SERVICES, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
1606
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ApplicationMenuService }); }
1607
+ }
1608
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ApplicationMenuService, decorators: [{
1609
+ type: Injectable
1610
+ }], ctorParameters: () => [{ type: PermissionService }, { type: undefined, decorators: [{
1611
+ type: Optional
1612
+ }, {
1613
+ type: Inject,
1614
+ args: [MODULE_MENU_SERVICES]
1615
+ }] }] });
1616
+
1563
1617
  /**
1564
1618
  * Generated bundle index. Do not edit.
1565
1619
  */
1566
1620
 
1567
- export { AppConfiguration, AppKeys, AuthGuard, AuthInterceptor, AuthService, AuthTokenType, BreadcrumbService, BusMessageService, CanActivateGuard, CoreServicesModule, FilterService, GeolocationService, HeadersService, HubService, LocalStoreManager, MenuItem, MenuService, MessagesService, NotificationMqService, NotificationsService, PermissionService, ScreenService, ServerUrl, UserService, trimChar };
1621
+ export { AppConfiguration, AppKeys, ApplicationMenuService, AuthGuard, AuthInterceptor, AuthService, AuthTokenType, BreadcrumbService, BusMessageService, CanActivateGuard, CoreServicesModule, FilterService, GeolocationService, HeadersService, HubService, LocalStoreManager, MODULE_MENU_SERVICES, MenuItem, MenuService, MessagesService, NotificationMqService, NotificationsService, PermissionService, ScreenService, ServerUrl, UserService, trimChar };
1568
1622
  //# sourceMappingURL=dflat-core-web-core-services.mjs.map