@dflat-core/web 1.0.60 → 1.0.62

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.
@@ -2,42 +2,42 @@ import * as i0 from "@angular/core";
2
2
  import { AfterViewInit, ElementRef, EventEmitter, InjectionToken, Injector, ModuleWithProviders, OnDestroy, OnInit, Renderer2, Type } from "@angular/core";
3
3
  import * as i7 from "@dflat-core/web/core";
4
4
  import { EnsureModuleLoadedOnceGuard, EnvironmentBase } from "@dflat-core/web/core";
5
- import * as i124 from "@angular/router";
5
+ import * as i125 from "@angular/router";
6
6
  import { ActivatedRoute, Router, Routes } from "@angular/router";
7
- import * as i113 from "@dflat-core/web/core-ux";
8
- import { Action, ActionService, ActionsComponent, AlertService, ApplicationService, BaseComponent, BaseEditorComponent, DefaultLayoutComponent, DynamicFormComponent, EntityFacade, EntitySection, EntitySectionProvider, EntitySelector, FacadeModalService, IActionComponent, IIsCancel, IPpService, ISectionConfig, ImageService, LayoutPreferences, ModalService, NewEditorComponent, OrderableModalService, SelectorMapperServiceBase } from "@dflat-core/web/core-ux";
9
- import * as i116 from "@dflat-core/web/system-model";
10
- import { ActivationResults, AddressView, AddressViewFilterViewModel, ChangePasswordViewModel, CompanyFilterViewModel, CompanyView, Country, CountryFilterViewModel, Currency, CurrencyFilterViewModel, CustomFieldFilterViewModel, CustomFieldGroup, CustomFieldGroupEntityFilterViewModel, CustomFieldGroupEntityView, CustomFieldGroupFilterViewModel, CustomFieldGroupItemFilterViewModel, CustomFieldGroupItemView, CustomFieldOptionsFilterViewModel, CustomFieldOptionsView, CustomFieldValueFilterViewModel, CustomFieldValueView, CustomFieldView, DayInfo, DayInfoFilterViewModel, EntityFiles, EntityFilesFilterViewModel, ErrorCategory, ErrorCategoryFilterViewModel, ExchangeRateFilterViewModel, ExchangeRateView, FileDescriptor, FileTypes, FilesFilterViewModel, FilesView, ImageUploadEvent, Keyword, KeywordFilterViewModel, MetaEntity, MetaEntityField, MetaEntityFieldFilterViewModel, MetaEntityFilterViewModel, MetaEntityFormFieldFilterViewModel, MetaEntityFormFieldView, MetaEntityFormFilterViewModel, MetaEntityFormSectionFilterViewModel, MetaEntityFormSectionView, MetaEntityFormView, MetaEntityKeyword, MetaEntityKeywordFilterViewModel, MetaEntityRelation, MetaEntityRelationDefinition, MetaEntityRelationDefinitionFilterViewModel, MetaEntityRelationFilterViewModel, MetaEntityTranslation, MetaEntityTranslationFilterViewModel, MetaEntityViewField, MetaEntityViewFieldFilterViewModel, News, NewsFilterViewModel, ParameterSection, ParameterSectionFilterViewModel, ParameterValueView, ParameterValueViewFilterViewModel, ParameterView, ParameterViewFilterViewModel, Permission, PermissionFilterViewModel, PermissionView, PresentationContext, PresentationProfile, PresentationProfileFilterViewModel, PresentationProfileItem, PresentationProfileItemFilterViewModel, PresentationProfileItemView, PresentationProfilePurposes, PresentationProfileScopes, RatingFilterViewModel, RatingSummary, RatingSummaryFilterViewModel, RatingView, RequestEntity, RequestEntityFilterViewModel, RequestFilterViewModel, RequestResultFilterViewModel, RequestResultView, RequestType, RequestTypeFilterViewModel, RequestView, ResourceKey, ResourceKeyFilterViewModel, ResourceLanguage, ResourceLanguageFilterViewModel, ResourceTranslationFilterViewModel, ResourceTranslationView, RoleFilterViewModel, RolePermission, RolePermissionFilterViewModel, RoleView, SubcompanyFilterViewModel, SupplierCompany, SupplierCompanyFilterViewModel, SupplierFilterViewModel, SupplierView, SynchronizedCompanyView, SynchronizedCompanyViewFilterViewModel, TvaRateFilterViewModel, TvaRateView, UploadFileResult, UserAccount, UserAccountCompanyFilterViewModel, UserAccountCompanyView, UserAccountFilterViewModel, UserAccountLoginFilterViewModel, UserAccountLoginView, UserAccountNews, UserAccountNewsFilterViewModel, UserAccountRoleFilterViewModel, UserAccountRoleView, UserAccountToken, UserAccountTokenFilterViewModel, UserFavorite, UserFavoriteFilterViewModel, UserGroup, UserGroupDefinitionFilterViewModel, UserGroupDefinitionView, UserGroupFilterViewModel, UserHistory, UserHistoryFilterViewModel, UserPermissionView, UserPermissionViewFilterViewModel, UserProfileViewModel, UserSession, UserSessionFilterViewModel, Version, VersionFilterViewModel } from "@dflat-core/web/system-model";
11
- import * as i112 from "@dflat-core/web/core-model";
12
- import { ApiError, ColumnDescriptor, EntityViewModel, EntityViewModelWithFields, FilterDescriptor, HistoryItem, IExternalLoginProvider, IUserCredential, ImageFormats, SaveResult, Section, SpecificSection, User } from "@dflat-core/web/core-model";
13
- import * as i117 from "@dflat-core/web/system-data";
14
- import { AccountDataService, CompanyDataService, ConfigDataService, CountryDataService, CurrencyDataService, CustomFieldGroupEntityDataService, CustomFieldGroupItemDataService, CustomFieldOptionsDataService, ExchangeRateDataService, FilesDataService, MetaEntityFieldDataService, PresentationProfileDataService, PresentationProfileItemDataService, SupplierDataService, TvaRateDataService, UserAccountCompanyDataService, UserAccountDataService, UserAccountRoleDataService, UserGroupDefinitionDataService } from "@dflat-core/web/system-data";
7
+ import * as i114 from "@dflat-core/web/core-ux";
8
+ import { Action, ActionService, ActionsComponent, AlertService, ApplicationService, BaseComponent, BaseEditorComponent, BaseEntityEditor, DefaultLayoutComponent, DynamicFormComponent, EntityFacade, EntitySection, EntitySectionProvider, EntitySelector, FacadeModalService, IActionComponent, IIsCancel, IPpService, ISectionConfig, ImageService, LayoutPreferences, ModalService, NewEditorComponent, OrderableModalService, SelectorMapperServiceBase, ValidationService } from "@dflat-core/web/core-ux";
9
+ import * as i117 from "@dflat-core/web/system-model";
10
+ import { ActivationResults, AddressView, AddressViewFilterViewModel, ChangePasswordViewModel, CompanyFilterViewModel, CompanyView, Country, CountryFilterViewModel, Currency, CurrencyFilterViewModel, CustomFieldFilterViewModel, CustomFieldGroup, CustomFieldGroupEntityFilterViewModel, CustomFieldGroupEntityView, CustomFieldGroupFilterViewModel, CustomFieldGroupItemFilterViewModel, CustomFieldGroupItemView, CustomFieldOptionsFilterViewModel, CustomFieldOptionsView, CustomFieldValueFilterViewModel, CustomFieldValueView, CustomFieldView, DayInfo, DayInfoFilterViewModel, EntityFiles, EntityFilesFilterViewModel, ErrorCategory, ErrorCategoryFilterViewModel, ExchangeRateFilterViewModel, ExchangeRateView, FieldFilterTypes, FileDescriptor, FileTypes, FilesFilterViewModel, FilesView, FormEditorContext, ImageUploadEvent, Keyword, KeywordFilterViewModel, MetaEntity, MetaEntityField, MetaEntityFieldFilterViewModel, MetaEntityFilterViewModel, MetaEntityFormFieldFilterViewModel, MetaEntityFormFieldView, MetaEntityFormFilterViewModel, MetaEntityFormSectionFilterViewModel, MetaEntityFormSectionView, MetaEntityFormView, MetaEntityKeyword, MetaEntityKeywordFilterViewModel, MetaEntityRelation, MetaEntityRelationDefinition, MetaEntityRelationDefinitionFilterViewModel, MetaEntityRelationFilterViewModel, MetaEntityTranslation, MetaEntityTranslationFilterViewModel, MetaEntityViewField, MetaEntityViewFieldFilterViewModel, News, NewsFilterViewModel, ParameterSection, ParameterSectionFilterViewModel, ParameterValueView, ParameterValueViewFilterViewModel, ParameterView, ParameterViewFilterViewModel, Permission, PermissionFilterViewModel, PermissionView, PresentationContext, PresentationProfile, PresentationProfileFilterViewModel, PresentationProfileItem, PresentationProfileItemFilterViewModel, PresentationProfileItemView, PresentationProfilePurposes, PresentationProfileView, RatingFilterViewModel, RatingSummary, RatingSummaryFilterViewModel, RatingView, RequestEntity, RequestEntityFilterViewModel, RequestFilterViewModel, RequestResultFilterViewModel, RequestResultView, RequestType, RequestTypeFilterViewModel, RequestView, ResourceKey, ResourceKeyFilterViewModel, ResourceLanguage, ResourceLanguageFilterViewModel, ResourceTranslationFilterViewModel, ResourceTranslationView, RoleFilterViewModel, RolePermission, RolePermissionFilterViewModel, RoleView, SubcompanyFilterViewModel, SupplierCompany, SupplierCompanyFilterViewModel, SupplierFilterViewModel, SupplierView, SynchronizedCompanyView, SynchronizedCompanyViewFilterViewModel, TvaRateFilterViewModel, TvaRateView, UploadFileResult, UserAccount, UserAccountCompanyFilterViewModel, UserAccountCompanyView, UserAccountFilterViewModel, UserAccountLoginFilterViewModel, UserAccountLoginView, UserAccountNews, UserAccountNewsFilterViewModel, UserAccountRoleFilterViewModel, UserAccountRoleView, UserAccountToken, UserAccountTokenFilterViewModel, UserFavorite, UserFavoriteFilterViewModel, UserGroup, UserGroupDefinitionFilterViewModel, UserGroupDefinitionView, UserGroupFilterViewModel, UserHistory, UserHistoryFilterViewModel, UserPermissionView, UserPermissionViewFilterViewModel, UserProfileViewModel, UserSession, UserSessionFilterViewModel, Version, VersionFilterViewModel } from "@dflat-core/web/system-model";
11
+ import * as i113 from "@dflat-core/web/core-model";
12
+ import { ApiError, ColumnDescriptor, EntityViewModel, EntityViewModelWithFields, FieldDescriptor, FilterDescriptor, HistoryItem, IExternalLoginProvider, IUserCredential, ImageFormats, PropertyEditorEvent, SaveResult, Section, SpecificSection, TreeItem, User } from "@dflat-core/web/core-model";
13
+ import * as i108 from "ngx-bootstrap/modal";
14
+ import { BsModalService } from "ngx-bootstrap/modal";
15
15
  import { Observable, Subject, Subscription } from "rxjs";
