@dflat-core/web 1.0.14 → 1.0.15

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.
@@ -110,9 +110,9 @@ class PresentationProfileTransformer {
110
110
  Profile: {
111
111
  ...(profile ?? {}),
112
112
  Label: label ?? profile?.Label,
113
- PurposeType: purpose,
113
+ PresentationProfilePurpose: purpose,
114
114
  MetaEntityKey: key,
115
- ScopeType: PresentationProfileScopes.User,
115
+ PresentationProfileScope: PresentationProfileScopes.User,
116
116
  Items: PresentationProfileTransformer.toSaveItems(items),
117
117
  },
118
118
  };
@@ -177,8 +177,8 @@ class PresentationProfileResolver {
177
177
  const scopeId = config.supplierId ?? config.roleId ?? undefined;
178
178
  return {
179
179
  MetaEntityKey: config.metaEntityKey,
180
- Purpose: config.purpose ?? PresentationProfilePurposes.Grid,
181
- ScopeType: scopeType,
180
+ PresentationProfilePurpose: config.purpose ?? PresentationProfilePurposes.Grid,
181
+ PresentationProfileScope: scopeType,
182
182
  ScopeId: scopeId,
183
183
  };
184
184
  }
@@ -4252,8 +4252,8 @@ class PresentationProfileColumnComponent {
4252
4252
  return this.activeSection === PresentationProfileScopes.Role ? 'ID Rôle' : 'ID Fournisseur';
4253
4253
  }
4254
4254
  get isPerimeter() {
4255
- return this.activeProfile?.ScopeType === PresentationProfileScopes.Role
4256
- || this.activeProfile?.ScopeType === PresentationProfileScopes.Supplier;
4255
+ return this.activeProfile?.PresentationProfileScope === PresentationProfileScopes.Role
4256
+ || this.activeProfile?.PresentationProfileScope === PresentationProfileScopes.Supplier;
4257
4257
  }
4258
4258
  get selectedCount() { return this.orderedSelection.length; }
4259
4259
  get canSave() { return !!this.activeProfile && !this.isSaving; }
@@ -4313,8 +4313,8 @@ class PresentationProfileColumnComponent {
4313
4313
  this.message = '';
4314
4314
  const listFilter = {
4315
4315
  MetaEntityKey: this.filterKey || undefined,
4316
- Purpose: this.filterPurpose,
4317
- ScopeType: this.activeSection,
4316
+ PresentationProfilePurpose: this.filterPurpose,
4317
+ PresentationProfileScope: this.activeSection,
4318
4318
  ScopeId: this.filterIsPerimeter ? this.filterScopeId : null,
4319
4319
  EnablePaging: false,
4320
4320
  };
@@ -4329,9 +4329,9 @@ class PresentationProfileColumnComponent {
4329
4329
  return;
4330
4330
  }
4331
4331
  this.activeProfile = {
4332
- PurposeType: this.filterPurpose,
4332
+ PresentationProfilePurpose: this.filterPurpose,
4333
4333
  MetaEntityKey: this.filterKey.trim(),
4334
- ScopeType: this.activeSection,
4334
+ PresentationProfileScope: this.activeSection,
4335
4335
  ScopeId: this.filterIsPerimeter ? this.filterScopeId : null,
4336
4336
  };
4337
4337
  this.message = '';
@@ -4379,7 +4379,7 @@ class PresentationProfileColumnComponent {
4379
4379
  const scopeType = supplierId != null ? PresentationProfileScopes.Supplier
4380
4380
  : roleId != null ? PresentationProfileScopes.Role : undefined;
4381
4381
  const catalogFilter = {
4382
- MetaEntityKey: key, ScopeType: scopeType, ScopeId: supplierId ?? roleId ?? null,
4382
+ MetaEntityKey: key, PresentationProfileScope: scopeType, ScopeId: supplierId ?? roleId ?? null,
4383
4383
  };
4384
4384
  const catalog$ = this.itemData.getCatalog(catalogFilter).pipe(catchError(() => of([])));
4385
4385
  const items$ = profileId != null
@@ -4490,17 +4490,17 @@ class PresentationProfileColumnComponent {
4490
4490
  });
4491
4491
  }