16
+ import * as i118 from "@dflat-core/web/system-data";
17
+ import { AccountDataService, CompanyDataService, ConfigDataService, CountryDataService, CurrencyDataService, CustomFieldGroupEntityDataService, CustomFieldGroupItemDataService, CustomFieldOptionsDataService, ExchangeRateDataService, FilesDataService, MetaEntityDataService, MetaEntityFieldDataService, MetaEntityFormDataService, PermissionDataService, PresentationProfileDataService, PresentationProfileItemDataService, SupplierDataService, TvaRateDataService, UserAccountCompanyDataService, UserAccountDataService, UserAccountRoleDataService, UserGroupDefinitionDataService } from "@dflat-core/web/system-data";
16
18
  import * as i14 from "ngx-toastr";
17
19
  import { ToastrService } from "ngx-toastr";
18
20
  import * as i9 from "@dflat-core/web/core-services";
19
21
  import { AuthInterceptor, AuthService, BreadcrumbService, ExternalLoginService, HubService, IExternalLoginResult, LocalStoreManager, MenuItem, MenuService, PermissionService, UserService } from "@dflat-core/web/core-services";
20
22
  import * as i2 from "@angular/platform-browser";
21
23
  import { Title } from "@angular/platform-browser";
22
- import * as i111 from "@angular/forms";
23
- import { NgForm, UntypedFormBuilder, UntypedFormGroup } from "@angular/forms";
24
- import * as i123 from "@samotics/ngx-treeview";
24
+ import * as i112 from "@angular/forms";
25
+ import { FormControl, FormGroup, NgForm, UntypedFormBuilder, UntypedFormGroup } from "@angular/forms";
26
+ import * as i124 from "@samotics/ngx-treeview";
25
27
  import { TreeviewConfig, TreeviewItem } from "@samotics/ngx-treeview";
26
- import * as i110 from "@kolkov/angular-editor";
28
+ import * as i111 from "@kolkov/angular-editor";
27
29
  import { AngularEditorConfig } from "@kolkov/angular-editor";
30
+ import * as i109 from "@angular/cdk/drag-drop";
31
+ import { CdkDragDrop } from "@angular/cdk/drag-drop";
28
32
  import { HttpErrorResponse, HttpEvent } from "@angular/common/http";
29
33
  import { NgxImageCompressService } from "ngx-image-compress";
30
- import * as i108 from "@angular/cdk/drag-drop";
31
- import { CdkDragDrop } from "@angular/cdk/drag-drop";
32
- import * as i107 from "ngx-bootstrap/modal";
33
- import { BsModalService } from "ngx-bootstrap/modal";
34
- import * as i109 from "@angular/common";
35
- import * as i115 from "@dflat-core/web/core-data";
36
- import * as i118 from "@dflat-core/web/system-root";
37
- import * as i119 from "@ng-select/ng-select";
38
- import * as i120 from "ng-recaptcha-2";
39
- import * as i121 from "ng-http-loader";
40
- import * as i122 from "ngx-dropzone";
34
+ import * as i110 from "@angular/common";
35
+ import * as i116 from "@dflat-core/web/core-data";
36
+ import * as i119 from "@dflat-core/web/system-root";
37
+ import * as i120 from "@ng-select/ng-select";
38
+ import * as i121 from "ng-recaptcha-2";
39
+ import * as i122 from "ng-http-loader";
40
+ import * as i123 from "ngx-dropzone";
41
41
  import * as i3 from "@angular/platform-browser/animations";
42
42
  import * as i5 from "@swimlane/ngx-datatable";
43
43
  import * as i15 from "ngx-bootstrap/accordion";
@@ -94,16 +94,77 @@ export declare abstract class BaseCompanyComponent extends BaseComponent<Company
94
94
  static ɵfac: i0.ɵɵFactoryDeclaration<BaseCompanyComponent, never>;
95
95
  static ɵdir: i0.ɵɵDirectiveDeclaration<BaseCompanyComponent, never, never, {}, {}, never, never, true, never>;
96
96
  }
97
+ export declare const PP_GRP_STANDARD = "standard";
98
+ export declare const PP_GRP_CUSTOM = "custom";
99
+ export interface PpConfig {
100
+ metaEntityKey: string;
101
+ title?: string;
102
+ purpose?: PresentationProfilePurposes;
103
+ embedded?: boolean;
104
+ supplierId?: number | null;
105
+ roleId?: number | null;
106
+ }
107
+ export interface PpGroup {
108
+ id: string;
109
+ label: string;
110
+ isCustom: boolean;
111
+ }
112
+ export interface PpResult {
113
+ purpose: PresentationProfilePurposes;
114
+ profileId: number | null;
115
+ columns: PresentationProfileItem[];
116
+ }
117
+ export interface PpExportSplit {
118
+ columns: string[];
119
+ customFieldIds: number[];
120
+ }
121
+ export declare class PresentationProfileTransformer {
122
+ /**
123
+ * Build the display groups from a catalog: a "standard" group + one group per custom-field
124
+ * group (by GroupId/GroupName provided by the backend), falling back to a single "Attributs".
125
+ */
126
+ static buildGroups(catalog: PresentationProfileItem[]): PpGroup[];
127
+ /**
128
+ * Converts resolved PresentationProfileItem[] into ColumnDescriptor[] for the data grid.
129
+ * Standard columns are matched from the backend descriptors by Property (ColumnKey);
130
+ * custom-field columns get a synthetic text descriptor.
131
+ * item.Label is the custom override saved with the profile; it is null when the column keeps its
132
+ * natural label, which is then the backend descriptor's Name (the column key only as a last resort).
133
+ */
134
+ static buildDescriptors(items: PresentationProfileItem[], backendDescriptors: ColumnDescriptor[]): ColumnDescriptor[];
135
+ /** User profile selection → unified PresentationContext for savePresentationProfile (Profile carries Items). */
136
+ static toUserPreferenceContext(items: PresentationProfileItem[], key: string, purpose: number, label?: string | null, profile?: PresentationProfile | null): PresentationContext;
137
+ /** Admin selection → unified PresentationContext for savePresentationProfile (Profile carries Items). */
138
+ static toAdminConfigContext(items: PresentationProfileItem[], profile: PresentationProfile): PresentationContext;
139
+ /** Normalises selected columns into persistable items (order = position). */
140
+ private static toSaveItems;
141
+ /** Split selected items into standard column keys and custom-field ids (for export payloads). */
142
+ static splitForExport(items: PresentationProfileItem[]): PpExportSplit;
143
+ }
144
+ export declare class PresentationProfileActionService {
145
+ private readonly modalService;
146
+ constructor(modalService: BsModalService);
147
+ private readonly selectionSubject;
148
+ private readonly cancelledSubject;
149
+ readonly selectionConfirmed$: Observable<PpResult>;
150
+ readonly selectionCancelled$: Observable<void>;
151
+ open(config: PpConfig): void;
152
+ splitForExport(columns: PpResult['columns']): PpExportSplit;
153
+ static ɵfac: i0.ɵɵFactoryDeclaration<PresentationProfileActionService, never>;
154
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
155
+ }
97
156
  declare namespace company_component_d_exports {
98
157
  export { CompanyComponent };
99
158
  }
100
159
  export declare class CompanyComponent extends BaseCompanyComponent {
101
160
  protected route: ActivatedRoute;
102
161
  private systemSection;
162
+ private profileSelector;
103
163
  ADDRESS_SECTION: string;
104
164
  SUBCOMPANY_SECTION: string;
105
- constructor(app: ApplicationService, route: ActivatedRoute, systemSection: SystemSectionService);
165
+ constructor(app: ApplicationService, route: ActivatedRoute, systemSection: SystemSectionService, profileSelector: PresentationProfileActionService);
106
166
  ngOnInit(): void;
167
+ selectColumns(): void;
107
168
  static ɵfac: i0.ɵɵFactoryDeclaration<CompanyComponent, never>;
108
169
  static ɵcmp: i0.ɵɵComponentDeclaration<CompanyComponent, "msw-company", never, {}, {}, never, ["[actionsPanelContent]", "*"], false, never>;
109
170
  }
@@ -619,8 +680,13 @@ declare namespace metaentityform_component_d_exports {
619
680
  /**
620
681
  * Recherche et édition des MetaEntityFormView : code spécifique du composant (la partie générée
621
682
  * est BaseMetaEntityFormComponent). Créé par codegenerator (dflat -g ts), qui ne le modifie plus.
683
+ * L'éditeur de formulaire (FormEditorComponent) remplace le formulaire d'édition standard : onglet
684
+ * « Propriétés » et onglet « Définition » (sections et champs), enregistrés par l'action
685
+ * « Enregistrer » de l'écran.
622
686
  */
623
687
  export declare class MetaEntityFormComponent extends BaseMetaEntityFormComponent {
688
+ protected route: ActivatedRoute;
689
+ constructor(app: ApplicationService, route: ActivatedRoute);
624
690
  static ɵfac: i0.ɵɵFactoryDeclaration<MetaEntityFormComponent, never>;
625
691
  static ɵcmp: i0.ɵɵComponentDeclaration<MetaEntityFormComponent, "msw-meta-entity-form-search", never, {}, {}, never, ["[actionsPanelContent]", "*"], false, never>;
626
692
  }
@@ -2449,27 +2515,137 @@ export declare class RequestResultsComponent extends BaseComponent<RequestResult
2449
2515
  static ɵfac: i0.ɵɵFactoryDeclaration<RequestResultsComponent, never>;
2450
2516
  static ɵcmp: i0.ɵɵComponentDeclaration<RequestResultsComponent, "alg-request-results", never, {}, {}, never, ["[actionsPanelContent]", "*"], false, never>;
2451
2517
  }