4492
4492
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: PresentationProfileColumnComponent, deps: [{ token: i2.PresentationProfileDataService }, { token: i2.PresentationProfileItemDataService }], target: i0.ɵɵFactoryTarget.Component }); }
4493
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: PresentationProfileColumnComponent, isStandalone: false, selector: "alg-pp-column", ngImport: i0, template: "<div class=\"gcc\">\r\n\r\n <!-- \u2500\u2500 SCOPE SECTION TABS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n <div class=\"gcc__sections\">\r\n <button *ngFor=\"let sec of scopeSections\"\r\n class=\"gcc__section-tab\"\r\n [class.gcc__section-tab--active]=\"activeSection === sec.scope\"\r\n type=\"button\"\r\n (click)=\"setSection(sec.scope)\">\r\n <i class=\"fa\" [ngClass]=\"'fa-' + sec.icon\"></i>&nbsp;{{ sec.label }}\r\n </button>\r\n </div>\r\n\r\n <!-- \u2500\u2500 FILTER TOOLBAR \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n <div class=\"gcc__toolbar\">\r\n <div class=\"gcc__field\">\r\n <label>Finalit\u00E9</label>\r\n <select [(ngModel)]=\"filterPurpose\" (ngModelChange)=\"search()\">\r\n <option *ngFor=\"let p of purposeOptions\" [ngValue]=\"p.value\">{{ p.label }}</option>\r\n </select>\r\n </div>\r\n <div class=\"gcc__field\">\r\n <label>Cl\u00E9 de grille</label>\r\n <input type=\"text\" [(ngModel)]=\"filterKey\" placeholder=\"ex. PDTV\" (keydown.enter)=\"search()\" />\r\n </div>\r\n <div class=\"gcc__field\" *ngIf=\"filterIsPerimeter\">\r\n <label>{{ scopeIdLabel }}</label>\r\n <input type=\"number\" [(ngModel)]=\"filterScopeId\" (keydown.enter)=\"search()\" />\r\n </div>\r\n <button class=\"btn btn-secondary\" (click)=\"search()\" [disabled]=\"isLoadingList\">\r\n <i class=\"fa fa-search\"></i>&nbsp;Rechercher\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"message\" class=\"gcc__message\">{{ message }}</div>\r\n\r\n <!-- \u2500\u2500 4-PANEL BODY \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n <div class=\"gcc__body\">\r\n\r\n <!-- \u2500\u2500 Panel 1: Profile list (left sidebar) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n <div class=\"gcc__configs\">\r\n <div class=\"gcc__panel-hd\">\r\n <span class=\"gcc__panel-title\">\r\n Profils&nbsp;<span class=\"gcc__count\">{{ profiles.length }}</span>\r\n </span>\r\n <button class=\"btn btn-sm btn-primary\" (click)=\"newProfile()\" title=\"Nouveau profil\">\r\n <i class=\"fa fa-plus\"></i>\r\n </button>\r\n </div>\r\n\r\n <div class=\"gcc__list-scroll\">\r\n <div *ngIf=\"isLoadingList\" class=\"gcc__spinner\">\r\n <i class=\"fa fa-circle-o-notch fa-spin\"></i>&nbsp;Chargement\u2026\r\n </div>\r\n <p *ngIf=\"!isLoadingList && profiles.length === 0\" class=\"gcc__empty\">\r\n Aucun profil trouv\u00E9.\r\n </p>\r\n <table *ngIf=\"!isLoadingList && profiles.length > 0\" class=\"gcc__table\">\r\n <thead>\r\n <tr>\r\n <th>Cl\u00E9</th>\r\n <th>Finalit\u00E9</th>\r\n <th *ngIf=\"filterIsPerimeter\">P\u00E9rim\u00E8tre</th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let p of profiles\"\r\n class=\"gcc__config-row\"\r\n [class.gcc__config-row--selected]=\"activeProfile?.Id === p.Id\"\r\n (click)=\"selectProfile(p)\">\r\n <td class=\"gcc__key\">{{ p.MetaEntityKey }}</td>\r\n <td class=\"gcc__muted\">{{ getPurposeLabel(p.PurposeType) }}</td>\r\n <td *ngIf=\"filterIsPerimeter\" class=\"gcc__muted\">#{{ p.ScopeId }}</td>\r\n <td class=\"gcc__actions-cell\">\r\n <button class=\"gcc__del-btn\" (click)=\"deleteProfile(p, $event)\" title=\"Supprimer\">\r\n <i class=\"fa fa-trash\"></i>\r\n </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n\r\n <!-- \u2500\u2500 Panels 2/3/4: only when a profile is active \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n <ng-container *ngIf=\"activeProfile; else noProfileTpl\">\r\n\r\n <div class=\"gcc__editor\">\r\n\r\n <div class=\"gcc__editor-hd\">\r\n <span class=\"gcc__panel-title\">\r\n {{ activeProfile.MetaEntityKey }}\r\n <span class=\"gcc__muted gcc__fw-normal\">\u00B7 {{ getPurposeLabel(activeProfile.PurposeType) }}</span>\r\n <span *ngIf=\"activeProfile.ScopeId != null\" class=\"gcc__muted gcc__fw-normal\">&nbsp;#{{ activeProfile.ScopeId }}</span>\r\n <span *ngIf=\"selectedCount > 0\" class=\"gcc__badge gcc__badge--primary\">{{ selectedCount }}</span>\r\n </span>\r\n </div>\r\n\r\n <div *ngIf=\"isLoading\" class=\"gcc__loading\">\r\n <span class=\"gcc__spinner-icon fa fa-circle-o-notch fa-spin\"></span>\r\n Chargement des colonnes\u2026\r\n </div>\r\n\r\n <div *ngIf=\"!isLoading\" class=\"gcc__panels\">\r\n\r\n <!-- \u2500\u2500 Panel 2: Group selector \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n <div class=\"gcc__groups\">\r\n <div class=\"gcc__panel-hd\">\r\n <span class=\"gcc__panel-label\">Sections</span>\r\n </div>\r\n <ul class=\"gcc__group-list\">\r\n <li class=\"gcc__group-item\"\r\n [class.gcc__group-item--active]=\"selectedGroup === null\"\r\n (click)=\"selectGroup(null)\">\r\n <span class=\"gcc__group-item__name\">Toutes les colonnes</span>\r\n <span class=\"gcc__badge\">{{ allItems.length }}</span>\r\n </li>\r\n <li *ngFor=\"let group of groups\"\r\n class=\"gcc__group-item\"\r\n [class.gcc__group-item--active]=\"selectedGroup?.id === group.id\"\r\n [class.gcc__group-item--standard]=\"group.id === 'standard'\"\r\n [class.gcc__group-item--custom]=\"group.isCustom\"\r\n (click)=\"selectGroup(group)\">\r\n <span class=\"gcc__group-item__name\">{{ group.label }}</span>\r\n <div class=\"gcc__group-meta\">\r\n <span *ngIf=\"getGroupSelectedCount(group) > 0\" class=\"gcc__badge gcc__badge--primary\">{{ getGroupSelectedCount(group) }}</span>\r\n <span class=\"gcc__badge\">{{ getGroupCount(group) }}</span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n <!-- \u2500\u2500 Panel 3: Catalog browse \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n <div class=\"gcc__browse\">\r\n <div class=\"gcc__panel-hd\">\r\n <span class=\"gcc__panel-label\">\r\n {{ selectedGroup == null ? 'Toutes' : selectedGroup.label }}\r\n </span>\r\n <input class=\"gcc__search\" type=\"text\" placeholder=\"Rechercher\u2026\"\r\n [(ngModel)]=\"searchText\" (ngModelChange)=\"onSearch()\">\r\n </div>\r\n\r\n <div class=\"gcc__table-wrap\">\r\n <table class=\"gcc__browse-table\">\r\n <thead>\r\n <tr>\r\n <th class=\"gcc__col-check\">\r\n <input type=\"checkbox\"\r\n [checked]=\"allVisibleSelected\"\r\n [indeterminate]=\"someVisibleSelected\"\r\n (change)=\"toggleAll()\"\r\n title=\"Tout s\u00E9lectionner / d\u00E9s\u00E9lectionner\">\r\n </th>\r\n <th class=\"gcc__col-key\">Cl\u00E9</th>\r\n <th>Colonne</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of filteredItems\"\r\n class=\"gcc__browse-row\"\r\n [class.gcc__browse-row--selected]=\"isSelected(item)\"\r\n [class.gcc__browse-row--custom]=\"item.ColumnSourceType === 2\"\r\n (click)=\"toggleItem(item)\">\r\n <td class=\"gcc__col-check\" (click)=\"$event.stopPropagation()\">\r\n <input type=\"checkbox\" [checked]=\"isSelected(item)\" (change)=\"toggleItem(item)\">\r\n </td>\r\n <td class=\"gcc__col-key\">{{ item.ColumnKey }}</td>\r\n <td class=\"gcc__col-name\">{{ item.Label ?? item.ColumnKey }}</td>\r\n </tr>\r\n <tr *ngIf=\"filteredItems.length === 0\">\r\n <td colspan=\"3\" class=\"gcc__browse-empty\">Aucune colonne trouv\u00E9e</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n\r\n <!-- \u2500\u2500 Panel 4: Ordered selection with admin flags \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n <div class=\"gcc__selection\">\r\n <div class=\"gcc__panel-hd\">\r\n <span class=\"gcc__panel-label\">Colonnes s\u00E9lectionn\u00E9es</span>\r\n <span *ngIf=\"selectedCount > 0\" class=\"gcc__badge gcc__badge--primary\">{{ selectedCount }}</span>\r\n </div>\r\n\r\n <div *ngIf=\"orderedSelection.length > 0\" class=\"gcc__sel-legend\">\r\n <span class=\"gcc__sel-legend__drag\"></span>\r\n <span class=\"gcc__sel-legend__pos\">#</span>\r\n <span class=\"gcc__sel-legend__code\">Cl\u00E9</span>\r\n <span class=\"gcc__sel-legend__label\">\u00C9tiquette</span>\r\n <ng-container *ngIf=\"isPerimeter\">\r\n <span class=\"gcc__sel-legend__flag\">Aut.</span>\r\n </ng-container>\r\n <span class=\"gcc__sel-legend__flag\">Ver.</span>\r\n <span class=\"gcc__sel-legend__remove\"></span>\r\n </div>\r\n\r\n <div *ngIf=\"orderedSelection.length === 0\" class=\"gcc__sel-empty\">\r\n <span class=\"fa fa-columns gcc__sel-empty__icon\"></span>\r\n <p>Cochez des colonnes \u00E0 gauche</p>\r\n </div>\r\n\r\n <div *ngIf=\"orderedSelection.length > 0\"\r\n class=\"gcc__sel-list\"\r\n cdkDropList\r\n [cdkDropListData]=\"orderedSelection\"\r\n (cdkDropListDropped)=\"onDrop($event)\">\r\n\r\n <div *ngFor=\"let item of orderedSelection; let i = index\"\r\n class=\"gcc__sel-item\"\r\n cdkDrag\r\n [cdkDragData]=\"item\">\r\n\r\n <div class=\"gcc__sel-item__placeholder\" *cdkDragPlaceholder></div>\r\n\r\n <span class=\"gcc__sel-item__drag\" cdkDragHandle>\r\n <i class=\"fa fa-bars\"></i>\r\n </span>\r\n\r\n <span class=\"gcc__sel-item__pos\">{{ i + 1 }}</span>\r\n\r\n <span class=\"gcc__sel-item__code\"\r\n [class.gcc__sel-item__code--cf]=\"item.ColumnSourceType === 2\"\r\n [title]=\"item.ColumnKey\">\r\n {{ item.ColumnKey }}\r\n </span>\r\n\r\n <input class=\"gcc__sel-item__label\" type=\"text\"\r\n [placeholder]=\"getCatalogLabel(item)\"\r\n [(ngModel)]=\"item.Label\"\r\n (click)=\"$event.stopPropagation()\"\r\n title=\"\u00C9tiquette personnalis\u00E9e\">\r\n\r\n <!-- Perimeter scope: allowed flag -->\r\n <ng-container *ngIf=\"isPerimeter\">\r\n <label class=\"gcc__flag\" (click)=\"$event.stopPropagation()\">\r\n <input type=\"checkbox\" [(ngModel)]=\"item.IsAllowed\" title=\"Autoris\u00E9\">\r\n </label>\r\n </ng-container>\r\n\r\n <!-- Always: locked flag -->\r\n <label class=\"gcc__flag\" (click)=\"$event.stopPropagation()\">\r\n <input type=\"checkbox\" [(ngModel)]=\"item.IsLocked\" title=\"Verrouill\u00E9\">\r\n </label>\r\n\r\n <button class=\"gcc__sel-item__remove\" type=\"button\"\r\n (click)=\"removeFromSelection(item); $event.stopPropagation()\"\r\n title=\"Retirer\">&#x2715;</button>\r\n </div>\r\n\r\n </div>\r\n\r\n <!-- Footer / save -->\r\n <div class=\"gcc__sel-footer\">\r\n <span class=\"gcc__sel-footer__info\">\r\n <ng-container *ngIf=\"selectedCount > 0\">\r\n {{ selectedCount }} colonne(s) \u2014 glissez pour r\u00E9ordonner\r\n </ng-container>\r\n </span>\r\n <button class=\"btn btn-primary btn-sm\" type=\"button\" (click)=\"save()\" [disabled]=\"!canSave\">\r\n <i class=\"fa\"\r\n [class.fa-save]=\"!isSaving\"\r\n [class.fa-circle-o-notch]=\"isSaving\"\r\n [class.fa-spin]=\"isSaving\"></i>\r\n &nbsp;Enregistrer\r\n </button>\r\n </div>\r\n </div>\r\n\r\n </div><!-- /.gcc__panels -->\r\n </div><!-- /.gcc__editor -->\r\n\r\n </ng-container>\r\n\r\n <ng-template #noProfileTpl>\r\n <div class=\"gcc__hint\">\r\n <i class=\"fa fa-arrow-left\"></i>&nbsp;S\u00E9lectionnez ou cr\u00E9ez un profil\r\n </div>\r\n </ng-template>\r\n\r\n </div><!-- /.gcc__body -->\r\n</div>\r\n", styles: [".gcc{display:flex;flex-direction:column;height:100%;overflow:hidden;padding:1rem;box-sizing:border-box;gap:.75rem}.gcc__toolbar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.75rem;flex-shrink:0}.gcc__field{display:flex;flex-direction:column;gap:.25rem}.gcc__field label{font-size:.75rem;font-weight:600;color:#6c757d}.gcc__field input,.gcc__field select{min-width:9rem;padding:.35rem .5rem;border:1px solid #ced4da;border-radius:.25rem;font-size:.85rem}.gcc__message{padding:.5rem .75rem;background:#eef3f8;border-left:3px solid #4465C9;border-radius:.25rem;font-size:.85rem;flex-shrink:0}.gcc__body{flex:1;display:flex;gap:0;overflow:hidden;min-height:0;border:1px solid #e9ecef;border-radius:.25rem;background:#fff}.gcc__panel-hd{display:flex;align-items:center;justify-content:space-between;padding:.4rem .75rem;background:#f8f9fa;border-bottom:1px solid #e9ecef;flex-shrink:0}.gcc__panel-title{font-size:.8rem;font-weight:600;display:flex;align-items:center;gap:6px}.gcc__panel-label{font-size:.75rem;font-weight:600;color:#495057}.gcc__count{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:16px;padding:0 5px;background:#4465c91f;color:#4465c9;border-radius:20px;font-size:10px;font-weight:700}.gcc__badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:16px;padding:0 5px;background:#4465c91a;color:#4465c9;border-radius:20px;font-size:10px;font-weight:700}.gcc__badge--primary{background:#4465c9;color:#fff}.gcc__muted{color:#6c757d;font-size:.8rem}.gcc__fw-normal{font-weight:400}.gcc__configs{display:flex;flex-direction:column;flex:0 0 220px;border-right:1px solid #e9ecef;overflow:hidden}.gcc__list-scroll{flex:1;overflow:auto}.gcc__table{width:100%;border-collapse:collapse}.gcc__table th,.gcc__table td{padding:.35rem .6rem;border-bottom:1px solid #e9ecef;text-align:left;font-size:.78rem}.gcc__table th{font-weight:600;color:#495057;background:#f8f9fa;position:sticky;top:0;z-index:1}.gcc__config-row{cursor:pointer;transition:background .1s}.gcc__config-row:hover{background:#4465c90a}.gcc__config-row--selected{background:#4465c914;border-left:3px solid #4465C9}.gcc__config-row--selected td:first-child{padding-left:calc(.6rem - 3px)}.gcc__key{font-family:monospace;font-weight:600;color:#4465c9;font-size:.78rem}.gcc__scope-badge{display:inline-block;padding:1px 5px;border-radius:20px;background:#4465c91a;color:#4465c9;font-size:9px;font-weight:700;text-transform:uppercase}.gcc__actions-cell{text-align:right;width:28px}.gcc__del-btn{background:none;border:none;color:#adb5bd;cursor:pointer;padding:2px 4px;border-radius:3px;font-size:.72rem;transition:color .1s}.gcc__del-btn:hover{color:#dc3545}.gcc__spinner{display:flex;align-items:center;gap:8px;padding:1rem .75rem;color:#6c757d;font-size:.8rem}.gcc__empty{padding:1.25rem .75rem;color:#6c757d;font-style:italic;font-size:.8rem}.gcc__editor{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}.gcc__editor-hd{display:flex;align-items:center;padding:.4rem .75rem;background:#f8f9fa;border-bottom:1px solid #e9ecef;flex-shrink:0}.gcc__loading{display:flex;align-items:center;gap:8px;padding:1.5rem 1rem;color:#6c757d;font-size:.85rem;flex-shrink:0}.gcc__spinner-icon{font-size:1rem}.gcc__panels{flex:1;display:flex;overflow:hidden;min-height:0}.gcc__groups{display:flex;flex-direction:column;flex:0 0 160px;border-right:1px solid #e9ecef;overflow:hidden}.gcc__group-list{list-style:none;margin:0;padding:0;flex:1;overflow-y:auto}.gcc__group-item{display:flex;align-items:center;justify-content:space-between;padding:.4rem .6rem;cursor:pointer;font-size:.78rem;border-bottom:1px solid #e9ecef;transition:background .1s}.gcc__group-item:hover{background:#4465c90a}.gcc__group-item--active{background:#4465c914;font-weight:600;color:#4465c9}.gcc__group-item--standard .gcc__group-item__name{color:#4465c9}.gcc__group-item--custom .gcc__group-item__name{color:#6b7fd4}.gcc__group-item__name{flex:1}.gcc__group-meta{display:flex;align-items:center;gap:3px}.gcc__browse{display:flex;flex-direction:column;flex:1;border-right:1px solid #e9ecef;overflow:hidden;min-width:0}.gcc__search{height:26px;padding:0 .5rem;border:1px solid #ced4da;border-radius:.2rem;font-size:.78rem;width:140px}.gcc__table-wrap{flex:1;overflow:auto}.gcc__table-wrap::-webkit-scrollbar{width:5px}.gcc__table-wrap::-webkit-scrollbar-track{background:transparent}.gcc__table-wrap::-webkit-scrollbar-thumb{background:#e9ecef;border-radius:3px}.gcc__browse-table{width:100%;border-collapse:collapse}.gcc__browse-table th,.gcc__browse-table td{padding:.3rem .5rem;border-bottom:1px solid #e9ecef;text-align:left;font-size:.78rem}.gcc__browse-table th{font-weight:600;color:#495057;background:#f8f9fa;position:sticky;top:0;z-index:1}.gcc__browse-row{cursor:pointer;transition:background .1s}.gcc__browse-row:hover{background:#4465c90a}.gcc__browse-row--selected{background:#4465c914}.gcc__browse-row--custom .gcc__col-key{color:#6b7fd4}.gcc__col-check{width:28px;text-align:center}.gcc__col-key{font-family:monospace;font-size:11px;font-weight:600;color:#4465c9;width:130px}.gcc__browse-empty{padding:1rem .75rem;color:#6c757d;font-style:italic;font-size:.78rem}.gcc__selection{display:flex;flex-direction:column;flex:0 0 380px;overflow:hidden}.gcc__sel-legend{display:flex;align-items:center;padding:3px .5rem;background:#f8f9fa;border-bottom:1px solid #e9ecef;font-size:9px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#6c757d;flex-shrink:0;gap:0}.gcc__sel-legend__drag{width:20px;flex-shrink:0}.gcc__sel-legend__pos{width:22px;flex-shrink:0;text-align:center}.gcc__sel-legend__code{width:80px;flex-shrink:0;padding-left:2px}.gcc__sel-legend__label{flex:1;min-width:0}.gcc__sel-legend__flag{width:36px;text-align:center;flex-shrink:0}.gcc__sel-legend__width{width:50px;flex-shrink:0;padding-left:2px}.gcc__sel-legend__remove{width:22px;flex-shrink:0}.gcc__sel-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;color:#6c757d;gap:.5rem;font-size:.8rem}.gcc__sel-empty__icon{font-size:2rem;opacity:.3}.gcc__sel-empty p{margin:0}.gcc__sel-list{flex:1;overflow-y:auto}.gcc__sel-list::-webkit-scrollbar{width:4px}.gcc__sel-list::-webkit-scrollbar-track{background:transparent}.gcc__sel-list::-webkit-scrollbar-thumb{background:#e9ecef;border-radius:3px}.gcc__sel-item{display:flex;align-items:center;padding:4px .5rem;border-bottom:1px solid #e9ecef;background:#fff;-webkit-user-select:none;user-select:none;gap:0;transition:background .1s}.gcc__sel-item:hover{background:#4465c908}.gcc__sel-item.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.gcc__sel-item__placeholder{height:32px;background:#4465c90f;border:1px dashed #4465C9;border-radius:2px;flex:1}.gcc__sel-item__drag{width:20px;flex-shrink:0;color:#ced4da;cursor:grab;font-size:11px;display:flex;align-items:center;justify-content:center}.gcc__sel-item__drag:hover{color:#4465c9}.gcc__sel-item__drag:active{cursor:grabbing}.gcc__sel-item__pos{width:22px;flex-shrink:0;font-size:9px;color:#6c757d;text-align:center}.gcc__sel-item__code{width:80px;flex-shrink:0;font-family:monospace;font-size:10px;font-weight:600;color:#4465c9;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-left:2px}.gcc__sel-item__code--cf{color:#6b7fd4}.gcc__sel-item__label{flex:1;min-width:0;height:22px;padding:0 4px;border:1px solid transparent;border-radius:3px;font-size:11px;color:#343a40;background:transparent;outline:none;transition:border-color .1s,background .1s}.gcc__sel-item__label::placeholder{color:#6c757d;font-style:italic}.gcc__sel-item__label:hover{border-color:#d1d8de;background:#f8f9fa}.gcc__sel-item__label:focus{border-color:#4465c9;background:#fff}.gcc__sel-item__remove{width:22px;flex-shrink:0;background:none;border:none;color:#adb5bd;cursor:pointer;font-size:11px;padding:0;text-align:center;transition:color .1s}.gcc__sel-item__remove:hover{color:#dc3545}.gcc__sel-list.cdk-drop-list-dragging .gcc__sel-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.gcc__flag{width:36px;flex-shrink:0;display:flex;align-items:center;justify-content:center;cursor:pointer;margin:0}.gcc__flag input[type=checkbox]{cursor:pointer}.gcc__item-width{width:46px;flex-shrink:0;padding:1px 3px;border:1px solid #ced4da;border-radius:3px;font-size:10px;text-align:right}.gcc__sel-footer{display:flex;align-items:center;justify-content:space-between;padding:.4rem .75rem;background:#f8f9fa;border-top:1px solid #e9ecef;flex-shrink:0}.gcc__sel-footer__info{font-size:.75rem;color:#6c757d;font-style:italic}.gcc__hint{display:flex;align-items:center;justify-content:center;flex:1;color:#6c757d;font-style:italic;font-size:.85rem}\n"], dependencies: [{ kind: "directive", type: i2$1.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i2$1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i2$1.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i2$1.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i4.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], encapsulation: i0.ViewEncapsulation.None }); }
4493
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: PresentationProfileColumnComponent, isStandalone: false, selector: "alg-pp-column", ngImport: i0, template: "<div class=\"gcc\">\n\n <!-- \u2500\u2500 SCOPE SECTION TABS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <div class=\"gcc__sections\">\n <button *ngFor=\"let sec of scopeSections\"\n class=\"gcc__section-tab\"\n [class.gcc__section-tab--active]=\"activeSection === sec.scope\"\n type=\"button\"\n (click)=\"setSection(sec.scope)\">\n <i class=\"fa\" [ngClass]=\"'fa-' + sec.icon\"></i>&nbsp;{{ sec.label }}\n </button>\n </div>\n\n <!-- \u2500\u2500 FILTER TOOLBAR \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <div class=\"gcc__toolbar\">\n <div class=\"gcc__field\">\n <label>Finalit\u00E9</label>\n <select [(ngModel)]=\"filterPurpose\" (ngModelChange)=\"search()\">\n <option *ngFor=\"let p of purposeOptions\" [ngValue]=\"p.value\">{{ p.label }}</option>\n </select>\n </div>\n <div class=\"gcc__field\">\n <label>Cl\u00E9 de grille</label>\n <input type=\"text\" [(ngModel)]=\"filterKey\" placeholder=\"ex. PDTV\" (keydown.enter)=\"search()\" />\n </div>\n <div class=\"gcc__field\" *ngIf=\"filterIsPerimeter\">\n <label>{{ scopeIdLabel }}</label>\n <input type=\"number\" [(ngModel)]=\"filterScopeId\" (keydown.enter)=\"search()\" />\n </div>\n <button class=\"btn btn-secondary\" (click)=\"search()\" [disabled]=\"isLoadingList\">\n <i class=\"fa fa-search\"></i>&nbsp;Rechercher\n </button>\n </div>\n\n <div *ngIf=\"message\" class=\"gcc__message\">{{ message }}</div>\n\n <!-- \u2500\u2500 4-PANEL BODY \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <div class=\"gcc__body\">\n\n <!-- \u2500\u2500 Panel 1: Profile list (left sidebar) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <div class=\"gcc__configs\">\n <div class=\"gcc__panel-hd\">\n <span class=\"gcc__panel-title\">\n Profils&nbsp;<span class=\"gcc__count\">{{ profiles.length }}</span>\n </span>\n <button class=\"btn btn-sm btn-primary\" (click)=\"newProfile()\" title=\"Nouveau profil\">\n <i class=\"fa fa-plus\"></i>\n </button>\n </div>\n\n <div class=\"gcc__list-scroll\">\n <div *ngIf=\"isLoadingList\" class=\"gcc__spinner\">\n <i class=\"fa fa-circle-o-notch fa-spin\"></i>&nbsp;Chargement\u2026\n </div>\n <p *ngIf=\"!isLoadingList && profiles.length === 0\" class=\"gcc__empty\">\n Aucun profil trouv\u00E9.\n </p>\n <table *ngIf=\"!isLoadingList && profiles.length > 0\" class=\"gcc__table\">\n <thead>\n <tr>\n <th>Cl\u00E9</th>\n <th>Finalit\u00E9</th>\n <th *ngIf=\"filterIsPerimeter\">P\u00E9rim\u00E8tre</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let p of profiles\"\n class=\"gcc__config-row\"\n [class.gcc__config-row--selected]=\"activeProfile?.Id === p.Id\"\n (click)=\"selectProfile(p)\">\n <td class=\"gcc__key\">{{ p.MetaEntityKey }}</td>\n <td class=\"gcc__muted\">{{ getPurposeLabel(p.PresentationProfilePurpose) }}</td>\n <td *ngIf=\"filterIsPerimeter\" class=\"gcc__muted\">#{{ p.ScopeId }}</td>\n <td class=\"gcc__actions-cell\">\n <button class=\"gcc__del-btn\" (click)=\"deleteProfile(p, $event)\" title=\"Supprimer\">\n <i class=\"fa fa-trash\"></i>\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n\n <!-- \u2500\u2500 Panels 2/3/4: only when a profile is active \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <ng-container *ngIf=\"activeProfile; else noProfileTpl\">\n\n <div class=\"gcc__editor\">\n\n <div class=\"gcc__editor-hd\">\n <span class=\"gcc__panel-title\">\n {{ activeProfile.MetaEntityKey }}\n <span class=\"gcc__muted gcc__fw-normal\">\u00B7 {{ getPurposeLabel(activeProfile.PresentationProfilePurpose) }}</span>\n <span *ngIf=\"activeProfile.ScopeId != null\" class=\"gcc__muted gcc__fw-normal\">&nbsp;#{{ activeProfile.ScopeId }}</span>\n <span *ngIf=\"selectedCount > 0\" class=\"gcc__badge gcc__badge--primary\">{{ selectedCount }}</span>\n </span>\n </div>\n\n <div *ngIf=\"isLoading\" class=\"gcc__loading\">\n <span class=\"gcc__spinner-icon fa fa-circle-o-notch fa-spin\"></span>\n Chargement des colonnes\u2026\n </div>\n\n <div *ngIf=\"!isLoading\" class=\"gcc__panels\">\n\n <!-- \u2500\u2500 Panel 2: Group selector \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <div class=\"gcc__groups\">\n <div class=\"gcc__panel-hd\">\n <span class=\"gcc__panel-label\">Sections</span>\n </div>\n <ul class=\"gcc__group-list\">\n <li class=\"gcc__group-item\"\n [class.gcc__group-item--active]=\"selectedGroup === null\"\n (click)=\"selectGroup(null)\">\n <span class=\"gcc__group-item__name\">Toutes les colonnes</span>\n <span class=\"gcc__badge\">{{ allItems.length }}</span>\n </li>\n <li *ngFor=\"let group of groups\"\n class=\"gcc__group-item\"\n [class.gcc__group-item--active]=\"selectedGroup?.id === group.id\"\n [class.gcc__group-item--standard]=\"group.id === 'standard'\"\n [class.gcc__group-item--custom]=\"group.isCustom\"\n (click)=\"selectGroup(group)\">\n <span class=\"gcc__group-item__name\">{{ group.label }}</span>\n <div class=\"gcc__group-meta\">\n <span *ngIf=\"getGroupSelectedCount(group) > 0\" class=\"gcc__badge gcc__badge--primary\">{{ getGroupSelectedCount(group) }}</span>\n <span class=\"gcc__badge\">{{ getGroupCount(group) }}</span>\n </div>\n </li>\n </ul>\n </div>\n\n <!-- \u2500\u2500 Panel 3: Catalog browse \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <div class=\"gcc__browse\">\n <div class=\"gcc__panel-hd\">\n <span class=\"gcc__panel-label\">\n {{ selectedGroup == null ? 'Toutes' : selectedGroup.label }}\n </span>\n <input class=\"gcc__search\" type=\"text\" placeholder=\"Rechercher\u2026\"\n [(ngModel)]=\"searchText\" (ngModelChange)=\"onSearch()\">\n </div>\n\n <div class=\"gcc__table-wrap\">\n <table class=\"gcc__browse-table\">\n <thead>\n <tr>\n <th class=\"gcc__col-check\">\n <input type=\"checkbox\"\n [checked]=\"allVisibleSelected\"\n [indeterminate]=\"someVisibleSelected\"\n (change)=\"toggleAll()\"\n title=\"Tout s\u00E9lectionner / d\u00E9s\u00E9lectionner\">\n </th>\n <th class=\"gcc__col-key\">Cl\u00E9</th>\n <th>Colonne</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of filteredItems\"\n class=\"gcc__browse-row\"\n [class.gcc__browse-row--selected]=\"isSelected(item)\"\n [class.gcc__browse-row--custom]=\"item.ColumnSourceType === 2\"\n (click)=\"toggleItem(item)\">\n <td class=\"gcc__col-check\" (click)=\"$event.stopPropagation()\">\n <input type=\"checkbox\" [checked]=\"isSelected(item)\" (change)=\"toggleItem(item)\">\n </td>\n <td class=\"gcc__col-key\">{{ item.ColumnKey }}</td>\n <td class=\"gcc__col-name\">{{ item.Label ?? item.ColumnKey }}</td>\n </tr>\n <tr *ngIf=\"filteredItems.length === 0\">\n <td colspan=\"3\" class=\"gcc__browse-empty\">Aucune colonne trouv\u00E9e</td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n\n <!-- \u2500\u2500 Panel 4: Ordered selection with admin flags \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <div class=\"gcc__selection\">\n <div class=\"gcc__panel-hd\">\n <span class=\"gcc__panel-label\">Colonnes s\u00E9lectionn\u00E9es</span>\n <span *ngIf=\"selectedCount > 0\" class=\"gcc__badge gcc__badge--primary\">{{ selectedCount }}</span>\n </div>\n\n <div *ngIf=\"orderedSelection.length > 0\" class=\"gcc__sel-legend\">\n <span class=\"gcc__sel-legend__drag\"></span>\n <span class=\"gcc__sel-legend__pos\">#</span>\n <span class=\"gcc__sel-legend__code\">Cl\u00E9</span>\n <span class=\"gcc__sel-legend__label\">\u00C9tiquette</span>\n <ng-container *ngIf=\"isPerimeter\">\n <span class=\"gcc__sel-legend__flag\">Aut.</span>\n </ng-container>\n <span class=\"gcc__sel-legend__flag\">Ver.</span>\n <span class=\"gcc__sel-legend__remove\"></span>\n </div>\n\n <div *ngIf=\"orderedSelection.length === 0\" class=\"gcc__sel-empty\">\n <span class=\"fa fa-columns gcc__sel-empty__icon\"></span>\n <p>Cochez des colonnes \u00E0 gauche</p>\n </div>\n\n <div *ngIf=\"orderedSelection.length > 0\"\n class=\"gcc__sel-list\"\n cdkDropList\n [cdkDropListData]=\"orderedSelection\"\n (cdkDropListDropped)=\"onDrop($event)\">\n\n <div *ngFor=\"let item of orderedSelection; let i = index\"\n class=\"gcc__sel-item\"\n cdkDrag\n [cdkDragData]=\"item\">\n\n <div class=\"gcc__sel-item__placeholder\" *cdkDragPlaceholder></div>\n\n <span class=\"gcc__sel-item__drag\" cdkDragHandle>\n <i class=\"fa fa-bars\"></i>\n </span>\n\n <span class=\"gcc__sel-item__pos\">{{ i + 1 }}</span>\n\n <span class=\"gcc__sel-item__code\"\n [class.gcc__sel-item__code--cf]=\"item.ColumnSourceType === 2\"\n [title]=\"item.ColumnKey\">\n {{ item.ColumnKey }}\n </span>\n\n <input class=\"gcc__sel-item__label\" type=\"text\"\n [placeholder]=\"getCatalogLabel(item)\"\n [(ngModel)]=\"item.Label\"\n (click)=\"$event.stopPropagation()\"\n title=\"\u00C9tiquette personnalis\u00E9e\">\n\n <!-- Perimeter scope: allowed flag -->\n <ng-container *ngIf=\"isPerimeter\">\n <label class=\"gcc__flag\" (click)=\"$event.stopPropagation()\">\n <input type=\"checkbox\" [(ngModel)]=\"item.IsAllowed\" title=\"Autoris\u00E9\">\n </label>\n </ng-container>\n\n <!-- Always: locked flag -->\n <label class=\"gcc__flag\" (click)=\"$event.stopPropagation()\">\n <input type=\"checkbox\" [(ngModel)]=\"item.IsLocked\" title=\"Verrouill\u00E9\">\n </label>\n\n <button class=\"gcc__sel-item__remove\" type=\"button\"\n (click)=\"removeFromSelection(item); $event.stopPropagation()\"\n title=\"Retirer\">&#x2715;</button>\n </div>\n\n </div>\n\n <!-- Footer / save -->\n <div class=\"gcc__sel-footer\">\n <span class=\"gcc__sel-footer__info\">\n <ng-container *ngIf=\"selectedCount > 0\">\n {{ selectedCount }} colonne(s) \u2014 glissez pour r\u00E9ordonner\n </ng-container>\n </span>\n <button class=\"btn btn-primary btn-sm\" type=\"button\" (click)=\"save()\" [disabled]=\"!canSave\">\n <i class=\"fa\"\n [class.fa-save]=\"!isSaving\"\n [class.fa-circle-o-notch]=\"isSaving\"\n [class.fa-spin]=\"isSaving\"></i>\n &nbsp;Enregistrer\n </button>\n </div>\n </div>\n\n </div><!-- /.gcc__panels -->\n </div><!-- /.gcc__editor -->\n\n </ng-container>\n\n <ng-template #noProfileTpl>\n <div class=\"gcc__hint\">\n <i class=\"fa fa-arrow-left\"></i>&nbsp;S\u00E9lectionnez ou cr\u00E9ez un profil\n </div>\n </ng-template>\n\n </div><!-- /.gcc__body -->\n</div>\n", styles: [".gcc{display:flex;flex-direction:column;height:100%;overflow:hidden;padding:1rem;box-sizing:border-box;gap:.75rem}.gcc__toolbar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.75rem;flex-shrink:0}.gcc__field{display:flex;flex-direction:column;gap:.25rem}.gcc__field label{font-size:.75rem;font-weight:600;color:#6c757d}.gcc__field input,.gcc__field select{min-width:9rem;padding:.35rem .5rem;border:1px solid #ced4da;border-radius:.25rem;font-size:.85rem}.gcc__message{padding:.5rem .75rem;background:#eef3f8;border-left:3px solid #4465C9;border-radius:.25rem;font-size:.85rem;flex-shrink:0}.gcc__body{flex:1;display:flex;gap:0;overflow:hidden;min-height:0;border:1px solid #e9ecef;border-radius:.25rem;background:#fff}.gcc__panel-hd{display:flex;align-items:center;justify-content:space-between;padding:.4rem .75rem;background:#f8f9fa;border-bottom:1px solid #e9ecef;flex-shrink:0}.gcc__panel-title{font-size:.8rem;font-weight:600;display:flex;align-items:center;gap:6px}.gcc__panel-label{font-size:.75rem;font-weight:600;color:#495057}.gcc__count{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:16px;padding:0 5px;background:#4465c91f;color:#4465c9;border-radius:20px;font-size:10px;font-weight:700}.gcc__badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:16px;padding:0 5px;background:#4465c91a;color:#4465c9;border-radius:20px;font-size:10px;font-weight:700}.gcc__badge--primary{background:#4465c9;color:#fff}.gcc__muted{color:#6c757d;font-size:.8rem}.gcc__fw-normal{font-weight:400}.gcc__configs{display:flex;flex-direction:column;flex:0 0 220px;border-right:1px solid #e9ecef;overflow:hidden}.gcc__list-scroll{flex:1;overflow:auto}.gcc__table{width:100%;border-collapse:collapse}.gcc__table th,.gcc__table td{padding:.35rem .6rem;border-bottom:1px solid #e9ecef;text-align:left;font-size:.78rem}.gcc__table th{font-weight:600;color:#495057;background:#f8f9fa;position:sticky;top:0;z-index:1}.gcc__config-row{cursor:pointer;transition:background .1s}.gcc__config-row:hover{background:#4465c90a}.gcc__config-row--selected{background:#4465c914;border-left:3px solid #4465C9}.gcc__config-row--selected td:first-child{padding-left:calc(.6rem - 3px)}.gcc__key{font-family:monospace;font-weight:600;color:#4465c9;font-size:.78rem}.gcc__scope-badge{display:inline-block;padding:1px 5px;border-radius:20px;background:#4465c91a;color:#4465c9;font-size:9px;font-weight:700;text-transform:uppercase}.gcc__actions-cell{text-align:right;width:28px}.gcc__del-btn{background:none;border:none;color:#adb5bd;cursor:pointer;padding:2px 4px;border-radius:3px;font-size:.72rem;transition:color .1s}.gcc__del-btn:hover{color:#dc3545}.gcc__spinner{display:flex;align-items:center;gap:8px;padding:1rem .75rem;color:#6c757d;font-size:.8rem}.gcc__empty{padding:1.25rem .75rem;color:#6c757d;font-style:italic;font-size:.8rem}.gcc__editor{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}.gcc__editor-hd{display:flex;align-items:center;padding:.4rem .75rem;background:#f8f9fa;border-bottom:1px solid #e9ecef;flex-shrink:0}.gcc__loading{display:flex;align-items:center;gap:8px;padding:1.5rem 1rem;color:#6c757d;font-size:.85rem;flex-shrink:0}.gcc__spinner-icon{font-size:1rem}.gcc__panels{flex:1;display:flex;overflow:hidden;min-height:0}.gcc__groups{display:flex;flex-direction:column;flex:0 0 160px;border-right:1px solid #e9ecef;overflow:hidden}.gcc__group-list{list-style:none;margin:0;padding:0;flex:1;overflow-y:auto}.gcc__group-item{display:flex;align-items:center;justify-content:space-between;padding:.4rem .6rem;cursor:pointer;font-size:.78rem;border-bottom:1px solid #e9ecef;transition:background .1s}.gcc__group-item:hover{background:#4465c90a}.gcc__group-item--active{background:#4465c914;font-weight:600;color:#4465c9}.gcc__group-item--standard .gcc__group-item__name{color:#4465c9}.gcc__group-item--custom .gcc__group-item__name{color:#6b7fd4}.gcc__group-item__name{flex:1}.gcc__group-meta{display:flex;align-items:center;gap:3px}.gcc__browse{display:flex;flex-direction:column;flex:1;border-right:1px solid #e9ecef;overflow:hidden;min-width:0}.gcc__search{height:26px;padding:0 .5rem;border:1px solid #ced4da;border-radius:.2rem;font-size:.78rem;width:140px}.gcc__table-wrap{flex:1;overflow:auto}.gcc__table-wrap::-webkit-scrollbar{width:5px}.gcc__table-wrap::-webkit-scrollbar-track{background:transparent}.gcc__table-wrap::-webkit-scrollbar-thumb{background:#e9ecef;border-radius:3px}.gcc__browse-table{width:100%;border-collapse:collapse}.gcc__browse-table th,.gcc__browse-table td{padding:.3rem .5rem;border-bottom:1px solid #e9ecef;text-align:left;font-size:.78rem}.gcc__browse-table th{font-weight:600;color:#495057;background:#f8f9fa;position:sticky;top:0;z-index:1}.gcc__browse-row{cursor:pointer;transition:background .1s}.gcc__browse-row:hover{background:#4465c90a}.gcc__browse-row--selected{background:#4465c914}.gcc__browse-row--custom .gcc__col-key{color:#6b7fd4}.gcc__col-check{width:28px;text-align:center}.gcc__col-key{font-family:monospace;font-size:11px;font-weight:600;color:#4465c9;width:130px}.gcc__browse-empty{padding:1rem .75rem;color:#6c757d;font-style:italic;font-size:.78rem}.gcc__selection{display:flex;flex-direction:column;flex:0 0 380px;overflow:hidden}.gcc__sel-legend{display:flex;align-items:center;padding:3px .5rem;background:#f8f9fa;border-bottom:1px solid #e9ecef;font-size:9px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#6c757d;flex-shrink:0;gap:0}.gcc__sel-legend__drag{width:20px;flex-shrink:0}.gcc__sel-legend__pos{width:22px;flex-shrink:0;text-align:center}.gcc__sel-legend__code{width:80px;flex-shrink:0;padding-left:2px}.gcc__sel-legend__label{flex:1;min-width:0}.gcc__sel-legend__flag{width:36px;text-align:center;flex-shrink:0}.gcc__sel-legend__width{width:50px;flex-shrink:0;padding-left:2px}.gcc__sel-legend__remove{width:22px;flex-shrink:0}.gcc__sel-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;color:#6c757d;gap:.5rem;font-size:.8rem}.gcc__sel-empty__icon{font-size:2rem;opacity:.3}.gcc__sel-empty p{margin:0}.gcc__sel-list{flex:1;overflow-y:auto}.gcc__sel-list::-webkit-scrollbar{width:4px}.gcc__sel-list::-webkit-scrollbar-track{background:transparent}.gcc__sel-list::-webkit-scrollbar-thumb{background:#e9ecef;border-radius:3px}.gcc__sel-item{display:flex;align-items:center;padding:4px .5rem;border-bottom:1px solid #e9ecef;background:#fff;-webkit-user-select:none;user-select:none;gap:0;transition:background .1s}.gcc__sel-item:hover{background:#4465c908}.gcc__sel-item.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.gcc__sel-item__placeholder{height:32px;background:#4465c90f;border:1px dashed #4465C9;border-radius:2px;flex:1}.gcc__sel-item__drag{width:20px;flex-shrink:0;color:#ced4da;cursor:grab;font-size:11px;display:flex;align-items:center;justify-content:center}.gcc__sel-item__drag:hover{color:#4465c9}.gcc__sel-item__drag:active{cursor:grabbing}.gcc__sel-item__pos{width:22px;flex-shrink:0;font-size:9px;color:#6c757d;text-align:center}.gcc__sel-item__code{width:80px;flex-shrink:0;font-family:monospace;font-size:10px;font-weight:600;color:#4465c9;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-left:2px}.gcc__sel-item__code--cf{color:#6b7fd4}.gcc__sel-item__label{flex:1;min-width:0;height:22px;padding:0 4px;border:1px solid transparent;border-radius:3px;font-size:11px;color:#343a40;background:transparent;outline:none;transition:border-color .1s,background .1s}.gcc__sel-item__label::placeholder{color:#6c757d;font-style:italic}.gcc__sel-item__label:hover{border-color:#d1d8de;background:#f8f9fa}.gcc__sel-item__label:focus{border-color:#4465c9;background:#fff}.gcc__sel-item__remove{width:22px;flex-shrink:0;background:none;border:none;color:#adb5bd;cursor:pointer;font-size:11px;padding:0;text-align:center;transition:color .1s}.gcc__sel-item__remove:hover{color:#dc3545}.gcc__sel-list.cdk-drop-list-dragging .gcc__sel-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.gcc__flag{width:36px;flex-shrink:0;display:flex;align-items:center;justify-content:center;cursor:pointer;margin:0}.gcc__flag input[type=checkbox]{cursor:pointer}.gcc__item-width{width:46px;flex-shrink:0;padding:1px 3px;border:1px solid #ced4da;border-radius:3px;font-size:10px;text-align:right}.gcc__sel-footer{display:flex;align-items:center;justify-content:space-between;padding:.4rem .75rem;background:#f8f9fa;border-top:1px solid #e9ecef;flex-shrink:0}.gcc__sel-footer__info{font-size:.75rem;color:#6c757d;font-style:italic}.gcc__hint{display:flex;align-items:center;justify-content:center;flex:1;color:#6c757d;font-style:italic;font-size:.85rem}\n"], dependencies: [{ kind: "directive", type: i2$1.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i2$1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i2$1.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i2$1.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i4.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], encapsulation: i0.ViewEncapsulation.None }); }
4494
4494
  }
4495
4495
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: PresentationProfileColumnComponent, decorators: [{
4496
4496
  type: Component,
4497
- args: [{ selector: 'alg-pp-column', encapsulation: ViewEncapsulation.None, standalone: false, template: "<div class=\"gcc\">\r\n\r\n <!-- \u2500\u2500 SCOPE SECTION TABS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n <div class=\"gcc__sections\">\r\n <button *ngFor=\"let sec of scopeSections\"\r\n class=\"gcc__section-tab\"\r\n [class.gcc__section-tab--active]=\"activeSection === sec.scope\"\r\n type=\"button\"\r\n (click)=\"setSection(sec.scope)\">\r\n <i class=\"fa\" [ngClass]=\"'fa-' + sec.icon\"></i>&nbsp;{{ sec.label }}\r\n </button>\r\n </div>\r\n\r\n <!-- \u2500\u2500 FILTER TOOLBAR \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n <div class=\"gcc__toolbar\">\r\n <div class=\"gcc__field\">\r\n <label>Finalit\u00E9</label>\r\n <select [(ngModel)]=\"filterPurpose\" (ngModelChange)=\"search()\">\r\n <option *ngFor=\"let p of purposeOptions\" [ngValue]=\"p.value\">{{ p.label }}</option>\r\n </select>\r\n </div>\r\n <div class=\"gcc__field\">\r\n <label>Cl\u00E9 de grille</label>\r\n <input type=\"text\" [(ngModel)]=\"filterKey\" placeholder=\"ex. PDTV\" (keydown.enter)=\"search()\" />\r\n </div>\r\n <div class=\"gcc__field\" *ngIf=\"filterIsPerimeter\">\r\n <label>{{ scopeIdLabel }}</label>\r\n <input type=\"number\" [(ngModel)]=\"filterScopeId\" (keydown.enter)=\"search()\" />\r\n </div>\r\n <button class=\"btn btn-secondary\" (click)=\"search()\" [disabled]=\"isLoadingList\">\r\n <i class=\"fa fa-search\"></i>&nbsp;Rechercher\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"message\" class=\"gcc__message\">{{ message }}</div>\r\n\r\n <!-- \u2500\u2500 4-PANEL BODY \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n <div class=\"gcc__body\">\r\n\r\n <!-- \u2500\u2500 Panel 1: Profile list (left sidebar) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n <div class=\"gcc__configs\">\r\n <div class=\"gcc__panel-hd\">\r\n <span class=\"gcc__panel-title\">\r\n Profils&nbsp;<span class=\"gcc__count\">{{ profiles.length }}</span>\r\n </span>\r\n <button class=\"btn btn-sm btn-primary\" (click)=\"newProfile()\" title=\"Nouveau profil\">\r\n <i class=\"fa fa-plus\"></i>\r\n </button>\r\n </div>\r\n\r\n <div class=\"gcc__list-scroll\">\r\n <div *ngIf=\"isLoadingList\" class=\"gcc__spinner\">\r\n <i class=\"fa fa-circle-o-notch fa-spin\"></i>&nbsp;Chargement\u2026\r\n </div>\r\n <p *ngIf=\"!isLoadingList && profiles.length === 0\" class=\"gcc__empty\">\r\n Aucun profil trouv\u00E9.\r\n </p>\r\n <table *ngIf=\"!isLoadingList && profiles.length > 0\" class=\"gcc__table\">\r\n <thead>\r\n <tr>\r\n <th>Cl\u00E9</th>\r\n <th>Finalit\u00E9</th>\r\n <th *ngIf=\"filterIsPerimeter\">P\u00E9rim\u00E8tre</th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let p of profiles\"\r\n class=\"gcc__config-row\"\r\n [class.gcc__config-row--selected]=\"activeProfile?.Id === p.Id\"\r\n (click)=\"selectProfile(p)\">\r\n <td class=\"gcc__key\">{{ p.MetaEntityKey }}</td>\r\n <td class=\"gcc__muted\">{{ getPurposeLabel(p.PurposeType) }}</td>\r\n <td *ngIf=\"filterIsPerimeter\" class=\"gcc__muted\">#{{ p.ScopeId }}</td>\r\n <td class=\"gcc__actions-cell\">\r\n <button class=\"gcc__del-btn\" (click)=\"deleteProfile(p, $event)\" title=\"Supprimer\">\r\n <i class=\"fa fa-trash\"></i>\r\n </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n\r\n <!-- \u2500\u2500 Panels 2/3/4: only when a profile is active \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n <ng-container *ngIf=\"activeProfile; else noProfileTpl\">\r\n\r\n <div class=\"gcc__editor\">\r\n\r\n <div class=\"gcc__editor-hd\">\r\n <span class=\"gcc__panel-title\">\r\n {{ activeProfile.MetaEntityKey }}\r\n <span class=\"gcc__muted gcc__fw-normal\">\u00B7 {{ getPurposeLabel(activeProfile.PurposeType) }}</span>\r\n <span *ngIf=\"activeProfile.ScopeId != null\" class=\"gcc__muted gcc__fw-normal\">&nbsp;#{{ activeProfile.ScopeId }}</span>\r\n <span *ngIf=\"selectedCount > 0\" class=\"gcc__badge gcc__badge--primary\">{{ selectedCount }}</span>\r\n </span>\r\n </div>\r\n\r\n <div *ngIf=\"isLoading\" class=\"gcc__loading\">\r\n <span class=\"gcc__spinner-icon fa fa-circle-o-notch fa-spin\"></span>\r\n Chargement des colonnes\u2026\r\n </div>\r\n\r\n <div *ngIf=\"!isLoading\" class=\"gcc__panels\">\r\n\r\n <!-- \u2500\u2500 Panel 2: Group selector \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n <div class=\"gcc__groups\">\r\n <div class=\"gcc__panel-hd\">\r\n <span class=\"gcc__panel-label\">Sections</span>\r\n </div>\r\n <ul class=\"gcc__group-list\">\r\n <li class=\"gcc__group-item\"\r\n [class.gcc__group-item--active]=\"selectedGroup === null\"\r\n (click)=\"selectGroup(null)\">\r\n <span class=\"gcc__group-item__name\">Toutes les colonnes</span>\r\n <span class=\"gcc__badge\">{{ allItems.length }}</span>\r\n </li>\r\n <li *ngFor=\"let group of groups\"\r\n class=\"gcc__group-item\"\r\n [class.gcc__group-item--active]=\"selectedGroup?.id === group.id\"\r\n [class.gcc__group-item--standard]=\"group.id === 'standard'\"\r\n [class.gcc__group-item--custom]=\"group.isCustom\"\r\n (click)=\"selectGroup(group)\">\r\n <span class=\"gcc__group-item__name\">{{ group.label }}</span>\r\n <div class=\"gcc__group-meta\">\r\n <span *ngIf=\"getGroupSelectedCount(group) > 0\" class=\"gcc__badge gcc__badge--primary\">{{ getGroupSelectedCount(group) }}</span>\r\n <span class=\"gcc__badge\">{{ getGroupCount(group) }}</span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n <!-- \u2500\u2500 Panel 3: Catalog browse \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n <div class=\"gcc__browse\">\r\n <div class=\"gcc__panel-hd\">\r\n <span class=\"gcc__panel-label\">\r\n {{ selectedGroup == null ? 'Toutes' : selectedGroup.label }}\r\n </span>\r\n <input class=\"gcc__search\" type=\"text\" placeholder=\"Rechercher\u2026\"\r\n [(ngModel)]=\"searchText\" (ngModelChange)=\"onSearch()\">\r\n </div>\r\n\r\n <div class=\"gcc__table-wrap\">\r\n <table class=\"gcc__browse-table\">\r\n <thead>\r\n <tr>\r\n <th class=\"gcc__col-check\">\r\n <input type=\"checkbox\"\r\n [checked]=\"allVisibleSelected\"\r\n [indeterminate]=\"someVisibleSelected\"\r\n (change)=\"toggleAll()\"\r\n title=\"Tout s\u00E9lectionner / d\u00E9s\u00E9lectionner\">\r\n </th>\r\n <th class=\"gcc__col-key\">Cl\u00E9</th>\r\n <th>Colonne</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of filteredItems\"\r\n class=\"gcc__browse-row\"\r\n [class.gcc__browse-row--selected]=\"isSelected(item)\"\r\n [class.gcc__browse-row--custom]=\"item.ColumnSourceType === 2\"\r\n (click)=\"toggleItem(item)\">\r\n <td class=\"gcc__col-check\" (click)=\"$event.stopPropagation()\">\r\n <input type=\"checkbox\" [checked]=\"isSelected(item)\" (change)=\"toggleItem(item)\">\r\n </td>\r\n <td class=\"gcc__col-key\">{{ item.ColumnKey }}</td>\r\n <td class=\"gcc__col-name\">{{ item.Label ?? item.ColumnKey }}</td>\r\n </tr>\r\n <tr *ngIf=\"filteredItems.length === 0\">\r\n <td colspan=\"3\" class=\"gcc__browse-empty\">Aucune colonne trouv\u00E9e</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n\r\n <!-- \u2500\u2500 Panel 4: Ordered selection with admin flags \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n <div class=\"gcc__selection\">\r\n <div class=\"gcc__panel-hd\">\r\n <span class=\"gcc__panel-label\">Colonnes s\u00E9lectionn\u00E9es</span>\r\n <span *ngIf=\"selectedCount > 0\" class=\"gcc__badge gcc__badge--primary\">{{ selectedCount }}</span>\r\n </div>\r\n\r\n <div *ngIf=\"orderedSelection.length > 0\" class=\"gcc__sel-legend\">\r\n <span class=\"gcc__sel-legend__drag\"></span>\r\n <span class=\"gcc__sel-legend__pos\">#</span>\r\n <span class=\"gcc__sel-legend__code\">Cl\u00E9</span>\r\n <span class=\"gcc__sel-legend__label\">\u00C9tiquette</span>\r\n <ng-container *ngIf=\"isPerimeter\">\r\n <span class=\"gcc__sel-legend__flag\">Aut.</span>\r\n </ng-container>\r\n <span class=\"gcc__sel-legend__flag\">Ver.</span>\r\n <span class=\"gcc__sel-legend__remove\"></span>\r\n </div>\r\n\r\n <div *ngIf=\"orderedSelection.length === 0\" class=\"gcc__sel-empty\">\r\n <span class=\"fa fa-columns gcc__sel-empty__icon\"></span>\r\n <p>Cochez des colonnes \u00E0 gauche</p>\r\n </div>\r\n\r\n <div *ngIf=\"orderedSelection.length > 0\"\r\n class=\"gcc__sel-list\"\r\n cdkDropList\r\n [cdkDropListData]=\"orderedSelection\"\r\n (cdkDropListDropped)=\"onDrop($event)\">\r\n\r\n <div *ngFor=\"let item of orderedSelection; let i = index\"\r\n class=\"gcc__sel-item\"\r\n cdkDrag\r\n [cdkDragData]=\"item\">\r\n\r\n <div class=\"gcc__sel-item__placeholder\" *cdkDragPlaceholder></div>\r\n\r\n <span class=\"gcc__sel-item__drag\" cdkDragHandle>\r\n <i class=\"fa fa-bars\"></i>\r\n </span>\r\n\r\n <span class=\"gcc__sel-item__pos\">{{ i + 1 }}</span>\r\n\r\n <span class=\"gcc__sel-item__code\"\r\n [class.gcc__sel-item__code--cf]=\"item.ColumnSourceType === 2\"\r\n [title]=\"item.ColumnKey\">\r\n {{ item.ColumnKey }}\r\n </span>\r\n\r\n <input class=\"gcc__sel-item__label\" type=\"text\"\r\n [placeholder]=\"getCatalogLabel(item)\"\r\n [(ngModel)]=\"item.Label\"\r\n (click)=\"$event.stopPropagation()\"\r\n title=\"\u00C9tiquette personnalis\u00E9e\">\r\n\r\n <!-- Perimeter scope: allowed flag -->\r\n <ng-container *ngIf=\"isPerimeter\">\r\n <label class=\"gcc__flag\" (click)=\"$event.stopPropagation()\">\r\n <input type=\"checkbox\" [(ngModel)]=\"item.IsAllowed\" title=\"Autoris\u00E9\">\r\n </label>\r\n </ng-container>\r\n\r\n <!-- Always: locked flag -->\r\n <label class=\"gcc__flag\" (click)=\"$event.stopPropagation()\">\r\n <input type=\"checkbox\" [(ngModel)]=\"item.IsLocked\" title=\"Verrouill\u00E9\">\r\n </label>\r\n\r\n <button class=\"gcc__sel-item__remove\" type=\"button\"\r\n (click)=\"removeFromSelection(item); $event.stopPropagation()\"\r\n title=\"Retirer\">&#x2715;</button>\r\n </div>\r\n\r\n </div>\r\n\r\n <!-- Footer / save -->\r\n <div class=\"gcc__sel-footer\">\r\n <span class=\"gcc__sel-footer__info\">\r\n <ng-container *ngIf=\"selectedCount > 0\">\r\n {{ selectedCount }} colonne(s) \u2014 glissez pour r\u00E9ordonner\r\n </ng-container>\r\n </span>\r\n <button class=\"btn btn-primary btn-sm\" type=\"button\" (click)=\"save()\" [disabled]=\"!canSave\">\r\n <i class=\"fa\"\r\n [class.fa-save]=\"!isSaving\"\r\n [class.fa-circle-o-notch]=\"isSaving\"\r\n [class.fa-spin]=\"isSaving\"></i>\r\n &nbsp;Enregistrer\r\n </button>\r\n </div>\r\n </div>\r\n\r\n </div><!-- /.gcc__panels -->\r\n </div><!-- /.gcc__editor -->\r\n\r\n </ng-container>\r\n\r\n <ng-template #noProfileTpl>\r\n <div class=\"gcc__hint\">\r\n <i class=\"fa fa-arrow-left\"></i>&nbsp;S\u00E9lectionnez ou cr\u00E9ez un profil\r\n </div>\r\n </ng-template>\r\n\r\n </div><!-- /.gcc__body -->\r\n</div>\r\n", styles: [".gcc{display:flex;flex-direction:column;height:100%;overflow:hidden;padding:1rem;box-sizing:border-box;gap:.75rem}.gcc__toolbar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.75rem;flex-shrink:0}.gcc__field{display:flex;flex-direction:column;gap:.25rem}.gcc__field label{font-size:.75rem;font-weight:600;color:#6c757d}.gcc__field input,.gcc__field select{min-width:9rem;padding:.35rem .5rem;border:1px solid #ced4da;border-radius:.25rem;font-size:.85rem}.gcc__message{padding:.5rem .75rem;background:#eef3f8;border-left:3px solid #4465C9;border-radius:.25rem;font-size:.85rem;flex-shrink:0}.gcc__body{flex:1;display:flex;gap:0;overflow:hidden;min-height:0;border:1px solid #e9ecef;border-radius:.25rem;background:#fff}.gcc__panel-hd{display:flex;align-items:center;justify-content:space-between;padding:.4rem .75rem;background:#f8f9fa;border-bottom:1px solid #e9ecef;flex-shrink:0}.gcc__panel-title{font-size:.8rem;font-weight:600;display:flex;align-items:center;gap:6px}.gcc__panel-label{font-size:.75rem;font-weight:600;color:#495057}.gcc__count{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:16px;padding:0 5px;background:#4465c91f;color:#4465c9;border-radius:20px;font-size:10px;font-weight:700}.gcc__badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:16px;padding:0 5px;background:#4465c91a;color:#4465c9;border-radius:20px;font-size:10px;font-weight:700}.gcc__badge--primary{background:#4465c9;color:#fff}.gcc__muted{color:#6c757d;font-size:.8rem}.gcc__fw-normal{font-weight:400}.gcc__configs{display:flex;flex-direction:column;flex:0 0 220px;border-right:1px solid #e9ecef;overflow:hidden}.gcc__list-scroll{flex:1;overflow:auto}.gcc__table{width:100%;border-collapse:collapse}.gcc__table th,.gcc__table td{padding:.35rem .6rem;border-bottom:1px solid #e9ecef;text-align:left;font-size:.78rem}.gcc__table th{font-weight:600;color:#495057;background:#f8f9fa;position:sticky;top:0;z-index:1}.gcc__config-row{cursor:pointer;transition:background .1s}.gcc__config-row:hover{background:#4465c90a}.gcc__config-row--selected{background:#4465c914;border-left:3px solid #4465C9}.gcc__config-row--selected td:first-child{padding-left:calc(.6rem - 3px)}.gcc__key{font-family:monospace;font-weight:600;color:#4465c9;font-size:.78rem}.gcc__scope-badge{display:inline-block;padding:1px 5px;border-radius:20px;background:#4465c91a;color:#4465c9;font-size:9px;font-weight:700;text-transform:uppercase}.gcc__actions-cell{text-align:right;width:28px}.gcc__del-btn{background:none;border:none;color:#adb5bd;cursor:pointer;padding:2px 4px;border-radius:3px;font-size:.72rem;transition:color .1s}.gcc__del-btn:hover{color:#dc3545}.gcc__spinner{display:flex;align-items:center;gap:8px;padding:1rem .75rem;color:#6c757d;font-size:.8rem}.gcc__empty{padding:1.25rem .75rem;color:#6c757d;font-style:italic;font-size:.8rem}.gcc__editor{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}.gcc__editor-hd{display:flex;align-items:center;padding:.4rem .75rem;background:#f8f9fa;border-bottom:1px solid #e9ecef;flex-shrink:0}.gcc__loading{display:flex;align-items:center;gap:8px;padding:1.5rem 1rem;color:#6c757d;font-size:.85rem;flex-shrink:0}.gcc__spinner-icon{font-size:1rem}.gcc__panels{flex:1;display:flex;overflow:hidden;min-height:0}.gcc__groups{display:flex;flex-direction:column;flex:0 0 160px;border-right:1px solid #e9ecef;overflow:hidden}.gcc__group-list{list-style:none;margin:0;padding:0;flex:1;overflow-y:auto}.gcc__group-item{display:flex;align-items:center;justify-content:space-between;padding:.4rem .6rem;cursor:pointer;font-size:.78rem;border-bottom:1px solid #e9ecef;transition:background .1s}.gcc__group-item:hover{background:#4465c90a}.gcc__group-item--active{background:#4465c914;font-weight:600;color:#4465c9}.gcc__group-item--standard .gcc__group-item__name{color:#4465c9}.gcc__group-item--custom .gcc__group-item__name{color:#6b7fd4}.gcc__group-item__name{flex:1}.gcc__group-meta{display:flex;align-items:center;gap:3px}.gcc__browse{display:flex;flex-direction:column;flex:1;border-right:1px solid #e9ecef;overflow:hidden;min-width:0}.gcc__search{height:26px;padding:0 .5rem;border:1px solid #ced4da;border-radius:.2rem;font-size:.78rem;width:140px}.gcc__table-wrap{flex:1;overflow:auto}.gcc__table-wrap::-webkit-scrollbar{width:5px}.gcc__table-wrap::-webkit-scrollbar-track{background:transparent}.gcc__table-wrap::-webkit-scrollbar-thumb{background:#e9ecef;border-radius:3px}.gcc__browse-table{width:100%;border-collapse:collapse}.gcc__browse-table th,.gcc__browse-table td{padding:.3rem .5rem;border-bottom:1px solid #e9ecef;text-align:left;font-size:.78rem}.gcc__browse-table th{font-weight:600;color:#495057;background:#f8f9fa;position:sticky;top:0;z-index:1}.gcc__browse-row{cursor:pointer;transition:background .1s}.gcc__browse-row:hover{background:#4465c90a}.gcc__browse-row--selected{background:#4465c914}.gcc__browse-row--custom .gcc__col-key{color:#6b7fd4}.gcc__col-check{width:28px;text-align:center}.gcc__col-key{font-family:monospace;font-size:11px;font-weight:600;color:#4465c9;width:130px}.gcc__browse-empty{padding:1rem .75rem;color:#6c757d;font-style:italic;font-size:.78rem}.gcc__selection{display:flex;flex-direction:column;flex:0 0 380px;overflow:hidden}.gcc__sel-legend{display:flex;align-items:center;padding:3px .5rem;background:#f8f9fa;border-bottom:1px solid #e9ecef;font-size:9px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#6c757d;flex-shrink:0;gap:0}.gcc__sel-legend__drag{width:20px;flex-shrink:0}.gcc__sel-legend__pos{width:22px;flex-shrink:0;text-align:center}.gcc__sel-legend__code{width:80px;flex-shrink:0;padding-left:2px}.gcc__sel-legend__label{flex:1;min-width:0}.gcc__sel-legend__flag{width:36px;text-align:center;flex-shrink:0}.gcc__sel-legend__width{width:50px;flex-shrink:0;padding-left:2px}.gcc__sel-legend__remove{width:22px;flex-shrink:0}.gcc__sel-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;color:#6c757d;gap:.5rem;font-size:.8rem}.gcc__sel-empty__icon{font-size:2rem;opacity:.3}.gcc__sel-empty p{margin:0}.gcc__sel-list{flex:1;overflow-y:auto}.gcc__sel-list::-webkit-scrollbar{width:4px}.gcc__sel-list::-webkit-scrollbar-track{background:transparent}.gcc__sel-list::-webkit-scrollbar-thumb{background:#e9ecef;border-radius:3px}.gcc__sel-item{display:flex;align-items:center;padding:4px .5rem;border-bottom:1px solid #e9ecef;background:#fff;-webkit-user-select:none;user-select:none;gap:0;transition:background .1s}.gcc__sel-item:hover{background:#4465c908}.gcc__sel-item.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.gcc__sel-item__placeholder{height:32px;background:#4465c90f;border:1px dashed #4465C9;border-radius:2px;flex:1}.gcc__sel-item__drag{width:20px;flex-shrink:0;color:#ced4da;cursor:grab;font-size:11px;display:flex;align-items:center;justify-content:center}.gcc__sel-item__drag:hover{color:#4465c9}.gcc__sel-item__drag:active{cursor:grabbing}.gcc__sel-item__pos{width:22px;flex-shrink:0;font-size:9px;color:#6c757d;text-align:center}.gcc__sel-item__code{width:80px;flex-shrink:0;font-family:monospace;font-size:10px;font-weight:600;color:#4465c9;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-left:2px}.gcc__sel-item__code--cf{color:#6b7fd4}.gcc__sel-item__label{flex:1;min-width:0;height:22px;padding:0 4px;border:1px solid transparent;border-radius:3px;font-size:11px;color:#343a40;background:transparent;outline:none;transition:border-color .1s,background .1s}.gcc__sel-item__label::placeholder{color:#6c757d;font-style:italic}.gcc__sel-item__label:hover{border-color:#d1d8de;background:#f8f9fa}.gcc__sel-item__label:focus{border-color:#4465c9;background:#fff}.gcc__sel-item__remove{width:22px;flex-shrink:0;background:none;border:none;color:#adb5bd;cursor:pointer;font-size:11px;padding:0;text-align:center;transition:color .1s}.gcc__sel-item__remove:hover{color:#dc3545}.gcc__sel-list.cdk-drop-list-dragging .gcc__sel-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.gcc__flag{width:36px;flex-shrink:0;display:flex;align-items:center;justify-content:center;cursor:pointer;margin:0}.gcc__flag input[type=checkbox]{cursor:pointer}.gcc__item-width{width:46px;flex-shrink:0;padding:1px 3px;border:1px solid #ced4da;border-radius:3px;font-size:10px;text-align:right}.gcc__sel-footer{display:flex;align-items:center;justify-content:space-between;padding:.4rem .75rem;background:#f8f9fa;border-top:1px solid #e9ecef;flex-shrink:0}.gcc__sel-footer__info{font-size:.75rem;color:#6c757d;font-style:italic}.gcc__hint{display:flex;align-items:center;justify-content:center;flex:1;color:#6c757d;font-style:italic;font-size:.85rem}\n"] }]
4497
+ args: [{ selector: 'alg-pp-column', encapsulation: ViewEncapsulation.None, standalone: false, template: "<div class=\"gcc\">\n\n <!-- \u2500\u2500 SCOPE SECTION TABS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <div class=\"gcc__sections\">\n <button *ngFor=\"let sec of scopeSections\"\n class=\"gcc__section-tab\"\n [class.gcc__section-tab--active]=\"activeSection === sec.scope\"\n type=\"button\"\n (click)=\"setSection(sec.scope)\">\n <i class=\"fa\" [ngClass]=\"'fa-' + sec.icon\"></i>&nbsp;{{ sec.label }}\n </button>\n </div>\n\n <!-- \u2500\u2500 FILTER TOOLBAR \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <div class=\"gcc__toolbar\">\n <div class=\"gcc__field\">\n <label>Finalit\u00E9</label>\n <select [(ngModel)]=\"filterPurpose\" (ngModelChange)=\"search()\">\n <option *ngFor=\"let p of purposeOptions\" [ngValue]=\"p.value\">{{ p.label }}</option>\n </select>\n </div>\n <div class=\"gcc__field\">\n <label>Cl\u00E9 de grille</label>\n <input type=\"text\" [(ngModel)]=\"filterKey\" placeholder=\"ex. PDTV\" (keydown.enter)=\"search()\" />\n </div>\n <div class=\"gcc__field\" *ngIf=\"filterIsPerimeter\">\n <label>{{ scopeIdLabel }}</label>\n <input type=\"number\" [(ngModel)]=\"filterScopeId\" (keydown.enter)=\"search()\" />\n </div>\n <button class=\"btn btn-secondary\" (click)=\"search()\" [disabled]=\"isLoadingList\">\n <i class=\"fa fa-search\"></i>&nbsp;Rechercher\n </button>\n </div>\n\n <div *ngIf=\"message\" class=\"gcc__message\">{{ message }}</div>\n\n <!-- \u2500\u2500 4-PANEL BODY \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <div class=\"gcc__body\">\n\n <!-- \u2500\u2500 Panel 1: Profile list (left sidebar) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <div class=\"gcc__configs\">\n <div class=\"gcc__panel-hd\">\n <span class=\"gcc__panel-title\">\n Profils&nbsp;<span class=\"gcc__count\">{{ profiles.length }}</span>\n </span>\n <button class=\"btn btn-sm btn-primary\" (click)=\"newProfile()\" title=\"Nouveau profil\">\n <i class=\"fa fa-plus\"></i>\n </button>\n </div>\n\n <div class=\"gcc__list-scroll\">\n <div *ngIf=\"isLoadingList\" class=\"gcc__spinner\">\n <i class=\"fa fa-circle-o-notch fa-spin\"></i>&nbsp;Chargement\u2026\n </div>\n <p *ngIf=\"!isLoadingList && profiles.length === 0\" class=\"gcc__empty\">\n Aucun profil trouv\u00E9.\n </p>\n <table *ngIf=\"!isLoadingList && profiles.length > 0\" class=\"gcc__table\">\n <thead>\n <tr>\n <th>Cl\u00E9</th>\n <th>Finalit\u00E9</th>\n <th *ngIf=\"filterIsPerimeter\">P\u00E9rim\u00E8tre</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let p of profiles\"\n class=\"gcc__config-row\"\n [class.gcc__config-row--selected]=\"activeProfile?.Id === p.Id\"\n (click)=\"selectProfile(p)\">\n <td class=\"gcc__key\">{{ p.MetaEntityKey }}</td>\n <td class=\"gcc__muted\">{{ getPurposeLabel(p.PresentationProfilePurpose) }}</td>\n <td *ngIf=\"filterIsPerimeter\" class=\"gcc__muted\">#{{ p.ScopeId }}</td>\n <td class=\"gcc__actions-cell\">\n <button class=\"gcc__del-btn\" (click)=\"deleteProfile(p, $event)\" title=\"Supprimer\">\n <i class=\"fa fa-trash\"></i>\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n\n <!-- \u2500\u2500 Panels 2/3/4: only when a profile is active \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <ng-container *ngIf=\"activeProfile; else noProfileTpl\">\n\n <div class=\"gcc__editor\">\n\n <div class=\"gcc__editor-hd\">\n <span class=\"gcc__panel-title\">\n {{ activeProfile.MetaEntityKey }}\n <span class=\"gcc__muted gcc__fw-normal\">\u00B7 {{ getPurposeLabel(activeProfile.PresentationProfilePurpose) }}</span>\n <span *ngIf=\"activeProfile.ScopeId != null\" class=\"gcc__muted gcc__fw-normal\">&nbsp;#{{ activeProfile.ScopeId }}</span>\n <span *ngIf=\"selectedCount > 0\" class=\"gcc__badge gcc__badge--primary\">{{ selectedCount }}</span>\n </span>\n </div>\n\n <div *ngIf=\"isLoading\" class=\"gcc__loading\">\n <span class=\"gcc__spinner-icon fa fa-circle-o-notch fa-spin\"></span>\n Chargement des colonnes\u2026\n </div>\n\n <div *ngIf=\"!isLoading\" class=\"gcc__panels\">\n\n <!-- \u2500\u2500 Panel 2: Group selector \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <div class=\"gcc__groups\">\n <div class=\"gcc__panel-hd\">\n <span class=\"gcc__panel-label\">Sections</span>\n </div>\n <ul class=\"gcc__group-list\">\n <li class=\"gcc__group-item\"\n [class.gcc__group-item--active]=\"selectedGroup === null\"\n (click)=\"selectGroup(null)\">\n <span class=\"gcc__group-item__name\">Toutes les colonnes</span>\n <span class=\"gcc__badge\">{{ allItems.length }}</span>\n </li>\n <li *ngFor=\"let group of groups\"\n class=\"gcc__group-item\"\n [class.gcc__group-item--active]=\"selectedGroup?.id === group.id\"\n [class.gcc__group-item--standard]=\"group.id === 'standard'\"\n [class.gcc__group-item--custom]=\"group.isCustom\"\n (click)=\"selectGroup(group)\">\n <span class=\"gcc__group-item__name\">{{ group.label }}</span>\n <div class=\"gcc__group-meta\">\n <span *ngIf=\"getGroupSelectedCount(group) > 0\" class=\"gcc__badge gcc__badge--primary\">{{ getGroupSelectedCount(group) }}</span>\n <span class=\"gcc__badge\">{{ getGroupCount(group) }}</span>\n </div>\n </li>\n </ul>\n </div>\n\n <!-- \u2500\u2500 Panel 3: Catalog browse \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <div class=\"gcc__browse\">\n <div class=\"gcc__panel-hd\">\n <span class=\"gcc__panel-label\">\n {{ selectedGroup == null ? 'Toutes' : selectedGroup.label }}\n </span>\n <input class=\"gcc__search\" type=\"text\" placeholder=\"Rechercher\u2026\"\n [(ngModel)]=\"searchText\" (ngModelChange)=\"onSearch()\">\n </div>\n\n <div class=\"gcc__table-wrap\">\n <table class=\"gcc__browse-table\">\n <thead>\n <tr>\n <th class=\"gcc__col-check\">\n <input type=\"checkbox\"\n [checked]=\"allVisibleSelected\"\n [indeterminate]=\"someVisibleSelected\"\n (change)=\"toggleAll()\"\n title=\"Tout s\u00E9lectionner / d\u00E9s\u00E9lectionner\">\n </th>\n <th class=\"gcc__col-key\">Cl\u00E9</th>\n <th>Colonne</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of filteredItems\"\n class=\"gcc__browse-row\"\n [class.gcc__browse-row--selected]=\"isSelected(item)\"\n [class.gcc__browse-row--custom]=\"item.ColumnSourceType === 2\"\n (click)=\"toggleItem(item)\">\n <td class=\"gcc__col-check\" (click)=\"$event.stopPropagation()\">\n <input type=\"checkbox\" [checked]=\"isSelected(item)\" (change)=\"toggleItem(item)\">\n </td>\n <td class=\"gcc__col-key\">{{ item.ColumnKey }}</td>\n <td class=\"gcc__col-name\">{{ item.Label ?? item.ColumnKey }}</td>\n </tr>\n <tr *ngIf=\"filteredItems.length === 0\">\n <td colspan=\"3\" class=\"gcc__browse-empty\">Aucune colonne trouv\u00E9e</td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n\n <!-- \u2500\u2500 Panel 4: Ordered selection with admin flags \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <div class=\"gcc__selection\">\n <div class=\"gcc__panel-hd\">\n <span class=\"gcc__panel-label\">Colonnes s\u00E9lectionn\u00E9es</span>\n <span *ngIf=\"selectedCount > 0\" class=\"gcc__badge gcc__badge--primary\">{{ selectedCount }}</span>\n </div>\n\n <div *ngIf=\"orderedSelection.length > 0\" class=\"gcc__sel-legend\">\n <span class=\"gcc__sel-legend__drag\"></span>\n <span class=\"gcc__sel-legend__pos\">#</span>\n <span class=\"gcc__sel-legend__code\">Cl\u00E9</span>\n <span class=\"gcc__sel-legend__label\">\u00C9tiquette</span>\n <ng-container *ngIf=\"isPerimeter\">\n <span class=\"gcc__sel-legend__flag\">Aut.</span>\n </ng-container>\n <span class=\"gcc__sel-legend__flag\">Ver.</span>\n <span class=\"gcc__sel-legend__remove\"></span>\n </div>\n\n <div *ngIf=\"orderedSelection.length === 0\" class=\"gcc__sel-empty\">\n <span class=\"fa fa-columns gcc__sel-empty__icon\"></span>\n <p>Cochez des colonnes \u00E0 gauche</p>\n </div>\n\n <div *ngIf=\"orderedSelection.length > 0\"\n class=\"gcc__sel-list\"\n cdkDropList\n [cdkDropListData]=\"orderedSelection\"\n (cdkDropListDropped)=\"onDrop($event)\">\n\n <div *ngFor=\"let item of orderedSelection; let i = index\"\n class=\"gcc__sel-item\"\n cdkDrag\n [cdkDragData]=\"item\">\n\n <div class=\"gcc__sel-item__placeholder\" *cdkDragPlaceholder></div>\n\n <span class=\"gcc__sel-item__drag\" cdkDragHandle>\n <i class=\"fa fa-bars\"></i>\n </span>\n\n <span class=\"gcc__sel-item__pos\">{{ i + 1 }}</span>\n\n <span class=\"gcc__sel-item__code\"\n [class.gcc__sel-item__code--cf]=\"item.ColumnSourceType === 2\"\n [title]=\"item.ColumnKey\">\n {{ item.ColumnKey }}\n </span>\n\n <input class=\"gcc__sel-item__label\" type=\"text\"\n [placeholder]=\"getCatalogLabel(item)\"\n [(ngModel)]=\"item.Label\"\n (click)=\"$event.stopPropagation()\"\n title=\"\u00C9tiquette personnalis\u00E9e\">\n\n <!-- Perimeter scope: allowed flag -->\n <ng-container *ngIf=\"isPerimeter\">\n <label class=\"gcc__flag\" (click)=\"$event.stopPropagation()\">\n <input type=\"checkbox\" [(ngModel)]=\"item.IsAllowed\" title=\"Autoris\u00E9\">\n </label>\n </ng-container>\n\n <!-- Always: locked flag -->\n <label class=\"gcc__flag\" (click)=\"$event.stopPropagation()\">\n <input type=\"checkbox\" [(ngModel)]=\"item.IsLocked\" title=\"Verrouill\u00E9\">\n </label>\n\n <button class=\"gcc__sel-item__remove\" type=\"button\"\n (click)=\"removeFromSelection(item); $event.stopPropagation()\"\n title=\"Retirer\">&#x2715;</button>\n </div>\n\n </div>\n\n <!-- Footer / save -->\n <div class=\"gcc__sel-footer\">\n <span class=\"gcc__sel-footer__info\">\n <ng-container *ngIf=\"selectedCount > 0\">\n {{ selectedCount }} colonne(s) \u2014 glissez pour r\u00E9ordonner\n </ng-container>\n </span>\n <button class=\"btn btn-primary btn-sm\" type=\"button\" (click)=\"save()\" [disabled]=\"!canSave\">\n <i class=\"fa\"\n [class.fa-save]=\"!isSaving\"\n [class.fa-circle-o-notch]=\"isSaving\"\n [class.fa-spin]=\"isSaving\"></i>\n &nbsp;Enregistrer\n </button>\n </div>\n </div>\n\n </div><!-- /.gcc__panels -->\n </div><!-- /.gcc__editor -->\n\n </ng-container>\n\n <ng-template #noProfileTpl>\n <div class=\"gcc__hint\">\n <i class=\"fa fa-arrow-left\"></i>&nbsp;S\u00E9lectionnez ou cr\u00E9ez un profil\n </div>\n </ng-template>\n\n </div><!-- /.gcc__body -->\n</div>\n", styles: [".gcc{display:flex;flex-direction:column;height:100%;overflow:hidden;padding:1rem;box-sizing:border-box;gap:.75rem}.gcc__toolbar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.75rem;flex-shrink:0}.gcc__field{display:flex;flex-direction:column;gap:.25rem}.gcc__field label{font-size:.75rem;font-weight:600;color:#6c757d}.gcc__field input,.gcc__field select{min-width:9rem;padding:.35rem .5rem;border:1px solid #ced4da;border-radius:.25rem;font-size:.85rem}.gcc__message{padding:.5rem .75rem;background:#eef3f8;border-left:3px solid #4465C9;border-radius:.25rem;font-size:.85rem;flex-shrink:0}.gcc__body{flex:1;display:flex;gap:0;overflow:hidden;min-height:0;border:1px solid #e9ecef;border-radius:.25rem;background:#fff}.gcc__panel-hd{display:flex;align-items:center;justify-content:space-between;padding:.4rem .75rem;background:#f8f9fa;border-bottom:1px solid #e9ecef;flex-shrink:0}.gcc__panel-title{font-size:.8rem;font-weight:600;display:flex;align-items:center;gap:6px}.gcc__panel-label{font-size:.75rem;font-weight:600;color:#495057}.gcc__count{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:16px;padding:0 5px;background:#4465c91f;color:#4465c9;border-radius:20px;font-size:10px;font-weight:700}.gcc__badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:16px;padding:0 5px;background:#4465c91a;color:#4465c9;border-radius:20px;font-size:10px;font-weight:700}.gcc__badge--primary{background:#4465c9;color:#fff}.gcc__muted{color:#6c757d;font-size:.8rem}.gcc__fw-normal{font-weight:400}.gcc__configs{display:flex;flex-direction:column;flex:0 0 220px;border-right:1px solid #e9ecef;overflow:hidden}.gcc__list-scroll{flex:1;overflow:auto}.gcc__table{width:100%;border-collapse:collapse}.gcc__table th,.gcc__table td{padding:.35rem .6rem;border-bottom:1px solid #e9ecef;text-align:left;font-size:.78rem}.gcc__table th{font-weight:600;color:#495057;background:#f8f9fa;position:sticky;top:0;z-index:1}.gcc__config-row{cursor:pointer;transition:background .1s}.gcc__config-row:hover{background:#4465c90a}.gcc__config-row--selected{background:#4465c914;border-left:3px solid #4465C9}.gcc__config-row--selected td:first-child{padding-left:calc(.6rem - 3px)}.gcc__key{font-family:monospace;font-weight:600;color:#4465c9;font-size:.78rem}.gcc__scope-badge{display:inline-block;padding:1px 5px;border-radius:20px;background:#4465c91a;color:#4465c9;font-size:9px;font-weight:700;text-transform:uppercase}.gcc__actions-cell{text-align:right;width:28px}.gcc__del-btn{background:none;border:none;color:#adb5bd;cursor:pointer;padding:2px 4px;border-radius:3px;font-size:.72rem;transition:color .1s}.gcc__del-btn:hover{color:#dc3545}.gcc__spinner{display:flex;align-items:center;gap:8px;padding:1rem .75rem;color:#6c757d;font-size:.8rem}.gcc__empty{padding:1.25rem .75rem;color:#6c757d;font-style:italic;font-size:.8rem}.gcc__editor{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}.gcc__editor-hd{display:flex;align-items:center;padding:.4rem .75rem;background:#f8f9fa;border-bottom:1px solid #e9ecef;flex-shrink:0}.gcc__loading{display:flex;align-items:center;gap:8px;padding:1.5rem 1rem;color:#6c757d;font-size:.85rem;flex-shrink:0}.gcc__spinner-icon{font-size:1rem}.gcc__panels{flex:1;display:flex;overflow:hidden;min-height:0}.gcc__groups{display:flex;flex-direction:column;flex:0 0 160px;border-right:1px solid #e9ecef;overflow:hidden}.gcc__group-list{list-style:none;margin:0;padding:0;flex:1;overflow-y:auto}.gcc__group-item{display:flex;align-items:center;justify-content:space-between;padding:.4rem .6rem;cursor:pointer;font-size:.78rem;border-bottom:1px solid #e9ecef;transition:background .1s}.gcc__group-item:hover{background:#4465c90a}.gcc__group-item--active{background:#4465c914;font-weight:600;color:#4465c9}.gcc__group-item--standard .gcc__group-item__name{color:#4465c9}.gcc__group-item--custom .gcc__group-item__name{color:#6b7fd4}.gcc__group-item__name{flex:1}.gcc__group-meta{display:flex;align-items:center;gap:3px}.gcc__browse{display:flex;flex-direction:column;flex:1;border-right:1px solid #e9ecef;overflow:hidden;min-width:0}.gcc__search{height:26px;padding:0 .5rem;border:1px solid #ced4da;border-radius:.2rem;font-size:.78rem;width:140px}.gcc__table-wrap{flex:1;overflow:auto}.gcc__table-wrap::-webkit-scrollbar{width:5px}.gcc__table-wrap::-webkit-scrollbar-track{background:transparent}.gcc__table-wrap::-webkit-scrollbar-thumb{background:#e9ecef;border-radius:3px}.gcc__browse-table{width:100%;border-collapse:collapse}.gcc__browse-table th,.gcc__browse-table td{padding:.3rem .5rem;border-bottom:1px solid #e9ecef;text-align:left;font-size:.78rem}.gcc__browse-table th{font-weight:600;color:#495057;background:#f8f9fa;position:sticky;top:0;z-index:1}.gcc__browse-row{cursor:pointer;transition:background .1s}.gcc__browse-row:hover{background:#4465c90a}.gcc__browse-row--selected{background:#4465c914}.gcc__browse-row--custom .gcc__col-key{color:#6b7fd4}.gcc__col-check{width:28px;text-align:center}.gcc__col-key{font-family:monospace;font-size:11px;font-weight:600;color:#4465c9;width:130px}.gcc__browse-empty{padding:1rem .75rem;color:#6c757d;font-style:italic;font-size:.78rem}.gcc__selection{display:flex;flex-direction:column;flex:0 0 380px;overflow:hidden}.gcc__sel-legend{display:flex;align-items:center;padding:3px .5rem;background:#f8f9fa;border-bottom:1px solid #e9ecef;font-size:9px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#6c757d;flex-shrink:0;gap:0}.gcc__sel-legend__drag{width:20px;flex-shrink:0}.gcc__sel-legend__pos{width:22px;flex-shrink:0;text-align:center}.gcc__sel-legend__code{width:80px;flex-shrink:0;padding-left:2px}.gcc__sel-legend__label{flex:1;min-width:0}.gcc__sel-legend__flag{width:36px;text-align:center;flex-shrink:0}.gcc__sel-legend__width{width:50px;flex-shrink:0;padding-left:2px}.gcc__sel-legend__remove{width:22px;flex-shrink:0}.gcc__sel-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;color:#6c757d;gap:.5rem;font-size:.8rem}.gcc__sel-empty__icon{font-size:2rem;opacity:.3}.gcc__sel-empty p{margin:0}.gcc__sel-list{flex:1;overflow-y:auto}.gcc__sel-list::-webkit-scrollbar{width:4px}.gcc__sel-list::-webkit-scrollbar-track{background:transparent}.gcc__sel-list::-webkit-scrollbar-thumb{background:#e9ecef;border-radius:3px}.gcc__sel-item{display:flex;align-items:center;padding:4px .5rem;border-bottom:1px solid #e9ecef;background:#fff;-webkit-user-select:none;user-select:none;gap:0;transition:background .1s}.gcc__sel-item:hover{background:#4465c908}.gcc__sel-item.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.gcc__sel-item__placeholder{height:32px;background:#4465c90f;border:1px dashed #4465C9;border-radius:2px;flex:1}.gcc__sel-item__drag{width:20px;flex-shrink:0;color:#ced4da;cursor:grab;font-size:11px;display:flex;align-items:center;justify-content:center}.gcc__sel-item__drag:hover{color:#4465c9}.gcc__sel-item__drag:active{cursor:grabbing}.gcc__sel-item__pos{width:22px;flex-shrink:0;font-size:9px;color:#6c757d;text-align:center}.gcc__sel-item__code{width:80px;flex-shrink:0;font-family:monospace;font-size:10px;font-weight:600;color:#4465c9;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-left:2px}.gcc__sel-item__code--cf{color:#6b7fd4}.gcc__sel-item__label{flex:1;min-width:0;height:22px;padding:0 4px;border:1px solid transparent;border-radius:3px;font-size:11px;color:#343a40;background:transparent;outline:none;transition:border-color .1s,background .1s}.gcc__sel-item__label::placeholder{color:#6c757d;font-style:italic}.gcc__sel-item__label:hover{border-color:#d1d8de;background:#f8f9fa}.gcc__sel-item__label:focus{border-color:#4465c9;background:#fff}.gcc__sel-item__remove{width:22px;flex-shrink:0;background:none;border:none;color:#adb5bd;cursor:pointer;font-size:11px;padding:0;text-align:center;transition:color .1s}.gcc__sel-item__remove:hover{color:#dc3545}.gcc__sel-list.cdk-drop-list-dragging .gcc__sel-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.gcc__flag{width:36px;flex-shrink:0;display:flex;align-items:center;justify-content:center;cursor:pointer;margin:0}.gcc__flag input[type=checkbox]{cursor:pointer}.gcc__item-width{width:46px;flex-shrink:0;padding:1px 3px;border:1px solid #ced4da;border-radius:3px;font-size:10px;text-align:right}.gcc__sel-footer{display:flex;align-items:center;justify-content:space-between;padding:.4rem .75rem;background:#f8f9fa;border-top:1px solid #e9ecef;flex-shrink:0}.gcc__sel-footer__info{font-size:.75rem;color:#6c757d;font-style:italic}.gcc__hint{display:flex;align-items:center;justify-content:center;flex:1;color:#6c757d;font-style:italic;font-size:.85rem}\n"] }]
4498
4498
  }], ctorParameters: () => [{ type: i2.PresentationProfileDataService }, { type: i2.PresentationProfileItemDataService }] });