2518
+ /** Ligne des tableaux de permissions d'un rôle : une entité et ses permissions. */
2519
+ interface RolePermissionRow {
2520
+ /** Identifiant de la permission de l'entité, parente de celles de la ligne. */
2521
+ id: number;
2522
+ /** Libellé du groupe de la ligne (module de l'entité). */
2523
+ group: string;
2524
+ /** Libellé de l'entité. */
2525
+ label: string;
2526
+ /** Libellés des permissions de l'entité, dans l'ordre d'affichage : son jeu de droits. */
2527
+ columns: string[];
2528
+ /** Permissions de l'entité, alignées sur ses colonnes. */
2529
+ cells: TreeItem<Permission>[];
2530
+ /** Indique si la ligne est affichée : le rôle lui attribue des droits, ou elle vient d'être ajoutée. */
2531
+ shown: boolean;
2532
+ }
2533
+ /** Tableau de permissions d'un rôle : les entités affichées qui ont le même jeu de droits. */
2534
+ interface RolePermissionTable {
2535
+ /** Libellés des colonnes : le jeu de droits commun aux lignes. */
2536
+ columns: string[];
2537
+ /** Lignes du tableau. */
2538
+ rows: RolePermissionRow[];
2539
+ }
2540
+ /**
2541
+ * Permissions d'un rôle, construites depuis l'arbre des permissions : une ligne par entité, une colonne
2542
+ * par permission (Afficher, Ajouter, Modifier, Supprimer, Exporter, puis les autres). Seules les entités
2543
+ * auxquelles le rôle attribue des droits sont affichées, les autres s'ajoutent à la demande ; les lignes
2544
+ * affichées sont réparties en un tableau par jeu de droits.
2545
+ * Toute feuille de l'arbre a une case : une permission sans case serait retirée du rôle à l'enregistrement.
2546
+ */
2547
+ declare class RolePermissionGrid {
2548
+ /** Colonnes placées en tête, dans cet ordre, quand elles existent. */
2549
+ static readonly standardColumns: string[];
2550
+ /** Colonne d'une permission sans enfant, qui n'est rattachée à aucune entité. */
2551
+ static readonly accessColumn: string;
2552
+ /** Libellé d'une permission sans description. */
2553
+ static readonly emptyLabel: string;
2554
+ /** Lignes de toutes les entités, affichées ou non, dans l'ordre de l'arbre. */
2555
+ readonly rows: RolePermissionRow[];
2556
+ /**
2557
+ * @param items Racines de l'arbre des permissions (modules).
2558
+ * @param selection Identifiants des permissions cochées, à la place de l'état de l'arbre : des
2559
+ * permissions modifiées et pas encore enregistrées.
2560
+ */
2561
+ constructor(items: TreeItem<Permission>[], selection?: number[]);
2562
+ /** Indique si le nœud n'a pas d'enfant. */
2563
+ private static isLeaf;
2564
+ /** Libellé affiché d'un nœud. */
2565
+ private static getLabel;
2566
+ /**
2567
+ * Lignes affichées, réparties en un tableau par jeu de droits : les jeux les plus courts d'abord,
2568
+ * puis dans l'ordre de l'arbre.
2569
+ */
2570
+ getTables(): RolePermissionTable[];
2571
+ /** Lignes non affichées : les entités que l'on peut ajouter. */
2572
+ getHiddenRows(): RolePermissionRow[];
2573
+ /**
2574
+ * Codes de permission (module.entité, en minuscules) des lignes non affichées.
2575
+ * @param codes Codes des permissions, par identifiant.
2576
+ */
2577
+ getHiddenCodes(codes: Map<number, string>): string[];
2578
+ /**
2579
+ * Lignes non affichées d'une méta entité : celles dont la permission a pour code module.entité,
2580
+ * sans tenir compte de la casse.
2581
+ * @param codes Codes des permissions, par identifiant.
2582
+ * @param module Module de la méta entité.
2583
+ * @param entityName Nom de la méta entité.
2584
+ */
2585
+ findHiddenRows(codes: Map<number, string>, module: string, entityName: string): RolePermissionRow[];
2586
+ /** Affiche des lignes, sans rien cocher. */
2587
+ show(rows: RolePermissionRow[]): void;
2588
+ /** Retire une ligne de l'affichage et décoche ses permissions. */
2589
+ hide(row: RolePermissionRow): void;
2590
+ /** Identifiants des permissions cochées. */
2591
+ getSelection(): number[];
2592
+ /** Indique si toutes les permissions des lignes sont cochées, pour une colonne ou pour toutes. */
2593
+ isAllChecked(rows: RolePermissionRow[], column?: number): boolean;
2594
+ /** Indique si une partie seulement des permissions des lignes est cochée, pour une colonne ou pour toutes. */
2595
+ isPartiallyChecked(rows: RolePermissionRow[], column?: number): boolean;
2596
+ /** Coche ou décoche les permissions des lignes, pour une colonne ou pour toutes. */
2597
+ setChecked(rows: RolePermissionRow[], checked: boolean, column?: number): void;
2598
+ /** Permissions des lignes, pour une colonne ou pour toutes. */
2599
+ private static getCells;
2600
+ }
2452
2601
  declare namespace role_editor_component_d_exports {
2453
2602
  export { RoleEditorComponent };
2454
2603
  }
2455
- export declare class RoleEditorComponent extends BaseEditorComponent<RoleView> {
2456
- getEntityKey(): string;
2457
- getTitle(withId: boolean): string;
2458
- getPath(withId: boolean): string;
2459
- showValidationErrors: boolean;
2460
- field: FilterDescriptor;
2461
- fields: FilterDescriptor[];
2462
- roleFieldDescriptor: FilterDescriptor;
2463
- uniqueId: string;
2464
- form: any;
2465
- constructor(app: ApplicationService, route: ActivatedRoute);
2466
- onSave(): void;
2467
- OnLoadingComplete(entity: EntityViewModelWithFields<RoleView>): void;
2468
- onSelectChange($event: any): void;
2469
- onFilterChange(value: string): void;
2470
- items: TreeviewItem[];
2471
- values: number[];
2472
- config: TreeviewConfig;
2604
+ /**
2605
+ * Éditeur spécifique des rôles, affiché par l'écran des rôles (RoleComponent) à la place du
2606
+ * formulaire standard : onglet « Propriétés » (champs du formulaire, rôle parent par le sélecteur de
2607
+ * rôles) et onglet « Définition » (permissions en tableaux, un par jeu de droits). L'enregistrement
2608
+ * passe par l'action « Enregistrer » de l'écran.
2609
+ */
2610
+ export declare class RoleEditorComponent extends BaseEntityEditor<RoleView> implements OnInit {
2611
+ private permissionDataService;
2612
+ private metaEntityDataService;
2613
+ /** Onglet affiché : 0 pour « Propriétés », 1 pour « Définition ». */
2614
+ activeTab: number;
2615
+ /** Rôle dont les permissions sont chargées : les onglets ne s'affichent que pour lui. */
2616
+ loadedEntity: RoleView;
2617
+ /** Champ « Rôle parent » : nom du rôle en lecture seule, choix par le sélecteur de rôles. */
2618
+ parentField: FieldDescriptor;
2619
+ /** Permissions du rôle : entités en lignes, permissions en colonnes. */
2620
+ grid: RolePermissionGrid;
2621
+ /** Tableaux affichés : un par jeu de droits. */
2622
+ tables: RolePermissionTable[];
2623
+ /** Codes des permissions (module.entité), par identifiant : ils relient les lignes aux méta entités. */
2624
+ private permissionCodes;
2625
+ /** Clés des méta entités (EntityKey), par code de permission (module.entité, en minuscules). */
2626
+ private metaEntityKeys;
2627
+ /** Rôles dont il faut charger les permissions : seul le dernier demandé est gardé. */
2628
+ private load$;
2629
+ constructor(app: ApplicationService, validationService: ValidationService, permissionDataService: PermissionDataService, metaEntityDataService: MetaEntityDataService);
2630
+ ngOnInit(): void;
2631
+ /** Champs du formulaire des rôles : « Libellé » pour le nom, sélecteur de rôles pour le rôle parent. */
2632
+ protected alterSections(sections: Section[]): Section[];
2633
+ /** Charge les permissions du rôle sélectionné ; une ligne réémise sans changement garde son affichage. */
2634
+ protected onEntityChanged(entity: RoleView): void;
2635
+ /** Le nom du rôle parent suit le rôle choisi, pour la colonne de la grille. */
2636
+ onPropertyChanged(event: PropertyEditorEvent): void;
2637
+ /** Retire le rôle parent. */
2638
+ onClearParent(): void;
2639
+ /** Publie les permissions cochées : le rôle devient modifié, l'action « Enregistrer » les envoie. */
2640
+ onPermissionsChanged(): void;
2641
+ /** Charge les codes des permissions et les clés des méta entités, qui relient une ligne à sa méta entité. */
2642
+ private loadPermissionCodes;
2643
+ /** Ouvre le sélecteur de méta entités, limité aux entités absentes des tableaux, et ajoute celles choisies. */
2644
+ onAddRows(): void;
2645
+ /** Retire une entité des tableaux : le rôle ne lui attribue plus aucun droit. */
2646
+ onRemoveRow(row: RolePermissionRow): void;
2647
+ /** Recalcule les tableaux affichés. */
2648
+ private refreshTables;
2473
2649
  static ɵfac: i0.ɵɵFactoryDeclaration<RoleEditorComponent, never>;
2474
2650
  static ɵcmp: i0.ɵɵComponentDeclaration<RoleEditorComponent, "alg-role-editor", never, {}, {}, never, never, false, never>;
2475
2651
  }
@@ -2655,6 +2831,234 @@ export declare class MetaEntityFieldEditorComponent extends NewEditorComponent<M
2655
2831
  static ɵfac: i0.ɵɵFactoryDeclaration<MetaEntityFieldEditorComponent, never>;
2656
2832
  static ɵcmp: i0.ɵɵComponentDeclaration<MetaEntityFieldEditorComponent, "alg-meta-entity-field-editor", never, {}, {}, never, never, false, never>;
2657
2833
  }