4499
4499
 
4500
4500
  class PresentationProfileItemsComponent {
4501
4501
  get isPerimeter() {
4502
- return this.profile?.ScopeType === PresentationProfileScopes.Role
4503
- || this.profile?.ScopeType === PresentationProfileScopes.Supplier;
4502
+ return this.profile?.PresentationProfileScope === PresentationProfileScopes.Role
4503
+ || this.profile?.PresentationProfileScope === PresentationProfileScopes.Supplier;
4504
4504
  }
4505
4505
  get selectedCount() { return this.orderedSelection.length; }
4506
4506
  get canSave() { return !!this.profile && !this.isSaving; }
@@ -4551,13 +4551,13 @@ class PresentationProfileItemsComponent {
4551
4551
  return;
4552
4552
  this.isLoading = true;
4553
4553
  const profileId = this.profile.Id;
4554
- const supplierId = this.profile.ScopeType === PresentationProfileScopes.Supplier ? this.profile.ScopeId : null;
4555
- const roleId = this.profile.ScopeType === PresentationProfileScopes.Role ? this.profile.ScopeId : null;
4554
+ const supplierId = this.profile.PresentationProfileScope === PresentationProfileScopes.Supplier ? this.profile.ScopeId : null;
4555
+ const roleId = this.profile.PresentationProfileScope === PresentationProfileScopes.Role ? this.profile.ScopeId : null;
4556
4556
  const scopeType = supplierId != null ? PresentationProfileScopes.Supplier
4557
4557
  : roleId != null ? PresentationProfileScopes.Role : undefined;
4558
4558
  const catalogFilter = {
4559
4559
  MetaEntityKey: this.profile.MetaEntityKey,
4560
- ScopeType: scopeType,
4560
+ PresentationProfileScope: scopeType,
4561
4561
  ScopeId: supplierId ?? roleId ?? null,
4562
4562
  };
4563
4563
  const catalog$ = this.itemData.getCatalog(catalogFilter).pipe(catchError(() => of([])));
@@ -5010,11 +5010,11 @@ class HomepageComponent {
5010
5010
  }
5011
5011
  }
5012
5012
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: HomepageComponent, deps: [{ token: i1$2.ApplicationService }, { token: DflatAppService }], target: i0.ɵɵFactoryTarget.Component }); }
5013
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: HomepageComponent, isStandalone: false, selector: "msw-homepage", ngImport: i0, template: "<div class=\"home-page\">\n <div class=\"main-panel\">\n <div class=\"search-container\">\n <div class=\"search-img\">\n <img [src]=\"this.appInfo.HomeLogoUrl\" class=\"mini-logo-lg\" />\n <span class=\"dflat-logo\"><b>{{this.appInfo.Name}}</b></span>\n </div>\n <div class=\"search-bar-container\">\n <input class=\"search form-control search-bar-action\" (keyup.enter)=\"handleKeyboardEnter(this.app.FilterService.Keywords)\" type=\"text\"\n name=\"keyword\" #uniquename=\"ngModel\" [placeholder]=\"this.searchText\" [(ngModel)]=\"this.app.FilterService.Keywords\" />\n </div>\n <div class=\"info-container\" *ngIf=\"this.appInfo.Version\">\n <a routerLink=\"/release\">{{this.appInfo.Name}} {{this.appInfo.Version}}</a>\n </div>\n </div>\n </div>\n</div>\n", styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}.close-button{position:absolute;top:16px;right:16px;width:16px;height:16px;content:\" \";background-size:16px 16px;-webkit-background-size:16px 16px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"57\" height=\"57\" viewBox=\"0 0 57 57\">%0D%0A <path id=\"Rond_Croix\" data-name=\"Rond Croix\" d=\"M28.5,57A28.5,28.5,0,0,1,8.347,8.347,28.5,28.5,0,1,1,48.652,48.652,28.317,28.317,0,0,1,28.5,57Zm0-24.036h0l11.9,11.9L44.869,40.4,32.964,28.5,44.869,16.593,40.4,12.129,28.5,24.034,16.594,12.129l-4.465,4.464L24.034,28.5,12.129,40.4l4.463,4.465L28.5,32.965Z\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;cursor:pointer;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.search-container{display:flex;flex-direction:column;margin-top:50px}.search-img{display:flex;flex-direction:row;align-items:center;align-self:center}.mini-logo-lg{width:auto;height:60px;background:#fff;padding:5px;margin-left:0;cursor:pointer}.qlik-logo{width:auto;height:20px;padding:0;cursor:pointer;margin-top:-3px}.dflat-logo{font-family:ErasITC-Bold,Eras ITC,Eras Light ITC,sans-serif;font-size:32px;color:#3c5dc4}.info-container{display:flex;flex-direction:row-reverse;flex:1;font-size:smaller;padding:0 25px}.search{border-radius:30px;border:1px solid #8EA7F8;background-color:#f7faff;padding-left:45px;width:600px;height:50px;color:#4d5a81}::placeholder{color:#8ea7f8}.search-bar-container{margin-top:15px}.search-bar-container:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"49.485\" height=\"49.485\" viewBox=\"0 0 49.485 49.485\">%0D%0A <path id=\"Recherche\" d=\"M31.88,37.039A20.324,20.324,0,1,1,12.411,1.6,20.324,20.324,0,0,1,37.039,31.88L49.485,44.326l-5.158,5.158ZM10.373,10.373a14.07,14.07,0,1,0,9.948-4.12A13.977,13.977,0,0,0,10.373,10.373Z\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:15px -40px 0 15px;filter:invert(60%) sepia(57%) saturate(394%) hue-rotate(191deg) brightness(99%) contrast(96%)}.home-page{display:flex;flex-direction:column;align-items:center;padding:0;background:transparent;height:100%}.home-logo{display:flex;flex-direction:column;align-items:center}.main-panel{width:100%;height:50%;display:flex;flex-direction:column;align-items:center}.right-panel{background-color:#f7faff;padding:15px;overflow-y:auto}.news{position:relative;-webkit-animation:fadeInFromNone .5s ease-out;-moz-animation:fadeInFromNone .5s ease-out;-o-animation:fadeInFromNone .5s ease-out;animation:fadeInFromNone .5s ease-out}@-webkit-keyframes fadeInFromNone{0%{position:relative;margin-top:-200px;display:none;opacity:0}1%{display:block;opacity:0}to{display:block;opacity:1;margin-top:0}}@-moz-keyframes fadeInFromNone{0%{position:relative;margin-top:-200px;display:none;opacity:0}1%{display:block;opacity:0}to{display:block;opacity:1;margin-top:16px}}@-o-keyframes fadeInFromNone{0%{position:relative;margin-top:-200px;display:none;opacity:0}1%{display:block;opacity:0}to{display:block;opacity:1;margin-top:16px}}@keyframes fadeInFromNone{0%{position:relative;margin-top:-200px;display:none;opacity:0}1%{display:block;opacity:0}to{display:block;opacity:1;margin-top:16px}}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] }); }
5013
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: HomepageComponent, isStandalone: false, selector: "msw-homepage", ngImport: i0, template: "<div class=\"home-page\">\r\n <div class=\"main-panel\">\r\n <div class=\"search-container\">\r\n <div class=\"search-img\">\r\n <img [src]=\"this.appInfo.HomeLogoUrl\" class=\"mini-logo-lg\" />\r\n <span class=\"dflat-logo\"><b>{{this.appInfo.Name}}</b></span>\r\n </div>\r\n <div class=\"search-bar-container\">\r\n <input class=\"search form-control search-bar-action\" (keyup.enter)=\"handleKeyboardEnter(this.app.FilterService.Keywords)\" type=\"text\"\r\n name=\"keyword\" #uniquename=\"ngModel\" [placeholder]=\"this.searchText\" [(ngModel)]=\"this.app.FilterService.Keywords\" />\r\n </div>\r\n <div class=\"info-container\" *ngIf=\"this.appInfo.Version\">\r\n <a routerLink=\"/release\">{{this.appInfo.Name}} {{this.appInfo.Version}}</a>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}.close-button{position:absolute;top:16px;right:16px;width:16px;height:16px;content:\" \";background-size:16px 16px;-webkit-background-size:16px 16px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"57\" height=\"57\" viewBox=\"0 0 57 57\">%0D%0A <path id=\"Rond_Croix\" data-name=\"Rond Croix\" d=\"M28.5,57A28.5,28.5,0,0,1,8.347,8.347,28.5,28.5,0,1,1,48.652,48.652,28.317,28.317,0,0,1,28.5,57Zm0-24.036h0l11.9,11.9L44.869,40.4,32.964,28.5,44.869,16.593,40.4,12.129,28.5,24.034,16.594,12.129l-4.465,4.464L24.034,28.5,12.129,40.4l4.463,4.465L28.5,32.965Z\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;cursor:pointer;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.search-container{display:flex;flex-direction:column;margin-top:50px}.search-img{display:flex;flex-direction:row;align-items:center;align-self:center}.mini-logo-lg{width:auto;height:60px;background:#fff;padding:5px;margin-left:0;cursor:pointer}.qlik-logo{width:auto;height:20px;padding:0;cursor:pointer;margin-top:-3px}.dflat-logo{font-family:ErasITC-Bold,Eras ITC,Eras Light ITC,sans-serif;font-size:32px;color:#3c5dc4}.info-container{display:flex;flex-direction:row-reverse;flex:1;font-size:smaller;padding:0 25px}.search{border-radius:30px;border:1px solid #8EA7F8;background-color:#f7faff;padding-left:45px;width:600px;height:50px;color:#4d5a81}::placeholder{color:#8ea7f8}.search-bar-container{margin-top:15px}.search-bar-container:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"49.485\" height=\"49.485\" viewBox=\"0 0 49.485 49.485\">%0D%0A <path id=\"Recherche\" d=\"M31.88,37.039A20.324,20.324,0,1,1,12.411,1.6,20.324,20.324,0,0,1,37.039,31.88L49.485,44.326l-5.158,5.158ZM10.373,10.373a14.07,14.07,0,1,0,9.948-4.12A13.977,13.977,0,0,0,10.373,10.373Z\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:15px -40px 0 15px;filter:invert(60%) sepia(57%) saturate(394%) hue-rotate(191deg) brightness(99%) contrast(96%)}.home-page{display:flex;flex-direction:column;align-items:center;padding:0;background:transparent;height:100%}.home-logo{display:flex;flex-direction:column;align-items:center}.main-panel{width:100%;height:50%;display:flex;flex-direction:column;align-items:center}.right-panel{background-color:#f7faff;padding:15px;overflow-y:auto}.news{position:relative;-webkit-animation:fadeInFromNone .5s ease-out;-moz-animation:fadeInFromNone .5s ease-out;-o-animation:fadeInFromNone .5s ease-out;animation:fadeInFromNone .5s ease-out}@-webkit-keyframes fadeInFromNone{0%{position:relative;margin-top:-200px;display:none;opacity:0}1%{display:block;opacity:0}to{display:block;opacity:1;margin-top:0}}@-moz-keyframes fadeInFromNone{0%{position:relative;margin-top:-200px;display:none;opacity:0}1%{display:block;opacity:0}to{display:block;opacity:1;margin-top:16px}}@-o-keyframes fadeInFromNone{0%{position:relative;margin-top:-200px;display:none;opacity:0}1%{display:block;opacity:0}to{display:block;opacity:1;margin-top:16px}}@keyframes fadeInFromNone{0%{position:relative;margin-top:-200px;display:none;opacity:0}1%{display:block;opacity:0}to{display:block;opacity:1;margin-top:16px}}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] }); }
5014
5014
  }