2834
+ /** Section éditée : IsHidden (section masquée) vient du correctif System 01.07.02.57. */
2835
+ export type FormEditorSection = MetaEntityFormSectionView & {
2836
+ IsHidden?: boolean;
2837
+ };
2838
+ /** Nature d'une section de formulaire, déduite de ses indicateurs. */
2839
+ export declare enum FormEditorSectionKinds {
2840
+ /** Section de champs. */
2841
+ Fields = "fields",
2842
+ /** Onglet d'entités liées (relation 1..*) : DataMetaEntityId et FilterPropertyName. */
2843
+ Related = "related",
2844
+ /** Champs personnalisés (attributs). */
2845
+ CustomFields = "customfields",
2846
+ /** Fichiers de l'enregistrement. */
2847
+ Files = "files",
2848
+ /** Historique de l'enregistrement. */
2849
+ TrackRecords = "trackrecords"
2850
+ }
2851
+ /** Natures de section proposées par l'éditeur, avec leur libellé. */
2852
+ export declare const FormEditorSectionKindOptions: {
2853
+ value: FormEditorSectionKinds;
2854
+ label: string;
2855
+ }[];
2856
+ /**
2857
+ * État de l'éditeur de formulaire de l'administrateur, sans dépendance à Angular : sections et
2858
+ * champs du formulaire dans l'ordre d'affichage, sélection courante, ajouts, suppressions et
2859
+ * déplacements. FormEditorComponent l'affiche et publie toContext().Sections à chaque
2860
+ * modification ; à l'enregistrement, l'ordre des listes remplace les OrderNumber.
2861
+ */
2862
+ export declare class FormEditorModel {
2863
+ form: MetaEntityFormView | null;
2864
+ sections: FormEditorSection[];
2865
+ catalog: MetaEntityFormFieldView[];
2866
+ entities: MetaEntity[];
2867
+ selectedSection: FormEditorSection | null;
2868
+ selectedField: MetaEntityFormFieldView | null;
2869
+ /** Vrai dès qu'une modification n'est pas enregistrée. */
2870
+ isDirty: boolean;
2871
+ /** Appelé à chaque modification (l'éditeur publie alors la définition vers l'écran). */
2872
+ onChange?: () => void;
2873
+ /** Charge le formulaire lu par MetaEntityForm/GetFormEditor et sélectionne sa première section. */
2874
+ load(context: FormEditorContext | null | undefined): void;
2875
+ /** Signale une modification faite directement sur une section ou un champ (saisie). */
2876
+ touch(): void;
2877
+ kindOf(section: FormEditorSection): FormEditorSectionKinds;
2878
+ /** Vrai pour une section qui porte des champs (les autres natures n'en affichent pas). */
2879
+ hasFields(section: FormEditorSection | null): boolean;
2880
+ /**
2881
+ * Change la nature d'une section. Une section d'entités liées reçoit la première table en
2882
+ * attendant le choix de l'administrateur ; ses champs sont conservés tant qu'elle n'est pas
2883
+ * enregistrée sous une autre nature que « Champs » (le formulaire ne les affiche plus).
2884
+ */
2885
+ setKind(section: FormEditorSection, kind: FormEditorSectionKinds): void;
2886
+ /**
2887
+ * Table listée par une section d'entités liées. Le critère de filtre proposé est la clé
2888
+ * étrangère vers l'entité du formulaire (<Entité>Id), comme dans les scripts générés.
2889
+ */
2890
+ setDataEntity(section: FormEditorSection, metaEntityId: number | null | undefined): void;
2891
+ /** Ajoute une section de champs à la fin du formulaire, avec un titre libre, et la sélectionne. */
2892
+ addSection(): FormEditorSection;
2893
+ /** Retire une section et ses champs (supprimés en base à l'enregistrement). */
2894
+ removeSection(section: FormEditorSection): void;
2895
+ /** Déplace une section de la position previousIndex à la position currentIndex. */
2896
+ moveSection(previousIndex: number, currentIndex: number): void;
2897
+ selectSection(section: FormEditorSection | null): void;
2898
+ /** Titres en double (sans tenir compte de la casse) : une section est désignée par son titre. */
2899
+ isDuplicateName(section: FormEditorSection): boolean;
2900
+ private uniqueSectionName;
2901
+ /** Tous les champs du formulaire, section par section. */
2902
+ get fields(): MetaEntityFormFieldView[];
2903
+ /** Colonnes de l'entité qui ne sont dans aucune section, filtrées par nom ou libellé. */
2904
+ availableColumns(search?: string): MetaEntityFormFieldView[];
2905
+ /** Ajoute une colonne du catalogue à la fin de la section sélectionnée et sélectionne le champ. */
2906
+ addField(column: MetaEntityFormFieldView): MetaEntityFormFieldView | null;
2907
+ /**
2908
+ * Ajoute un champ par le nom de sa propriété : la colonne du catalogue de ce nom (libellé et
2909
+ * type déduits), sinon un champ texte à paramétrer (propriété calculée du modèle, ex.
2910
+ * NewPassword), avec le libellé donné.
2911
+ */
2912
+ addFreeField(propertyName: string, label?: string): MetaEntityFormFieldView | null;
2913
+ /** Retire un champ de sa section ; les champs qu'il conditionnait perdent leur condition. */
2914
+ removeField(field: MetaEntityFormFieldView): void;
2915
+ /** Déplace un champ dans sa section. */
2916
+ moveField(section: FormEditorSection, previousIndex: number, currentIndex: number): void;
2917
+ /** Déplace un champ à la fin d'une autre section de champs. */
2918
+ moveFieldToSection(field: MetaEntityFormFieldView, target: FormEditorSection): boolean;
2919
+ selectField(field: MetaEntityFormFieldView | null): void;
2920
+ sectionOf(field: MetaEntityFormFieldView): FormEditorSection | null;
2921
+ private findField;
2922
+ /** Propriété du champ conditionnant, ou null. */
2923
+ conditioningOf(field: MetaEntityFormFieldView): string | null;
2924
+ /** Champs qui peuvent conditionner field : tous les autres champs du formulaire. */
2925
+ conditioningCandidates(field: MetaEntityFormFieldView): MetaEntityFormFieldView[];
2926
+ /**
2927
+ * Relie field à son champ conditionnant, désigné par sa propriété (le serveur retrouve
2928
+ * l'identifiant, même pour un champ ajouté dans la même session), ou retire la condition.
2929
+ */
2930
+ setConditioning(field: MetaEntityFormFieldView, propertyName: string | null): void;
2931
+ /** Message d'erreur si le formulaire ne peut pas être enregistré, sinon null (mêmes règles que le serveur). */
2932
+ validate(): string | null;
2933
+ /**
2934
+ * Définition du formulaire, sections et champs dans l'ordre d'affichage : publiée dans
2935
+ * MetaEntityFormView.Sections et enregistrée avec le formulaire (ou envoyée à
2936
+ * MetaEntityForm/SaveFormEditor).
2937
+ */
2938
+ toContext(): FormEditorContext;
2939
+ private move;
2940
+ }
2941
+ /**
2942
+ * Volet de propriétés de l'éditeur de formulaire, affiché avec les composants des formulaires
2943
+ * (alg-field) : sections de champs standard et leur FormGroup, pour éditer un objet qui n'est pas
2944
+ * l'entité de l'écran (section ou champ du formulaire édité). Les propriétés portent un préfixe :
2945
+ * alg-field donne à ses éléments l'identifiant de la propriété, qui doit rester unique dans la page
2946
+ * (l'onglet « Propriétés » affiche déjà Label, Description...).
2947
+ */
2948
+ declare class FormEditorPanel {
2949
+ private readonly prefix;
2950
+ /** Sections de champs du volet. */
2951
+ readonly sections: Section[];
2952
+ /** Formulaire des champs du volet. */
2953
+ readonly form: FormGroup<Record<string, FormControl<any>>>;
2954
+ /**
2955
+ * @param prefix Préfixe des propriétés du volet.
2956
+ * @param groups Sections du volet : titre et champs, désignés par la propriété de l'objet édité.
2957
+ */
2958
+ constructor(prefix: string, groups: {
2959
+ name: string;
2960
+ fields: FieldDescriptor[];
2961
+ }[]);
2962
+ /** Champs du volet, à plat. */
2963
+ get fields(): FieldDescriptor[];
2964
+ /** Sections qui ont au moins un champ affiché. */
2965
+ get visibleSections(): Section[];
2966
+ /** Champ du volet qui édite la propriété property de l'objet. */
2967
+ field(property: string): FieldDescriptor;
2968
+ /** Propriété de l'objet édité par le champ. */
2969
+ propertyOf(field: FieldDescriptor): string;
2970
+ /** Valeur saisie dans le champ. */
2971
+ valueOf(field: FieldDescriptor): any;
2972
+ /** Affiche ou masque le champ de la propriété. */
2973
+ show(property: string, visible: boolean): void;
2974
+ /** Recopie les valeurs (par propriété de l'objet) dans le formulaire, sans émettre de modification. */
2975
+ patch(values: Record<string, any>): void;
2976
+ /** Recopie la valeur d'une seule propriété, sans émettre de modification. */
2977
+ set(property: string, value: any): void;
2978
+ }
2979
+ declare namespace form_editor_component_d_exports {
2980
+ export { FormEditorComponent };
2981
+ }
2982
+ /**
2983
+ * Éditeur de formulaire de l'administrateur, affiché par l'écran Formulaires (MetaEntityFormComponent)
2984
+ * à la place du formulaire d'édition standard : onglet « Propriétés » (champs du formulaire, avec les
2985
+ * composants des formulaires) et onglet « Définition » (sections ajoutées, supprimées, réordonnées ;
2986
+ * champs ajoutés par le sélecteur des colonnes de l'entité, supprimés, déplacés et paramétrés). Les
2987
+ * propriétés d'une section et les paramètres d'un champ s'affichent comme un formulaire standard
2988
+ * (FormEditorPanel, alg-field). L'état édité est tenu par FormEditorModel ; chaque modification est
2989
+ * publiée dans le formulaire sélectionné (MetaEntityFormView.Sections) et l'action « Enregistrer »
2990
+ * de l'écran envoie le tout (MetaEntityFormController.ProcessSave).
2991
+ */
2992
+ export declare class FormEditorComponent extends BaseEntityEditor<MetaEntityFormView> implements OnInit {
2993
+ private readonly data;
2994
+ readonly model: FormEditorModel;
2995
+ readonly Kinds: typeof FormEditorSectionKinds;
2996
+ readonly fieldTypeOptions: {
2997
+ value: FieldFilterTypes;
2998
+ label: string;
2999
+ }[];
3000
+ /** Propriétés de la section sélectionnée, affichées comme un formulaire standard. */
3001
+ readonly sectionPanel: FormEditorPanel;
3002
+ /** Paramètres du champ sélectionné, affichés comme un formulaire standard. */
3003
+ readonly fieldPanel: FormEditorPanel;
3004
+ /** Onglet affiché : 0 Propriétés, 1 Définition. */
3005
+ activeTab: number;
3006
+ /** Formulaire dont la définition est chargée dans le modèle (undefined pendant le chargement). */
3007
+ loadedEntity: MetaEntityFormView;
3008
+ isLoading: boolean;
3009
+ message: string;
3010
+ freeProperty: string;
3011
+ /** Identifiant du formulaire dont la définition est chargée. */
3012
+ private loadedId;
3013
+ /** Formulaires dont il faut charger la définition : seul le dernier demandé est gardé. */
3014
+ private load$;
3015
+ constructor(app: ApplicationService, validationService: ValidationService, data: MetaEntityFormDataService);
3016
+ ngOnInit(): void;
3017
+ /**
3018
+ * Charge la définition du formulaire sélectionné. Une ligne réémise pendant l'édition (mêmes
3019
+ * modifications, pas encore enregistrées) garde la définition en cours ; après l'enregistrement,
3020
+ * elle est relue (identifiants des sections et des champs créés).
3021
+ */
3022
+ protected onEntityChanged(entity: MetaEntityFormView): void;
3023
+ /** Publie la définition éditée : l'action « Enregistrer » de l'écran l'envoie avec le formulaire. */
3024
+ private publishDefinition;
3025
+ /** Vrai pour un formulaire pas encore enregistré : sa définition s'édite après sa création. */
3026
+ get isNew(): boolean;
3027
+ /** Ce qui empêcherait d'enregistrer la définition (titre en double, critère manquant...), sinon null. */
3028
+ get definitionError(): string | null;
3029
+ get selectedSection(): FormEditorSection | null;
3030
+ get selectedField(): MetaEntityFormFieldView | null;
3031
+ selectSection(section: FormEditorSection): void;
3032
+ addSection(): void;
3033
+ onSectionDrop(event: CdkDragDrop<FormEditorSection[]>): void;
3034
+ removeSection(section: FormEditorSection, event: Event): void;
3035
+ kindLabel(section: FormEditorSection): string;
3036
+ /** Applique à la section sélectionnée la propriété modifiée dans son volet. */
3037
+ readonly onSectionParam: (event: PropertyEditorEvent) => void;
3038
+ selectField(field: MetaEntityFormFieldView): void;
3039
+ onFieldDrop(event: CdkDragDrop<MetaEntityFormFieldView[]>): void;
3040
+ /**
3041
+ * Action « Ajouter » : ouvre le sélecteur des colonnes de l'entité du formulaire, sans celles qui
3042
+ * sont déjà dans le formulaire, et ajoute les colonnes choisies à la section sélectionnée.
3043
+ */
3044
+ onAddFields(): void;
3045
+ /** Ajoute une propriété qui n'est pas une colonne de la table (colonne de la vue, propriété calculée). */
3046
+ addFreeField(): void;
3047
+ removeField(field: MetaEntityFormFieldView, event: Event): void;
3048
+ fieldTypeLabel(field: MetaEntityFormFieldView): string;
3049
+ /** Applique au champ sélectionné le paramètre modifié dans son volet. */
3050
+ readonly onFieldParam: (event: PropertyEditorEvent) => void;
3051
+ /** Obligatoire : indicateur du champ et validateur « requis » (ValidatorTypes, bit 32). */
3052
+ setRequired(field: MetaEntityFormFieldView, required: boolean): void;
3053
+ /** Recopie la section et le champ sélectionnés dans leurs volets, et règle les champs affichés. */
3054
+ private refreshPanels;
3055
+ /** Paramètres affichés selon le type du champ et sa condition d'affichage. */
3056
+ private refreshFieldVisibility;
3057
+ private textOf;
3058
+ private numberOf;
3059
+ static ɵfac: i0.ɵɵFactoryDeclaration<FormEditorComponent, never>;
3060
+ static ɵcmp: i0.ɵɵComponentDeclaration<FormEditorComponent, "msw-form-editor", never, {}, {}, never, never, false, never>;
3061
+ }
2658
3062
  declare namespace supplier_editor_component_d_exports {
2659
3063
  export { SupplierEditorComponent };
2660
3064
  }