5015
5015
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: HomepageComponent, decorators: [{
5016
5016
  type: Component,
5017
- args: [{ selector: 'msw-homepage', standalone: false, template: "<div class=\"home-page\">\n <div class=\"main-panel\">\n <div class=\"search-container\">\n <div class=\"search-img\">\n <img [src]=\"this.appInfo.HomeLogoUrl\" class=\"mini-logo-lg\" />\n <span class=\"dflat-logo\"><b>{{this.appInfo.Name}}</b></span>\n </div>\n <div class=\"search-bar-container\">\n <input class=\"search form-control search-bar-action\" (keyup.enter)=\"handleKeyboardEnter(this.app.FilterService.Keywords)\" type=\"text\"\n name=\"keyword\" #uniquename=\"ngModel\" [placeholder]=\"this.searchText\" [(ngModel)]=\"this.app.FilterService.Keywords\" />\n </div>\n <div class=\"info-container\" *ngIf=\"this.appInfo.Version\">\n <a routerLink=\"/release\">{{this.appInfo.Name}} {{this.appInfo.Version}}</a>\n </div>\n </div>\n </div>\n</div>\n", styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}.close-button{position:absolute;top:16px;right:16px;width:16px;height:16px;content:\" \";background-size:16px 16px;-webkit-background-size:16px 16px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"57\" height=\"57\" viewBox=\"0 0 57 57\">%0D%0A <path id=\"Rond_Croix\" data-name=\"Rond Croix\" d=\"M28.5,57A28.5,28.5,0,0,1,8.347,8.347,28.5,28.5,0,1,1,48.652,48.652,28.317,28.317,0,0,1,28.5,57Zm0-24.036h0l11.9,11.9L44.869,40.4,32.964,28.5,44.869,16.593,40.4,12.129,28.5,24.034,16.594,12.129l-4.465,4.464L24.034,28.5,12.129,40.4l4.463,4.465L28.5,32.965Z\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;cursor:pointer;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.search-container{display:flex;flex-direction:column;margin-top:50px}.search-img{display:flex;flex-direction:row;align-items:center;align-self:center}.mini-logo-lg{width:auto;height:60px;background:#fff;padding:5px;margin-left:0;cursor:pointer}.qlik-logo{width:auto;height:20px;padding:0;cursor:pointer;margin-top:-3px}.dflat-logo{font-family:ErasITC-Bold,Eras ITC,Eras Light ITC,sans-serif;font-size:32px;color:#3c5dc4}.info-container{display:flex;flex-direction:row-reverse;flex:1;font-size:smaller;padding:0 25px}.search{border-radius:30px;border:1px solid #8EA7F8;background-color:#f7faff;padding-left:45px;width:600px;height:50px;color:#4d5a81}::placeholder{color:#8ea7f8}.search-bar-container{margin-top:15px}.search-bar-container:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"49.485\" height=\"49.485\" viewBox=\"0 0 49.485 49.485\">%0D%0A <path id=\"Recherche\" d=\"M31.88,37.039A20.324,20.324,0,1,1,12.411,1.6,20.324,20.324,0,0,1,37.039,31.88L49.485,44.326l-5.158,5.158ZM10.373,10.373a14.07,14.07,0,1,0,9.948-4.12A13.977,13.977,0,0,0,10.373,10.373Z\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:15px -40px 0 15px;filter:invert(60%) sepia(57%) saturate(394%) hue-rotate(191deg) brightness(99%) contrast(96%)}.home-page{display:flex;flex-direction:column;align-items:center;padding:0;background:transparent;height:100%}.home-logo{display:flex;flex-direction:column;align-items:center}.main-panel{width:100%;height:50%;display:flex;flex-direction:column;align-items:center}.right-panel{background-color:#f7faff;padding:15px;overflow-y:auto}.news{position:relative;-webkit-animation:fadeInFromNone .5s ease-out;-moz-animation:fadeInFromNone .5s ease-out;-o-animation:fadeInFromNone .5s ease-out;animation:fadeInFromNone .5s ease-out}@-webkit-keyframes fadeInFromNone{0%{position:relative;margin-top:-200px;display:none;opacity:0}1%{display:block;opacity:0}to{display:block;opacity:1;margin-top:0}}@-moz-keyframes fadeInFromNone{0%{position:relative;margin-top:-200px;display:none;opacity:0}1%{display:block;opacity:0}to{display:block;opacity:1;margin-top:16px}}@-o-keyframes fadeInFromNone{0%{position:relative;margin-top:-200px;display:none;opacity:0}1%{display:block;opacity:0}to{display:block;opacity:1;margin-top:16px}}@keyframes fadeInFromNone{0%{position:relative;margin-top:-200px;display:none;opacity:0}1%{display:block;opacity:0}to{display:block;opacity:1;margin-top:16px}}\n"] }]
5017
+ args: [{ selector: 'msw-homepage', standalone: false, template: "<div class=\"home-page\">\r\n <div class=\"main-panel\">\r\n <div class=\"search-container\">\r\n <div class=\"search-img\">\r\n <img [src]=\"this.appInfo.HomeLogoUrl\" class=\"mini-logo-lg\" />\r\n <span class=\"dflat-logo\"><b>{{this.appInfo.Name}}</b></span>\r\n </div>\r\n <div class=\"search-bar-container\">\r\n <input class=\"search form-control search-bar-action\" (keyup.enter)=\"handleKeyboardEnter(this.app.FilterService.Keywords)\" type=\"text\"\r\n name=\"keyword\" #uniquename=\"ngModel\" [placeholder]=\"this.searchText\" [(ngModel)]=\"this.app.FilterService.Keywords\" />\r\n </div>\r\n <div class=\"info-container\" *ngIf=\"this.appInfo.Version\">\r\n <a routerLink=\"/release\">{{this.appInfo.Name}} {{this.appInfo.Version}}</a>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}.close-button{position:absolute;top:16px;right:16px;width:16px;height:16px;content:\" \";background-size:16px 16px;-webkit-background-size:16px 16px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"57\" height=\"57\" viewBox=\"0 0 57 57\">%0D%0A <path id=\"Rond_Croix\" data-name=\"Rond Croix\" d=\"M28.5,57A28.5,28.5,0,0,1,8.347,8.347,28.5,28.5,0,1,1,48.652,48.652,28.317,28.317,0,0,1,28.5,57Zm0-24.036h0l11.9,11.9L44.869,40.4,32.964,28.5,44.869,16.593,40.4,12.129,28.5,24.034,16.594,12.129l-4.465,4.464L24.034,28.5,12.129,40.4l4.463,4.465L28.5,32.965Z\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;cursor:pointer;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.search-container{display:flex;flex-direction:column;margin-top:50px}.search-img{display:flex;flex-direction:row;align-items:center;align-self:center}.mini-logo-lg{width:auto;height:60px;background:#fff;padding:5px;margin-left:0;cursor:pointer}.qlik-logo{width:auto;height:20px;padding:0;cursor:pointer;margin-top:-3px}.dflat-logo{font-family:ErasITC-Bold,Eras ITC,Eras Light ITC,sans-serif;font-size:32px;color:#3c5dc4}.info-container{display:flex;flex-direction:row-reverse;flex:1;font-size:smaller;padding:0 25px}.search{border-radius:30px;border:1px solid #8EA7F8;background-color:#f7faff;padding-left:45px;width:600px;height:50px;color:#4d5a81}::placeholder{color:#8ea7f8}.search-bar-container{margin-top:15px}.search-bar-container:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"49.485\" height=\"49.485\" viewBox=\"0 0 49.485 49.485\">%0D%0A <path id=\"Recherche\" d=\"M31.88,37.039A20.324,20.324,0,1,1,12.411,1.6,20.324,20.324,0,0,1,37.039,31.88L49.485,44.326l-5.158,5.158ZM10.373,10.373a14.07,14.07,0,1,0,9.948-4.12A13.977,13.977,0,0,0,10.373,10.373Z\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:15px -40px 0 15px;filter:invert(60%) sepia(57%) saturate(394%) hue-rotate(191deg) brightness(99%) contrast(96%)}.home-page{display:flex;flex-direction:column;align-items:center;padding:0;background:transparent;height:100%}.home-logo{display:flex;flex-direction:column;align-items:center}.main-panel{width:100%;height:50%;display:flex;flex-direction:column;align-items:center}.right-panel{background-color:#f7faff;padding:15px;overflow-y:auto}.news{position:relative;-webkit-animation:fadeInFromNone .5s ease-out;-moz-animation:fadeInFromNone .5s ease-out;-o-animation:fadeInFromNone .5s ease-out;animation:fadeInFromNone .5s ease-out}@-webkit-keyframes fadeInFromNone{0%{position:relative;margin-top:-200px;display:none;opacity:0}1%{display:block;opacity:0}to{display:block;opacity:1;margin-top:0}}@-moz-keyframes fadeInFromNone{0%{position:relative;margin-top:-200px;display:none;opacity:0}1%{display:block;opacity:0}to{display:block;opacity:1;margin-top:16px}}@-o-keyframes fadeInFromNone{0%{position:relative;margin-top:-200px;display:none;opacity:0}1%{display:block;opacity:0}to{display:block;opacity:1;margin-top:16px}}@keyframes fadeInFromNone{0%{position:relative;margin-top:-200px;display:none;opacity:0}1%{display:block;opacity:0}to{display:block;opacity:1;margin-top:16px}}\n"] }]
5018
5018
  }], ctorParameters: () => [{ type: i1$2.ApplicationService }, { type: DflatAppService }] });
5019
5019
 
5020
5020
  class DFlatSpinnerComponent {
@@ -5103,18 +5103,18 @@ class UserMenuComponent {
5103
5103
  // Mise à jour de l'image de l'utilisateur
5104
5104
  if (!Utilities.IsNil(this.currentUser.AvatarUrl)) {
5105
5105
  let imageLink = encodeURI(this.imageService.getImageUrl(this.currentUser.AvatarUrl));
5106
- this.userBackImageStyle = `
5107
- background-image: url(${imageLink});
5108
- background-size: cover;
5109
- background-repeat: no-repeat;
5106
+ this.userBackImageStyle = `
5107
+ background-image: url(${imageLink});
5108
+ background-size: cover;
5109
+ background-repeat: no-repeat;
5110
5110
  background-position: center;`;
5111
5111
  }
5112
5112
  else {
5113
- this.userBackImageStyle = `
5114
- background-image: url('assets/images/blue-camera.svg');
5115
- background-size: 32px 32px;
5116
- background-repeat: no-repeat;
5117
- background-position: center;
5113
+ this.userBackImageStyle = `
5114
+ background-image: url('assets/images/blue-camera.svg');
5115
+ background-size: 32px 32px;
5116
+ background-repeat: no-repeat;
5117
+ background-position: center;
5118
5118
  animation: blinker 2s linear infinite;`;
5119
5119
  }
5120
5120
  }
@@ -5227,11 +5227,11 @@ class DFlatLayoutComponent extends DefaultLayoutComponent {
5227
5227
  this.sidebarVisible = false;
5228
5228
  }
5229
5229
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: DFlatLayoutComponent, deps: [{ token: i0.Renderer2 }, { token: i1$1.UserService }, { token: i1$1.MenuService }, { token: i1$1.AuthService }, { token: i1$1.HubService }, { token: i2$2.ActivatedRoute }, { token: i2$2.Router }, { token: i1$2.ModalService }, { token: i4$2.Title }, { token: i1$2.ActionService }, { token: i1$2.ApplicationService }, { token: DflatAppService }], target: i0.ɵɵFactoryTarget.Component }); }
5230
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: DFlatLayoutComponent, isStandalone: false, selector: "msw-layout", usesInheritance: true, ngImport: i0, template: "<div class=\"base-container\">\n <div class=\"base-topbar\">\n <div class=\"left-topbar\">\n <button class=\"btn btn-primary btn-lg sidebar-button\" (click)=\"onToggleButtonClick()\">\n <i class=\"fa fa-bars\"></i>\n </button>\n\n <div (click)=\"this.backHome()\">\n <img [src]=\"this.appInfo.LogoUrl\" class=\"mini-logo-lg\" />\n </div>\n <div (click)=\"this.backHome()\">\n <span class=\"dflat-logo\"><b>{{this.appInfo.Name}}</b></span>\n </div>\n </div>\n <div class=\"center-topbar\">\n <ng-container *ngIf=\"this.app.FilterService.filterChanged$ | async\">\n <div class=\"search-bar-container\">\n <input class=\"search form-control search-bar-action\"\n (keyup.enter)=\"handleKeyboardEnter(this.app.FilterService.Keywords)\"\n type=\"text\"\n name=\"keyword\"\n [placeholder]=\"this.searchText\"\n #uniquename=\"ngModel\"\n [(ngModel)]=\"this.app.FilterService.Keywords\"/>\n </div>\n </ng-container>\n </div>\n </div>\n <div class=\"base-main\">\n <div class=\"sidebar-outcontainer\">\n <div class=\"sidebar-incontainer\">\n <div #sidebar ngClass=\"sidebar-container visible\"\n [class.uncollapsed]=\"sidebarVisible\"\n [class.collapsed]=\"!sidebarVisible\"\n (mouseleave)=\"hideSidebar($event)\"\n >\n <msw-user-menu class=\"user-menu\"\n [menuItems]=\"mylinks\"\n [compact]=\"!sidebarVisible\"\n (itemClick)=\"this.hideSidebar(null)\">\n </msw-user-menu>\n </div>\n </div>\n </div>\n <div class=\"main-content\">\n <div class=\"main-component\">\n <router-outlet></router-outlet>\n </div>\n </div>\n </div>\n</div>\n<ng-http-loader\n [backdrop]=\"false\"\n [backgroundColor]=\"'transparent'\"\n [debounceDelay]=\"100\"\n [extraDuration]=\"300\"\n [minDuration]=\"300\"\n [opacity]=\"'1'\"\n [entryComponent]=\"spinnerComponent\">\n</ng-http-loader>\n", styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}.sidebar-incontainer{height:100%;overflow-y:auto;overflow-x:hidden;-ms-overflow-style:none;scrollbar-width:none}.sidebar-outcontainer{height:100%;background:#3c5dc4;-ms-overflow-style:none;scrollbar-width:none}.sidebar-outcontainer::-webkit-scrollbar{display:none}.sidebar-button{width:50px;font-size:16px}.btn.btn-primary:hover,.btn.btn-primary:focus,.btn.btn-primary:active{color:#f7faff;background-color:#4465c9;border-color:#4465c9}.base-container{display:flex;width:100%;height:100%;flex-direction:column;flex-grow:1;flex-shrink:0;overflow:auto}.base-topbar{display:flex;flex-grow:0;flex-shrink:0;width:100%;height:50px;background:#4465c9;align-content:center}.right-topbar{display:flex;margin-left:auto;order:2}.base-main{flex-grow:1;flex-shrink:0;height:50%;display:flex;flex-direction:row;justify-content:stretch;align-content:flex-start;flex-wrap:nowrap}.footer{display:none;width:100%;height:30px;background:#3c5dc4;color:#fff;padding:5px}.main-content{display:flex;flex-direction:column;width:100%;height:100%;flex-grow:1;flex-shrink:1;overflow:auto;margin-left:0}.left-topbar{display:flex;align-content:center}.left-topbar>div{height:50px}.left-topbar>div>span{line-height:50px;vertical-align:middle}.sidebar-container{display:flex;flex-direction:column;overflow-y:scroll;height:calc(100% - 50px);min-width:230px;width:230px;background:#3c5dc4;position:fixed;transform:translate(-100%);transition:transform .25s ease-in-out;z-index:2000}.sidebar-container.collapsed{margin-left:-230px;transition:ease-in .1s all}.sidebar-container.uncollapsed{margin-left:0;width:230px;min-width:230px;transition:ease-in .1s all}.sidebar-hover-zone{position:fixed;top:50px;left:0;width:50px;height:calc(100% - 50px);z-index:1000;background:#3c5dc4}.sidebar-container.visible{transform:translate(0)}.menu-container{display:flex;flex-direction:column;flex:1}.main-component{width:100%;height:100%;overflow:auto}.mini-logo3D-lg{width:auto;height:80px;background:#4465c9;padding:0 30px 0 0;margin-left:0;margin-top:0;cursor:pointer}.mini-logo-lg{width:auto;height:40px;background:transparent;filter:brightness(0) invert(1);padding:5px;margin-left:0;margin-top:5px;cursor:pointer}.dflat-logo{font-family:ErasITC-Bold,Eras ITC,Eras Light ITC,sans-serif;font-size:16pt;color:#fff;cursor:pointer}.breadcrumb-panel{height:44x;width:100%;border-bottom:solid 1px var(--main-bg-color)}.search-bar-container{margin-left:55px;margin-top:-5px}.search{border-radius:5px;border:1px solid #8FA3DF;background-color:#4465c9;padding-left:30px;margin-top:14px;width:400px;color:#fff}::placeholder{color:#8fa3df}.search-bar-container:before{position:relative;display:block;float:left;width:16px;height:16px;content:\" \";background-size:16px 16px;-webkit-background-size:16px 16px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"49.485\" height=\"49.485\" viewBox=\"0 0 49.485 49.485\">%0D%0A <path id=\"Recherche\" d=\"M31.88,37.039A20.324,20.324,0,1,1,12.411,1.6,20.324,20.324,0,0,1,37.039,31.88L49.485,44.326l-5.158,5.158ZM10.373,10.373a14.07,14.07,0,1,0,9.948-4.12A13.977,13.977,0,0,0,10.373,10.373Z\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:9px -40px 0 9px;filter:invert(60%) sepia(57%) saturate(394%) hue-rotate(191deg) brightness(99%) contrast(96%)}.user-menu{display:flex;flex-direction:column;padding:10px}.mini-logo-histo{display:flex;justify-content:flex-end;width:auto;height:40px;background:#4465c9;padding:5px;margin-left:0;margin-top:5px;cursor:pointer}@media screen and (max-width:500px){.search{width:150px}}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i8.NgHttpLoaderComponent, selector: "ng-http-loader", inputs: ["backdrop", "backgroundColor", "debounceDelay", "entryComponent", "extraDuration", "filteredHeaders", "filteredMethods", "filteredUrlPatterns", "minDuration", "opacity", "backdropBackgroundColor", "spinner"] }, { kind: "directive", type: i2$2.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: UserMenuComponent, selector: "msw-user-menu", inputs: ["currentUser", "menuItems", "compact"], outputs: ["itemClick"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] }); }
5230
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: DFlatLayoutComponent, isStandalone: false, selector: "msw-layout", usesInheritance: true, ngImport: i0, template: "<div class=\"base-container\">\r\n <div class=\"base-topbar\">\r\n <div class=\"left-topbar\">\r\n <button class=\"btn btn-primary btn-lg sidebar-button\" (click)=\"onToggleButtonClick()\">\r\n <i class=\"fa fa-bars\"></i>\r\n </button>\r\n\r\n <div (click)=\"this.backHome()\">\r\n <img [src]=\"this.appInfo.LogoUrl\" class=\"mini-logo-lg\" />\r\n </div>\r\n <div (click)=\"this.backHome()\">\r\n <span class=\"dflat-logo\"><b>{{this.appInfo.Name}}</b></span>\r\n </div>\r\n </div>\r\n <div class=\"center-topbar\">\r\n <ng-container *ngIf=\"this.app.FilterService.filterChanged$ | async\">\r\n <div class=\"search-bar-container\">\r\n <input class=\"search form-control search-bar-action\"\r\n (keyup.enter)=\"handleKeyboardEnter(this.app.FilterService.Keywords)\"\r\n type=\"text\"\r\n name=\"keyword\"\r\n [placeholder]=\"this.searchText\"\r\n #uniquename=\"ngModel\"\r\n [(ngModel)]=\"this.app.FilterService.Keywords\"/>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"base-main\">\r\n <div class=\"sidebar-outcontainer\">\r\n <div class=\"sidebar-incontainer\">\r\n <div #sidebar ngClass=\"sidebar-container visible\"\r\n [class.uncollapsed]=\"sidebarVisible\"\r\n [class.collapsed]=\"!sidebarVisible\"\r\n (mouseleave)=\"hideSidebar($event)\"\r\n >\r\n <msw-user-menu class=\"user-menu\"\r\n [menuItems]=\"mylinks\"\r\n [compact]=\"!sidebarVisible\"\r\n (itemClick)=\"this.hideSidebar(null)\">\r\n </msw-user-menu>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"main-component\">\r\n <router-outlet></router-outlet>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<ng-http-loader\r\n [backdrop]=\"false\"\r\n [backgroundColor]=\"'transparent'\"\r\n [debounceDelay]=\"100\"\r\n [extraDuration]=\"300\"\r\n [minDuration]=\"300\"\r\n [opacity]=\"'1'\"\r\n [entryComponent]=\"spinnerComponent\">\r\n</ng-http-loader>\r\n", styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}.sidebar-incontainer{height:100%;overflow-y:auto;overflow-x:hidden;-ms-overflow-style:none;scrollbar-width:none}.sidebar-outcontainer{height:100%;background:#3c5dc4;-ms-overflow-style:none;scrollbar-width:none}.sidebar-outcontainer::-webkit-scrollbar{display:none}.sidebar-button{width:50px;font-size:16px}.btn.btn-primary:hover,.btn.btn-primary:focus,.btn.btn-primary:active{color:#f7faff;background-color:#4465c9;border-color:#4465c9}.base-container{display:flex;width:100%;height:100%;flex-direction:column;flex-grow:1;flex-shrink:0;overflow:auto}.base-topbar{display:flex;flex-grow:0;flex-shrink:0;width:100%;height:50px;background:#4465c9;align-content:center}.right-topbar{display:flex;margin-left:auto;order:2}.base-main{flex-grow:1;flex-shrink:0;height:50%;display:flex;flex-direction:row;justify-content:stretch;align-content:flex-start;flex-wrap:nowrap}.footer{display:none;width:100%;height:30px;background:#3c5dc4;color:#fff;padding:5px}.main-content{display:flex;flex-direction:column;width:100%;height:100%;flex-grow:1;flex-shrink:1;overflow:auto;margin-left:0}.left-topbar{display:flex;align-content:center}.left-topbar>div{height:50px}.left-topbar>div>span{line-height:50px;vertical-align:middle}.sidebar-container{display:flex;flex-direction:column;overflow-y:scroll;height:calc(100% - 50px);min-width:230px;width:230px;background:#3c5dc4;position:fixed;transform:translate(-100%);transition:transform .25s ease-in-out;z-index:2000}.sidebar-container.collapsed{margin-left:-230px;transition:ease-in .1s all}.sidebar-container.uncollapsed{margin-left:0;width:230px;min-width:230px;transition:ease-in .1s all}.sidebar-hover-zone{position:fixed;top:50px;left:0;width:50px;height:calc(100% - 50px);z-index:1000;background:#3c5dc4}.sidebar-container.visible{transform:translate(0)}.menu-container{display:flex;flex-direction:column;flex:1}.main-component{width:100%;height:100%;overflow:auto}.mini-logo3D-lg{width:auto;height:80px;background:#4465c9;padding:0 30px 0 0;margin-left:0;margin-top:0;cursor:pointer}.mini-logo-lg{width:auto;height:40px;background:transparent;filter:brightness(0) invert(1);padding:5px;margin-left:0;margin-top:5px;cursor:pointer}.dflat-logo{font-family:ErasITC-Bold,Eras ITC,Eras Light ITC,sans-serif;font-size:16pt;color:#fff;cursor:pointer}.breadcrumb-panel{height:44x;width:100%;border-bottom:solid 1px var(--main-bg-color)}.search-bar-container{margin-left:55px;margin-top:-5px}.search{border-radius:5px;border:1px solid #8FA3DF;background-color:#4465c9;padding-left:30px;margin-top:14px;width:400px;color:#fff}::placeholder{color:#8fa3df}.search-bar-container:before{position:relative;display:block;float:left;width:16px;height:16px;content:\" \";background-size:16px 16px;-webkit-background-size:16px 16px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"49.485\" height=\"49.485\" viewBox=\"0 0 49.485 49.485\">%0D%0A <path id=\"Recherche\" d=\"M31.88,37.039A20.324,20.324,0,1,1,12.411,1.6,20.324,20.324,0,0,1,37.039,31.88L49.485,44.326l-5.158,5.158ZM10.373,10.373a14.07,14.07,0,1,0,9.948-4.12A13.977,13.977,0,0,0,10.373,10.373Z\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:9px -40px 0 9px;filter:invert(60%) sepia(57%) saturate(394%) hue-rotate(191deg) brightness(99%) contrast(96%)}.user-menu{display:flex;flex-direction:column;padding:10px}.mini-logo-histo{display:flex;justify-content:flex-end;width:auto;height:40px;background:#4465c9;padding:5px;margin-left:0;margin-top:5px;cursor:pointer}@media screen and (max-width:500px){.search{width:150px}}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i8.NgHttpLoaderComponent, selector: "ng-http-loader", inputs: ["backdrop", "backgroundColor", "debounceDelay", "entryComponent", "extraDuration", "filteredHeaders", "filteredMethods", "filteredUrlPatterns", "minDuration", "opacity", "backdropBackgroundColor", "spinner"] }, { kind: "directive", type: i2$2.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: UserMenuComponent, selector: "msw-user-menu", inputs: ["currentUser", "menuItems", "compact"], outputs: ["itemClick"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] }); }
5231
5231
  }