@@ -2929,169 +3333,117 @@ export declare class UserCompanyComponent extends BaseUserAccountCompanyComponen
2929
3333
  static ɵfac: i0.ɵɵFactoryDeclaration<UserCompanyComponent, never>;
2930
3334
  static ɵcmp: i0.ɵɵComponentDeclaration<UserCompanyComponent, "alg-user-company", never, {}, {}, never, ["[actionsPanelContent]", "*"], false, never>;
2931
3335
  }
2932
- export declare const PP_GRP_STANDARD = "standard";
2933
- export declare const PP_GRP_CUSTOM = "custom";
2934
- export interface PpConfig {
2935
- metaEntityKey: string;
2936
- title?: string;
2937
- purpose?: PresentationProfilePurposes;
2938
- embedded?: boolean;
2939
- supplierId?: number | null;
2940
- roleId?: number | null;
2941
- }
2942
- export interface PpGroup {
2943
- id: string;
2944
- label: string;
2945
- isCustom: boolean;
2946
- }
2947
- export interface PpResult {
2948
- purpose: PresentationProfilePurposes;
2949
- profileId: number | null;
2950
- columns: PresentationProfileItem[];
2951
- }
2952
- export interface PpExportSplit {
2953
- columns: string[];
2954
- customFieldIds: number[];
3336
+ declare namespace presentation_profile_editor_component_d_exports {
3337
+ export { PresentationProfileEditorComponent };
2955
3338
  }
2956
- export declare class PresentationProfileTransformer {
2957
- /**
2958
- * Build the display groups from a catalog: a "standard" group + one group per custom-field
2959
- * group (by GroupId/GroupName provided by the backend), falling back to a single "Attributs".
2960
- */
2961
- static buildGroups(catalog: PresentationProfileItem[]): PpGroup[];
2962
- /**
2963
- * Converts resolved PresentationProfileItem[] into ColumnDescriptor[] for the data grid.
2964
- * Standard columns are matched from the backend descriptors by Property (ColumnKey);
2965
- * custom-field columns get a synthetic text descriptor.
2966
- * item.Label is the custom override saved with the profile; it is null when the column keeps its
2967
- * natural label, which is then the backend descriptor's Name (the column key only as a last resort).
2968
- */
2969
- static buildDescriptors(items: PresentationProfileItem[], backendDescriptors: ColumnDescriptor[]): ColumnDescriptor[];
2970
- /** User profile selection → unified PresentationContext for savePresentationProfile (Profile carries Items). */
2971
- static toUserPreferenceContext(items: PresentationProfileItem[], key: string, purpose: number, label?: string | null, profile?: PresentationProfile | null): PresentationContext;
2972
- /** Admin selection → unified PresentationContext for savePresentationProfile (Profile carries Items). */
2973
- static toAdminConfigContext(items: PresentationProfileItem[], profile: PresentationProfile): PresentationContext;
2974
- /** Normalises selected columns into persistable items (order = position). */
2975
- private static toSaveItems;
2976
- /** Split selected items into standard column keys and custom-field ids (for export payloads). */
2977
- static splitForExport(items: PresentationProfileItem[]): PpExportSplit;
2978
- }
2979
- declare namespace presentation_profile_column_component_d_exports {
2980
- export { PresentationProfileColumnComponent };
2981
- }
2982
- export declare class PresentationProfileColumnComponent implements OnInit, OnDestroy {
2983
- private readonly data;
2984
- private readonly itemData;
2985
- readonly Scopes: typeof PresentationProfileScopes;
2986
- readonly Purposes: typeof PresentationProfilePurposes;
2987
- readonly scopeSections: {
2988
- scope: PresentationProfileScopes;
2989
- label: string;
2990
- icon: string;
2991
- }[];
2992
- readonly purposeOptions: {
2993
- value: PresentationProfilePurposes;
2994
- label: string;
2995
- }[];
2996
- activeSection: number;
2997
- filterKey: string;
2998
- filterPurpose: number;
2999
- filterScopeId: number | null;
3000
- profiles: PresentationProfile[];
3001
- activeProfile: PresentationProfile | null;
3002
- isLoadingList: boolean;
3003
- message: string;
3004
- get filterIsPerimeter(): boolean;
3005
- get scopeIdLabel(): string;
3339
+ /**
3340
+ * Éditeur spécifique des profils de présentation, affiché par l'écran des profils
3341
+ * (PresentationProfileScreenComponent) à la place du formulaire standard : onglet « Propriétés »
3342
+ * (formulaire par défaut de l'entité : table, libellé, finalité, portée, puis utilisateur, source de
3343
+ * données ou rôle selon la portée ; avec les composants des formulaires) et onglet « Colonnes »
3344
+ * (colonnes affichées, ordre et libellés). L'enregistrement passe par l'action « Enregistrer » de
3345
+ * l'écran : les colonnes modifiées sont publiées dans <c>Items</c> du profil.
3346
+ */
3347
+ export declare class PresentationProfileEditorComponent extends BaseEntityEditor<PresentationProfileView> implements OnInit {
3348
+ private itemData;
3349
+ /** Onglet affiché : 0 pour « Propriétés », 1 pour « Colonnes ». */
3350
+ activeTab: number;
3351
+ /** Profil dont les colonnes sont chargées : les onglets ne s'affichent que pour lui. */
3352
+ loadedEntity: PresentationProfileView;
3006
3353
  isLoading: boolean;
3007
- isSaving: boolean;
3008
- groups: PpGroup[];
3354
+ /** Colonnes de la table (catalogue). */
3009
3355
  allItems: PresentationProfileItem[];
3356
+ /** Colonnes disponibles : celles du catalogue qui ne sont pas affichées, filtrées par la recherche. */
3010
3357
  filteredItems: PresentationProfileItem[];
3358
+ /** Colonnes affichées, dans l'ordre. */
3011
3359
  orderedSelection: PresentationProfileItem[];
3012
3360
  selectedIds: Set<string>;
3013
- selectedGroup: PpGroup | null;
3014
3361
  searchText: string;
3015
3362
  naturalLabelByKey: Map<string, string>;
3363
+ /**
3364
+ * Champs qui se choisissent à la création du profil et ne se modifient plus ensuite : ils
3365
+ * désignent le profil (table, finalité, portée, utilisateur, source de données ou rôle).
3366
+ */
3367
+ private static readonly frozenFields;
3368
+ /** Champs dont le changement demande de relire le catalogue des colonnes. */
3369
+ private static readonly catalogFields;
3370
+ /** Profils dont il faut charger les colonnes : seul le dernier demandé est gardé. */
3371
+ private load$;
3016
3372
  get isPerimeter(): boolean;
3017
3373
  get selectedCount(): number;
3018
- get canSave(): boolean;
3019
- get allVisibleSelected(): boolean;
3020
- get someVisibleSelected(): boolean;
3021
- private readonly destroy$;
3022
- constructor(data: PresentationProfileDataService, itemData: PresentationProfileItemDataService);
3374
+ /** Dernier état du profil en cours d'édition : modifications non enregistrées comprises. */
3375
+ private get current();
3376
+ constructor(app: ApplicationService, validationService: ValidationService, itemData: PresentationProfileItemDataService);
3023
3377
  ngOnInit(): void;
3024
- ngOnDestroy(): void;
3025
- setSection(scope: number): void;
3026
- search(): void;
3027
- newProfile(): void;
3028
- selectProfile(profile: PresentationProfile): void;
3029
- deleteProfile(profile: PresentationProfile, event: Event): void;
3030
- getPurposeLabel(p: number | undefined): string;
3378
+ /** Champs du formulaire par défaut des profils ; la liste des tables ne propose que des tables (pas les vues). */
3379
+ protected alterSections(sections: Section[]): Section[];
3380
+ /**
3381
+ * Champ masqué selon la valeur du champ dont il dépend (formulaire en base : le champ
3382
+ * Utilisateur, Source de données ou Rôle ne s'affiche que pour sa portée).
3383
+ */
3384
+ isFieldHidden(field: FieldDescriptor): boolean;
3385
+ /** Champ en lecture seule : celui du formulaire, ou un champ d'identité d'un profil déjà créé. */
3386
+ isFieldReadonly(field: FieldDescriptor): boolean;
3387
+ /** Charge les colonnes du profil sélectionné ; un profil réémis avec ses modifications garde son affichage. */
3388
+ protected onEntityChanged(entity: PresentationProfileView): void;
3389
+ /** La table ou la portée d'un profil change : le catalogue des colonnes est relu. */
3390
+ onPropertyChanged(event: PropertyEditorEvent): void;
3391
+ /** Catalogue des colonnes de la table (selon la portée) et colonnes enregistrées du profil. */
3392
+ private loadColumns$;
3393
+ private showColumns;
3394
+ private resetColumns;
3395
+ /** Publie les colonnes choisies : le profil devient modifié, l'action « Enregistrer » les envoie. */
3396
+ onColumnsChanged(): void;
3031
3397
  getCatalogLabel(item: PresentationProfileItem): string;
3032
- private getItemGroupId;
3033
- private loadColumns;
3034
- private resetEditor;
3035
- selectGroup(group: PpGroup | null): void;
3036
3398
  onSearch(): void;
3399
+ /** Colonnes disponibles : catalogue sans les colonnes affichées, restreint au texte cherché. */
3037
3400
  private applyFilter;
3038
- getGroupCount(g: PpGroup): number;
3039
- getGroupSelectedCount(g: PpGroup): number;
3040
- isSelected(item: PresentationProfileItem): boolean;
3041
- toggleItem(item: PresentationProfileItem): void;
3042
- toggleAll(): void;
3401
+ /** Affiche une colonne disponible : elle passe à la fin des colonnes affichées. */
3402
+ addItem(item: PresentationProfileItem): void;
3403
+ /** Affiche toutes les colonnes disponibles listées. */
3404
+ addAll(): void;
3043
3405
  removeFromSelection(item: PresentationProfileItem): void;
3044
3406
  onDrop(event: CdkDragDrop<PresentationProfileItem[]>): void;
3045
- save(): void;
3046
- static ɵfac: i0.ɵɵFactoryDeclaration<PresentationProfileColumnComponent, never>;
3047
- static ɵcmp: i0.ɵɵComponentDeclaration<PresentationProfileColumnComponent, "alg-pp-column", never, {}, {}, never, never, false, never>;
3048
- }
3049
- declare namespace presentation_profile_items_component_d_exports {
3050
- export { PresentationProfileItemsComponent };
3407
+ static ɵfac: i0.ɵɵFactoryDeclaration<PresentationProfileEditorComponent, never>;
3408
+ static ɵcmp: i0.ɵɵComponentDeclaration<PresentationProfileEditorComponent, "alg-presentation-profile-editor", never, {}, {}, never, never, false, never>;
3051
3409
  }
3052
- export declare class PresentationProfileItemsComponent implements OnInit, OnDestroy {
3053
- private readonly data;
3054
- private readonly itemData;
3055
- profile: PresentationProfile | null;
3056
- isSection: boolean;
3057
- isLoading: boolean;
3058
- isSaving: boolean;
3059
- message: string;
3060
- groups: PpGroup[];
3061
- allItems: PresentationProfileItem[];
3062
- filteredItems: PresentationProfileItem[];
3063
- orderedSelection: PresentationProfileItem[];
3064
- selectedIds: Set<string>;
3065
- selectedGroup: PpGroup | null;
3066
- searchText: string;
3067
- naturalLabelByKey: Map<string, string>;
3068
- get isPerimeter(): boolean;
3069
- get selectedCount(): number;
3070
- get canSave(): boolean;
3071
- get allVisibleSelected(): boolean;
3072
- get someVisibleSelected(): boolean;
3073
- private readonly destroy$;
3074
- constructor(data: PresentationProfileDataService, itemData: PresentationProfileItemDataService);
3410
+ /**
3411
+ * Recherche et édition des PresentationProfileView (partie générée) : titre, lien, clé d'entité et
3412
+ * permission, onglets des entités liées. Composant spécifique : PresentationProfileComponent.
3413
+ */
3414
+ export declare abstract class BasePresentationProfileComponent extends BaseComponent<PresentationProfileFilterViewModel, PresentationProfileView> {
3415
+ protected route: ActivatedRoute;
3416
+ getTitle(): string;
3417
+ getPath(): string;
3418
+ getEntityKey(): string;
3419
+ get PermissionKey(): string;
3420
+ constructor(app: ApplicationService, route: ActivatedRoute);
3075
3421
  ngOnInit(): void;
3076
- ngOnDestroy(): void;
3077
- setProfile(profile: PresentationProfile): void;
3078
- getCatalogLabel(item: PresentationProfileItem): string;
3079
- private getItemGroupId;
3080
- private loadColumns;
3081
- private resetEditor;
3082
- selectGroup(group: PpGroup | null): void;
3083
- onSearch(): void;
3084
- private applyFilter;
3085
- getGroupCount(g: PpGroup): number;
3086
- getGroupSelectedCount(g: PpGroup): number;
3087
- isSelected(item: PresentationProfileItem): boolean;
3088
- toggleItem(item: PresentationProfileItem): void;
3089
- toggleAll(): void;
3090
- removeFromSelection(item: PresentationProfileItem): void;
3091
- onDrop(event: CdkDragDrop<PresentationProfileItem[]>): void;
3092
- save(): void;
3093
- static ɵfac: i0.ɵɵFactoryDeclaration<PresentationProfileItemsComponent, never>;
3094
- static ɵcmp: i0.ɵɵComponentDeclaration<PresentationProfileItemsComponent, "alg-pp-items", never, {}, {}, never, never, false, never>;
3422
+ /**
3423
+ * Onglets des entités liées (relation 1..*) : sections du formulaire par défaut
3424
+ * (metadata/04-forms/PresentationProfileForm.sql), déclarées par SystemGeneratedSectionService
3425
+ * (system-sections.generated.ts) et demandées au registre du socle par la clé de l'entité :
3426
+ * ce composant n'importe aucun composant d'onglet. Un onglet de la même entité déjà enregistré
3427
+ * par le composant spécifique n'est pas dupliqué.
3428
+ */
3429
+ protected registerFormSections(): void;
3430
+ static ɵfac: i0.ɵɵFactoryDeclaration<BasePresentationProfileComponent, never>;
3431
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BasePresentationProfileComponent, never, never, {}, {}, never, never, true, never>;
3432
+ }
3433
+ declare namespace presentation_profile_screen_component_d_exports {
3434
+ export { PresentationProfileScreenComponent };
3435
+ }
3436
+ /**
3437
+ * Écran des profils de présentation : grille standard des profils (vue PresentationProfileView :
3438
+ * table, finalité, portée, utilisateur, source de données ou rôle) et, à la place du formulaire
3439
+ * d'édition standard, l'éditeur des profils (PresentationProfileEditorComponent). Nommé « Screen » :
3440
+ * PresentationProfileComponent est déjà le sélecteur de colonnes des grilles.
3441
+ */
3442
+ export declare class PresentationProfileScreenComponent extends BasePresentationProfileComponent {
3443
+ protected route: ActivatedRoute;
3444
+ constructor(app: ApplicationService, route: ActivatedRoute);
3445
+ static ɵfac: i0.ɵɵFactoryDeclaration<PresentationProfileScreenComponent, never>;
3446
+ static ɵcmp: i0.ɵɵComponentDeclaration<PresentationProfileScreenComponent, "alg-presentation-profile-screen", never, {}, {}, never, ["[actionsPanelContent]", "*"], false, never>;
3095
3447
  }
3096
3448
  export interface PpResolverConfig {
3097
3449
  metaEntityKey: string;
@@ -3202,7 +3554,7 @@ declare namespace system_ux_module_d_exports {
3202
3554
  export declare class SystemUxModule extends EnsureModuleLoadedOnceGuard {
3203
3555
  constructor(injector: Injector);
3204
3556
  static ɵfac: i0.ɵɵFactoryDeclaration<SystemUxModule, never>;
3205
- static ɵmod: i0.ɵɵNgModuleDeclaration<SystemUxModule, [typeof AddressComponent, typeof CompanyComponent, typeof CountryComponent, typeof CurrencyComponent, typeof CustomFieldComponent, typeof CustomFieldGroupComponent, typeof CustomFieldGroupEntityComponent, typeof CustomFieldGroupItemComponent, typeof CustomFieldOptionsComponent, typeof CustomFieldValueComponent, typeof DayInfoComponent, typeof ErrorCategoryComponent, typeof ExchangeRateComponent, typeof FilesComponent, typeof KeywordComponent, typeof MetaEntityComponent, typeof MetaEntityFieldComponent, typeof MetaEntityFormComponent, typeof MetaEntityFormFieldComponent, typeof MetaEntityFormSectionComponent, typeof MetaEntityKeywordComponent, typeof MetaEntityRelationComponent, typeof MetaEntityRelationDefinitionComponent, typeof MetaEntityTranslationComponent, typeof MetaEntityViewFieldComponent, typeof NewsComponent, typeof ParameterComponent, typeof ParameterSectionComponent, typeof ParameterValueComponent, typeof PermissionComponent, typeof PresentationProfileItemComponent, typeof RatingComponent, typeof RatingSummaryComponent, typeof RequestComponent, typeof RequestEntityComponent, typeof RequestResultComponent, typeof RequestTypeComponent, typeof ResourceKeyComponent, typeof ResourceLanguageComponent, typeof ResourceTranslationComponent, typeof RoleComponent, typeof RolePermissionComponent, typeof SubcompanyComponent, typeof SupplierComponent, typeof SupplierCompanyComponent, typeof SynchronizedCompanyComponent, typeof TvaRateComponent, typeof UserAccountComponent, typeof UserAccountCompanyComponent, typeof UserAccountLoginComponent, typeof UserAccountNewsComponent, typeof UserAccountRoleComponent, typeof UserAccountTokenComponent, typeof UserFavoriteComponent, typeof UserGroupComponent, typeof UserGroupDefinitionComponent, typeof UserHistoryComponent, typeof UserPermissionViewComponent, typeof UserSessionComponent, typeof VersionComponent, typeof AccessDeniedComponent, typeof DFlatLayoutComponent, typeof DFlatSpinnerComponent, typeof HistoryComponent, typeof HomepageComponent, typeof SearchComponent, typeof SearchResultComponent, typeof UserMenuComponent, typeof UserProfileComponent, typeof ActivateComponent, typeof LoginComponent, typeof ResetPasswordComponent, typeof CompanyEditorComponent, typeof CountryEditorComponent, typeof CurrencyEditorComponent, typeof ExchangeRateEditorComponent, typeof NewsEditorComponent, typeof PermissionEditorComponent, typeof RequestEditorComponent, typeof RequestResultsComponent, typeof RoleEditorComponent, typeof UserRoleComponent, typeof UserPermissionComponent, typeof UserAccountEditorComponent, typeof UserProfileAccountComponent, typeof CustomFieldOptionsEditorComponent, typeof CustomFieldGroupEditorComponent, typeof CustomFieldGroupItemEditorComponent, typeof CustomFieldGroupEntityEditorComponent, typeof CustomFieldEditorComponent, typeof ConfigComponent, typeof ResourceLanguageEditorComponent, typeof ResourceTranslationEditorComponent, typeof MetaEntityFieldEditorComponent, typeof SupplierEditorComponent, typeof TvaRateEditorComponent, typeof TvaRateDetailComponent, typeof ImageUploadComponent, typeof AddressEditorComponent, typeof DWSupplyComponent, typeof EntityFilesComponent, typeof ExchangeRateDetailComponent, typeof UserGroupEditorComponent, typeof UserCompanyComponent, typeof PresentationProfileColumnComponent, typeof PresentationProfileItemsComponent], [typeof i107.ModalModule, typeof i108.DragDropModule, typeof i109.CommonModule, typeof i110.AngularEditorModule, typeof i111.FormsModule, typeof i111.ReactiveFormsModule, typeof i112.CoreModelModule, typeof i113.CoreUxModule, typeof PresentationProfileComponent, typeof i115.CoreDataModule, typeof i116.SystemModelModule, typeof i117.SystemDataModule, typeof i118.SystemRootModule, typeof i119.NgSelectModule, typeof i120.RecaptchaModule, typeof i120.RecaptchaFormsModule, typeof i121.NgHttpLoaderComponent, typeof i122.NgxDropzoneModule, typeof i123.TreeviewModule, typeof i124.RouterModule], [typeof AddressComponent, typeof CompanyComponent, typeof CountryComponent, typeof CurrencyComponent, typeof CustomFieldComponent, typeof CustomFieldGroupComponent, typeof CustomFieldGroupEntityComponent, typeof CustomFieldGroupItemComponent, typeof CustomFieldOptionsComponent, typeof CustomFieldValueComponent, typeof DayInfoComponent, typeof ErrorCategoryComponent, typeof ExchangeRateComponent, typeof FilesComponent, typeof KeywordComponent, typeof MetaEntityComponent, typeof MetaEntityFieldComponent, typeof MetaEntityFormComponent, typeof MetaEntityFormFieldComponent, typeof MetaEntityFormSectionComponent, typeof MetaEntityKeywordComponent, typeof MetaEntityRelationComponent, typeof MetaEntityRelationDefinitionComponent, typeof MetaEntityTranslationComponent, typeof MetaEntityViewFieldComponent, typeof NewsComponent, typeof ParameterComponent, typeof ParameterSectionComponent, typeof ParameterValueComponent, typeof PermissionComponent, typeof PresentationProfileItemComponent, typeof RatingComponent, typeof RatingSummaryComponent, typeof RequestComponent, typeof RequestEntityComponent, typeof RequestResultComponent, typeof RequestTypeComponent, typeof ResourceKeyComponent, typeof ResourceLanguageComponent, typeof ResourceTranslationComponent, typeof RoleComponent, typeof RolePermissionComponent, typeof SubcompanyComponent, typeof SupplierComponent, typeof SupplierCompanyComponent, typeof SynchronizedCompanyComponent, typeof TvaRateComponent, typeof UserAccountComponent, typeof UserAccountCompanyComponent, typeof UserAccountLoginComponent, typeof UserAccountNewsComponent, typeof UserAccountRoleComponent, typeof UserAccountTokenComponent, typeof UserFavoriteComponent, typeof UserGroupComponent, typeof UserGroupDefinitionComponent, typeof UserHistoryComponent, typeof UserPermissionViewComponent, typeof UserSessionComponent, typeof VersionComponent, typeof AccessDeniedComponent, typeof DFlatLayoutComponent, typeof DFlatSpinnerComponent, typeof HistoryComponent, typeof HomepageComponent, typeof SearchComponent, typeof SearchResultComponent, typeof UserMenuComponent, typeof UserProfileComponent, typeof ActivateComponent, typeof LoginComponent, typeof ResetPasswordComponent, typeof CompanyEditorComponent, typeof CountryEditorComponent, typeof CurrencyEditorComponent, typeof ExchangeRateEditorComponent, typeof NewsEditorComponent, typeof PermissionEditorComponent, typeof RequestEditorComponent, typeof RequestResultsComponent, typeof RoleEditorComponent, typeof UserRoleComponent, typeof UserPermissionComponent, typeof UserAccountEditorComponent, typeof UserProfileAccountComponent, typeof CustomFieldOptionsEditorComponent, typeof CustomFieldGroupEditorComponent, typeof CustomFieldGroupItemEditorComponent, typeof CustomFieldGroupEntityEditorComponent, typeof CustomFieldEditorComponent, typeof ConfigComponent, typeof ResourceLanguageEditorComponent, typeof ResourceTranslationEditorComponent, typeof MetaEntityFieldEditorComponent, typeof SupplierEditorComponent, typeof TvaRateEditorComponent, typeof TvaRateDetailComponent, typeof ImageUploadComponent, typeof AddressEditorComponent, typeof DWSupplyComponent, typeof EntityFilesComponent, typeof ExchangeRateDetailComponent, typeof UserGroupEditorComponent, typeof UserCompanyComponent, typeof PresentationProfileColumnComponent, typeof PresentationProfileItemsComponent]>;
3557
+ static ɵmod: i0.ɵɵNgModuleDeclaration<SystemUxModule, [typeof AddressComponent, typeof CompanyComponent, typeof CountryComponent, typeof CurrencyComponent, typeof CustomFieldComponent, typeof CustomFieldGroupComponent, typeof CustomFieldGroupEntityComponent, typeof CustomFieldGroupItemComponent, typeof CustomFieldOptionsComponent, typeof CustomFieldValueComponent, typeof DayInfoComponent, typeof ErrorCategoryComponent, typeof ExchangeRateComponent, typeof FilesComponent, typeof KeywordComponent, typeof MetaEntityComponent, typeof MetaEntityFieldComponent, typeof MetaEntityFormComponent, typeof MetaEntityFormFieldComponent, typeof MetaEntityFormSectionComponent, typeof MetaEntityKeywordComponent, typeof MetaEntityRelationComponent, typeof MetaEntityRelationDefinitionComponent, typeof MetaEntityTranslationComponent, typeof MetaEntityViewFieldComponent, typeof NewsComponent, typeof ParameterComponent, typeof ParameterSectionComponent, typeof ParameterValueComponent, typeof PermissionComponent, typeof PresentationProfileItemComponent, typeof RatingComponent, typeof RatingSummaryComponent, typeof RequestComponent, typeof RequestEntityComponent, typeof RequestResultComponent, typeof RequestTypeComponent, typeof ResourceKeyComponent, typeof ResourceLanguageComponent, typeof ResourceTranslationComponent, typeof RoleComponent, typeof RolePermissionComponent, typeof SubcompanyComponent, typeof SupplierComponent, typeof SupplierCompanyComponent, typeof SynchronizedCompanyComponent, typeof TvaRateComponent, typeof UserAccountComponent, typeof UserAccountCompanyComponent, typeof UserAccountLoginComponent, typeof UserAccountNewsComponent, typeof UserAccountRoleComponent, typeof UserAccountTokenComponent, typeof UserFavoriteComponent, typeof UserGroupComponent, typeof UserGroupDefinitionComponent, typeof UserHistoryComponent, typeof UserPermissionViewComponent, typeof UserSessionComponent, typeof VersionComponent, typeof AccessDeniedComponent, typeof DFlatLayoutComponent, typeof DFlatSpinnerComponent, typeof HistoryComponent, typeof HomepageComponent, typeof SearchComponent, typeof SearchResultComponent, typeof UserMenuComponent, typeof UserProfileComponent, typeof ActivateComponent, typeof LoginComponent, typeof ResetPasswordComponent, typeof CompanyEditorComponent, typeof CountryEditorComponent, typeof CurrencyEditorComponent, typeof ExchangeRateEditorComponent, typeof NewsEditorComponent, typeof PermissionEditorComponent, typeof RequestEditorComponent, typeof RequestResultsComponent, typeof RoleEditorComponent, typeof UserRoleComponent, typeof UserPermissionComponent, typeof UserAccountEditorComponent, typeof UserProfileAccountComponent, typeof CustomFieldOptionsEditorComponent, typeof CustomFieldGroupEditorComponent, typeof CustomFieldGroupItemEditorComponent, typeof CustomFieldGroupEntityEditorComponent, typeof CustomFieldEditorComponent, typeof ConfigComponent, typeof ResourceLanguageEditorComponent, typeof ResourceTranslationEditorComponent, typeof MetaEntityFieldEditorComponent, typeof FormEditorComponent, typeof SupplierEditorComponent, typeof TvaRateEditorComponent, typeof TvaRateDetailComponent, typeof ImageUploadComponent, typeof AddressEditorComponent, typeof DWSupplyComponent, typeof EntityFilesComponent, typeof ExchangeRateDetailComponent, typeof UserGroupEditorComponent, typeof UserCompanyComponent, typeof PresentationProfileEditorComponent, typeof PresentationProfileScreenComponent], [typeof i108.ModalModule, typeof i109.DragDropModule, typeof i110.CommonModule, typeof i111.AngularEditorModule, typeof i112.FormsModule, typeof i112.ReactiveFormsModule, typeof i113.CoreModelModule, typeof i114.CoreUxModule, typeof PresentationProfileComponent, typeof i116.CoreDataModule, typeof i117.SystemModelModule, typeof i118.SystemDataModule, typeof i119.SystemRootModule, typeof i120.NgSelectModule, typeof i121.RecaptchaModule, typeof i121.RecaptchaFormsModule, typeof i122.NgHttpLoaderComponent, typeof i123.NgxDropzoneModule, typeof i124.TreeviewModule, typeof i125.RouterModule], [typeof AddressComponent, typeof CompanyComponent, typeof CountryComponent, typeof CurrencyComponent, typeof CustomFieldComponent, typeof CustomFieldGroupComponent, typeof CustomFieldGroupEntityComponent, typeof CustomFieldGroupItemComponent, typeof CustomFieldOptionsComponent, typeof CustomFieldValueComponent, typeof DayInfoComponent, typeof ErrorCategoryComponent, typeof ExchangeRateComponent, typeof FilesComponent, typeof KeywordComponent, typeof MetaEntityComponent, typeof MetaEntityFieldComponent, typeof MetaEntityFormComponent, typeof MetaEntityFormFieldComponent, typeof MetaEntityFormSectionComponent, typeof MetaEntityKeywordComponent, typeof MetaEntityRelationComponent, typeof MetaEntityRelationDefinitionComponent, typeof MetaEntityTranslationComponent, typeof MetaEntityViewFieldComponent, typeof NewsComponent, typeof ParameterComponent, typeof ParameterSectionComponent, typeof ParameterValueComponent, typeof PermissionComponent, typeof PresentationProfileItemComponent, typeof RatingComponent, typeof RatingSummaryComponent, typeof RequestComponent, typeof RequestEntityComponent, typeof RequestResultComponent, typeof RequestTypeComponent, typeof ResourceKeyComponent, typeof ResourceLanguageComponent, typeof ResourceTranslationComponent, typeof RoleComponent, typeof RolePermissionComponent, typeof SubcompanyComponent, typeof SupplierComponent, typeof SupplierCompanyComponent, typeof SynchronizedCompanyComponent, typeof TvaRateComponent, typeof UserAccountComponent, typeof UserAccountCompanyComponent, typeof UserAccountLoginComponent, typeof UserAccountNewsComponent, typeof UserAccountRoleComponent, typeof UserAccountTokenComponent, typeof UserFavoriteComponent, typeof UserGroupComponent, typeof UserGroupDefinitionComponent, typeof UserHistoryComponent, typeof UserPermissionViewComponent, typeof UserSessionComponent, typeof VersionComponent, typeof AccessDeniedComponent, typeof DFlatLayoutComponent, typeof DFlatSpinnerComponent, typeof HistoryComponent, typeof HomepageComponent, typeof SearchComponent, typeof SearchResultComponent, typeof UserMenuComponent, typeof UserProfileComponent, typeof ActivateComponent, typeof LoginComponent, typeof ResetPasswordComponent, typeof CompanyEditorComponent, typeof CountryEditorComponent, typeof CurrencyEditorComponent, typeof ExchangeRateEditorComponent, typeof NewsEditorComponent, typeof PermissionEditorComponent, typeof RequestEditorComponent, typeof RequestResultsComponent, typeof RoleEditorComponent, typeof UserRoleComponent, typeof UserPermissionComponent, typeof UserAccountEditorComponent, typeof UserProfileAccountComponent, typeof CustomFieldOptionsEditorComponent, typeof CustomFieldGroupEditorComponent, typeof CustomFieldGroupItemEditorComponent, typeof CustomFieldGroupEntityEditorComponent, typeof CustomFieldEditorComponent, typeof ConfigComponent, typeof ResourceLanguageEditorComponent, typeof ResourceTranslationEditorComponent, typeof MetaEntityFieldEditorComponent, typeof FormEditorComponent, typeof SupplierEditorComponent, typeof TvaRateEditorComponent, typeof TvaRateDetailComponent, typeof ImageUploadComponent, typeof AddressEditorComponent, typeof DWSupplyComponent, typeof EntityFilesComponent, typeof ExchangeRateDetailComponent, typeof UserGroupEditorComponent, typeof UserCompanyComponent, typeof PresentationProfileEditorComponent, typeof PresentationProfileScreenComponent]>;
3206
3558
  static ɵinj: i0.ɵɵInjectorDeclaration<SystemUxModule>;
3207
3559
  }
3208
3560
  export declare class RatesActionService {
@@ -3244,18 +3596,6 @@ export declare class SystemSelectorMapperService extends SelectorMapperServiceBa
3244
3596
  static ɵfac: i0.ɵɵFactoryDeclaration<SystemSelectorMapperService, never>;
3245
3597
  static ɵprov: i0.ɵɵInjectableDeclaration<any>;
3246
3598
  }
3247
- export declare class PresentationProfileActionService {
3248
- private readonly modalService;
3249
- constructor(modalService: BsModalService);
3250
- private readonly selectionSubject;
3251
- private readonly cancelledSubject;
3252
- readonly selectionConfirmed$: Observable<PpResult>;
3253
- readonly selectionCancelled$: Observable<void>;
3254
- open(config: PpConfig): void;
3255
- splitForExport(columns: PpResult['columns']): PpExportSplit;
3256
- static ɵfac: i0.ɵɵFactoryDeclaration<PresentationProfileActionService, never>;
3257
- static ɵprov: i0.ɵɵInjectableDeclaration<any>;
3258
- }
3259
3599
  /** Global entry point for all Presentation Profile concerns. Bound to PP_SERVICE injection token. */
3260
3600
  export declare class PpFacadeService implements IPpService {
3261
3601
  private readonly resolver;
@@ -3329,7 +3669,7 @@ export declare class DflatAppModule {
3329
3669
  */
3330
3670
  static forRoot(environment: EnvironmentBase): ModuleWithProviders<DflatAppModule>;
3331
3671
  static ɵfac: i0.ɵɵFactoryDeclaration<DflatAppModule, never>;
3332
- static ɵmod: i0.ɵɵNgModuleDeclaration<DflatAppModule, never, [typeof i111.FormsModule, typeof i111.ReactiveFormsModule, typeof i2.BrowserModule, typeof i3.BrowserAnimationsModule, typeof i120.RecaptchaModule, typeof i120.RecaptchaFormsModule, typeof i5.NgxDatatableModule, typeof i119.NgSelectModule, typeof i7.CoreModule, typeof i112.CoreModelModule, typeof i9.CoreServicesModule, typeof i115.CoreDataModule, typeof i113.CoreUxModule, typeof i118.SystemRootModule, typeof SystemUxModule, typeof i14.ToastrModule, typeof i15.AccordionModule], [typeof i111.FormsModule, typeof i111.ReactiveFormsModule, typeof i2.BrowserModule, typeof i3.BrowserAnimationsModule, typeof i120.RecaptchaModule, typeof i120.RecaptchaFormsModule, typeof i5.NgxDatatableModule, typeof i119.NgSelectModule, typeof i7.CoreModule, typeof i112.CoreModelModule, typeof i9.CoreServicesModule, typeof i115.CoreDataModule, typeof i113.CoreUxModule, typeof i118.SystemRootModule, typeof SystemUxModule]>;
3672
+ static ɵmod: i0.ɵɵNgModuleDeclaration<DflatAppModule, never, [typeof i112.FormsModule, typeof i112.ReactiveFormsModule, typeof i2.BrowserModule, typeof i3.BrowserAnimationsModule, typeof i121.RecaptchaModule, typeof i121.RecaptchaFormsModule, typeof i5.NgxDatatableModule, typeof i120.NgSelectModule, typeof i7.CoreModule, typeof i113.CoreModelModule, typeof i9.CoreServicesModule, typeof i116.CoreDataModule, typeof i114.CoreUxModule, typeof i119.SystemRootModule, typeof SystemUxModule, typeof i14.ToastrModule, typeof i15.AccordionModule], [typeof i112.FormsModule, typeof i112.ReactiveFormsModule, typeof i2.BrowserModule, typeof i3.BrowserAnimationsModule, typeof i121.RecaptchaModule, typeof i121.RecaptchaFormsModule, typeof i5.NgxDatatableModule, typeof i120.NgSelectModule, typeof i7.CoreModule, typeof i113.CoreModelModule, typeof i9.CoreServicesModule, typeof i116.CoreDataModule, typeof i114.CoreUxModule, typeof i119.SystemRootModule, typeof SystemUxModule]>;
3333
3673
  static ɵinj: i0.ɵɵInjectorDeclaration<DflatAppModule>;
3334
3674
  }
3335
3675
  /**
@@ -3346,31 +3686,8 @@ export declare abstract class BaseEntityFilesComponent extends BaseComponent<Ent
3346
3686
  static ɵfac: i0.ɵɵFactoryDeclaration<BaseEntityFilesComponent, never>;
3347
3687
  static ɵdir: i0.ɵɵDirectiveDeclaration<BaseEntityFilesComponent, never, never, {}, {}, never, never, true, never>;
3348
3688
  }
3349
- /**
3350
- * Recherche et édition des PresentationProfile (partie générée) : titre, lien, clé d'entité et
3351
- * permission, onglets des entités liées. Composant spécifique : PresentationProfileComponent.
3352
- */
3353
- export declare abstract class BasePresentationProfileComponent extends BaseComponent<PresentationProfileFilterViewModel, PresentationProfile> {
3354
- protected route: ActivatedRoute;
3355
- getTitle(): string;
3356
- getPath(): string;
3357
- getEntityKey(): string;
3358
- get PermissionKey(): string;
3359
- constructor(app: ApplicationService, route: ActivatedRoute);
3360
- ngOnInit(): void;
3361
- /**
3362
- * Onglets des entités liées (relation 1..*) : sections du formulaire par défaut
3363
- * (metadata/04-forms/PresentationProfileForm.sql), déclarées par SystemGeneratedSectionService
3364
- * (system-sections.generated.ts) et demandées au registre du socle par la clé de l'entité :
3365
- * ce composant n'importe aucun composant d'onglet. Un onglet de la même entité déjà enregistré
3366
- * par le composant spécifique n'est pas dupliqué.
3367
- */
3368
- protected registerFormSections(): void;
3369
- static ɵfac: i0.ɵɵFactoryDeclaration<BasePresentationProfileComponent, never>;
3370
- static ɵdir: i0.ɵɵDirectiveDeclaration<BasePresentationProfileComponent, never, never, {}, {}, never, never, true, never>;
3371
- }
3372
3689
  /** Composants des entités du module System (composants spécifiques), à déclarer dans son module Angular. */
3373
- export declare const SystemGeneratedComponents: (typeof CustomFieldOptionsComponent | typeof CustomFieldComponent | typeof CustomFieldGroupItemComponent | typeof CustomFieldGroupComponent | typeof AddressComponent | typeof SubcompanyComponent | typeof RequestComponent | typeof CompanyComponent | typeof CountryComponent | typeof CurrencyComponent | typeof CustomFieldGroupEntityComponent | typeof CustomFieldValueComponent | typeof DayInfoComponent | typeof ErrorCategoryComponent | typeof ExchangeRateComponent | typeof FilesComponent | typeof KeywordComponent | typeof MetaEntityFieldComponent | typeof MetaEntityComponent | typeof MetaEntityFormComponent | typeof MetaEntityFormFieldComponent | typeof MetaEntityFormSectionComponent | typeof MetaEntityKeywordComponent | typeof MetaEntityRelationComponent | typeof MetaEntityRelationDefinitionComponent | typeof MetaEntityTranslationComponent | typeof MetaEntityViewFieldComponent | typeof NewsComponent | typeof ParameterComponent | typeof ParameterSectionComponent | typeof ParameterValueComponent | typeof PermissionComponent | typeof PresentationProfileItemComponent | typeof RatingComponent | typeof RatingSummaryComponent | typeof RequestEntityComponent | typeof RequestResultComponent | typeof RequestTypeComponent | typeof ResourceTranslationComponent | typeof ResourceKeyComponent | typeof ResourceLanguageComponent | typeof RoleComponent | typeof RolePermissionComponent | typeof SupplierComponent | typeof SupplierCompanyComponent | typeof SynchronizedCompanyComponent | typeof TvaRateComponent | typeof UserAccountComponent | typeof UserAccountCompanyComponent | typeof UserAccountLoginComponent | typeof UserAccountNewsComponent | typeof UserAccountRoleComponent | typeof UserAccountTokenComponent | typeof UserFavoriteComponent | typeof UserGroupDefinitionComponent | typeof UserGroupComponent | typeof UserHistoryComponent | typeof UserPermissionViewComponent | typeof UserSessionComponent | typeof VersionComponent)[];
3690
+ export declare const SystemGeneratedComponents: (typeof TvaRateComponent | typeof ResourceKeyComponent | typeof MetaEntityComponent | typeof ExchangeRateComponent | typeof AddressComponent | typeof CompanyComponent | typeof CountryComponent | typeof CurrencyComponent | typeof CustomFieldComponent | typeof CustomFieldGroupComponent | typeof CustomFieldGroupEntityComponent | typeof CustomFieldGroupItemComponent | typeof CustomFieldOptionsComponent | typeof CustomFieldValueComponent | typeof DayInfoComponent | typeof ErrorCategoryComponent | typeof FilesComponent | typeof KeywordComponent | typeof MetaEntityFieldComponent | typeof MetaEntityFormComponent | typeof MetaEntityFormFieldComponent | typeof MetaEntityFormSectionComponent | typeof MetaEntityKeywordComponent | typeof MetaEntityRelationComponent | typeof MetaEntityRelationDefinitionComponent | typeof MetaEntityTranslationComponent | typeof MetaEntityViewFieldComponent | typeof NewsComponent | typeof ParameterComponent | typeof ParameterSectionComponent | typeof ParameterValueComponent | typeof PermissionComponent | typeof PresentationProfileItemComponent | typeof RatingComponent | typeof RatingSummaryComponent | typeof RequestComponent | typeof RequestEntityComponent | typeof RequestResultComponent | typeof RequestTypeComponent | typeof ResourceLanguageComponent | typeof ResourceTranslationComponent | typeof RoleComponent | typeof RolePermissionComponent | typeof SubcompanyComponent | typeof SupplierComponent | typeof SupplierCompanyComponent | typeof SynchronizedCompanyComponent | typeof UserAccountComponent | typeof UserAccountCompanyComponent | typeof UserAccountLoginComponent | typeof UserAccountNewsComponent | typeof UserAccountRoleComponent | typeof UserAccountTokenComponent | typeof UserFavoriteComponent | typeof UserGroupComponent | typeof UserGroupDefinitionComponent | typeof UserHistoryComponent | typeof UserPermissionViewComponent | typeof UserSessionComponent | typeof VersionComponent)[];
3374
3691
  /** Routes des composants des entités du module System (clé d'entité), à ajouter à RouterModule.forChild. */
3375
3692
  export declare const SystemGeneratedRoutes: Routes;
3376
3693
  /**