5232
5232
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: DFlatLayoutComponent, decorators: [{
5233
5233
  type: Component,
5234
- args: [{ selector: 'msw-layout', standalone: false, template: "<div class=\"base-container\">\n <div class=\"base-topbar\">\n <div class=\"left-topbar\">\n <button class=\"btn btn-primary btn-lg sidebar-button\" (click)=\"onToggleButtonClick()\">\n <i class=\"fa fa-bars\"></i>\n </button>\n\n <div (click)=\"this.backHome()\">\n <img [src]=\"this.appInfo.LogoUrl\" class=\"mini-logo-lg\" />\n </div>\n <div (click)=\"this.backHome()\">\n <span class=\"dflat-logo\"><b>{{this.appInfo.Name}}</b></span>\n </div>\n </div>\n <div class=\"center-topbar\">\n <ng-container *ngIf=\"this.app.FilterService.filterChanged$ | async\">\n <div class=\"search-bar-container\">\n <input class=\"search form-control search-bar-action\"\n (keyup.enter)=\"handleKeyboardEnter(this.app.FilterService.Keywords)\"\n type=\"text\"\n name=\"keyword\"\n [placeholder]=\"this.searchText\"\n #uniquename=\"ngModel\"\n [(ngModel)]=\"this.app.FilterService.Keywords\"/>\n </div>\n </ng-container>\n </div>\n </div>\n <div class=\"base-main\">\n <div class=\"sidebar-outcontainer\">\n <div class=\"sidebar-incontainer\">\n <div #sidebar ngClass=\"sidebar-container visible\"\n [class.uncollapsed]=\"sidebarVisible\"\n [class.collapsed]=\"!sidebarVisible\"\n (mouseleave)=\"hideSidebar($event)\"\n >\n <msw-user-menu class=\"user-menu\"\n [menuItems]=\"mylinks\"\n [compact]=\"!sidebarVisible\"\n (itemClick)=\"this.hideSidebar(null)\">\n </msw-user-menu>\n </div>\n </div>\n </div>\n <div class=\"main-content\">\n <div class=\"main-component\">\n <router-outlet></router-outlet>\n </div>\n </div>\n </div>\n</div>\n<ng-http-loader\n [backdrop]=\"false\"\n [backgroundColor]=\"'transparent'\"\n [debounceDelay]=\"100\"\n [extraDuration]=\"300\"\n [minDuration]=\"300\"\n [opacity]=\"'1'\"\n [entryComponent]=\"spinnerComponent\">\n</ng-http-loader>\n", styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}.sidebar-incontainer{height:100%;overflow-y:auto;overflow-x:hidden;-ms-overflow-style:none;scrollbar-width:none}.sidebar-outcontainer{height:100%;background:#3c5dc4;-ms-overflow-style:none;scrollbar-width:none}.sidebar-outcontainer::-webkit-scrollbar{display:none}.sidebar-button{width:50px;font-size:16px}.btn.btn-primary:hover,.btn.btn-primary:focus,.btn.btn-primary:active{color:#f7faff;background-color:#4465c9;border-color:#4465c9}.base-container{display:flex;width:100%;height:100%;flex-direction:column;flex-grow:1;flex-shrink:0;overflow:auto}.base-topbar{display:flex;flex-grow:0;flex-shrink:0;width:100%;height:50px;background:#4465c9;align-content:center}.right-topbar{display:flex;margin-left:auto;order:2}.base-main{flex-grow:1;flex-shrink:0;height:50%;display:flex;flex-direction:row;justify-content:stretch;align-content:flex-start;flex-wrap:nowrap}.footer{display:none;width:100%;height:30px;background:#3c5dc4;color:#fff;padding:5px}.main-content{display:flex;flex-direction:column;width:100%;height:100%;flex-grow:1;flex-shrink:1;overflow:auto;margin-left:0}.left-topbar{display:flex;align-content:center}.left-topbar>div{height:50px}.left-topbar>div>span{line-height:50px;vertical-align:middle}.sidebar-container{display:flex;flex-direction:column;overflow-y:scroll;height:calc(100% - 50px);min-width:230px;width:230px;background:#3c5dc4;position:fixed;transform:translate(-100%);transition:transform .25s ease-in-out;z-index:2000}.sidebar-container.collapsed{margin-left:-230px;transition:ease-in .1s all}.sidebar-container.uncollapsed{margin-left:0;width:230px;min-width:230px;transition:ease-in .1s all}.sidebar-hover-zone{position:fixed;top:50px;left:0;width:50px;height:calc(100% - 50px);z-index:1000;background:#3c5dc4}.sidebar-container.visible{transform:translate(0)}.menu-container{display:flex;flex-direction:column;flex:1}.main-component{width:100%;height:100%;overflow:auto}.mini-logo3D-lg{width:auto;height:80px;background:#4465c9;padding:0 30px 0 0;margin-left:0;margin-top:0;cursor:pointer}.mini-logo-lg{width:auto;height:40px;background:transparent;filter:brightness(0) invert(1);padding:5px;margin-left:0;margin-top:5px;cursor:pointer}.dflat-logo{font-family:ErasITC-Bold,Eras ITC,Eras Light ITC,sans-serif;font-size:16pt;color:#fff;cursor:pointer}.breadcrumb-panel{height:44x;width:100%;border-bottom:solid 1px var(--main-bg-color)}.search-bar-container{margin-left:55px;margin-top:-5px}.search{border-radius:5px;border:1px solid #8FA3DF;background-color:#4465c9;padding-left:30px;margin-top:14px;width:400px;color:#fff}::placeholder{color:#8fa3df}.search-bar-container:before{position:relative;display:block;float:left;width:16px;height:16px;content:\" \";background-size:16px 16px;-webkit-background-size:16px 16px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"49.485\" height=\"49.485\" viewBox=\"0 0 49.485 49.485\">%0D%0A <path id=\"Recherche\" d=\"M31.88,37.039A20.324,20.324,0,1,1,12.411,1.6,20.324,20.324,0,0,1,37.039,31.88L49.485,44.326l-5.158,5.158ZM10.373,10.373a14.07,14.07,0,1,0,9.948-4.12A13.977,13.977,0,0,0,10.373,10.373Z\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:9px -40px 0 9px;filter:invert(60%) sepia(57%) saturate(394%) hue-rotate(191deg) brightness(99%) contrast(96%)}.user-menu{display:flex;flex-direction:column;padding:10px}.mini-logo-histo{display:flex;justify-content:flex-end;width:auto;height:40px;background:#4465c9;padding:5px;margin-left:0;margin-top:5px;cursor:pointer}@media screen and (max-width:500px){.search{width:150px}}\n"] }]
5234
+ args: [{ selector: 'msw-layout', standalone: false, template: "<div class=\"base-container\">\r\n <div class=\"base-topbar\">\r\n <div class=\"left-topbar\">\r\n <button class=\"btn btn-primary btn-lg sidebar-button\" (click)=\"onToggleButtonClick()\">\r\n <i class=\"fa fa-bars\"></i>\r\n </button>\r\n\r\n <div (click)=\"this.backHome()\">\r\n <img [src]=\"this.appInfo.LogoUrl\" class=\"mini-logo-lg\" />\r\n </div>\r\n <div (click)=\"this.backHome()\">\r\n <span class=\"dflat-logo\"><b>{{this.appInfo.Name}}</b></span>\r\n </div>\r\n </div>\r\n <div class=\"center-topbar\">\r\n <ng-container *ngIf=\"this.app.FilterService.filterChanged$ | async\">\r\n <div class=\"search-bar-container\">\r\n <input class=\"search form-control search-bar-action\"\r\n (keyup.enter)=\"handleKeyboardEnter(this.app.FilterService.Keywords)\"\r\n type=\"text\"\r\n name=\"keyword\"\r\n [placeholder]=\"this.searchText\"\r\n #uniquename=\"ngModel\"\r\n [(ngModel)]=\"this.app.FilterService.Keywords\"/>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"base-main\">\r\n <div class=\"sidebar-outcontainer\">\r\n <div class=\"sidebar-incontainer\">\r\n <div #sidebar ngClass=\"sidebar-container visible\"\r\n [class.uncollapsed]=\"sidebarVisible\"\r\n [class.collapsed]=\"!sidebarVisible\"\r\n (mouseleave)=\"hideSidebar($event)\"\r\n >\r\n <msw-user-menu class=\"user-menu\"\r\n [menuItems]=\"mylinks\"\r\n [compact]=\"!sidebarVisible\"\r\n (itemClick)=\"this.hideSidebar(null)\">\r\n </msw-user-menu>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"main-component\">\r\n <router-outlet></router-outlet>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<ng-http-loader\r\n [backdrop]=\"false\"\r\n [backgroundColor]=\"'transparent'\"\r\n [debounceDelay]=\"100\"\r\n [extraDuration]=\"300\"\r\n [minDuration]=\"300\"\r\n [opacity]=\"'1'\"\r\n [entryComponent]=\"spinnerComponent\">\r\n</ng-http-loader>\r\n", styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}.sidebar-incontainer{height:100%;overflow-y:auto;overflow-x:hidden;-ms-overflow-style:none;scrollbar-width:none}.sidebar-outcontainer{height:100%;background:#3c5dc4;-ms-overflow-style:none;scrollbar-width:none}.sidebar-outcontainer::-webkit-scrollbar{display:none}.sidebar-button{width:50px;font-size:16px}.btn.btn-primary:hover,.btn.btn-primary:focus,.btn.btn-primary:active{color:#f7faff;background-color:#4465c9;border-color:#4465c9}.base-container{display:flex;width:100%;height:100%;flex-direction:column;flex-grow:1;flex-shrink:0;overflow:auto}.base-topbar{display:flex;flex-grow:0;flex-shrink:0;width:100%;height:50px;background:#4465c9;align-content:center}.right-topbar{display:flex;margin-left:auto;order:2}.base-main{flex-grow:1;flex-shrink:0;height:50%;display:flex;flex-direction:row;justify-content:stretch;align-content:flex-start;flex-wrap:nowrap}.footer{display:none;width:100%;height:30px;background:#3c5dc4;color:#fff;padding:5px}.main-content{display:flex;flex-direction:column;width:100%;height:100%;flex-grow:1;flex-shrink:1;overflow:auto;margin-left:0}.left-topbar{display:flex;align-content:center}.left-topbar>div{height:50px}.left-topbar>div>span{line-height:50px;vertical-align:middle}.sidebar-container{display:flex;flex-direction:column;overflow-y:scroll;height:calc(100% - 50px);min-width:230px;width:230px;background:#3c5dc4;position:fixed;transform:translate(-100%);transition:transform .25s ease-in-out;z-index:2000}.sidebar-container.collapsed{margin-left:-230px;transition:ease-in .1s all}.sidebar-container.uncollapsed{margin-left:0;width:230px;min-width:230px;transition:ease-in .1s all}.sidebar-hover-zone{position:fixed;top:50px;left:0;width:50px;height:calc(100% - 50px);z-index:1000;background:#3c5dc4}.sidebar-container.visible{transform:translate(0)}.menu-container{display:flex;flex-direction:column;flex:1}.main-component{width:100%;height:100%;overflow:auto}.mini-logo3D-lg{width:auto;height:80px;background:#4465c9;padding:0 30px 0 0;margin-left:0;margin-top:0;cursor:pointer}.mini-logo-lg{width:auto;height:40px;background:transparent;filter:brightness(0) invert(1);padding:5px;margin-left:0;margin-top:5px;cursor:pointer}.dflat-logo{font-family:ErasITC-Bold,Eras ITC,Eras Light ITC,sans-serif;font-size:16pt;color:#fff;cursor:pointer}.breadcrumb-panel{height:44x;width:100%;border-bottom:solid 1px var(--main-bg-color)}.search-bar-container{margin-left:55px;margin-top:-5px}.search{border-radius:5px;border:1px solid #8FA3DF;background-color:#4465c9;padding-left:30px;margin-top:14px;width:400px;color:#fff}::placeholder{color:#8fa3df}.search-bar-container:before{position:relative;display:block;float:left;width:16px;height:16px;content:\" \";background-size:16px 16px;-webkit-background-size:16px 16px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"49.485\" height=\"49.485\" viewBox=\"0 0 49.485 49.485\">%0D%0A <path id=\"Recherche\" d=\"M31.88,37.039A20.324,20.324,0,1,1,12.411,1.6,20.324,20.324,0,0,1,37.039,31.88L49.485,44.326l-5.158,5.158ZM10.373,10.373a14.07,14.07,0,1,0,9.948-4.12A13.977,13.977,0,0,0,10.373,10.373Z\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:9px -40px 0 9px;filter:invert(60%) sepia(57%) saturate(394%) hue-rotate(191deg) brightness(99%) contrast(96%)}.user-menu{display:flex;flex-direction:column;padding:10px}.mini-logo-histo{display:flex;justify-content:flex-end;width:auto;height:40px;background:#4465c9;padding:5px;margin-left:0;margin-top:5px;cursor:pointer}@media screen and (max-width:500px){.search{width:150px}}\n"] }]
5235
5235
  }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i1$1.UserService }, { type: i1$1.MenuService }, { type: i1$1.AuthService }, { type: i1$1.HubService }, { type: i2$2.ActivatedRoute }, { type: i2$2.Router }, { type: i1$2.ModalService }, { type: i4$2.Title }, { type: i1$2.ActionService }, { type: i1$2.ApplicationService }, { type: DflatAppService }] });
5236
5236
 
5237
5237
  class SearchResult {
@@ -5275,17 +5275,17 @@ class SearchResultComponent {
5275
5275
  let backImageStyle;
5276
5276
  if (Utilities.IsNil(imageLink) || imageLink == 'undefined') {
5277
5277
  imageLink = '/assets/images/image-not-available.png';
5278
- backImageStyle = `
5279
- background-image: url(${imageLink});
5280
- background-size: 64px 64px;
5281
- background-repeat: no-repeat;
5278
+ backImageStyle = `
5279
+ background-image: url(${imageLink});
5280
+ background-size: 64px 64px;
5281
+ background-repeat: no-repeat;
5282
5282
  background-position: top 60px center;`;
5283
5283
  }
5284
5284
  else {
5285
- backImageStyle = `
5286
- background-image: url(${imageLink});
5287
- background-size: auto 64px;
5288
- background-repeat: no-repeat;
5285
+ backImageStyle = `
5286
+ background-image: url(${imageLink});
5287
+ background-size: auto 64px;
5288
+ background-repeat: no-repeat;
5289
5289
  background-position: left;`;
5290
5290
  }
5291
5291
  return backImageStyle;
@@ -5382,11 +5382,11 @@ class SearchComponent {
5382
5382
  });
5383
5383
  }
5384
5384
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: SearchComponent, deps: [{ token: i2$2.ActivatedRoute }, { token: i1$2.ApplicationService }, { token: DFLAT_SEARCH_PROVIDERS, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
5385
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: SearchComponent, isStandalone: false, selector: "msw-search", ngImport: i0, template: "<div>\n <div class=\"search-header petit-titre\">\n <span *ngIf=\"this.isLoading\">\n Recherche en cours (mot-cl\u00E9: {{this.app.FilterService.Keywords}})\n </span>\n <span *ngIf=\"!this.isLoading && this.noResults()\">\n Aucun r\u00E9sultat (mot-cl\u00E9: {{this.app.FilterService.Keywords}})\n </span>\n <span *ngIf=\"!this.isLoading && !this.noResults()\">\n Recherche termin\u00E9e (mot-cl\u00E9: {{this.app.FilterService.Keywords}})\n </span>\n </div>\n\n <div class=\"global-result-container\">\n <div class=\"global-result\" *ngFor=\"let section of this.sections\">\n <msw-search-result\n [title]=\"section.title\"\n [results]=\"section.results\"\n [url]=\"section.url\"\n [nbTotal]=\"section.totalCount\"\n [isLoading]=\"section.isLoading\">\n </msw-search-result>\n </div>\n </div>\n</div>\n", styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}.search-header{height:15px;padding:15px 35px}.global-result-container{display:flex;flex-direction:row;padding:0 15px;flex-wrap:wrap}.global-result{border-radius:20px;box-shadow:0 3px 10px #9cb1f540;background:#fff;margin:15px;padding:0 25px 25px;flex:1}.mini-logo3D-lg{height:80px;margin-right:15px}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SearchResultComponent, selector: "msw-search-result", inputs: ["isLoading", "results", "url", "nbTotal", "title"] }] }); }
5385
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: SearchComponent, isStandalone: false, selector: "msw-search", ngImport: i0, template: "<div>\r\n <div class=\"search-header petit-titre\">\r\n <span *ngIf=\"this.isLoading\">\r\n Recherche en cours (mot-cl\u00E9: {{this.app.FilterService.Keywords}})\r\n </span>\r\n <span *ngIf=\"!this.isLoading && this.noResults()\">\r\n Aucun r\u00E9sultat (mot-cl\u00E9: {{this.app.FilterService.Keywords}})\r\n </span>\r\n <span *ngIf=\"!this.isLoading && !this.noResults()\">\r\n Recherche termin\u00E9e (mot-cl\u00E9: {{this.app.FilterService.Keywords}})\r\n </span>\r\n </div>\r\n\r\n <div class=\"global-result-container\">\r\n <div class=\"global-result\" *ngFor=\"let section of this.sections\">\r\n <msw-search-result\r\n [title]=\"section.title\"\r\n [results]=\"section.results\"\r\n [url]=\"section.url\"\r\n [nbTotal]=\"section.totalCount\"\r\n [isLoading]=\"section.isLoading\">\r\n </msw-search-result>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}.search-header{height:15px;padding:15px 35px}.global-result-container{display:flex;flex-direction:row;padding:0 15px;flex-wrap:wrap}.global-result{border-radius:20px;box-shadow:0 3px 10px #9cb1f540;background:#fff;margin:15px;padding:0 25px 25px;flex:1}.mini-logo3D-lg{height:80px;margin-right:15px}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SearchResultComponent, selector: "msw-search-result", inputs: ["isLoading", "results", "url", "nbTotal", "title"] }] }); }
5386
5386
  }
5387
5387
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: SearchComponent, decorators: [{
5388
5388
  type: Component,
5389
- args: [{ selector: 'msw-search', standalone: false, template: "<div>\n <div class=\"search-header petit-titre\">\n <span *ngIf=\"this.isLoading\">\n Recherche en cours (mot-cl\u00E9: {{this.app.FilterService.Keywords}})\n </span>\n <span *ngIf=\"!this.isLoading && this.noResults()\">\n Aucun r\u00E9sultat (mot-cl\u00E9: {{this.app.FilterService.Keywords}})\n </span>\n <span *ngIf=\"!this.isLoading && !this.noResults()\">\n Recherche termin\u00E9e (mot-cl\u00E9: {{this.app.FilterService.Keywords}})\n </span>\n </div>\n\n <div class=\"global-result-container\">\n <div class=\"global-result\" *ngFor=\"let section of this.sections\">\n <msw-search-result\n [title]=\"section.title\"\n [results]=\"section.results\"\n [url]=\"section.url\"\n [nbTotal]=\"section.totalCount\"\n [isLoading]=\"section.isLoading\">\n </msw-search-result>\n </div>\n </div>\n</div>\n", styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}.search-header{height:15px;padding:15px 35px}.global-result-container{display:flex;flex-direction:row;padding:0 15px;flex-wrap:wrap}.global-result{border-radius:20px;box-shadow:0 3px 10px #9cb1f540;background:#fff;margin:15px;padding:0 25px 25px;flex:1}.mini-logo3D-lg{height:80px;margin-right:15px}\n"] }]
5389
+ args: [{ selector: 'msw-search', standalone: false, template: "<div>\r\n <div class=\"search-header petit-titre\">\r\n <span *ngIf=\"this.isLoading\">\r\n Recherche en cours (mot-cl\u00E9: {{this.app.FilterService.Keywords}})\r\n </span>\r\n <span *ngIf=\"!this.isLoading && this.noResults()\">\r\n Aucun r\u00E9sultat (mot-cl\u00E9: {{this.app.FilterService.Keywords}})\r\n </span>\r\n <span *ngIf=\"!this.isLoading && !this.noResults()\">\r\n Recherche termin\u00E9e (mot-cl\u00E9: {{this.app.FilterService.Keywords}})\r\n </span>\r\n </div>\r\n\r\n <div class=\"global-result-container\">\r\n <div class=\"global-result\" *ngFor=\"let section of this.sections\">\r\n <msw-search-result\r\n [title]=\"section.title\"\r\n [results]=\"section.results\"\r\n [url]=\"section.url\"\r\n [nbTotal]=\"section.totalCount\"\r\n [isLoading]=\"section.isLoading\">\r\n </msw-search-result>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".home-page{font-family:Open sans,sans-serif;background:#fff;-webkit-font-smoothing:antialiased;height:100%;width:100%;padding:16px}.main-container{margin:0 50px}.main-container-modal{width:calc(100% - 50px);margin:10px 25px 0}.moyen-titre{font-weight:700;font-size:24px;color:#4d5a81;margin:8px 0;border-bottom:solid 1px #DBE4FF}.grand-titre{font-weight:700;font-size:28px;color:#4d5a81;margin:0 0 8px}.petit-titre{font-weight:700;font-size:16px;color:#4d5a81;margin:0 0 8px}.petit-titre.underlined{border-bottom:solid 1px #4D5A81}.paragraph{padding:0 15px}.paragraph-highlight{padding:5px 15px 0 12px;border-left:5px solid #8EA7F8;border-bottom:1px solid #DBE4FF;border-top:1px solid #DBE4FF;border-right:1px solid #DBE4FF;background-color:#f7faff}.highlight{background-color:#f7faff;border:1px solid #DBE4FF;border-radius:5px;padding:15px;color:#3c5dc4;margin:0 0 16px}.highlight p{margin-bottom:0}.highlight:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53.294\" height=\"50.629\" viewBox=\"0 0 53.294 50.629\">%0D%0A <path id=\"allerg\\e8ne\" d=\"M830.494,25.793l-5.814,6.783.727,8.963-8.721,1.938-4.6,7.752L803.847,47.6l-8.236,3.634-4.6-7.51-8.721-1.938.727-8.963L777.2,26.035l5.814-6.783-.727-8.963,8.721-1.938L795.61.6l8.236,3.634L812.083.6l4.6,7.752,8.721,1.938-.727,8.963Zm-24.467,2.422V13.681h-4.845V28.216Zm0,9.69V33.06h-4.845v4.845Z\" transform=\"translate(-777.2 -0.6)\"/>%0D%0A</svg>%0D%0A');background-repeat:no-repeat;margin:0 8px 24px 0;filter:invert(31%) sepia(51%) saturate(1323%) hue-rotate(199deg) brightness(99%) contrast(94%)}.notification{background-color:#dbe4ff;border:1px solid #C4D0F9;border-radius:5px;color:#4d5a81;margin:16px;padding:5px 15px;text-align:justify}.notification:before{position:relative;display:block;float:left;width:24px;height:24px;content:\" \";background-size:24px 24px;-webkit-background-size:24px 24px;background-image:url('data:image/svg+xml,<svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"info-circle\" class=\"svg-inline--fa fa-info-circle fa-w-16\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"></path></svg>');background-repeat:no-repeat;margin:0 8px 0 0;filter:invert(31%) sepia(8%) saturate(2329%) hue-rotate(188deg) brightness(103%) contrast(85%)}.notification-text{padding:0 15px 0 30px;font-size:16px}.search-header{height:15px;padding:15px 35px}.global-result-container{display:flex;flex-direction:row;padding:0 15px;flex-wrap:wrap}.global-result{border-radius:20px;box-shadow:0 3px 10px #9cb1f540;background:#fff;margin:15px;padding:0 25px 25px;flex:1}.mini-logo3D-lg{height:80px;margin-right:15px}\n"] }]
5390
5390
  }], ctorParameters: () => [{ type: i2$2.ActivatedRoute }, { type: i1$2.ApplicationService }, { type: undefined, decorators: [{
5391
5391
  type: Optional
5392
5392
  }, {