@mediusinc/mng-commons-layout 5.3.0-rc.2 → 5.3.0-rc.3

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.
@@ -1,4 +1,3 @@
1
- import { DOCUMENT } from '@angular/common';
2
1
  import { ChangeDetectionStrategy, Component, inject, signal } from '@angular/core';
3
2
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
3
  import { FormsModule } from '@angular/forms';
@@ -33,7 +32,6 @@ const defaultColorSchemeOpts = [
33
32
  ];
34
33
  export class SettingsComponent {
35
34
  constructor() {
36
- this.document = inject(DOCUMENT);
37
35
  this.dynamicDialogConfig = inject(DynamicDialogConfig);
38
36
  this.dynamicDialogRef = inject(DynamicDialogRef);
39
37
  this.colorSchemeOptions = signal(defaultColorSchemeOpts);
@@ -50,7 +48,7 @@ export class SettingsComponent {
50
48
  });
51
49
  const translateKey = 'mngSettings.colorScheme.options';
52
50
  this.translate
53
- .stream('mngSettings.colorScheme.options')
51
+ .stream(translateKey)
54
52
  .pipe(takeUntilDestroyed())
55
53
  .subscribe(t => {
56
54
  if (t === translateKey) {
@@ -86,4 +84,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImpor
86
84
  type: Component,
87
85
  args: [{ standalone: true, selector: 'mng-settings', imports: [TranslateModule, RadioButtonModule, FormsModule, Button, DropdownModule, InputSwitchModule, SelectButtonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"h-full flex flex-column\">\n <div class=\"flex-grow-1 mng-action-editor-form-container\">\n @if (commons.appLocales().length > 1 || commons.appDataLocales().length > 1) {\n <h5>{{ 'mngSettings.locales' | translate }}</h5>\n <div class=\"formgrid grid\">\n @if (commons.appLocales().length > 1) {\n <div class=\"field pr-4\">\n <i class=\"pi pi-fw pi-globe\"></i>\n <p-dropdown [ngModel]=\"commons.appLocale()\" [options]=\"commons.appLocales()\" (onChange)=\"switchLocale($event.value)\"></p-dropdown>\n </div>\n }\n @if (commons.appDataLocales().length > 1) {\n <div class=\"field pr-4\">\n <i class=\"pi pi-fw pi-database\"></i>\n <p-dropdown [ngModel]=\"commons.appDataLocale()\" [options]=\"commons.appDataLocales()\" (onChange)=\"switchDataLocale($event.value)\"></p-dropdown>\n </div>\n }\n </div>\n }\n\n <h5>{{ 'mngSettings.colorScheme.title' | translate }}</h5>\n <div class=\"formgrid grid\">\n <p-selectButton\n [options]=\"colorSchemeOptions()\"\n [ngModel]=\"layout.colorSchemeSetting()\"\n (ngModelChange)=\"onColorSchemeChange($event)\"\n optionLabel=\"label\"\n optionValue=\"value\"\n allowEmpty=\"false\" />\n </div>\n\n @if (menuModes.length > 1) {\n <h5>{{ 'mngSettings.menuMode.title' | translate }}</h5>\n <div class=\"formgrid grid\">\n @for (mode of menuModes; track mode) {\n <div class=\"field-radiobutton col-6 md:col-4\">\n <p-radioButton name=\"category\" [value]=\"mode\" [ngModel]=\"layout.menuMode()\" (ngModelChange)=\"onMenuModeChange(mode)\" />\n <label [for]=\"mode\" class=\"ml-2\">\n {{ 'mngSettings.menuMode.' + mode | translate }}\n </label>\n </div>\n }\n </div>\n }\n\n <div class=\"flex flex-row justify-content-between mng-action-editor-footer-container\">\n <div></div>\n <div>\n <p-button (onClick)=\"closeDialog()\" [label]=\"'general.close' | translate\" icon=\"pi pi-times\" styleClass=\"p-button-primary p-button-text\" />\n </div>\n </div>\n </div>\n</div>\n" }]
88
86
  }], ctorParameters: () => [] });
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL3NldHRpbmdzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9zZXR0aW5ncy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBWSxNQUFNLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUMsZUFBZSxFQUFFLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUV4RCxPQUFPLEVBQWMsY0FBYyxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFHeEUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7O0FBT3pELE1BQU0sc0JBQXNCLEdBQXdCO0lBQ2hEO1FBQ0ksS0FBSyxFQUFFLE1BQU07UUFDYixLQUFLLEVBQUUs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LENBQUM7OEdBaEVRLGlCQUFpQjtrR0FBakIsaUJBQWlCLHdFQzdDOUIsd2lGQXFEQSwyQ0RaYyxlQUFlLDJGQUFFLGlCQUFpQiw0VUFBRSxXQUFXLCtWQUFFLE1BQU0scVZBQUUsY0FBYywycUNBQUUsaUJBQWlCLDhCQUFFLGtCQUFrQjs7MkZBSS9HLGlCQUFpQjtrQkFQN0IsU0FBUztpQ0FDTSxJQUFJLFlBQ04sY0FBYyxXQUNmLENBQUMsZUFBZSxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixDQUFDLG1CQUV4Ryx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0b3IsIGluamVjdCwgc2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge0Zvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7QnV0dG9ufSBmcm9tICdwcmltZW5nL2J1dHRvbic7XG5pbXBvcnQge0Ryb3Bkb3duTW9kdWxlfSBmcm9tICdwcmltZW5nL2Ryb3Bkb3duJztcbmltcG9ydCB7RHluYW1pY0RpYWxvZ0NvbmZpZywgRHluYW1pY0RpYWxvZ1JlZn0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcbmltcG9ydCB7SW5wdXRTd2l0Y2hNb2R1bGV9IGZyb20gJ3ByaW1lbmcvaW5wdXRzd2l0Y2gnO1xuaW1wb3J0IHtSYWRpb0J1dHRvbk1vZHVsZX0gZnJvbSAncHJpbWVuZy9yYWRpb2J1dHRvbic7XG5pbXBvcnQge1NlbGVjdEJ1dHRvbk1vZHVsZX0gZnJvbSAncHJpbWVuZy9zZWxlY3RidXR0b24nO1xuXG5pbXBvcnQge0NvbG9yU2NoZW1lLCBDb21tb25zU2VydmljZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcblxuaW1wb3J0IHtMYXlvdXRNZW51TW9kZX0gZnJvbSAnLi4vc2VydmljZXMvbGF5b3V0LWZlYXR1cmUtY29uZmlnLnRva2VuJztcbmltcG9ydCB7TGF5b3V0U2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvbGF5b3V0LnNlcnZpY2UnO1xuXG5pbnRlcmZhY2UgQ29sb3JTY2hlbWVPcHRpb24ge1xuICAgIHZhbHVlOiBDb2xvclNjaGVtZTtcbiAgICBsYWJlbDogc3RyaW5nO1xufVxuXG5jb25zdCBkZWZhdWx0Q29sb3JTY2hlbWVPcHRzOiBDb2xvclNjaGVtZU9wdGlvbltdID0gW1xuICAgIHtcbiAgICAgICAgdmFsdWU6ICdhdXRvJyxcbiAgICAgICAgbGFiZWw6ICdzeXN0ZW0nXG4gICAgfSxcbiAgICB7XG4gICAgICAgIHZhbHVlOiAnbGlnaHQnLFxuICAgICAgICBsYWJlbDogJ2xpZ2h0J1xuICAgIH0sXG4gICAge1xuICAgICAgICB2YWx1ZTogJ2RhcmsnLFxuICAgICAgICBsYWJlbDogJ2RhcmsnXG4gICAgfVxuXTtcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ21uZy1zZXR0aW5ncycsXG4gICAgaW1wb3J0czogW1RyYW5zbGF0ZU1vZHVsZSwgUmFkaW9CdXR0b25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBCdXR0b24sIERyb3Bkb3duTW9kdWxlLCBJbnB1dFN3aXRjaE1vZHVsZSwgU2VsZWN0QnV0dG9uTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFNldHRpbmdzQ29tcG9uZW50IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZHluYW1pY0RpYWxvZ0NvbmZpZyA9IGluamVjdChEeW5hbWljRGlhbG9nQ29uZmlnKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGR5bmFtaWNEaWFsb2dSZWYgPSBpbmplY3QoRHluYW1pY0RpYWxvZ1JlZik7XG4gICAgcHVibGljIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvcjtcbiAgICBwdWJsaWMgcmVhZG9ubHkgdHJhbnNsYXRlO1xuICAgIHB1YmxpYyByZWFkb25seSBjb21tb25zO1xuICAgIHB1YmxpYyByZWFkb25seSBsYXlvdXQ7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgbWVudU1vZGVzO1xuXG4gICAgcHVibGljIGNvbG9yU2NoZW1lT3B0aW9ucyA9IHNpZ25hbChkZWZhdWx0Q29sb3JTY2hlbWVPcHRzKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmluamVjdG9yID0gdGhpcy5keW5hbWljRGlhbG9nQ29uZmlnLmRhdGEuaW5qZWN0b3I7XG4gICAgICAgIHRoaXMudHJhbnNsYXRlID0gdGhpcy5pbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSk7XG4gICAgICAgIHRoaXMuY29tbW9ucyA9IHRoaXMuaW5qZWN0b3IuZ2V0KENvbW1vbnNTZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5sYXlvdXQgPSB0aGlzLmluamVjdG9yLmdldChMYXlvdXRTZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5tZW51TW9kZXMgPSB0aGlzLmxheW91dC5tZW51TW9kZXM7XG5cbiAgICAgICAgdGhpcy50cmFuc2xhdGVcbiAgICAgICAgICAgIC5zdHJlYW0oJ21uZ1NldHRpbmdzLnRpdGxlJylcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSh0ID0+IHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+ICh0aGlzLmR5bmFtaWNEaWFsb2dDb25maWcuaGVhZGVyID0gdCkpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgdHJhbnNsYXRlS2V5ID0gJ21uZ1NldHRpbmdzLmNvbG9yU2NoZW1lLm9wdGlvbnMnO1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZVxuICAgICAgICAgICAgLnN0cmVhbSgnbW5nU2V0dGluZ3MuY29sb3JTY2hlbWUub3B0aW9ucycpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUodCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHQgPT09IHRyYW5zbGF0ZUtleSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbG9yU2NoZW1lT3B0aW9ucy5zZXQoZGVmYXVsdENvbG9yU2NoZW1lT3B0cyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2xvclNjaGVtZU9wdGlvbnMudXBkYXRlKG9wdGlvbnMgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMubWFwKG8gPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogby52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogYCR7dFtvLnZhbHVlXX1gXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzd2l0Y2hMb2NhbGUobGFuZ3VhZ2U6IHN0cmluZykge1xuICAgICAgICB0aGlzLmNvbW1vbnMuc2V0QXBwTG9jYWxlKGxhbmd1YWdlKTtcbiAgICB9XG5cbiAgICBzd2l0Y2hEYXRhTG9jYWxlKGxhbmd1YWdlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5jb21tb25zLnNldEFwcERhdGFMb2NhbGUobGFuZ3VhZ2UpO1xuICAgIH1cblxuICAgIG9uTWVudU1vZGVDaGFuZ2UobW9kZTogTGF5b3V0TWVudU1vZGUpIHtcbiAgICAgICAgdGhpcy5sYXlvdXQub25NZW51TW9kZUNoYW5nZShtb2RlKTtcbiAgICB9XG5cbiAgICBvbkNvbG9yU2NoZW1lQ2hhbmdlKHNjaGVtZTogQ29sb3JTY2hlbWUpIHtcbiAgICAgICAgdGhpcy5sYXlvdXQuc2V0Q29sb3JTY2hlbWUoc2NoZW1lKTtcbiAgICB9XG5cbiAgICBjbG9zZURpYWxvZygpIHtcbiAgICAgICAgdGhpcy5keW5hbWljRGlhbG9nUmVmLmNsb3NlKCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImgtZnVsbCBmbGV4IGZsZXgtY29sdW1uXCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xIG1uZy1hY3Rpb24tZWRpdG9yLWZvcm0tY29udGFpbmVyXCI+XG4gICAgICAgIEBpZiAoY29tbW9ucy5hcHBMb2NhbGVzKCkubGVuZ3RoID4gMSB8fCBjb21tb25zLmFwcERhdGFMb2NhbGVzKCkubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgPGg1Pnt7ICdtbmdTZXR0aW5ncy5sb2NhbGVzJyB8IHRyYW5zbGF0ZSB9fTwvaDU+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybWdyaWQgZ3JpZFwiPlxuICAgICAgICAgICAgICAgIEBpZiAoY29tbW9ucy5hcHBMb2NhbGVzKCkubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgcHItNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1mdyBwaS1nbG9iZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwLWRyb3Bkb3duIFtuZ01vZGVsXT1cImNvbW1vbnMuYXBwTG9jYWxlKClcIiBbb3B0aW9uc109XCJjb21tb25zLmFwcExvY2FsZXMoKVwiIChvbkNoYW5nZSk9XCJzd2l0Y2hMb2NhbGUoJGV2ZW50LnZhbHVlKVwiPjwvcC1kcm9wZG93bj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZiAoY29tbW9ucy5hcHBEYXRhTG9jYWxlcygpLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIHByLTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktZncgcGktZGF0YWJhc2VcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cC1kcm9wZG93biBbbmdNb2RlbF09XCJjb21tb25zLmFwcERhdGFMb2NhbGUoKVwiIFtvcHRpb25zXT1cImNvbW1vbnMuYXBwRGF0YUxvY2FsZXMoKVwiIChvbkNoYW5nZSk9XCJzd2l0Y2hEYXRhTG9jYWxlKCRldmVudC52YWx1ZSlcIj48L3AtZHJvcGRvd24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgPGg1Pnt7ICdtbmdTZXR0aW5ncy5jb2xvclNjaGVtZS50aXRsZScgfCB0cmFuc2xhdGUgfX08L2g1PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybWdyaWQgZ3JpZFwiPlxuICAgICAgICAgICAgPHAtc2VsZWN0QnV0dG9uXG4gICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiY29sb3JTY2hlbWVPcHRpb25zKClcIlxuICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImxheW91dC5jb2xvclNjaGVtZVNldHRpbmcoKVwiXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25Db2xvclNjaGVtZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBvcHRpb25MYWJlbD1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICBvcHRpb25WYWx1ZT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICBhbGxvd0VtcHR5PVwiZmFsc2VcIiAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICBAaWYgKG1lbnVNb2Rlcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICA8aDU+e3sgJ21uZ1NldHRpbmdzLm1lbnVNb2RlLnRpdGxlJyB8IHRyYW5zbGF0ZSB9fTwvaDU+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybWdyaWQgZ3JpZFwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKG1vZGUgb2YgbWVudU1vZGVzOyB0cmFjayBtb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC1yYWRpb2J1dHRvbiBjb2wtNiBtZDpjb2wtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAtcmFkaW9CdXR0b24gbmFtZT1cImNhdGVnb3J5XCIgW3ZhbHVlXT1cIm1vZGVcIiBbbmdNb2RlbF09XCJsYXlvdXQubWVudU1vZGUoKVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uTWVudU1vZGVDaGFuZ2UobW9kZSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwibW9kZVwiIGNsYXNzPVwibWwtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdtbmdTZXR0aW5ncy5tZW51TW9kZS4nICsgbW9kZSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtbmctYWN0aW9uLWVkaXRvci1mb290ZXItY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8ZGl2PjwvZGl2PlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8cC1idXR0b24gKG9uQ2xpY2spPVwiY2xvc2VEaWFsb2coKVwiIFtsYWJlbF09XCInZ2VuZXJhbC5jbG9zZScgfCB0cmFuc2xhdGVcIiBpY29uPVwicGkgcGktdGltZXNcIiBzdHlsZUNsYXNzPVwicC1idXR0b24tcHJpbWFyeSBwLWJ1dHRvbi10ZXh0XCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL3NldHRpbmdzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9zZXR0aW5ncy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFZLE1BQU0sRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBQyxlQUFlLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRXhELE9BQU8sRUFBYyxjQUFjLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUd4RSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7QUFPekQsTUFBTSxzQkFBc0IsR0FBd0I7SUFDaEQ7UUFDSSxLQUFLLEVBQUUsTUFBTTtRQUNiLEtBQUssRUFBRSxRQUFRO0tBQ2xCO0lBQ0Q7UUFDSSxLQUFLLEVBQUUsT0FBTztRQUNkLEtB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VkFBRSxNQUFNLHFWQUFFLGNBQWMsMnFDQUFFLGlCQUFpQiw4QkFBRSxrQkFBa0I7OzJGQUkvRyxpQkFBaUI7a0JBUDdCLFNBQVM7aUNBQ00sSUFBSSxZQUNOLGNBQWMsV0FDZixDQUFDLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsQ0FBQyxtQkFFeEcsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0b3IsIGluamVjdCwgc2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge0Zvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7QnV0dG9ufSBmcm9tICdwcmltZW5nL2J1dHRvbic7XG5pbXBvcnQge0Ryb3Bkb3duTW9kdWxlfSBmcm9tICdwcmltZW5nL2Ryb3Bkb3duJztcbmltcG9ydCB7RHluYW1pY0RpYWxvZ0NvbmZpZywgRHluYW1pY0RpYWxvZ1JlZn0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcbmltcG9ydCB7SW5wdXRTd2l0Y2hNb2R1bGV9IGZyb20gJ3ByaW1lbmcvaW5wdXRzd2l0Y2gnO1xuaW1wb3J0IHtSYWRpb0J1dHRvbk1vZHVsZX0gZnJvbSAncHJpbWVuZy9yYWRpb2J1dHRvbic7XG5pbXBvcnQge1NlbGVjdEJ1dHRvbk1vZHVsZX0gZnJvbSAncHJpbWVuZy9zZWxlY3RidXR0b24nO1xuXG5pbXBvcnQge0NvbG9yU2NoZW1lLCBDb21tb25zU2VydmljZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcblxuaW1wb3J0IHtMYXlvdXRNZW51TW9kZX0gZnJvbSAnLi4vc2VydmljZXMvbGF5b3V0LWZlYXR1cmUtY29uZmlnLnRva2VuJztcbmltcG9ydCB7TGF5b3V0U2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvbGF5b3V0LnNlcnZpY2UnO1xuXG5pbnRlcmZhY2UgQ29sb3JTY2hlbWVPcHRpb24ge1xuICAgIHZhbHVlOiBDb2xvclNjaGVtZTtcbiAgICBsYWJlbDogc3RyaW5nO1xufVxuXG5jb25zdCBkZWZhdWx0Q29sb3JTY2hlbWVPcHRzOiBDb2xvclNjaGVtZU9wdGlvbltdID0gW1xuICAgIHtcbiAgICAgICAgdmFsdWU6ICdhdXRvJyxcbiAgICAgICAgbGFiZWw6ICdzeXN0ZW0nXG4gICAgfSxcbiAgICB7XG4gICAgICAgIHZhbHVlOiAnbGlnaHQnLFxuICAgICAgICBsYWJlbDogJ2xpZ2h0J1xuICAgIH0sXG4gICAge1xuICAgICAgICB2YWx1ZTogJ2RhcmsnLFxuICAgICAgICBsYWJlbDogJ2RhcmsnXG4gICAgfVxuXTtcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ21uZy1zZXR0aW5ncycsXG4gICAgaW1wb3J0czogW1RyYW5zbGF0ZU1vZHVsZSwgUmFkaW9CdXR0b25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBCdXR0b24sIERyb3Bkb3duTW9kdWxlLCBJbnB1dFN3aXRjaE1vZHVsZSwgU2VsZWN0QnV0dG9uTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFNldHRpbmdzQ29tcG9uZW50IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGR5bmFtaWNEaWFsb2dDb25maWcgPSBpbmplY3QoRHluYW1pY0RpYWxvZ0NvbmZpZyk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkeW5hbWljRGlhbG9nUmVmID0gaW5qZWN0KER5bmFtaWNEaWFsb2dSZWYpO1xuICAgIHB1YmxpYyByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3I7XG4gICAgcHVibGljIHJlYWRvbmx5IHRyYW5zbGF0ZTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29tbW9ucztcbiAgICBwdWJsaWMgcmVhZG9ubHkgbGF5b3V0O1xuXG4gICAgcHVibGljIHJlYWRvbmx5IG1lbnVNb2RlcztcblxuICAgIHB1YmxpYyBjb2xvclNjaGVtZU9wdGlvbnMgPSBzaWduYWwoZGVmYXVsdENvbG9yU2NoZW1lT3B0cyk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5pbmplY3RvciA9IHRoaXMuZHluYW1pY0RpYWxvZ0NvbmZpZy5kYXRhLmluamVjdG9yO1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuICAgICAgICB0aGlzLmNvbW1vbnMgPSB0aGlzLmluamVjdG9yLmdldChDb21tb25zU2VydmljZSk7XG4gICAgICAgIHRoaXMubGF5b3V0ID0gdGhpcy5pbmplY3Rvci5nZXQoTGF5b3V0U2VydmljZSk7XG4gICAgICAgIHRoaXMubWVudU1vZGVzID0gdGhpcy5sYXlvdXQubWVudU1vZGVzO1xuXG4gICAgICAgIHRoaXMudHJhbnNsYXRlXG4gICAgICAgICAgICAuc3RyZWFtKCdtbmdTZXR0aW5ncy50aXRsZScpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUodCA9PiB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiAodGhpcy5keW5hbWljRGlhbG9nQ29uZmlnLmhlYWRlciA9IHQpKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHRyYW5zbGF0ZUtleSA9ICdtbmdTZXR0aW5ncy5jb2xvclNjaGVtZS5vcHRpb25zJztcbiAgICAgICAgdGhpcy50cmFuc2xhdGVcbiAgICAgICAgICAgIC5zdHJlYW0odHJhbnNsYXRlS2V5KVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHQgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0ID09PSB0cmFuc2xhdGVLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2xvclNjaGVtZU9wdGlvbnMuc2V0KGRlZmF1bHRDb2xvclNjaGVtZU9wdHMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29sb3JTY2hlbWVPcHRpb25zLnVwZGF0ZShvcHRpb25zID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLm1hcChvID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG8udmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGAke3Rbby52YWx1ZV19YFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc3dpdGNoTG9jYWxlKGxhbmd1YWdlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5jb21tb25zLnNldEFwcExvY2FsZShsYW5ndWFnZSk7XG4gICAgfVxuXG4gICAgc3dpdGNoRGF0YUxvY2FsZShsYW5ndWFnZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuY29tbW9ucy5zZXRBcHBEYXRhTG9jYWxlKGxhbmd1YWdlKTtcbiAgICB9XG5cbiAgICBvbk1lbnVNb2RlQ2hhbmdlKG1vZGU6IExheW91dE1lbnVNb2RlKSB7XG4gICAgICAgIHRoaXMubGF5b3V0Lm9uTWVudU1vZGVDaGFuZ2UobW9kZSk7XG4gICAgfVxuXG4gICAgb25Db2xvclNjaGVtZUNoYW5nZShzY2hlbWU6IENvbG9yU2NoZW1lKSB7XG4gICAgICAgIHRoaXMubGF5b3V0LnNldENvbG9yU2NoZW1lKHNjaGVtZSk7XG4gICAgfVxuXG4gICAgY2xvc2VEaWFsb2coKSB7XG4gICAgICAgIHRoaXMuZHluYW1pY0RpYWxvZ1JlZi5jbG9zZSgpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJoLWZ1bGwgZmxleCBmbGV4LWNvbHVtblwiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMSBtbmctYWN0aW9uLWVkaXRvci1mb3JtLWNvbnRhaW5lclwiPlxuICAgICAgICBAaWYgKGNvbW1vbnMuYXBwTG9jYWxlcygpLmxlbmd0aCA+IDEgfHwgY29tbW9ucy5hcHBEYXRhTG9jYWxlcygpLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIDxoNT57eyAnbW5nU2V0dGluZ3MubG9jYWxlcycgfCB0cmFuc2xhdGUgfX08L2g1PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1ncmlkIGdyaWRcIj5cbiAgICAgICAgICAgICAgICBAaWYgKGNvbW1vbnMuYXBwTG9jYWxlcygpLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIHByLTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktZncgcGktZ2xvYmVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cC1kcm9wZG93biBbbmdNb2RlbF09XCJjb21tb25zLmFwcExvY2FsZSgpXCIgW29wdGlvbnNdPVwiY29tbW9ucy5hcHBMb2NhbGVzKClcIiAob25DaGFuZ2UpPVwic3dpdGNoTG9jYWxlKCRldmVudC52YWx1ZSlcIj48L3AtZHJvcGRvd24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYgKGNvbW1vbnMuYXBwRGF0YUxvY2FsZXMoKS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBwci00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWZ3IHBpLWRhdGFiYXNlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAtZHJvcGRvd24gW25nTW9kZWxdPVwiY29tbW9ucy5hcHBEYXRhTG9jYWxlKClcIiBbb3B0aW9uc109XCJjb21tb25zLmFwcERhdGFMb2NhbGVzKClcIiAob25DaGFuZ2UpPVwic3dpdGNoRGF0YUxvY2FsZSgkZXZlbnQudmFsdWUpXCI+PC9wLWRyb3Bkb3duPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIDxoNT57eyAnbW5nU2V0dGluZ3MuY29sb3JTY2hlbWUudGl0bGUnIHwgdHJhbnNsYXRlIH19PC9oNT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1ncmlkIGdyaWRcIj5cbiAgICAgICAgICAgIDxwLXNlbGVjdEJ1dHRvblxuICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cImNvbG9yU2NoZW1lT3B0aW9ucygpXCJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJsYXlvdXQuY29sb3JTY2hlbWVTZXR0aW5nKClcIlxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ29sb3JTY2hlbWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgb3B0aW9uTGFiZWw9XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgICAgYWxsb3dFbXB0eT1cImZhbHNlXCIgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgQGlmIChtZW51TW9kZXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgPGg1Pnt7ICdtbmdTZXR0aW5ncy5tZW51TW9kZS50aXRsZScgfCB0cmFuc2xhdGUgfX08L2g1PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1ncmlkIGdyaWRcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChtb2RlIG9mIG1lbnVNb2RlczsgdHJhY2sgbW9kZSkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtcmFkaW9idXR0b24gY29sLTYgbWQ6Y29sLTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwLXJhZGlvQnV0dG9uIG5hbWU9XCJjYXRlZ29yeVwiIFt2YWx1ZV09XCJtb2RlXCIgW25nTW9kZWxdPVwibGF5b3V0Lm1lbnVNb2RlKClcIiAobmdNb2RlbENoYW5nZSk9XCJvbk1lbnVNb2RlQ2hhbmdlKG1vZGUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cIm1vZGVcIiBjbGFzcz1cIm1sLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnbW5nU2V0dGluZ3MubWVudU1vZGUuJyArIG1vZGUgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1jb250ZW50LWJldHdlZW4gbW5nLWFjdGlvbi1lZGl0b3ItZm9vdGVyLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGRpdj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPHAtYnV0dG9uIChvbkNsaWNrKT1cImNsb3NlRGlhbG9nKClcIiBbbGFiZWxdPVwiJ2dlbmVyYWwuY2xvc2UnIHwgdHJhbnNsYXRlXCIgaWNvbj1cInBpIHBpLXRpbWVzXCIgc3R5bGVDbGFzcz1cInAtYnV0dG9uLXByaW1hcnkgcC1idXR0b24tdGV4dFwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -757,7 +757,6 @@ const defaultColorSchemeOpts = [
757
757
  ];
758
758
  class SettingsComponent {
759
759
  constructor() {
760
- this.document = inject(DOCUMENT);
761
760
  this.dynamicDialogConfig = inject(DynamicDialogConfig);
762
761
  this.dynamicDialogRef = inject(DynamicDialogRef);
763
762
  this.colorSchemeOptions = signal(defaultColorSchemeOpts);
@@ -774,7 +773,7 @@ class SettingsComponent {
774
773
  });
775
774
  const translateKey = 'mngSettings.colorScheme.options';
776
775
  this.translate
777
- .stream('mngSettings.colorScheme.options')
776
+ .stream(translateKey)
778
777
  .pipe(takeUntilDestroyed())
779
778
  .subscribe(t => {
780
779
  if (t === translateKey) {
@@ -1 +1 @@
1
- {"version":3,"file":"mediusinc-mng-commons-layout.mjs","sources":["../../src/lib/services/layout-feature-config.token.ts","../../src/lib/services/layout.service.ts","../../src/lib/components/pages/error/error.page.component.ts","../../src/lib/components/pages/error/error.page.component.html","../../src/lib/components/pages/not-found/not-found.page.component.ts","../../src/lib/components/pages/not-found/not-found.page.component.html","../../src/lib/services/version.service.ts","../../src/lib/components/version.component.ts","../../src/lib/components/version.component.html","../../src/lib/components/footer.component.ts","../../src/lib/components/footer.component.html","../../src/lib/components/breadcrumb.component.ts","../../src/lib/components/breadcrumb.component.html","../../src/lib/helpers/menu-items.ts","../../src/lib/services/menu.service.ts","../../src/lib/components/menu-item.component.ts","../../src/lib/components/menu-item.component.html","../../src/lib/components/menu.component.ts","../../src/lib/components/menu.component.html","../../src/lib/components/sidebar.component.ts","../../src/lib/components/sidebar.component.html","../../src/lib/components/settings.component.ts","../../src/lib/components/settings.component.html","../../src/lib/components/topbar-user.component.ts","../../src/lib/components/topbar-user.component.html","../../src/lib/components/topbar.component.ts","../../src/lib/components/topbar.component.html","../../src/lib/components/main-layout.component.ts","../../src/lib/components/main-layout.component.html","../../src/lib/helpers/route-builder.ts","../../src/lib/provide.ts","../../src/index.ts","../../src/mediusinc-mng-commons-layout.ts"],"sourcesContent":["import {InjectionToken, Type} from '@angular/core';\n\nimport {MenuItem} from 'primeng/api';\n\nexport type LayoutMenuMode = 'static' | 'overlay' | 'reveal' | 'drawer' | 'slim' | 'slim-plus';\n\nexport type ColorScheme = 'light' | 'dark' | 'auto';\n\n/**\n * Set of configurations for layout customization.\n */\nexport interface LayoutFeatureConfig {\n /**\n * Choose default menu mode.\n */\n menuMode?: LayoutMenuMode;\n /**\n * Sets available menu modes.\n */\n menuModes?: LayoutMenuMode[];\n /**\n * Predefines menu modes (instead of taking them from route data config).\n */\n menuItems?: MenuItem[];\n /**\n * Logo path (usually icon part only).\n */\n logoPath?: string;\n /**\n * Logo path for light color mode (usually icon part only).\n */\n logoPathLight?: string;\n /**\n * Logo path for dark color mode (usually icon part only).\n */\n logoPathDark?: string;\n /**\n * Logo path (usually name part only).\n */\n logoNamePath?: string;\n /**\n * Logo path for light color mode (usually name part only).\n */\n logoNamePathLight?: string;\n /**\n * Logo path for dark color mode (usually name part only).\n */\n logoNamePathDark?: string;\n /**\n * Default color scheme (defaults to 'auto').\n */\n colorScheme?: ColorScheme;\n /**\n * Enable ripple effect.\n */\n ripple?: boolean;\n /**\n * Disables wrapping layout in notification wrapper.\n */\n disableNotificationWrapper?: boolean;\n /**\n * Set custom components instead of default layout's one. If false provided for component, then it will not be displayed.\n */\n components?: {\n /**\n * Specify custom topbar component or disable (if false).\n */\n topbar?: Type<any> | false;\n /**\n * Specify custom menu component or disable (if false).\n */\n menu?: Type<any> | false;\n /**\n * Specify custom footer component or disable (if false).\n */\n footer?: Type<any> | false;\n /**\n * Specify custom breadcrumb component or disable (if false).\n */\n breadcrumb?: Type<any> | false;\n /**\n * Specify custom topbarUser component or disable (if false).\n */\n topbarUser?: Type<any> | false;\n /**\n * Specify custom version component or disable (if false).\n */\n version?: Type<any> | false;\n /**\n * Specify custom settings component or disable (if false).\n */\n settings?: Type<any> | false;\n };\n}\n\nexport const COMMONS_LAYOUT_FEATURE_CONFIG_IT = new InjectionToken<LayoutFeatureConfig>('COMMONS_LAYOUT_FEATURE_CONFIG');\n","import {DOCUMENT} from '@angular/common';\nimport {Injectable, PLATFORM_ID, afterNextRender, computed, effect, inject, signal} from '@angular/core';\n\nimport {Subject} from 'rxjs';\n\nimport {COMMONS_MODULE_CONFIG_IT, CommonsStorageService} from '@mediusinc/mng-commons/core';\n\nimport {LayoutState} from '../models/layout-state.model';\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT, ColorScheme, LayoutMenuMode} from './layout-feature-config.token';\n\n@Injectable()\nexport class LayoutService {\n private readonly typeName = 'MainLayoutComponentService';\n private readonly storageMenuModeKey = 'menuMode';\n private readonly storageColorSchemeKey = 'colorScheme';\n\n private readonly platformId = inject(PLATFORM_ID);\n private readonly document = inject(DOCUMENT);\n private readonly commonsConfig = inject(COMMONS_MODULE_CONFIG_IT, {optional: true});\n private readonly config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, {optional: true});\n private readonly storageService = inject(CommonsStorageService);\n\n public state = signal<LayoutState>({\n staticMenuDesktopInactive: false,\n overlayMenuActive: false,\n rightMenuActive: false,\n configSidebarVisible: false,\n staticMenuMobileActive: false,\n menuHoverActive: false,\n sidebarActive: false,\n anchored: false\n });\n\n private overlayOpen = new Subject<any>();\n public overlayOpen$ = this.overlayOpen.asObservable();\n\n // color scheme\n private _colorSchemeSetting = signal(this.getInitColorScheme());\n public colorSchemeSetting = this._colorSchemeSetting.asReadonly();\n private _colorScheme = signal<Exclude<ColorScheme, 'system'>>(this.getInitActualColorScheme(this.colorSchemeSetting()));\n public colorScheme = this._colorScheme.asReadonly();\n public colorSchemeIsLight = computed(() => this._colorScheme() === 'light');\n\n private getInitColorScheme(): ColorScheme {\n let colorScheme = this.storageService.getItem<ColorScheme>(this.typeName, this.storageColorSchemeKey);\n if (colorScheme == null || !(['dark', 'light', 'auto'] as ColorScheme[]).includes(colorScheme)) {\n colorScheme = this.getDefaultColorScheme();\n }\n return colorScheme;\n }\n\n private getInitActualColorScheme(colorScheme: ColorScheme): Exclude<ColorScheme, 'system'> {\n if (colorScheme === 'auto') {\n return window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n } else {\n return colorScheme;\n }\n }\n\n private getDefaultColorScheme(): ColorScheme {\n return this.config?.colorScheme ?? this.commonsConfig?.app?.colorScheme ?? 'auto';\n }\n\n public setColorScheme(scheme: ColorScheme) {\n const defaultColorScheme = this.getDefaultColorScheme();\n if (scheme === defaultColorScheme) {\n this.storageService.removeItem(this.typeName, this.storageColorSchemeKey);\n } else {\n this.storageService.setItem(this.typeName, this.storageColorSchemeKey, scheme);\n }\n this._colorSchemeSetting.set(scheme);\n this._colorScheme.set(this.getInitActualColorScheme(scheme));\n }\n\n // menu mode\n public readonly menuModes: LayoutMenuMode[] = this.config?.menuModes ?? ['static', 'overlay', 'reveal', 'drawer', 'slim', 'slim-plus'];\n private _menuMode = signal(this.initMenuMode());\n public menuMode = this._menuMode.asReadonly();\n\n // logos\n private appLogoLight = signal(\n this.config?.logoPathLight ?? this.commonsConfig?.app?.logoPathLight ?? this.config?.logoPath ?? this.commonsConfig?.app?.logoPath ?? 'assets/layout/images/logo.png'\n );\n private appLogoDark = signal(\n this.config?.logoPathLight ?? this.commonsConfig?.app?.logoPathDark ?? this.config?.logoPath ?? this.commonsConfig?.app?.logoPath ?? 'assets/layout/images/logo.png'\n );\n public appLogo = computed(() => (this.colorSchemeIsLight() ? this.appLogoLight() : this.appLogoDark()));\n\n private appLogoNameLight = signal(\n this.config?.logoNamePathLight ??\n this.commonsConfig?.app?.logoNamePathLight ??\n this.config?.logoNamePath ??\n this.commonsConfig?.app?.logoNamePath ??\n 'assets/layout/images/logo-appname.png'\n );\n private appLogoNameDark = signal(\n this.config?.logoNamePathDark ??\n this.commonsConfig?.app?.logoNamePathDark ??\n this.config?.logoNamePath ??\n this.commonsConfig?.app?.logoNamePath ??\n 'assets/layout/images/logo-appname.png'\n );\n public appLogoName = computed(() => (this.colorSchemeIsLight() ? this.appLogoNameLight() : this.appLogoNameDark()));\n\n // overlays\n public isOverlay = computed(() => this.menuMode() === 'overlay');\n public isSlim = computed(() => this.menuMode() === 'slim');\n public isSlimPlus = computed(() => this.menuMode() === 'slim-plus');\n\n constructor() {\n afterNextRender(() => {\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => {\n if (this.colorSchemeSetting() === 'auto') {\n const newColorScheme = event.matches ? 'dark' : 'light';\n this._colorScheme.set(newColorScheme);\n }\n });\n });\n\n effect(() => {\n const colorScheme = this._colorScheme();\n const linkElement = this.document.getElementById('app-theme') as HTMLLinkElement;\n if (colorScheme === 'dark' && linkElement.href.includes('light')) {\n linkElement.href = 'theme-dark.css';\n } else if (colorScheme === 'light' && linkElement.href.includes('dark')) {\n linkElement.href = 'theme-light.css';\n }\n });\n }\n\n onMenuModeChange(mode: LayoutMenuMode) {\n if (!this.menuModes.includes(mode)) {\n return;\n }\n if (mode === this.config?.menuMode) {\n this.storageService.removeItem(this.typeName, this.storageMenuModeKey);\n } else {\n this.storageService.setItem(this.typeName, this.storageMenuModeKey, mode);\n }\n this._menuMode.set(mode);\n }\n\n onMenuToggle() {\n if (this.isOverlay()) {\n this.state.update(state => ({\n ...state,\n overlayMenuActive: !state.overlayMenuActive\n }));\n\n if (this.state().overlayMenuActive) {\n this.overlayOpen.next(null);\n }\n }\n\n if (this.isDesktop()) {\n this.state.update(state => ({\n ...state,\n staticMenuDesktopInactive: !state.staticMenuDesktopInactive\n }));\n } else {\n this.state.update(state => ({\n ...state,\n staticMenuMobileActive: !state.staticMenuMobileActive\n }));\n\n if (this.state().staticMenuMobileActive) {\n this.overlayOpen.next(null);\n }\n }\n }\n\n onOverlaySubmenuOpen() {\n this.overlayOpen.next(null);\n }\n\n isDesktop() {\n return window.innerWidth > 991;\n }\n\n isMobile() {\n return !this.isDesktop();\n }\n\n private initMenuMode(): LayoutMenuMode {\n const lsMode = this.storageService.getItem<LayoutMenuMode>(this.typeName, this.storageMenuModeKey);\n if (lsMode && this.menuModes.includes(lsMode)) {\n return lsMode;\n }\n return this.config?.menuMode ?? 'static';\n }\n}\n","import {ChangeDetectionStrategy, Component, inject} from '@angular/core';\nimport {RouterLink} from '@angular/router';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ButtonModule} from 'primeng/button';\n\nimport {LayoutService} from '../../../services/layout.service';\n\n@Component({\n standalone: true,\n selector: 'mng-error-page',\n imports: [ButtonModule, TranslateModule, RouterLink],\n styleUrls: ['error.page.component.scss'],\n templateUrl: './error.page.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ErrorPageComponent {\n public readonly layout = inject(LayoutService);\n}\n","<div [class]=\"'exception-body min-h-screen ' + (layout.colorSchemeIsLight() ? 'layout-light' : 'layout-dark')\">\n <div class=\"exception-container min-h-screen flex align-items-center justify-content-center flex-column bg-auto md:bg-contain bg-no-repeat\">\n <div class=\"exception-panel text-center flex align-items-center justify-content-center flex-column\">\n <h1 class=\"text-red-400 mb-0\">{{ 'pages.notFound.title' | translate }}</h1>\n <h3 class=\"text-red-300\">{{ 'pages.notFound.subtitle' | translate }}</h3>\n <button type=\"button\" pButton [label]=\"'general.returnHome' | translate\" [routerLink]=\"['/']\"></button>\n </div>\n <div class=\"exception-footer align-items-center flex\">\n <img [src]=\"layout.appLogo()\" class=\"exception-logo\" alt=\"App logo\" />\n <img [src]=\"layout.appLogoName()\" class=\"exception-appname ml-3\" alt=\"App name\" />\n </div>\n </div>\n</div>\n","import {ChangeDetectionStrategy, Component, inject} from '@angular/core';\nimport {RouterLink} from '@angular/router';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ButtonModule} from 'primeng/button';\n\nimport {LayoutService} from '../../../services/layout.service';\n\n@Component({\n standalone: true,\n selector: 'mng-not-found-page',\n imports: [ButtonModule, RouterLink, TranslateModule],\n styleUrls: ['not-found.page.component.scss'],\n templateUrl: './not-found.page.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NotFoundPageComponent {\n public readonly layout = inject(LayoutService);\n}\n","<div [class]=\"'exception-body min-h-screen ' + (layout.colorSchemeIsLight() ? 'layout-light' : 'layout-dark')\">\n <div class=\"exception-container min-h-screen flex align-items-center justify-content-center flex-column bg-auto md:bg-contain bg-no-repeat\">\n <div class=\"exception-panel text-center flex align-items-center justify-content-center flex-column\">\n <h1 class=\"text-red-400 mb-0\">{{ 'pages.notFound.title' | translate }}</h1>\n <h3 class=\"text-red-300\">{{ 'pages.notFound.subtitle' | translate }}</h3>\n <p>{{ 'pages.notFound.message' | translate }}</p>\n <button type=\"button\" pButton [label]=\"'general.returnHome' | translate\" [routerLink]=\"['/']\"></button>\n </div>\n <div class=\"exception-footer align-items-center flex\">\n <img [src]=\"layout.appLogo()\" class=\"exception-logo\" alt=\"App logo\" />\n <img [src]=\"layout.appLogoName()\" class=\"exception-appname ml-3\" alt=\"App name\" />\n </div>\n </div>\n</div>\n","import {HttpClient} from '@angular/common/http';\nimport {Injectable, inject} from '@angular/core';\n\nimport {Observable, ReplaySubject} from 'rxjs';\n\nimport {CommonsConfigurationService, LoggerService} from '@mediusinc/mng-commons/core';\n\n@Injectable()\nexport class VersionService {\n private readonly logger = inject(LoggerService).create('VersionService');\n private cache: {[key: string]: ReplaySubject<unknown>} = {};\n\n constructor(\n private http: HttpClient,\n private configurationService: CommonsConfigurationService\n ) {}\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public loadVersion(path: string, baseConfigKey?: string, jsonPath = '$'): Observable<unknown> {\n const urlSegments = [];\n if (baseConfigKey) {\n const baseUrl = this.configurationService.getConfigValue(baseConfigKey);\n urlSegments.push(baseUrl.endsWith('/') ? baseUrl.substring(0, baseUrl.length - 1) : baseUrl);\n }\n if (path) {\n urlSegments.push(!path.startsWith('/') ? `/${path}` : path);\n }\n const url = urlSegments.join('');\n if (!this.cache[url]) {\n this.cache[url] = new ReplaySubject<unknown>(1);\n\n this.http.get(urlSegments.join('')).subscribe({\n next: res => {\n this.cache[url].next(res);\n },\n error: err => {\n this.logger.error('Version could not be retreived', err);\n }\n });\n }\n\n return this.cache[url].asObservable();\n }\n}\n","import {AsyncPipe} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, DestroyRef, computed, inject, input, signal} from '@angular/core';\nimport {takeUntilDestroyed, toObservable} from '@angular/core/rxjs-interop';\n\nimport {catchError, of, switchMap, take} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {JsonPathPipe, VersionConfig, VersionConfigType, VersionInfo} from '@mediusinc/mng-commons/core';\n\nimport {VersionService} from '../services/version.service';\n\n@Component({\n standalone: true,\n selector: 'mng-version',\n templateUrl: './version.component.html',\n imports: [AsyncPipe],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class VersionComponent {\n private readonly versionService = inject(VersionService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly jsonPathPipe = new JsonPathPipe();\n\n public initVersion = input<VersionConfigType>(undefined, {alias: 'version'});\n\n public isLoading = signal<boolean>(false);\n private loadedVersion = signal<VersionConfigType | undefined>(undefined);\n\n public displayVersion = computed<string | undefined>(() => {\n if (typeof this.initVersion() === 'string') {\n return this.initVersion();\n } else if (typeof this.initVersion() !== 'undefined') {\n if (this.initVersion()!['info' as keyof object] || this.initVersion()!['urlPath' as keyof object]) {\n if (typeof this.loadedVersion() !== 'undefined') {\n return this.loadedVersion();\n } else if (this.initVersion()!['info' as keyof object]) {\n const config = this.initVersion() as VersionConfig;\n return this.jsonPathPipe.transform(config.info, config.infoJsonPath ?? '$.raw');\n }\n } else {\n const info = this.initVersion() as VersionInfo;\n return this.jsonPathPipe.transform(info, '$.raw');\n }\n }\n return;\n });\n\n public versions = computed<Array<VersionConfig> | undefined>(() => {\n if (Array.isArray(this.initVersion())) {\n return this.initVersion() as Array<VersionConfig>;\n }\n return;\n });\n\n public displayName = computed<string | undefined>(() => {\n if (typeof this.initVersion() !== 'undefined') {\n if (this.initVersion()!['info' as keyof object] || this.initVersion()!['urlPath' as keyof object]) {\n const config = this.initVersion() as VersionConfig;\n return config.displayName;\n }\n }\n return;\n });\n\n constructor() {\n toObservable(this.initVersion)\n .pipe(\n catchError(() => of(undefined)),\n switchMap(version => {\n if (typeof version !== 'undefined' && (version['info' as keyof object] || version['urlPath' as keyof object])) {\n const config = version as VersionConfig;\n if (config.urlPath) {\n this.isLoading.set(true);\n return this.versionService.loadVersion(config.urlPath, config.urlBaseConfigKey).pipe(\n take(1),\n map(res => ({res, config}))\n );\n }\n }\n return of({res: undefined, config: undefined});\n }),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe({\n next: ({res, config}) => {\n if (typeof res !== 'undefined' && typeof config !== 'undefined') {\n this.loadedVersion.set(this.jsonPathPipe.transform(res, config.infoJsonPath ?? '$'));\n } else {\n this.loadedVersion.set(undefined);\n }\n this.isLoading.set(false);\n },\n error: () => {\n this.loadedVersion.set('');\n this.isLoading.set(false);\n }\n });\n }\n}\n","@if (versions()) {\n @for (v of versions(); track v; let last = $last) {\n <mng-version [version]=\"v\"></mng-version>\n @if (!last) {\n <br />\n }\n }\n} @else {\n @if (displayName()) {{{ displayName() }}}\n @if (displayName() && displayVersion()) {: }\n @if (!isLoading()) {{{ displayVersion() }}}\n}\n","import {NgOptimizedImage} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, Type, inject, signal} from '@angular/core';\n\nimport {TranslateModule} from '@ngx-translate/core';\n\nimport {CommonsService, ComponentDirective} from '@mediusinc/mng-commons/core';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT} from '../services/layout-feature-config.token';\nimport {LayoutService} from '../services/layout.service';\nimport {VersionComponent} from './version.component';\n\n@Component({\n standalone: true,\n selector: 'mng-footer',\n templateUrl: 'footer.component.html',\n imports: [TranslateModule, NgOptimizedImage, VersionComponent, ComponentDirective],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FooterComponent {\n private config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, {optional: true});\n public readonly layout = inject(LayoutService);\n public commons = inject(CommonsService);\n\n public currentYear = signal(new Date().getFullYear());\n public versionComponent = signal<Type<any> | undefined>(this.config?.components?.version === false ? undefined : this.config?.components?.version ?? VersionComponent);\n}\n","<div class=\"layout-footer\">\n <div class=\"footer-logo-container\">\n <img id=\"footer-logo\" [src]=\"layout.appLogo()\" alt=\"atlantis-layout\" />\n <span class=\"app-name\">{{ commons.appName() | translate }}</span>\n </div>\n <div class=\"flex flex-column\">\n <div>\n <span class=\"copyright\">&#169; {{ commons.appOwner() | translate }} - {{ currentYear() }}</span>\n </div>\n @if (versionComponent()) {\n <div class=\"version\" [mngComponent]=\"versionComponent()\" [inputs]=\"{version: commons.appVersion()}\" [attachToHost]=\"true\"></div>\n }\n </div>\n</div>\n","import {ChangeDetectionStrategy, Component, computed, inject} from '@angular/core';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {MenuItem} from 'primeng/api';\n\nimport {CommonsMenuItem, CommonsService} from '@mediusinc/mng-commons/core';\n\n@Component({\n standalone: true,\n selector: 'mng-breadcrumb',\n imports: [TranslateModule],\n templateUrl: './breadcrumb.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BreadcrumbComponent {\n private commons = inject(CommonsService);\n\n public mappedBreadcrumbs = computed(() => {\n const items: CommonsMenuItem[] = this.commons.breadcrumbs();\n return items.map(el => this.mapMenuItem(el));\n });\n\n private mapMenuItem(item: CommonsMenuItem): MenuItem {\n return {\n ...item,\n url: item.href,\n badgeStyleClass: item.badgeClassName,\n styleClass: item.className\n };\n }\n}\n","<div class=\"layout-breadcrumb flex align-items-center relative h-3rem\">\n <nav>\n <ol class=\"relative z-2\">\n @for (item of mappedBreadcrumbs(); track item.id; let last = $last) {\n <li>{{ item.label! | translate }}</li>\n @if (!last) {\n <li class=\"layout-breadcrumb-chevron\">/</li>\n }\n }\n </ol>\n </nav>\n</div>\n","import {computed, signal} from '@angular/core';\n\nimport {CommonsMenuItem, InternalCommonsMenuItem} from '@mediusinc/mng-commons/core';\n\nexport function prepareMenuItemsToInternal(menuItems: CommonsMenuItem[], parentKey = ''): InternalCommonsMenuItem[] {\n const newItems = menuItems.map((item, idx) => {\n const itemsProp = signal<InternalCommonsMenuItem[]>([]);\n const lazyChildrenProp = signal(item.lazyChildren ?? false);\n const hasItemsProp = computed(() => itemsProp().length > 0);\n const newItem: InternalCommonsMenuItem = {\n ...item,\n isVisible: typeof item.isVisible !== 'undefined' ? item.isVisible : item.visible,\n key: parentKey ? parentKey + '-' + idx : idx.toString(),\n config: item,\n items: itemsProp,\n lazyChildren: lazyChildrenProp,\n itemsVisibility: signal([]),\n hasItems: hasItemsProp,\n hasItemsOrLazyChildren: computed(() => lazyChildrenProp() || hasItemsProp())\n };\n\n if (Array.isArray(item.items) && item.items.length > 0) {\n newItem.items.set(prepareMenuItemsToInternal(item.items, newItem.key));\n newItem.itemsVisibility.set(newItem.items()?.map(() => signal(true)));\n }\n\n return newItem;\n });\n\n return newItems;\n}\n","import {DestroyRef, Injectable, inject, signal} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {NavigationEnd, Router} from '@angular/router';\n\nimport {ReplaySubject, Subscription, startWith, take} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nimport {\n CommonsMenuItem,\n CommonsRouteData,\n CommonsRouterService,\n InternalCommonsMenuItem,\n LoggerService,\n adjustRouteMenuLazyChildrenRouterLinks,\n doesUrlMatchRouterLink\n} from '@mediusinc/mng-commons/core';\n\nimport {prepareMenuItemsToInternal} from '../helpers/menu-items';\nimport {MenuChangeEvent} from '../models/menu.model';\n\n@Injectable()\nexport class MenuService {\n private readonly destroyRef = inject(DestroyRef);\n private readonly logger = LoggerService.create('MenuService');\n private readonly router = inject(Router);\n private readonly commonsRouter = inject(CommonsRouterService);\n\n private _menuItems = signal<InternalCommonsMenuItem[]>([]);\n public menuItems = this._menuItems.asReadonly();\n\n private readonly menuChangeSubject = new ReplaySubject<MenuChangeEvent>(1);\n menuChange$ = this.menuChangeSubject.asObservable();\n\n private routeLoadedChildrenSubscriptions: Subscription[] = [];\n\n setItems(menuItems: Array<CommonsMenuItem>) {\n this.routeLoadedChildrenSubscriptions.forEach(s => s.unsubscribe());\n this.routeLoadedChildrenSubscriptions = [];\n\n this._menuItems.set(prepareMenuItemsToInternal(menuItems));\n this.appendListenersToLazyChildren(this._menuItems());\n\n this.router.events;\n this.router.events\n .pipe(\n startWith(new NavigationEnd(0, this.router.url, this.router.url)),\n filter(event => event instanceof NavigationEnd),\n map(e => e as NavigationEnd),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(e => {\n this.findAndSetActiveMenuItem((e as NavigationEnd).urlAfterRedirects);\n });\n }\n\n private appendListenersToLazyChildren(menuItems: InternalCommonsMenuItem[]) {\n menuItems.forEach(item => {\n if (item.lazyChildren()) {\n this.listenToMenuItemLazyChildrenLoad(item);\n } else if (item.items()) {\n this.appendListenersToLazyChildren(item.items());\n }\n });\n }\n\n private findAndSetActiveMenuItem(url: string) {\n const matches = this.findActiveRouteMatches(this.menuItems(), url);\n if (matches.length === 0) {\n this.reset();\n } else {\n const matchKey = matches[0][matches[0].length - 1].key;\n if (matchKey) {\n this.menuChangeSubject.next({\n key: matchKey,\n eventType: 'routeChange'\n });\n } else {\n this.logger.warn(`Found active menu item for url ${url}, but item key is not present`, matches);\n this.reset();\n }\n\n if (matches.length > 1) {\n this.logger.warn(`Multiple active menu items found for url ${url}`, matches);\n }\n }\n }\n\n private listenToMenuItemLazyChildrenLoad(menuItem: InternalCommonsMenuItem) {\n this.routeLoadedChildrenSubscriptions.push(\n this.commonsRouter\n .getRouteLoadedChildren$(menuItem.routerLink ?? '/')\n .pipe(take(1))\n .subscribe({\n next: routes => {\n const menuItemsFromRoutes = routes\n .filter(r => Array.isArray((r.data as CommonsRouteData | undefined)?.menuItems))\n .flatMap(r => (r.data as CommonsRouteData).menuItems!);\n const menuItems = adjustRouteMenuLazyChildrenRouterLinks(menuItem, menuItemsFromRoutes);\n\n menuItem.items.set(prepareMenuItemsToInternal(menuItems, menuItem.key));\n this.appendListenersToLazyChildren(menuItem.items());\n menuItem.itemsVisibility.set(menuItem.items()?.map(() => signal(true)));\n menuItem.lazyChildren.set(false);\n\n this.findAndSetActiveMenuItem(this.router.url);\n }\n })\n );\n }\n\n private findActiveRouteMatches(menuItems: Array<InternalCommonsMenuItem>, url: string): InternalCommonsMenuItem[][] {\n const matches: InternalCommonsMenuItem[][] = [];\n for (const menuItem of menuItems) {\n const chidldren = menuItem.items();\n if (menuItem.routerLink) {\n const isActive = doesUrlMatchRouterLink(menuItem.routerLink, url);\n if (isActive) {\n if (Array.isArray(chidldren)) {\n const itemsMatches = this.findActiveRouteMatches(chidldren, url);\n if (itemsMatches.length > 0) {\n matches.push(...itemsMatches.map(c => [menuItem, ...c]));\n } else {\n matches.push([menuItem]);\n }\n } else {\n matches.push([menuItem]);\n }\n }\n } else if (Array.isArray(chidldren)) {\n const itemsMatches = this.findActiveRouteMatches(chidldren, url);\n if (itemsMatches.length > 0) {\n matches.push(...itemsMatches.map(c => [menuItem, ...c]));\n }\n }\n }\n return matches;\n }\n\n reset() {\n this.menuChangeSubject.next({\n eventType: 'reset'\n });\n }\n}\n","import {AnimationEvent, animate, state, style, transition, trigger} from '@angular/animations';\nimport {AsyncPipe, NgClass} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, ElementRef, computed, effect, inject, input, output, viewChild} from '@angular/core';\nimport {toObservable as ngToObservable, toSignal} from '@angular/core/rxjs-interop';\nimport {RouterModule} from '@angular/router';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {RippleModule} from 'primeng/ripple';\nimport {TooltipModule} from 'primeng/tooltip';\nimport {distinctUntilChanged, of, switchMap} from 'rxjs';\n\nimport {InternalCommonsMenuItem, PermissionService, toObservable} from '@mediusinc/mng-commons/core';\n\nimport {LayoutService} from '../services/layout.service';\nimport {MenuService} from '../services/menu.service';\n\n@Component({\n standalone: true,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[mng-menuitem]',\n templateUrl: 'menu-item.component.html',\n imports: [NgClass, RippleModule, TooltipModule, RouterModule, TranslateModule, AsyncPipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('children', [\n state(\n 'collapsed',\n style({\n height: '0'\n })\n ),\n state(\n 'expanded',\n style({\n height: '*'\n })\n ),\n state(\n 'hidden',\n style({\n display: 'none'\n })\n ),\n state(\n 'visible',\n style({\n display: 'block'\n })\n ),\n transition('collapsed <=> expanded', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)'))\n ])\n ],\n host: {\n '[class.active-menuitem]': '!root() && active()',\n '[class.layout-root-menuitem]': 'root()'\n },\n providers: [PermissionService]\n})\nexport class MenuItemComponent {\n private readonly menuService = inject(MenuService);\n private readonly permissionService = inject(PermissionService);\n private readonly layout = inject(LayoutService);\n\n public item = input.required<InternalCommonsMenuItem>();\n public root = input(false);\n public visibleChange = output<boolean>();\n\n private submenuElRef = viewChild<ElementRef>('submenu');\n\n public isPermitted = toSignal(ngToObservable(this.item).pipe(switchMap(i => (i.permissions ? this.permissionService.isMenuItemVisible(i.permissions, i.config) : of(true)))));\n public isVisibleFromItemSettings = toSignal(\n ngToObservable(this.item).pipe(switchMap(i => (typeof i.isVisible === 'function' ? toObservable(i.isVisible(i.config)) : of(i.isVisible ?? true))))\n );\n private menuChangeEvents = toSignal(this.menuService.menuChange$.pipe(distinctUntilChanged((v1, v2) => v1.key === v2.key)));\n public active = computed(() => {\n if (!this.isPermitted()) {\n return false;\n }\n const menuChangeEvent = this.menuChangeEvents();\n if (menuChangeEvent) {\n return menuChangeEvent.eventType === 'reset' || !menuChangeEvent.key\n ? false\n : this.item().key === menuChangeEvent.key || menuChangeEvent.key.startsWith((this.item().key ?? '') + '-');\n }\n return false;\n });\n public visible = computed(() => {\n const isPermitted = this.isPermitted();\n if (!isPermitted) {\n return false;\n }\n if (!this.isVisibleFromItemSettings()) {\n return false;\n }\n const items = this.item().items();\n if (\n Array.isArray(items) &&\n items.length > 0 &&\n this.item()\n .itemsVisibility()\n .every(v => !v())\n ) {\n return false;\n }\n return true;\n });\n\n constructor() {\n effect(() => {\n if (this.root() && this.active() && this.layout.isDesktop() && (this.layout.isSlim() || this.layout.isSlimPlus())) {\n this.calculatePosition(this.submenuElRef()?.nativeElement, this.submenuElRef()?.nativeElement.parentElement);\n }\n });\n }\n\n get submenuAnimation() {\n if (this.layout.isDesktop() && (this.layout.isSlim() || this.layout.isSlimPlus())) {\n return this.active() ? 'visible' : 'hidden';\n } else {\n return this.root() ? 'expanded' : this.active() ? 'expanded' : 'collapsed';\n }\n }\n\n public itemClick(event: Event) {\n const item = this.item();\n // avoid processing disabled items\n if (item.disabled) {\n event.preventDefault();\n return;\n }\n\n // toggle active state\n if (item.hasItemsOrLazyChildren()) {\n if ((this.root() || this.active()) && (this.layout.isSlim() || this.layout.isSlimPlus())) {\n this.layout.onOverlaySubmenuOpen();\n }\n } else {\n if (this.layout.isMobile()) {\n this.layout.state.update(state => ({\n ...state,\n staticMenuMobileActive: false\n }));\n }\n if (this.layout.isSlim() || this.layout.isSlimPlus()) {\n this.menuService.reset();\n this.layout.state.update(state => ({\n ...state,\n menuHoverActive: false\n }));\n }\n }\n }\n\n onSubmenuAnimated(event: AnimationEvent) {\n if (event.toState === 'visible' && this.layout.isDesktop() && (this.layout.isSlim() || this.layout.isSlimPlus())) {\n const el = <HTMLUListElement>event.element;\n const elParent = <HTMLUListElement>el.parentElement;\n this.calculatePosition(el, elParent);\n }\n }\n\n public onChildVisibleChange(visible: boolean, item: InternalCommonsMenuItem, idx: number) {\n this.item().itemsVisibility()[idx]?.set(visible);\n }\n\n private calculatePosition(overlay: HTMLElement, target: HTMLElement) {\n if (overlay) {\n const top = target.getBoundingClientRect().top;\n const vHeight = window.innerHeight;\n const oHeight = overlay.offsetHeight;\n\n // reset\n overlay.style.top = '';\n overlay.style.left = '';\n if (this.layout.isSlim() || this.layout.isSlimPlus()) {\n const height = top + oHeight;\n overlay.style.top = vHeight < height ? `${top - (height - vHeight)}px` : `${top}px`;\n }\n }\n }\n}\n","@if (visible()) {\n @if (root()) {\n <div class=\"layout-menuitem-root-text\">\n {{ item().label! | translate }}\n </div>\n }\n @if (!item().href) {\n @if (!item().routerLink || item().hasItems()) {\n <a\n [attr.href]=\"item().href\"\n (click)=\"itemClick($event)\"\n (keydown.enter)=\"itemClick($event)\"\n [routerLink]=\"item().routerLink\"\n [attr.target]=\"item().target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item().className ?? ''\"\n pRipple>\n <i [ngClass]=\"item().icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item().label! | translate }}</span>\n @if (item().hasItemsOrLazyChildren()) {\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"></i>\n }\n @if (item().badge) {\n <span class=\"menuitem-badge\">{{ item().badge }}</span>\n }\n </a>\n } @else if (item().routerLink && !item().hasItems()) {\n <a\n (click)=\"itemClick($event)\"\n [routerLink]=\"item().routerLink\"\n [attr.target]=\"item().target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item().className ?? '' + (this.active() ? ' active-route' : '')\"\n [preserveFragment]=\"item().preserveFragment\"\n [skipLocationChange]=\"item().skipLocationChange\"\n [replaceUrl]=\"item().replaceUrl\"\n [queryParams]=\"item().queryParams\"\n pRipple>\n <i [ngClass]=\"item().icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item().label! | translate }}</span>\n @if (item().hasItemsOrLazyChildren()) {\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"></i>\n }\n @if (item().badge) {\n <span class=\"menuitem-badge\">{{ item().badge }}</span>\n }\n </a>\n }\n } @else {\n @if (!item().hasItems()) {\n <a (click)=\"itemClick($event)\" [attr.href]=\"item().href\" [attr.target]=\"item().target\" [attr.tabindex]=\"0\" [ngClass]=\"item().className ?? ''\" pRipple>\n <i [ngClass]=\"item().icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item().label! | translate }}</span>\n @if (item().hasItemsOrLazyChildren()) {\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"></i>\n }\n @if (item().badge) {\n <span class=\"menuitem-badge\">{{ item().badge }}</span>\n }\n </a>\n }\n }\n @if (item().hasItems()) {\n <ul #submenu [@children]=\"submenuAnimation\" (@children.done)=\"onSubmenuAnimated($event)\">\n @for (child of item().items(); track child; let i = $index) {\n <li mng-menuitem [item]=\"child\" [class]=\"child.badgeClassName\" (visibleChange)=\"onChildVisibleChange($event, child, i)\"></li>\n }\n </ul>\n }\n}\n","import {ChangeDetectionStrategy, Component, effect, inject, untracked} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {ActivatedRoute} from '@angular/router';\n\nimport {CommonsMenuItem, CommonsRouteData} from '@mediusinc/mng-commons/core';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT} from '../services/layout-feature-config.token';\nimport {LayoutService} from '../services/layout.service';\nimport {MenuService} from '../services/menu.service';\nimport {MenuItemComponent} from './menu-item.component';\n\n@Component({\n standalone: true,\n selector: 'mng-menu',\n imports: [MenuItemComponent],\n templateUrl: './menu.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MenuComponent {\n private readonly route = inject(ActivatedRoute);\n private readonly config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, {optional: true});\n private readonly layout = inject(LayoutService);\n public readonly menuService = inject(MenuService);\n\n public routeData = toSignal(this.route.data);\n\n constructor() {\n effect(() => {\n let items: CommonsMenuItem[] = [];\n if (this.config?.menuItems && Array.isArray(this.config.menuItems)) {\n items = this.config.menuItems;\n } else if (Array.isArray((this.routeData() as CommonsRouteData | undefined)?.menuItems)) {\n items = (this.routeData() as CommonsRouteData).menuItems!;\n }\n // Wraps menu items\n if (!(this.layout.isSlim() || this.layout.isSlimPlus())) {\n items = [{items}];\n }\n\n untracked(() => this.menuService.setItems(items));\n });\n }\n}\n","<ul class=\"layout-menu\">\n @for (item of menuService.menuItems(); track item) {\n @if (!item.separator) {\n <li mng-menuitem [item]=\"item\" [root]=\"true\"></li>\n }\n @if (item.separator) {\n <li class=\"menu-separator\"></li>\n }\n }\n</ul>\n","import {ChangeDetectionStrategy, Component, ElementRef, Type, inject, signal} from '@angular/core';\nimport {RouterModule} from '@angular/router';\n\nimport {ComponentDirective} from '@mediusinc/mng-commons/core';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT} from '../services/layout-feature-config.token';\nimport {LayoutService} from '../services/layout.service';\nimport {MenuComponent} from './menu.component';\n\n@Component({\n standalone: true,\n selector: 'mng-sidebar',\n imports: [RouterModule, MenuComponent, ComponentDirective],\n templateUrl: './sidebar.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SidebarComponent {\n private readonly config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, {optional: true});\n public readonly layout = inject(LayoutService);\n public readonly el = inject(ElementRef);\n\n public menuComponent = signal<Type<any> | undefined>(this.config?.components?.menu === false ? undefined : this.config?.components?.menu ?? MenuComponent);\n private timeout: ReturnType<typeof setTimeout> | null = null;\n\n onMouseEnter() {\n if (!this.layout.state().anchored) {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n this.layout.state.update(state => ({\n ...state,\n sidebarActive: true\n }));\n }\n }\n\n onMouseLeave() {\n if (!this.layout.state().anchored) {\n if (!this.timeout) {\n this.timeout = setTimeout(\n () =>\n this.layout.state.update(state => ({\n ...state,\n sidebarActive: false\n })),\n 300\n );\n }\n }\n }\n\n anchor() {\n this.layout.state.update(state => ({\n ...state,\n anchored: !state.anchored\n }));\n }\n}\n","<div class=\"layout-sidebar\" (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\n <div class=\"sidebar-header\">\n <a [routerLink]=\"['/']\" class=\"app-logo\">\n <div class=\"app-logo-small h-2rem\">\n <img [src]=\"layout.appLogo()\" [alt]=\"'App logo'\" />\n </div>\n <div class=\"app-logo-normal\">\n <img class=\"h-2rem\" [src]=\"layout.appLogo()\" [alt]=\"'App logo'\" />\n <img class=\"h-2rem ml-3\" [src]=\"layout.appLogoName()\" [alt]=\"'App name'\" />\n </div>\n </a>\n <button class=\"layout-sidebar-anchor p-link z-2\" type=\"button\" (click)=\"anchor()\"></button>\n </div>\n\n @if (menuComponent()) {\n <div #menuContainer class=\"layout-menu-container\">\n <div [mngComponent]=\"menuComponent()\" [attachToHost]=\"true\"></div>\n </div>\n }\n</div>\n","import {DOCUMENT} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, Injector, inject, signal} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {FormsModule} from '@angular/forms';\n\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {Button} from 'primeng/button';\nimport {DropdownModule} from 'primeng/dropdown';\nimport {DynamicDialogConfig, DynamicDialogRef} from 'primeng/dynamicdialog';\nimport {InputSwitchModule} from 'primeng/inputswitch';\nimport {RadioButtonModule} from 'primeng/radiobutton';\nimport {SelectButtonModule} from 'primeng/selectbutton';\n\nimport {ColorScheme, CommonsService} from '@mediusinc/mng-commons/core';\n\nimport {LayoutMenuMode} from '../services/layout-feature-config.token';\nimport {LayoutService} from '../services/layout.service';\n\ninterface ColorSchemeOption {\n value: ColorScheme;\n label: string;\n}\n\nconst defaultColorSchemeOpts: ColorSchemeOption[] = [\n {\n value: 'auto',\n label: 'system'\n },\n {\n value: 'light',\n label: 'light'\n },\n {\n value: 'dark',\n label: 'dark'\n }\n];\n\n@Component({\n standalone: true,\n selector: 'mng-settings',\n imports: [TranslateModule, RadioButtonModule, FormsModule, Button, DropdownModule, InputSwitchModule, SelectButtonModule],\n templateUrl: './settings.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SettingsComponent {\n private readonly document = inject(DOCUMENT);\n\n private readonly dynamicDialogConfig = inject(DynamicDialogConfig);\n private readonly dynamicDialogRef = inject(DynamicDialogRef);\n public readonly injector: Injector;\n public readonly translate;\n public readonly commons;\n public readonly layout;\n\n public readonly menuModes;\n\n public colorSchemeOptions = signal(defaultColorSchemeOpts);\n\n constructor() {\n this.injector = this.dynamicDialogConfig.data.injector;\n this.translate = this.injector.get(TranslateService);\n this.commons = this.injector.get(CommonsService);\n this.layout = this.injector.get(LayoutService);\n this.menuModes = this.layout.menuModes;\n\n this.translate\n .stream('mngSettings.title')\n .pipe(takeUntilDestroyed())\n .subscribe(t => {\n setTimeout(() => (this.dynamicDialogConfig.header = t));\n });\n\n const translateKey = 'mngSettings.colorScheme.options';\n this.translate\n .stream('mngSettings.colorScheme.options')\n .pipe(takeUntilDestroyed())\n .subscribe(t => {\n if (t === translateKey) {\n this.colorSchemeOptions.set(defaultColorSchemeOpts);\n } else {\n this.colorSchemeOptions.update(options =>\n options.map(o => ({\n value: o.value,\n label: `${t[o.value]}`\n }))\n );\n }\n });\n }\n\n switchLocale(language: string) {\n this.commons.setAppLocale(language);\n }\n\n switchDataLocale(language: string) {\n this.commons.setAppDataLocale(language);\n }\n\n onMenuModeChange(mode: LayoutMenuMode) {\n this.layout.onMenuModeChange(mode);\n }\n\n onColorSchemeChange(scheme: ColorScheme) {\n this.layout.setColorScheme(scheme);\n }\n\n closeDialog() {\n this.dynamicDialogRef.close();\n }\n}\n","<div class=\"h-full flex flex-column\">\n <div class=\"flex-grow-1 mng-action-editor-form-container\">\n @if (commons.appLocales().length > 1 || commons.appDataLocales().length > 1) {\n <h5>{{ 'mngSettings.locales' | translate }}</h5>\n <div class=\"formgrid grid\">\n @if (commons.appLocales().length > 1) {\n <div class=\"field pr-4\">\n <i class=\"pi pi-fw pi-globe\"></i>\n <p-dropdown [ngModel]=\"commons.appLocale()\" [options]=\"commons.appLocales()\" (onChange)=\"switchLocale($event.value)\"></p-dropdown>\n </div>\n }\n @if (commons.appDataLocales().length > 1) {\n <div class=\"field pr-4\">\n <i class=\"pi pi-fw pi-database\"></i>\n <p-dropdown [ngModel]=\"commons.appDataLocale()\" [options]=\"commons.appDataLocales()\" (onChange)=\"switchDataLocale($event.value)\"></p-dropdown>\n </div>\n }\n </div>\n }\n\n <h5>{{ 'mngSettings.colorScheme.title' | translate }}</h5>\n <div class=\"formgrid grid\">\n <p-selectButton\n [options]=\"colorSchemeOptions()\"\n [ngModel]=\"layout.colorSchemeSetting()\"\n (ngModelChange)=\"onColorSchemeChange($event)\"\n optionLabel=\"label\"\n optionValue=\"value\"\n allowEmpty=\"false\" />\n </div>\n\n @if (menuModes.length > 1) {\n <h5>{{ 'mngSettings.menuMode.title' | translate }}</h5>\n <div class=\"formgrid grid\">\n @for (mode of menuModes; track mode) {\n <div class=\"field-radiobutton col-6 md:col-4\">\n <p-radioButton name=\"category\" [value]=\"mode\" [ngModel]=\"layout.menuMode()\" (ngModelChange)=\"onMenuModeChange(mode)\" />\n <label [for]=\"mode\" class=\"ml-2\">\n {{ 'mngSettings.menuMode.' + mode | translate }}\n </label>\n </div>\n }\n </div>\n }\n\n <div class=\"flex flex-row justify-content-between mng-action-editor-footer-container\">\n <div></div>\n <div>\n <p-button (onClick)=\"closeDialog()\" [label]=\"'general.close' | translate\" icon=\"pi pi-times\" styleClass=\"p-button-primary p-button-text\" />\n </div>\n </div>\n </div>\n</div>\n","import {AsyncPipe} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, Injector, computed, inject, signal} from '@angular/core';\nimport {DomSanitizer} from '@angular/platform-browser';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {DialogService} from 'primeng/dynamicdialog';\nimport {RippleModule} from 'primeng/ripple';\nimport {StyleClassModule} from 'primeng/styleclass';\n\nimport {CommonsService, EnumerateAsyncPipe, IUser} from '@mediusinc/mng-commons/core';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT} from '../services/layout-feature-config.token';\nimport {SettingsComponent} from './settings.component';\n\n@Component({\n standalone: true,\n selector: 'mng-topbar-user-component',\n imports: [AsyncPipe, EnumerateAsyncPipe, TranslateModule, RippleModule, StyleClassModule],\n templateUrl: './topbar-user.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TopbarUserComponent {\n private readonly injector = inject(Injector);\n private readonly dialogService = inject(DialogService);\n private readonly commons = inject(CommonsService);\n public hrefJsVoid = inject(DomSanitizer).bypassSecurityTrustUrl('javascript:void(0)');\n private readonly config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, {optional: true});\n\n public user = computed<IUser | undefined>(() => this.commons.user());\n public userRoles = computed<string[]>(() => this.commons.userRoles());\n\n public settingsDisabled = signal(this.config?.components?.settings === false);\n\n public logout(user: IUser | undefined, event: Event) {\n if (typeof user?.logout === 'function') {\n event.preventDefault();\n event.stopPropagation();\n user.logout();\n }\n }\n\n public openSettings() {\n if (this.config?.components?.settings === false) {\n return;\n }\n\n this.dialogService.open(this.config?.components?.settings ?? SettingsComponent, {\n modal: true,\n styleClass: 'mng-dialog mng-action-editor-dialog mng-dialog-xs',\n data: {\n injector: this.injector\n }\n });\n }\n}\n","<a\n class=\"cursor-pointer lg:pr-4\"\n pStyleClass=\"@next\"\n enterFromClass=\"ng-hidden\"\n enterActiveClass=\"px-scalein\"\n leaveToClass=\"ng-hidden\"\n leaveActiveClass=\"px-fadeout\"\n [hideOnOutsideClick]=\"true\"\n pRipple>\n <i class=\"pi pi-fw pi-user text-2xl\"></i>\n <span class=\"hidden sm:inline-block\">&nbsp; {{ user()?.displayName ?? user()?.username }}</span>\n</a>\n<ul class=\"topbar-menu active-topbar-menu w-15rem z-5 ng-hidden border-round\">\n <li role=\"menuitem\">\n <a\n class=\"flex align-items-center transition-duration-200\"\n pStyleClass=\"@grandparent\"\n enterFromClass=\"ng-hidden\"\n enterActiveClass=\"px-scalein\"\n leaveToClass=\"ng-hidden\"\n leaveActiveClass=\"px-fadeout\">\n <i class=\"pi pi-fw pi-user text-base mr-2\"></i>\n <div>\n <strong>{{ user()?.displayName ?? user()?.username }}</strong>\n @if (userRoles().length > 0) {\n <small>\n <br />\n {{ userRoles() }}\n </small>\n }\n </div>\n </a>\n </li>\n @if (!settingsDisabled()) {\n <li role=\"menuitem\">\n <a\n [href]=\"hrefJsVoid\"\n (click)=\"openSettings()\"\n class=\"flex align-items-center transition-duration-200\"\n pStyleClass=\"@grandparent\"\n enterFromClass=\"ng-hidden\"\n enterActiveClass=\"px-scalein\"\n leaveToClass=\"ng-hidden\"\n leaveActiveClass=\"px-fadeout\">\n <i class=\"pi pi-fw pi-cog text-base mr-2\"></i>\n {{ 'mngSettings.title' | translate }}\n </a>\n </li>\n }\n @if (user()?.logout || user()?.logoutUrl) {\n <li role=\"menuitem\">\n <a\n [href]=\"user()?.logoutUrl ?? hrefJsVoid\"\n (click)=\"logout(user(), $event)\"\n class=\"flex align-items-center hover:text-primary-500 transition-duration-200\"\n pStyleClass=\"@grandparent\"\n enterFromClass=\"ng-hidden\"\n enterActiveClass=\"px-scalein\"\n leaveToClass=\"ng-hidden\"\n leaveActiveClass=\"px-fadeout\">\n <i class=\"pi pi-fw pi-sign-out text-base mr-2\"></i>\n <span>{{ 'mngTopbar.logout' | translate }}</span>\n </a>\n </li>\n }\n</ul>\n","import {AsyncPipe, NgClass} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, ElementRef, Type, inject, signal} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\n\nimport {ButtonModule} from 'primeng/button';\nimport {DropdownModule} from 'primeng/dropdown';\nimport {RippleModule} from 'primeng/ripple';\nimport {StyleClassModule} from 'primeng/styleclass';\n\nimport {CommonsService, ComponentDirective} from '@mediusinc/mng-commons/core';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT} from '../services/layout-feature-config.token';\nimport {LayoutService} from '../services/layout.service';\nimport {BreadcrumbComponent} from './breadcrumb.component';\nimport {SidebarComponent} from './sidebar.component';\nimport {TopbarUserComponent} from './topbar-user.component';\n\n@Component({\n standalone: true,\n selector: 'mng-topbar',\n imports: [SidebarComponent, NgClass, ButtonModule, StyleClassModule, RippleModule, BreadcrumbComponent, AsyncPipe, DropdownModule, ComponentDirective, FormsModule],\n templateUrl: './topbar.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TopbarComponent {\n public readonly el = inject(ElementRef);\n public readonly commons = inject(CommonsService);\n public readonly layout = inject(LayoutService);\n private readonly config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, {optional: true});\n\n public topbarUserComponent = signal<Type<any> | undefined>(\n this.config?.components?.topbarUser === false ? undefined : this.config?.components?.topbarUser ?? TopbarUserComponent\n );\n public breadcrumbComponent = signal<Type<any> | undefined>(\n this.config?.components?.breadcrumb === false ? undefined : this.config?.components?.breadcrumb ?? BreadcrumbComponent\n );\n\n public onMenuButtonClick() {\n this.layout.onMenuToggle();\n }\n\n public switchLocale(language: string) {\n this.commons.setAppLocale(language);\n }\n}\n","<div class=\"layout-topbar\">\n <div class=\"topbar-start\">\n <button #menubutton type=\"button\" class=\"topbar-menubutton p-link p-trigger\" (click)=\"onMenuButtonClick()\">\n <i class=\"pi pi-bars\"></i>\n </button>\n\n @if (breadcrumbComponent()) {\n <div class=\"topbar-breadcrumb\">\n <div [mngComponent]=\"breadcrumbComponent()\" [attachToHost]=\"true\"></div>\n </div>\n }\n </div>\n <div class=\"layout-topbar-menu-section\">\n <mng-sidebar></mng-sidebar>\n </div>\n <div class=\"topbar-end\">\n <ul class=\"topbar-menu\">\n @if (commons.appLocales().length > 1) {\n <li class=\"profile-item\">\n <i class=\"pi pi-fw pi-globe\"></i>\n <p-dropdown [ngModel]=\"commons.appLocale()\" [options]=\"commons.appLocales()\" (onChange)=\"switchLocale($event.value)\"></p-dropdown>\n </li>\n }\n @if (topbarUserComponent()) {\n <li #userMenuItem class=\"profile-item topbar-item mr-3\" [mngComponent]=\"topbarUserComponent()\" [attachToHost]=\"true\"></li>\n }\n </ul>\n </div>\n</div>\n","import {AsyncPipe, NgClass, NgTemplateOutlet} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, ElementRef, OnDestroy, Renderer2, Type, inject, signal, viewChild} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {RouterModule} from '@angular/router';\n\nimport {ComponentDirective, NotificationWrapperComponent} from '@mediusinc/mng-commons/core';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT} from '../services/layout-feature-config.token';\nimport {LayoutService} from '../services/layout.service';\nimport {MenuService} from '../services/menu.service';\nimport {BreadcrumbComponent} from './breadcrumb.component';\nimport {FooterComponent} from './footer.component';\nimport {TopbarComponent} from './topbar.component';\n\n@Component({\n standalone: true,\n selector: 'mng-main-layout',\n imports: [NgClass, RouterModule, TopbarComponent, BreadcrumbComponent, ComponentDirective, AsyncPipe, NotificationWrapperComponent, NgTemplateOutlet],\n templateUrl: './main-layout.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MainLayoutComponent implements OnDestroy {\n // private readonly commonsService = inject(CommonsService);\n private readonly config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, {optional: true});\n public readonly layout = inject(LayoutService);\n private readonly menuService = inject(MenuService);\n private readonly renderer = inject(Renderer2);\n\n private appTopbar = viewChild<ElementRef>('topbarCmp');\n\n public readonly ripple = signal(this.config?.ripple ?? true);\n\n public topbarComponent = signal<Type<any> | undefined>(this.config?.components?.topbar === false ? undefined : this.config?.components?.topbar ?? TopbarComponent);\n public breadcrumbsComponent = signal<Type<any> | undefined>(\n this.config?.components?.breadcrumb === false ? undefined : this.config?.components?.breadcrumb ?? BreadcrumbComponent\n );\n public footerComponent = signal<Type<any> | undefined>(this.config?.components?.footer === false ? undefined : this.config?.components?.footer ?? FooterComponent);\n\n public useNotificationWrapper = signal(!this.config?.disableNotificationWrapper);\n private menuOutsideClickListener: any;\n\n constructor() {\n this.layout.overlayOpen$.pipe(takeUntilDestroyed()).subscribe(() => {\n if (!this.menuOutsideClickListener) {\n this.menuOutsideClickListener = this.renderer.listen('document', 'click', event => {\n const isOutsideClicked = !(this.appTopbar()?.nativeElement.isSameNode(event.target) || this.appTopbar()?.nativeElement.contains(event.target));\n if (isOutsideClicked) {\n this.hideMenu();\n }\n });\n }\n if (this.layout.state().staticMenuMobileActive) {\n this.blockBodyScroll();\n }\n });\n }\n\n blockBodyScroll(): void {\n if (document.body.classList) {\n document.body.classList.add('blocked-scroll');\n } else {\n document.body.className += ' blocked-scroll';\n }\n }\n\n unblockBodyScroll(): void {\n if (document.body.classList) {\n document.body.classList.remove('blocked-scroll');\n } else {\n document.body.className = document.body.className.replace(new RegExp('(^|\\\\b)' + 'blocked-scroll'.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n }\n }\n\n hideMenu() {\n this.layout.state.update(state => ({\n ...state,\n overlayMenuActive: false,\n staticMenuMobileActive: false,\n menuHoverActive: false\n }));\n this.menuService.reset();\n if (this.menuOutsideClickListener) {\n this.menuOutsideClickListener();\n this.menuOutsideClickListener = null;\n }\n this.unblockBodyScroll();\n }\n\n ngOnDestroy() {\n if (this.menuOutsideClickListener) {\n this.menuOutsideClickListener();\n }\n }\n}\n","@if (useNotificationWrapper()) {\n <mng-notification-wrapper>\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n </mng-notification-wrapper>\n} @else {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n}\n\n<ng-template #content>\n <div\n class=\"layout-container\"\n [ngClass]=\"{\n 'layout-light': layout.colorScheme() === 'light',\n 'layout-dark': layout.colorScheme() === 'dark',\n 'layout-overlay': layout.menuMode() === 'overlay',\n 'layout-static': layout.menuMode() === 'static',\n 'layout-reveal': layout.menuMode() === 'reveal',\n 'layout-drawer': layout.menuMode() === 'drawer',\n 'layout-slim': layout.menuMode() === 'slim',\n 'layout-slim-plus': layout.menuMode() === 'slim-plus',\n 'layout-static-inactive': layout.state().staticMenuDesktopInactive && layout.menuMode() === 'static',\n 'layout-overlay-active': layout.state().overlayMenuActive,\n 'layout-mobile-active': layout.state().staticMenuMobileActive,\n 'p-ripple-disabled': !ripple(),\n 'layout-sidebar-active': layout.state().sidebarActive,\n 'layout-sidebar-anchored': layout.state().anchored\n }\">\n <div class=\"layout-content-wrapper\">\n @if (topbarComponent()) {\n <div #topbarCmp class=\"layout-topbar-wrapper\" [mngComponent]=\"topbarComponent()\" [attachToHost]=\"true\"></div>\n }\n @if (breadcrumbsComponent()) {\n <div class=\"content-breadcrumb\">\n <div [mngComponent]=\"breadcrumbsComponent()\" [attachToHost]=\"true\"></div>\n </div>\n }\n <div class=\"layout-content\">\n <router-outlet></router-outlet>\n </div>\n <div class=\"layout-mask\"></div>\n @if (footerComponent()) {\n <div [mngComponent]=\"footerComponent()\" [attachToHost]=\"true\"></div>\n }\n </div>\n </div>\n</ng-template>\n","import {RouteBuilder, createRoute} from '@mediusinc/mng-commons/core';\n\nimport {MainLayoutComponent} from '../components/main-layout.component';\n\n/**\n * Creates a layout route on the specified path.\n *\n * @param {String} path - The path of the route.\n * @return {RouteBuilder} - The route builder for the layout route.\n */\nexport function createLayoutRoute(path: string): RouteBuilder {\n return createRoute(path, MainLayoutComponent);\n}\n","import {CommonsFeature, CommonsFeatureTypeEnum} from '@mediusinc/mng-commons/core';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT, LayoutFeatureConfig} from './services/layout-feature-config.token';\nimport {LayoutService} from './services/layout.service';\nimport {MenuService} from './services/menu.service';\nimport {VersionService} from './services/version.service';\n\n/**\n * Prepares providers for usage of the layout functionalities.\n *\n * @returns {CommonsFeature} The `CommonsFeature` object with the layout configuration.\n */\nexport function withLayout(config?: LayoutFeatureConfig): CommonsFeature {\n return {\n type: CommonsFeatureTypeEnum.Layout,\n providers: [\n MenuService,\n VersionService,\n LayoutService,\n {\n provide: COMMONS_LAYOUT_FEATURE_CONFIG_IT,\n useValue: config\n }\n ]\n };\n}\n","// components\nexport * from './lib/components/pages/error/error.page.component';\nexport * from './lib/components/pages/not-found/not-found.page.component';\nexport * from './lib/components/footer.component';\nexport * from './lib/components/breadcrumb.component';\nexport * from './lib/components/main-layout.component';\nexport * from './lib/components/menu.component';\nexport * from './lib/components/menu-item.component';\nexport * from './lib/components/settings.component';\nexport * from './lib/components/sidebar.component';\nexport * from './lib/components/topbar.component';\nexport * from './lib/components/topbar-user.component';\nexport * from './lib/components/version.component';\n\n// helpers\nexport * from './lib/helpers/route-builder';\n\n// models\nexport * from './lib/models/layout-state.model';\nexport * from './lib/models/menu.model';\n\n// services\nexport * from './lib/services/layout-feature-config.token';\nexport * from './lib/services/layout.service';\nexport * from './lib/services/menu.service';\nexport * from './lib/services/version.service';\n\n// provide\nexport * from './lib/provide';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","ngToObservable","toObservable","i3"],"mappings":"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"}
1
+ {"version":3,"file":"mediusinc-mng-commons-layout.mjs","sources":["../../src/lib/services/layout-feature-config.token.ts","../../src/lib/services/layout.service.ts","../../src/lib/components/pages/error/error.page.component.ts","../../src/lib/components/pages/error/error.page.component.html","../../src/lib/components/pages/not-found/not-found.page.component.ts","../../src/lib/components/pages/not-found/not-found.page.component.html","../../src/lib/services/version.service.ts","../../src/lib/components/version.component.ts","../../src/lib/components/version.component.html","../../src/lib/components/footer.component.ts","../../src/lib/components/footer.component.html","../../src/lib/components/breadcrumb.component.ts","../../src/lib/components/breadcrumb.component.html","../../src/lib/helpers/menu-items.ts","../../src/lib/services/menu.service.ts","../../src/lib/components/menu-item.component.ts","../../src/lib/components/menu-item.component.html","../../src/lib/components/menu.component.ts","../../src/lib/components/menu.component.html","../../src/lib/components/sidebar.component.ts","../../src/lib/components/sidebar.component.html","../../src/lib/components/settings.component.ts","../../src/lib/components/settings.component.html","../../src/lib/components/topbar-user.component.ts","../../src/lib/components/topbar-user.component.html","../../src/lib/components/topbar.component.ts","../../src/lib/components/topbar.component.html","../../src/lib/components/main-layout.component.ts","../../src/lib/components/main-layout.component.html","../../src/lib/helpers/route-builder.ts","../../src/lib/provide.ts","../../src/index.ts","../../src/mediusinc-mng-commons-layout.ts"],"sourcesContent":["import {InjectionToken, Type} from '@angular/core';\n\nimport {MenuItem} from 'primeng/api';\n\nexport type LayoutMenuMode = 'static' | 'overlay' | 'reveal' | 'drawer' | 'slim' | 'slim-plus';\n\nexport type ColorScheme = 'light' | 'dark' | 'auto';\n\n/**\n * Set of configurations for layout customization.\n */\nexport interface LayoutFeatureConfig {\n /**\n * Choose default menu mode.\n */\n menuMode?: LayoutMenuMode;\n /**\n * Sets available menu modes.\n */\n menuModes?: LayoutMenuMode[];\n /**\n * Predefines menu modes (instead of taking them from route data config).\n */\n menuItems?: MenuItem[];\n /**\n * Logo path (usually icon part only).\n */\n logoPath?: string;\n /**\n * Logo path for light color mode (usually icon part only).\n */\n logoPathLight?: string;\n /**\n * Logo path for dark color mode (usually icon part only).\n */\n logoPathDark?: string;\n /**\n * Logo path (usually name part only).\n */\n logoNamePath?: string;\n /**\n * Logo path for light color mode (usually name part only).\n */\n logoNamePathLight?: string;\n /**\n * Logo path for dark color mode (usually name part only).\n */\n logoNamePathDark?: string;\n /**\n * Default color scheme (defaults to 'auto').\n */\n colorScheme?: ColorScheme;\n /**\n * Enable ripple effect.\n */\n ripple?: boolean;\n /**\n * Disables wrapping layout in notification wrapper.\n */\n disableNotificationWrapper?: boolean;\n /**\n * Set custom components instead of default layout's one. If false provided for component, then it will not be displayed.\n */\n components?: {\n /**\n * Specify custom topbar component or disable (if false).\n */\n topbar?: Type<any> | false;\n /**\n * Specify custom menu component or disable (if false).\n */\n menu?: Type<any> | false;\n /**\n * Specify custom footer component or disable (if false).\n */\n footer?: Type<any> | false;\n /**\n * Specify custom breadcrumb component or disable (if false).\n */\n breadcrumb?: Type<any> | false;\n /**\n * Specify custom topbarUser component or disable (if false).\n */\n topbarUser?: Type<any> | false;\n /**\n * Specify custom version component or disable (if false).\n */\n version?: Type<any> | false;\n /**\n * Specify custom settings component or disable (if false).\n */\n settings?: Type<any> | false;\n };\n}\n\nexport const COMMONS_LAYOUT_FEATURE_CONFIG_IT = new InjectionToken<LayoutFeatureConfig>('COMMONS_LAYOUT_FEATURE_CONFIG');\n","import {DOCUMENT} from '@angular/common';\nimport {Injectable, PLATFORM_ID, afterNextRender, computed, effect, inject, signal} from '@angular/core';\n\nimport {Subject} from 'rxjs';\n\nimport {COMMONS_MODULE_CONFIG_IT, CommonsStorageService} from '@mediusinc/mng-commons/core';\n\nimport {LayoutState} from '../models/layout-state.model';\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT, ColorScheme, LayoutMenuMode} from './layout-feature-config.token';\n\n@Injectable()\nexport class LayoutService {\n private readonly typeName = 'MainLayoutComponentService';\n private readonly storageMenuModeKey = 'menuMode';\n private readonly storageColorSchemeKey = 'colorScheme';\n\n private readonly platformId = inject(PLATFORM_ID);\n private readonly document = inject(DOCUMENT);\n private readonly commonsConfig = inject(COMMONS_MODULE_CONFIG_IT, {optional: true});\n private readonly config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, {optional: true});\n private readonly storageService = inject(CommonsStorageService);\n\n public state = signal<LayoutState>({\n staticMenuDesktopInactive: false,\n overlayMenuActive: false,\n rightMenuActive: false,\n configSidebarVisible: false,\n staticMenuMobileActive: false,\n menuHoverActive: false,\n sidebarActive: false,\n anchored: false\n });\n\n private overlayOpen = new Subject<any>();\n public overlayOpen$ = this.overlayOpen.asObservable();\n\n // color scheme\n private _colorSchemeSetting = signal(this.getInitColorScheme());\n public colorSchemeSetting = this._colorSchemeSetting.asReadonly();\n private _colorScheme = signal<Exclude<ColorScheme, 'system'>>(this.getInitActualColorScheme(this.colorSchemeSetting()));\n public colorScheme = this._colorScheme.asReadonly();\n public colorSchemeIsLight = computed(() => this._colorScheme() === 'light');\n\n private getInitColorScheme(): ColorScheme {\n let colorScheme = this.storageService.getItem<ColorScheme>(this.typeName, this.storageColorSchemeKey);\n if (colorScheme == null || !(['dark', 'light', 'auto'] as ColorScheme[]).includes(colorScheme)) {\n colorScheme = this.getDefaultColorScheme();\n }\n return colorScheme;\n }\n\n private getInitActualColorScheme(colorScheme: ColorScheme): Exclude<ColorScheme, 'system'> {\n if (colorScheme === 'auto') {\n return window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n } else {\n return colorScheme;\n }\n }\n\n private getDefaultColorScheme(): ColorScheme {\n return this.config?.colorScheme ?? this.commonsConfig?.app?.colorScheme ?? 'auto';\n }\n\n public setColorScheme(scheme: ColorScheme) {\n const defaultColorScheme = this.getDefaultColorScheme();\n if (scheme === defaultColorScheme) {\n this.storageService.removeItem(this.typeName, this.storageColorSchemeKey);\n } else {\n this.storageService.setItem(this.typeName, this.storageColorSchemeKey, scheme);\n }\n this._colorSchemeSetting.set(scheme);\n this._colorScheme.set(this.getInitActualColorScheme(scheme));\n }\n\n // menu mode\n public readonly menuModes: LayoutMenuMode[] = this.config?.menuModes ?? ['static', 'overlay', 'reveal', 'drawer', 'slim', 'slim-plus'];\n private _menuMode = signal(this.initMenuMode());\n public menuMode = this._menuMode.asReadonly();\n\n // logos\n private appLogoLight = signal(\n this.config?.logoPathLight ?? this.commonsConfig?.app?.logoPathLight ?? this.config?.logoPath ?? this.commonsConfig?.app?.logoPath ?? 'assets/layout/images/logo.png'\n );\n private appLogoDark = signal(\n this.config?.logoPathLight ?? this.commonsConfig?.app?.logoPathDark ?? this.config?.logoPath ?? this.commonsConfig?.app?.logoPath ?? 'assets/layout/images/logo.png'\n );\n public appLogo = computed(() => (this.colorSchemeIsLight() ? this.appLogoLight() : this.appLogoDark()));\n\n private appLogoNameLight = signal(\n this.config?.logoNamePathLight ??\n this.commonsConfig?.app?.logoNamePathLight ??\n this.config?.logoNamePath ??\n this.commonsConfig?.app?.logoNamePath ??\n 'assets/layout/images/logo-appname.png'\n );\n private appLogoNameDark = signal(\n this.config?.logoNamePathDark ??\n this.commonsConfig?.app?.logoNamePathDark ??\n this.config?.logoNamePath ??\n this.commonsConfig?.app?.logoNamePath ??\n 'assets/layout/images/logo-appname.png'\n );\n public appLogoName = computed(() => (this.colorSchemeIsLight() ? this.appLogoNameLight() : this.appLogoNameDark()));\n\n // overlays\n public isOverlay = computed(() => this.menuMode() === 'overlay');\n public isSlim = computed(() => this.menuMode() === 'slim');\n public isSlimPlus = computed(() => this.menuMode() === 'slim-plus');\n\n constructor() {\n afterNextRender(() => {\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => {\n if (this.colorSchemeSetting() === 'auto') {\n const newColorScheme = event.matches ? 'dark' : 'light';\n this._colorScheme.set(newColorScheme);\n }\n });\n });\n\n effect(() => {\n const colorScheme = this._colorScheme();\n const linkElement = this.document.getElementById('app-theme') as HTMLLinkElement;\n if (colorScheme === 'dark' && linkElement.href.includes('light')) {\n linkElement.href = 'theme-dark.css';\n } else if (colorScheme === 'light' && linkElement.href.includes('dark')) {\n linkElement.href = 'theme-light.css';\n }\n });\n }\n\n onMenuModeChange(mode: LayoutMenuMode) {\n if (!this.menuModes.includes(mode)) {\n return;\n }\n if (mode === this.config?.menuMode) {\n this.storageService.removeItem(this.typeName, this.storageMenuModeKey);\n } else {\n this.storageService.setItem(this.typeName, this.storageMenuModeKey, mode);\n }\n this._menuMode.set(mode);\n }\n\n onMenuToggle() {\n if (this.isOverlay()) {\n this.state.update(state => ({\n ...state,\n overlayMenuActive: !state.overlayMenuActive\n }));\n\n if (this.state().overlayMenuActive) {\n this.overlayOpen.next(null);\n }\n }\n\n if (this.isDesktop()) {\n this.state.update(state => ({\n ...state,\n staticMenuDesktopInactive: !state.staticMenuDesktopInactive\n }));\n } else {\n this.state.update(state => ({\n ...state,\n staticMenuMobileActive: !state.staticMenuMobileActive\n }));\n\n if (this.state().staticMenuMobileActive) {\n this.overlayOpen.next(null);\n }\n }\n }\n\n onOverlaySubmenuOpen() {\n this.overlayOpen.next(null);\n }\n\n isDesktop() {\n return window.innerWidth > 991;\n }\n\n isMobile() {\n return !this.isDesktop();\n }\n\n private initMenuMode(): LayoutMenuMode {\n const lsMode = this.storageService.getItem<LayoutMenuMode>(this.typeName, this.storageMenuModeKey);\n if (lsMode && this.menuModes.includes(lsMode)) {\n return lsMode;\n }\n return this.config?.menuMode ?? 'static';\n }\n}\n","import {ChangeDetectionStrategy, Component, inject} from '@angular/core';\nimport {RouterLink} from '@angular/router';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ButtonModule} from 'primeng/button';\n\nimport {LayoutService} from '../../../services/layout.service';\n\n@Component({\n standalone: true,\n selector: 'mng-error-page',\n imports: [ButtonModule, TranslateModule, RouterLink],\n styleUrls: ['error.page.component.scss'],\n templateUrl: './error.page.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ErrorPageComponent {\n public readonly layout = inject(LayoutService);\n}\n","<div [class]=\"'exception-body min-h-screen ' + (layout.colorSchemeIsLight() ? 'layout-light' : 'layout-dark')\">\n <div class=\"exception-container min-h-screen flex align-items-center justify-content-center flex-column bg-auto md:bg-contain bg-no-repeat\">\n <div class=\"exception-panel text-center flex align-items-center justify-content-center flex-column\">\n <h1 class=\"text-red-400 mb-0\">{{ 'pages.notFound.title' | translate }}</h1>\n <h3 class=\"text-red-300\">{{ 'pages.notFound.subtitle' | translate }}</h3>\n <button type=\"button\" pButton [label]=\"'general.returnHome' | translate\" [routerLink]=\"['/']\"></button>\n </div>\n <div class=\"exception-footer align-items-center flex\">\n <img [src]=\"layout.appLogo()\" class=\"exception-logo\" alt=\"App logo\" />\n <img [src]=\"layout.appLogoName()\" class=\"exception-appname ml-3\" alt=\"App name\" />\n </div>\n </div>\n</div>\n","import {ChangeDetectionStrategy, Component, inject} from '@angular/core';\nimport {RouterLink} from '@angular/router';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ButtonModule} from 'primeng/button';\n\nimport {LayoutService} from '../../../services/layout.service';\n\n@Component({\n standalone: true,\n selector: 'mng-not-found-page',\n imports: [ButtonModule, RouterLink, TranslateModule],\n styleUrls: ['not-found.page.component.scss'],\n templateUrl: './not-found.page.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NotFoundPageComponent {\n public readonly layout = inject(LayoutService);\n}\n","<div [class]=\"'exception-body min-h-screen ' + (layout.colorSchemeIsLight() ? 'layout-light' : 'layout-dark')\">\n <div class=\"exception-container min-h-screen flex align-items-center justify-content-center flex-column bg-auto md:bg-contain bg-no-repeat\">\n <div class=\"exception-panel text-center flex align-items-center justify-content-center flex-column\">\n <h1 class=\"text-red-400 mb-0\">{{ 'pages.notFound.title' | translate }}</h1>\n <h3 class=\"text-red-300\">{{ 'pages.notFound.subtitle' | translate }}</h3>\n <p>{{ 'pages.notFound.message' | translate }}</p>\n <button type=\"button\" pButton [label]=\"'general.returnHome' | translate\" [routerLink]=\"['/']\"></button>\n </div>\n <div class=\"exception-footer align-items-center flex\">\n <img [src]=\"layout.appLogo()\" class=\"exception-logo\" alt=\"App logo\" />\n <img [src]=\"layout.appLogoName()\" class=\"exception-appname ml-3\" alt=\"App name\" />\n </div>\n </div>\n</div>\n","import {HttpClient} from '@angular/common/http';\nimport {Injectable, inject} from '@angular/core';\n\nimport {Observable, ReplaySubject} from 'rxjs';\n\nimport {CommonsConfigurationService, LoggerService} from '@mediusinc/mng-commons/core';\n\n@Injectable()\nexport class VersionService {\n private readonly logger = inject(LoggerService).create('VersionService');\n private cache: {[key: string]: ReplaySubject<unknown>} = {};\n\n constructor(\n private http: HttpClient,\n private configurationService: CommonsConfigurationService\n ) {}\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public loadVersion(path: string, baseConfigKey?: string, jsonPath = '$'): Observable<unknown> {\n const urlSegments = [];\n if (baseConfigKey) {\n const baseUrl = this.configurationService.getConfigValue(baseConfigKey);\n urlSegments.push(baseUrl.endsWith('/') ? baseUrl.substring(0, baseUrl.length - 1) : baseUrl);\n }\n if (path) {\n urlSegments.push(!path.startsWith('/') ? `/${path}` : path);\n }\n const url = urlSegments.join('');\n if (!this.cache[url]) {\n this.cache[url] = new ReplaySubject<unknown>(1);\n\n this.http.get(urlSegments.join('')).subscribe({\n next: res => {\n this.cache[url].next(res);\n },\n error: err => {\n this.logger.error('Version could not be retreived', err);\n }\n });\n }\n\n return this.cache[url].asObservable();\n }\n}\n","import {AsyncPipe} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, DestroyRef, computed, inject, input, signal} from '@angular/core';\nimport {takeUntilDestroyed, toObservable} from '@angular/core/rxjs-interop';\n\nimport {catchError, of, switchMap, take} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {JsonPathPipe, VersionConfig, VersionConfigType, VersionInfo} from '@mediusinc/mng-commons/core';\n\nimport {VersionService} from '../services/version.service';\n\n@Component({\n standalone: true,\n selector: 'mng-version',\n templateUrl: './version.component.html',\n imports: [AsyncPipe],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class VersionComponent {\n private readonly versionService = inject(VersionService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly jsonPathPipe = new JsonPathPipe();\n\n public initVersion = input<VersionConfigType>(undefined, {alias: 'version'});\n\n public isLoading = signal<boolean>(false);\n private loadedVersion = signal<VersionConfigType | undefined>(undefined);\n\n public displayVersion = computed<string | undefined>(() => {\n if (typeof this.initVersion() === 'string') {\n return this.initVersion();\n } else if (typeof this.initVersion() !== 'undefined') {\n if (this.initVersion()!['info' as keyof object] || this.initVersion()!['urlPath' as keyof object]) {\n if (typeof this.loadedVersion() !== 'undefined') {\n return this.loadedVersion();\n } else if (this.initVersion()!['info' as keyof object]) {\n const config = this.initVersion() as VersionConfig;\n return this.jsonPathPipe.transform(config.info, config.infoJsonPath ?? '$.raw');\n }\n } else {\n const info = this.initVersion() as VersionInfo;\n return this.jsonPathPipe.transform(info, '$.raw');\n }\n }\n return;\n });\n\n public versions = computed<Array<VersionConfig> | undefined>(() => {\n if (Array.isArray(this.initVersion())) {\n return this.initVersion() as Array<VersionConfig>;\n }\n return;\n });\n\n public displayName = computed<string | undefined>(() => {\n if (typeof this.initVersion() !== 'undefined') {\n if (this.initVersion()!['info' as keyof object] || this.initVersion()!['urlPath' as keyof object]) {\n const config = this.initVersion() as VersionConfig;\n return config.displayName;\n }\n }\n return;\n });\n\n constructor() {\n toObservable(this.initVersion)\n .pipe(\n catchError(() => of(undefined)),\n switchMap(version => {\n if (typeof version !== 'undefined' && (version['info' as keyof object] || version['urlPath' as keyof object])) {\n const config = version as VersionConfig;\n if (config.urlPath) {\n this.isLoading.set(true);\n return this.versionService.loadVersion(config.urlPath, config.urlBaseConfigKey).pipe(\n take(1),\n map(res => ({res, config}))\n );\n }\n }\n return of({res: undefined, config: undefined});\n }),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe({\n next: ({res, config}) => {\n if (typeof res !== 'undefined' && typeof config !== 'undefined') {\n this.loadedVersion.set(this.jsonPathPipe.transform(res, config.infoJsonPath ?? '$'));\n } else {\n this.loadedVersion.set(undefined);\n }\n this.isLoading.set(false);\n },\n error: () => {\n this.loadedVersion.set('');\n this.isLoading.set(false);\n }\n });\n }\n}\n","@if (versions()) {\n @for (v of versions(); track v; let last = $last) {\n <mng-version [version]=\"v\"></mng-version>\n @if (!last) {\n <br />\n }\n }\n} @else {\n @if (displayName()) {{{ displayName() }}}\n @if (displayName() && displayVersion()) {: }\n @if (!isLoading()) {{{ displayVersion() }}}\n}\n","import {NgOptimizedImage} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, Type, inject, signal} from '@angular/core';\n\nimport {TranslateModule} from '@ngx-translate/core';\n\nimport {CommonsService, ComponentDirective} from '@mediusinc/mng-commons/core';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT} from '../services/layout-feature-config.token';\nimport {LayoutService} from '../services/layout.service';\nimport {VersionComponent} from './version.component';\n\n@Component({\n standalone: true,\n selector: 'mng-footer',\n templateUrl: 'footer.component.html',\n imports: [TranslateModule, NgOptimizedImage, VersionComponent, ComponentDirective],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FooterComponent {\n private config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, {optional: true});\n public readonly layout = inject(LayoutService);\n public commons = inject(CommonsService);\n\n public currentYear = signal(new Date().getFullYear());\n public versionComponent = signal<Type<any> | undefined>(this.config?.components?.version === false ? undefined : this.config?.components?.version ?? VersionComponent);\n}\n","<div class=\"layout-footer\">\n <div class=\"footer-logo-container\">\n <img id=\"footer-logo\" [src]=\"layout.appLogo()\" alt=\"atlantis-layout\" />\n <span class=\"app-name\">{{ commons.appName() | translate }}</span>\n </div>\n <div class=\"flex flex-column\">\n <div>\n <span class=\"copyright\">&#169; {{ commons.appOwner() | translate }} - {{ currentYear() }}</span>\n </div>\n @if (versionComponent()) {\n <div class=\"version\" [mngComponent]=\"versionComponent()\" [inputs]=\"{version: commons.appVersion()}\" [attachToHost]=\"true\"></div>\n }\n </div>\n</div>\n","import {ChangeDetectionStrategy, Component, computed, inject} from '@angular/core';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {MenuItem} from 'primeng/api';\n\nimport {CommonsMenuItem, CommonsService} from '@mediusinc/mng-commons/core';\n\n@Component({\n standalone: true,\n selector: 'mng-breadcrumb',\n imports: [TranslateModule],\n templateUrl: './breadcrumb.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BreadcrumbComponent {\n private commons = inject(CommonsService);\n\n public mappedBreadcrumbs = computed(() => {\n const items: CommonsMenuItem[] = this.commons.breadcrumbs();\n return items.map(el => this.mapMenuItem(el));\n });\n\n private mapMenuItem(item: CommonsMenuItem): MenuItem {\n return {\n ...item,\n url: item.href,\n badgeStyleClass: item.badgeClassName,\n styleClass: item.className\n };\n }\n}\n","<div class=\"layout-breadcrumb flex align-items-center relative h-3rem\">\n <nav>\n <ol class=\"relative z-2\">\n @for (item of mappedBreadcrumbs(); track item.id; let last = $last) {\n <li>{{ item.label! | translate }}</li>\n @if (!last) {\n <li class=\"layout-breadcrumb-chevron\">/</li>\n }\n }\n </ol>\n </nav>\n</div>\n","import {computed, signal} from '@angular/core';\n\nimport {CommonsMenuItem, InternalCommonsMenuItem} from '@mediusinc/mng-commons/core';\n\nexport function prepareMenuItemsToInternal(menuItems: CommonsMenuItem[], parentKey = ''): InternalCommonsMenuItem[] {\n const newItems = menuItems.map((item, idx) => {\n const itemsProp = signal<InternalCommonsMenuItem[]>([]);\n const lazyChildrenProp = signal(item.lazyChildren ?? false);\n const hasItemsProp = computed(() => itemsProp().length > 0);\n const newItem: InternalCommonsMenuItem = {\n ...item,\n isVisible: typeof item.isVisible !== 'undefined' ? item.isVisible : item.visible,\n key: parentKey ? parentKey + '-' + idx : idx.toString(),\n config: item,\n items: itemsProp,\n lazyChildren: lazyChildrenProp,\n itemsVisibility: signal([]),\n hasItems: hasItemsProp,\n hasItemsOrLazyChildren: computed(() => lazyChildrenProp() || hasItemsProp())\n };\n\n if (Array.isArray(item.items) && item.items.length > 0) {\n newItem.items.set(prepareMenuItemsToInternal(item.items, newItem.key));\n newItem.itemsVisibility.set(newItem.items()?.map(() => signal(true)));\n }\n\n return newItem;\n });\n\n return newItems;\n}\n","import {DestroyRef, Injectable, inject, signal} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {NavigationEnd, Router} from '@angular/router';\n\nimport {ReplaySubject, Subscription, startWith, take} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nimport {\n CommonsMenuItem,\n CommonsRouteData,\n CommonsRouterService,\n InternalCommonsMenuItem,\n LoggerService,\n adjustRouteMenuLazyChildrenRouterLinks,\n doesUrlMatchRouterLink\n} from '@mediusinc/mng-commons/core';\n\nimport {prepareMenuItemsToInternal} from '../helpers/menu-items';\nimport {MenuChangeEvent} from '../models/menu.model';\n\n@Injectable()\nexport class MenuService {\n private readonly destroyRef = inject(DestroyRef);\n private readonly logger = LoggerService.create('MenuService');\n private readonly router = inject(Router);\n private readonly commonsRouter = inject(CommonsRouterService);\n\n private _menuItems = signal<InternalCommonsMenuItem[]>([]);\n public menuItems = this._menuItems.asReadonly();\n\n private readonly menuChangeSubject = new ReplaySubject<MenuChangeEvent>(1);\n menuChange$ = this.menuChangeSubject.asObservable();\n\n private routeLoadedChildrenSubscriptions: Subscription[] = [];\n\n setItems(menuItems: Array<CommonsMenuItem>) {\n this.routeLoadedChildrenSubscriptions.forEach(s => s.unsubscribe());\n this.routeLoadedChildrenSubscriptions = [];\n\n this._menuItems.set(prepareMenuItemsToInternal(menuItems));\n this.appendListenersToLazyChildren(this._menuItems());\n\n this.router.events;\n this.router.events\n .pipe(\n startWith(new NavigationEnd(0, this.router.url, this.router.url)),\n filter(event => event instanceof NavigationEnd),\n map(e => e as NavigationEnd),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(e => {\n this.findAndSetActiveMenuItem((e as NavigationEnd).urlAfterRedirects);\n });\n }\n\n private appendListenersToLazyChildren(menuItems: InternalCommonsMenuItem[]) {\n menuItems.forEach(item => {\n if (item.lazyChildren()) {\n this.listenToMenuItemLazyChildrenLoad(item);\n } else if (item.items()) {\n this.appendListenersToLazyChildren(item.items());\n }\n });\n }\n\n private findAndSetActiveMenuItem(url: string) {\n const matches = this.findActiveRouteMatches(this.menuItems(), url);\n if (matches.length === 0) {\n this.reset();\n } else {\n const matchKey = matches[0][matches[0].length - 1].key;\n if (matchKey) {\n this.menuChangeSubject.next({\n key: matchKey,\n eventType: 'routeChange'\n });\n } else {\n this.logger.warn(`Found active menu item for url ${url}, but item key is not present`, matches);\n this.reset();\n }\n\n if (matches.length > 1) {\n this.logger.warn(`Multiple active menu items found for url ${url}`, matches);\n }\n }\n }\n\n private listenToMenuItemLazyChildrenLoad(menuItem: InternalCommonsMenuItem) {\n this.routeLoadedChildrenSubscriptions.push(\n this.commonsRouter\n .getRouteLoadedChildren$(menuItem.routerLink ?? '/')\n .pipe(take(1))\n .subscribe({\n next: routes => {\n const menuItemsFromRoutes = routes\n .filter(r => Array.isArray((r.data as CommonsRouteData | undefined)?.menuItems))\n .flatMap(r => (r.data as CommonsRouteData).menuItems!);\n const menuItems = adjustRouteMenuLazyChildrenRouterLinks(menuItem, menuItemsFromRoutes);\n\n menuItem.items.set(prepareMenuItemsToInternal(menuItems, menuItem.key));\n this.appendListenersToLazyChildren(menuItem.items());\n menuItem.itemsVisibility.set(menuItem.items()?.map(() => signal(true)));\n menuItem.lazyChildren.set(false);\n\n this.findAndSetActiveMenuItem(this.router.url);\n }\n })\n );\n }\n\n private findActiveRouteMatches(menuItems: Array<InternalCommonsMenuItem>, url: string): InternalCommonsMenuItem[][] {\n const matches: InternalCommonsMenuItem[][] = [];\n for (const menuItem of menuItems) {\n const chidldren = menuItem.items();\n if (menuItem.routerLink) {\n const isActive = doesUrlMatchRouterLink(menuItem.routerLink, url);\n if (isActive) {\n if (Array.isArray(chidldren)) {\n const itemsMatches = this.findActiveRouteMatches(chidldren, url);\n if (itemsMatches.length > 0) {\n matches.push(...itemsMatches.map(c => [menuItem, ...c]));\n } else {\n matches.push([menuItem]);\n }\n } else {\n matches.push([menuItem]);\n }\n }\n } else if (Array.isArray(chidldren)) {\n const itemsMatches = this.findActiveRouteMatches(chidldren, url);\n if (itemsMatches.length > 0) {\n matches.push(...itemsMatches.map(c => [menuItem, ...c]));\n }\n }\n }\n return matches;\n }\n\n reset() {\n this.menuChangeSubject.next({\n eventType: 'reset'\n });\n }\n}\n","import {AnimationEvent, animate, state, style, transition, trigger} from '@angular/animations';\nimport {AsyncPipe, NgClass} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, ElementRef, computed, effect, inject, input, output, viewChild} from '@angular/core';\nimport {toObservable as ngToObservable, toSignal} from '@angular/core/rxjs-interop';\nimport {RouterModule} from '@angular/router';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {RippleModule} from 'primeng/ripple';\nimport {TooltipModule} from 'primeng/tooltip';\nimport {distinctUntilChanged, of, switchMap} from 'rxjs';\n\nimport {InternalCommonsMenuItem, PermissionService, toObservable} from '@mediusinc/mng-commons/core';\n\nimport {LayoutService} from '../services/layout.service';\nimport {MenuService} from '../services/menu.service';\n\n@Component({\n standalone: true,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[mng-menuitem]',\n templateUrl: 'menu-item.component.html',\n imports: [NgClass, RippleModule, TooltipModule, RouterModule, TranslateModule, AsyncPipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('children', [\n state(\n 'collapsed',\n style({\n height: '0'\n })\n ),\n state(\n 'expanded',\n style({\n height: '*'\n })\n ),\n state(\n 'hidden',\n style({\n display: 'none'\n })\n ),\n state(\n 'visible',\n style({\n display: 'block'\n })\n ),\n transition('collapsed <=> expanded', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)'))\n ])\n ],\n host: {\n '[class.active-menuitem]': '!root() && active()',\n '[class.layout-root-menuitem]': 'root()'\n },\n providers: [PermissionService]\n})\nexport class MenuItemComponent {\n private readonly menuService = inject(MenuService);\n private readonly permissionService = inject(PermissionService);\n private readonly layout = inject(LayoutService);\n\n public item = input.required<InternalCommonsMenuItem>();\n public root = input(false);\n public visibleChange = output<boolean>();\n\n private submenuElRef = viewChild<ElementRef>('submenu');\n\n public isPermitted = toSignal(ngToObservable(this.item).pipe(switchMap(i => (i.permissions ? this.permissionService.isMenuItemVisible(i.permissions, i.config) : of(true)))));\n public isVisibleFromItemSettings = toSignal(\n ngToObservable(this.item).pipe(switchMap(i => (typeof i.isVisible === 'function' ? toObservable(i.isVisible(i.config)) : of(i.isVisible ?? true))))\n );\n private menuChangeEvents = toSignal(this.menuService.menuChange$.pipe(distinctUntilChanged((v1, v2) => v1.key === v2.key)));\n public active = computed(() => {\n if (!this.isPermitted()) {\n return false;\n }\n const menuChangeEvent = this.menuChangeEvents();\n if (menuChangeEvent) {\n return menuChangeEvent.eventType === 'reset' || !menuChangeEvent.key\n ? false\n : this.item().key === menuChangeEvent.key || menuChangeEvent.key.startsWith((this.item().key ?? '') + '-');\n }\n return false;\n });\n public visible = computed(() => {\n const isPermitted = this.isPermitted();\n if (!isPermitted) {\n return false;\n }\n if (!this.isVisibleFromItemSettings()) {\n return false;\n }\n const items = this.item().items();\n if (\n Array.isArray(items) &&\n items.length > 0 &&\n this.item()\n .itemsVisibility()\n .every(v => !v())\n ) {\n return false;\n }\n return true;\n });\n\n constructor() {\n effect(() => {\n if (this.root() && this.active() && this.layout.isDesktop() && (this.layout.isSlim() || this.layout.isSlimPlus())) {\n this.calculatePosition(this.submenuElRef()?.nativeElement, this.submenuElRef()?.nativeElement.parentElement);\n }\n });\n }\n\n get submenuAnimation() {\n if (this.layout.isDesktop() && (this.layout.isSlim() || this.layout.isSlimPlus())) {\n return this.active() ? 'visible' : 'hidden';\n } else {\n return this.root() ? 'expanded' : this.active() ? 'expanded' : 'collapsed';\n }\n }\n\n public itemClick(event: Event) {\n const item = this.item();\n // avoid processing disabled items\n if (item.disabled) {\n event.preventDefault();\n return;\n }\n\n // toggle active state\n if (item.hasItemsOrLazyChildren()) {\n if ((this.root() || this.active()) && (this.layout.isSlim() || this.layout.isSlimPlus())) {\n this.layout.onOverlaySubmenuOpen();\n }\n } else {\n if (this.layout.isMobile()) {\n this.layout.state.update(state => ({\n ...state,\n staticMenuMobileActive: false\n }));\n }\n if (this.layout.isSlim() || this.layout.isSlimPlus()) {\n this.menuService.reset();\n this.layout.state.update(state => ({\n ...state,\n menuHoverActive: false\n }));\n }\n }\n }\n\n onSubmenuAnimated(event: AnimationEvent) {\n if (event.toState === 'visible' && this.layout.isDesktop() && (this.layout.isSlim() || this.layout.isSlimPlus())) {\n const el = <HTMLUListElement>event.element;\n const elParent = <HTMLUListElement>el.parentElement;\n this.calculatePosition(el, elParent);\n }\n }\n\n public onChildVisibleChange(visible: boolean, item: InternalCommonsMenuItem, idx: number) {\n this.item().itemsVisibility()[idx]?.set(visible);\n }\n\n private calculatePosition(overlay: HTMLElement, target: HTMLElement) {\n if (overlay) {\n const top = target.getBoundingClientRect().top;\n const vHeight = window.innerHeight;\n const oHeight = overlay.offsetHeight;\n\n // reset\n overlay.style.top = '';\n overlay.style.left = '';\n if (this.layout.isSlim() || this.layout.isSlimPlus()) {\n const height = top + oHeight;\n overlay.style.top = vHeight < height ? `${top - (height - vHeight)}px` : `${top}px`;\n }\n }\n }\n}\n","@if (visible()) {\n @if (root()) {\n <div class=\"layout-menuitem-root-text\">\n {{ item().label! | translate }}\n </div>\n }\n @if (!item().href) {\n @if (!item().routerLink || item().hasItems()) {\n <a\n [attr.href]=\"item().href\"\n (click)=\"itemClick($event)\"\n (keydown.enter)=\"itemClick($event)\"\n [routerLink]=\"item().routerLink\"\n [attr.target]=\"item().target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item().className ?? ''\"\n pRipple>\n <i [ngClass]=\"item().icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item().label! | translate }}</span>\n @if (item().hasItemsOrLazyChildren()) {\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"></i>\n }\n @if (item().badge) {\n <span class=\"menuitem-badge\">{{ item().badge }}</span>\n }\n </a>\n } @else if (item().routerLink && !item().hasItems()) {\n <a\n (click)=\"itemClick($event)\"\n [routerLink]=\"item().routerLink\"\n [attr.target]=\"item().target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item().className ?? '' + (this.active() ? ' active-route' : '')\"\n [preserveFragment]=\"item().preserveFragment\"\n [skipLocationChange]=\"item().skipLocationChange\"\n [replaceUrl]=\"item().replaceUrl\"\n [queryParams]=\"item().queryParams\"\n pRipple>\n <i [ngClass]=\"item().icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item().label! | translate }}</span>\n @if (item().hasItemsOrLazyChildren()) {\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"></i>\n }\n @if (item().badge) {\n <span class=\"menuitem-badge\">{{ item().badge }}</span>\n }\n </a>\n }\n } @else {\n @if (!item().hasItems()) {\n <a (click)=\"itemClick($event)\" [attr.href]=\"item().href\" [attr.target]=\"item().target\" [attr.tabindex]=\"0\" [ngClass]=\"item().className ?? ''\" pRipple>\n <i [ngClass]=\"item().icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item().label! | translate }}</span>\n @if (item().hasItemsOrLazyChildren()) {\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"></i>\n }\n @if (item().badge) {\n <span class=\"menuitem-badge\">{{ item().badge }}</span>\n }\n </a>\n }\n }\n @if (item().hasItems()) {\n <ul #submenu [@children]=\"submenuAnimation\" (@children.done)=\"onSubmenuAnimated($event)\">\n @for (child of item().items(); track child; let i = $index) {\n <li mng-menuitem [item]=\"child\" [class]=\"child.badgeClassName\" (visibleChange)=\"onChildVisibleChange($event, child, i)\"></li>\n }\n </ul>\n }\n}\n","import {ChangeDetectionStrategy, Component, effect, inject, untracked} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {ActivatedRoute} from '@angular/router';\n\nimport {CommonsMenuItem, CommonsRouteData} from '@mediusinc/mng-commons/core';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT} from '../services/layout-feature-config.token';\nimport {LayoutService} from '../services/layout.service';\nimport {MenuService} from '../services/menu.service';\nimport {MenuItemComponent} from './menu-item.component';\n\n@Component({\n standalone: true,\n selector: 'mng-menu',\n imports: [MenuItemComponent],\n templateUrl: './menu.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MenuComponent {\n private readonly route = inject(ActivatedRoute);\n private readonly config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, {optional: true});\n private readonly layout = inject(LayoutService);\n public readonly menuService = inject(MenuService);\n\n public routeData = toSignal(this.route.data);\n\n constructor() {\n effect(() => {\n let items: CommonsMenuItem[] = [];\n if (this.config?.menuItems && Array.isArray(this.config.menuItems)) {\n items = this.config.menuItems;\n } else if (Array.isArray((this.routeData() as CommonsRouteData | undefined)?.menuItems)) {\n items = (this.routeData() as CommonsRouteData).menuItems!;\n }\n // Wraps menu items\n if (!(this.layout.isSlim() || this.layout.isSlimPlus())) {\n items = [{items}];\n }\n\n untracked(() => this.menuService.setItems(items));\n });\n }\n}\n","<ul class=\"layout-menu\">\n @for (item of menuService.menuItems(); track item) {\n @if (!item.separator) {\n <li mng-menuitem [item]=\"item\" [root]=\"true\"></li>\n }\n @if (item.separator) {\n <li class=\"menu-separator\"></li>\n }\n }\n</ul>\n","import {ChangeDetectionStrategy, Component, ElementRef, Type, inject, signal} from '@angular/core';\nimport {RouterModule} from '@angular/router';\n\nimport {ComponentDirective} from '@mediusinc/mng-commons/core';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT} from '../services/layout-feature-config.token';\nimport {LayoutService} from '../services/layout.service';\nimport {MenuComponent} from './menu.component';\n\n@Component({\n standalone: true,\n selector: 'mng-sidebar',\n imports: [RouterModule, MenuComponent, ComponentDirective],\n templateUrl: './sidebar.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SidebarComponent {\n private readonly config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, {optional: true});\n public readonly layout = inject(LayoutService);\n public readonly el = inject(ElementRef);\n\n public menuComponent = signal<Type<any> | undefined>(this.config?.components?.menu === false ? undefined : this.config?.components?.menu ?? MenuComponent);\n private timeout: ReturnType<typeof setTimeout> | null = null;\n\n onMouseEnter() {\n if (!this.layout.state().anchored) {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n this.layout.state.update(state => ({\n ...state,\n sidebarActive: true\n }));\n }\n }\n\n onMouseLeave() {\n if (!this.layout.state().anchored) {\n if (!this.timeout) {\n this.timeout = setTimeout(\n () =>\n this.layout.state.update(state => ({\n ...state,\n sidebarActive: false\n })),\n 300\n );\n }\n }\n }\n\n anchor() {\n this.layout.state.update(state => ({\n ...state,\n anchored: !state.anchored\n }));\n }\n}\n","<div class=\"layout-sidebar\" (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\n <div class=\"sidebar-header\">\n <a [routerLink]=\"['/']\" class=\"app-logo\">\n <div class=\"app-logo-small h-2rem\">\n <img [src]=\"layout.appLogo()\" [alt]=\"'App logo'\" />\n </div>\n <div class=\"app-logo-normal\">\n <img class=\"h-2rem\" [src]=\"layout.appLogo()\" [alt]=\"'App logo'\" />\n <img class=\"h-2rem ml-3\" [src]=\"layout.appLogoName()\" [alt]=\"'App name'\" />\n </div>\n </a>\n <button class=\"layout-sidebar-anchor p-link z-2\" type=\"button\" (click)=\"anchor()\"></button>\n </div>\n\n @if (menuComponent()) {\n <div #menuContainer class=\"layout-menu-container\">\n <div [mngComponent]=\"menuComponent()\" [attachToHost]=\"true\"></div>\n </div>\n }\n</div>\n","import {ChangeDetectionStrategy, Component, Injector, inject, signal} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {FormsModule} from '@angular/forms';\n\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {Button} from 'primeng/button';\nimport {DropdownModule} from 'primeng/dropdown';\nimport {DynamicDialogConfig, DynamicDialogRef} from 'primeng/dynamicdialog';\nimport {InputSwitchModule} from 'primeng/inputswitch';\nimport {RadioButtonModule} from 'primeng/radiobutton';\nimport {SelectButtonModule} from 'primeng/selectbutton';\n\nimport {ColorScheme, CommonsService} from '@mediusinc/mng-commons/core';\n\nimport {LayoutMenuMode} from '../services/layout-feature-config.token';\nimport {LayoutService} from '../services/layout.service';\n\ninterface ColorSchemeOption {\n value: ColorScheme;\n label: string;\n}\n\nconst defaultColorSchemeOpts: ColorSchemeOption[] = [\n {\n value: 'auto',\n label: 'system'\n },\n {\n value: 'light',\n label: 'light'\n },\n {\n value: 'dark',\n label: 'dark'\n }\n];\n\n@Component({\n standalone: true,\n selector: 'mng-settings',\n imports: [TranslateModule, RadioButtonModule, FormsModule, Button, DropdownModule, InputSwitchModule, SelectButtonModule],\n templateUrl: './settings.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SettingsComponent {\n private readonly dynamicDialogConfig = inject(DynamicDialogConfig);\n private readonly dynamicDialogRef = inject(DynamicDialogRef);\n public readonly injector: Injector;\n public readonly translate;\n public readonly commons;\n public readonly layout;\n\n public readonly menuModes;\n\n public colorSchemeOptions = signal(defaultColorSchemeOpts);\n\n constructor() {\n this.injector = this.dynamicDialogConfig.data.injector;\n this.translate = this.injector.get(TranslateService);\n this.commons = this.injector.get(CommonsService);\n this.layout = this.injector.get(LayoutService);\n this.menuModes = this.layout.menuModes;\n\n this.translate\n .stream('mngSettings.title')\n .pipe(takeUntilDestroyed())\n .subscribe(t => {\n setTimeout(() => (this.dynamicDialogConfig.header = t));\n });\n\n const translateKey = 'mngSettings.colorScheme.options';\n this.translate\n .stream(translateKey)\n .pipe(takeUntilDestroyed())\n .subscribe(t => {\n if (t === translateKey) {\n this.colorSchemeOptions.set(defaultColorSchemeOpts);\n } else {\n this.colorSchemeOptions.update(options =>\n options.map(o => ({\n value: o.value,\n label: `${t[o.value]}`\n }))\n );\n }\n });\n }\n\n switchLocale(language: string) {\n this.commons.setAppLocale(language);\n }\n\n switchDataLocale(language: string) {\n this.commons.setAppDataLocale(language);\n }\n\n onMenuModeChange(mode: LayoutMenuMode) {\n this.layout.onMenuModeChange(mode);\n }\n\n onColorSchemeChange(scheme: ColorScheme) {\n this.layout.setColorScheme(scheme);\n }\n\n closeDialog() {\n this.dynamicDialogRef.close();\n }\n}\n","<div class=\"h-full flex flex-column\">\n <div class=\"flex-grow-1 mng-action-editor-form-container\">\n @if (commons.appLocales().length > 1 || commons.appDataLocales().length > 1) {\n <h5>{{ 'mngSettings.locales' | translate }}</h5>\n <div class=\"formgrid grid\">\n @if (commons.appLocales().length > 1) {\n <div class=\"field pr-4\">\n <i class=\"pi pi-fw pi-globe\"></i>\n <p-dropdown [ngModel]=\"commons.appLocale()\" [options]=\"commons.appLocales()\" (onChange)=\"switchLocale($event.value)\"></p-dropdown>\n </div>\n }\n @if (commons.appDataLocales().length > 1) {\n <div class=\"field pr-4\">\n <i class=\"pi pi-fw pi-database\"></i>\n <p-dropdown [ngModel]=\"commons.appDataLocale()\" [options]=\"commons.appDataLocales()\" (onChange)=\"switchDataLocale($event.value)\"></p-dropdown>\n </div>\n }\n </div>\n }\n\n <h5>{{ 'mngSettings.colorScheme.title' | translate }}</h5>\n <div class=\"formgrid grid\">\n <p-selectButton\n [options]=\"colorSchemeOptions()\"\n [ngModel]=\"layout.colorSchemeSetting()\"\n (ngModelChange)=\"onColorSchemeChange($event)\"\n optionLabel=\"label\"\n optionValue=\"value\"\n allowEmpty=\"false\" />\n </div>\n\n @if (menuModes.length > 1) {\n <h5>{{ 'mngSettings.menuMode.title' | translate }}</h5>\n <div class=\"formgrid grid\">\n @for (mode of menuModes; track mode) {\n <div class=\"field-radiobutton col-6 md:col-4\">\n <p-radioButton name=\"category\" [value]=\"mode\" [ngModel]=\"layout.menuMode()\" (ngModelChange)=\"onMenuModeChange(mode)\" />\n <label [for]=\"mode\" class=\"ml-2\">\n {{ 'mngSettings.menuMode.' + mode | translate }}\n </label>\n </div>\n }\n </div>\n }\n\n <div class=\"flex flex-row justify-content-between mng-action-editor-footer-container\">\n <div></div>\n <div>\n <p-button (onClick)=\"closeDialog()\" [label]=\"'general.close' | translate\" icon=\"pi pi-times\" styleClass=\"p-button-primary p-button-text\" />\n </div>\n </div>\n </div>\n</div>\n","import {AsyncPipe} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, Injector, computed, inject, signal} from '@angular/core';\nimport {DomSanitizer} from '@angular/platform-browser';\n\nimport {TranslateModule} from '@ngx-translate/core';\nimport {DialogService} from 'primeng/dynamicdialog';\nimport {RippleModule} from 'primeng/ripple';\nimport {StyleClassModule} from 'primeng/styleclass';\n\nimport {CommonsService, EnumerateAsyncPipe, IUser} from '@mediusinc/mng-commons/core';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT} from '../services/layout-feature-config.token';\nimport {SettingsComponent} from './settings.component';\n\n@Component({\n standalone: true,\n selector: 'mng-topbar-user-component',\n imports: [AsyncPipe, EnumerateAsyncPipe, TranslateModule, RippleModule, StyleClassModule],\n templateUrl: './topbar-user.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TopbarUserComponent {\n private readonly injector = inject(Injector);\n private readonly dialogService = inject(DialogService);\n private readonly commons = inject(CommonsService);\n public hrefJsVoid = inject(DomSanitizer).bypassSecurityTrustUrl('javascript:void(0)');\n private readonly config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, {optional: true});\n\n public user = computed<IUser | undefined>(() => this.commons.user());\n public userRoles = computed<string[]>(() => this.commons.userRoles());\n\n public settingsDisabled = signal(this.config?.components?.settings === false);\n\n public logout(user: IUser | undefined, event: Event) {\n if (typeof user?.logout === 'function') {\n event.preventDefault();\n event.stopPropagation();\n user.logout();\n }\n }\n\n public openSettings() {\n if (this.config?.components?.settings === false) {\n return;\n }\n\n this.dialogService.open(this.config?.components?.settings ?? SettingsComponent, {\n modal: true,\n styleClass: 'mng-dialog mng-action-editor-dialog mng-dialog-xs',\n data: {\n injector: this.injector\n }\n });\n }\n}\n","<a\n class=\"cursor-pointer lg:pr-4\"\n pStyleClass=\"@next\"\n enterFromClass=\"ng-hidden\"\n enterActiveClass=\"px-scalein\"\n leaveToClass=\"ng-hidden\"\n leaveActiveClass=\"px-fadeout\"\n [hideOnOutsideClick]=\"true\"\n pRipple>\n <i class=\"pi pi-fw pi-user text-2xl\"></i>\n <span class=\"hidden sm:inline-block\">&nbsp; {{ user()?.displayName ?? user()?.username }}</span>\n</a>\n<ul class=\"topbar-menu active-topbar-menu w-15rem z-5 ng-hidden border-round\">\n <li role=\"menuitem\">\n <a\n class=\"flex align-items-center transition-duration-200\"\n pStyleClass=\"@grandparent\"\n enterFromClass=\"ng-hidden\"\n enterActiveClass=\"px-scalein\"\n leaveToClass=\"ng-hidden\"\n leaveActiveClass=\"px-fadeout\">\n <i class=\"pi pi-fw pi-user text-base mr-2\"></i>\n <div>\n <strong>{{ user()?.displayName ?? user()?.username }}</strong>\n @if (userRoles().length > 0) {\n <small>\n <br />\n {{ userRoles() }}\n </small>\n }\n </div>\n </a>\n </li>\n @if (!settingsDisabled()) {\n <li role=\"menuitem\">\n <a\n [href]=\"hrefJsVoid\"\n (click)=\"openSettings()\"\n class=\"flex align-items-center transition-duration-200\"\n pStyleClass=\"@grandparent\"\n enterFromClass=\"ng-hidden\"\n enterActiveClass=\"px-scalein\"\n leaveToClass=\"ng-hidden\"\n leaveActiveClass=\"px-fadeout\">\n <i class=\"pi pi-fw pi-cog text-base mr-2\"></i>\n {{ 'mngSettings.title' | translate }}\n </a>\n </li>\n }\n @if (user()?.logout || user()?.logoutUrl) {\n <li role=\"menuitem\">\n <a\n [href]=\"user()?.logoutUrl ?? hrefJsVoid\"\n (click)=\"logout(user(), $event)\"\n class=\"flex align-items-center hover:text-primary-500 transition-duration-200\"\n pStyleClass=\"@grandparent\"\n enterFromClass=\"ng-hidden\"\n enterActiveClass=\"px-scalein\"\n leaveToClass=\"ng-hidden\"\n leaveActiveClass=\"px-fadeout\">\n <i class=\"pi pi-fw pi-sign-out text-base mr-2\"></i>\n <span>{{ 'mngTopbar.logout' | translate }}</span>\n </a>\n </li>\n }\n</ul>\n","import {AsyncPipe, NgClass} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, ElementRef, Type, inject, signal} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\n\nimport {ButtonModule} from 'primeng/button';\nimport {DropdownModule} from 'primeng/dropdown';\nimport {RippleModule} from 'primeng/ripple';\nimport {StyleClassModule} from 'primeng/styleclass';\n\nimport {CommonsService, ComponentDirective} from '@mediusinc/mng-commons/core';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT} from '../services/layout-feature-config.token';\nimport {LayoutService} from '../services/layout.service';\nimport {BreadcrumbComponent} from './breadcrumb.component';\nimport {SidebarComponent} from './sidebar.component';\nimport {TopbarUserComponent} from './topbar-user.component';\n\n@Component({\n standalone: true,\n selector: 'mng-topbar',\n imports: [SidebarComponent, NgClass, ButtonModule, StyleClassModule, RippleModule, BreadcrumbComponent, AsyncPipe, DropdownModule, ComponentDirective, FormsModule],\n templateUrl: './topbar.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TopbarComponent {\n public readonly el = inject(ElementRef);\n public readonly commons = inject(CommonsService);\n public readonly layout = inject(LayoutService);\n private readonly config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, {optional: true});\n\n public topbarUserComponent = signal<Type<any> | undefined>(\n this.config?.components?.topbarUser === false ? undefined : this.config?.components?.topbarUser ?? TopbarUserComponent\n );\n public breadcrumbComponent = signal<Type<any> | undefined>(\n this.config?.components?.breadcrumb === false ? undefined : this.config?.components?.breadcrumb ?? BreadcrumbComponent\n );\n\n public onMenuButtonClick() {\n this.layout.onMenuToggle();\n }\n\n public switchLocale(language: string) {\n this.commons.setAppLocale(language);\n }\n}\n","<div class=\"layout-topbar\">\n <div class=\"topbar-start\">\n <button #menubutton type=\"button\" class=\"topbar-menubutton p-link p-trigger\" (click)=\"onMenuButtonClick()\">\n <i class=\"pi pi-bars\"></i>\n </button>\n\n @if (breadcrumbComponent()) {\n <div class=\"topbar-breadcrumb\">\n <div [mngComponent]=\"breadcrumbComponent()\" [attachToHost]=\"true\"></div>\n </div>\n }\n </div>\n <div class=\"layout-topbar-menu-section\">\n <mng-sidebar></mng-sidebar>\n </div>\n <div class=\"topbar-end\">\n <ul class=\"topbar-menu\">\n @if (commons.appLocales().length > 1) {\n <li class=\"profile-item\">\n <i class=\"pi pi-fw pi-globe\"></i>\n <p-dropdown [ngModel]=\"commons.appLocale()\" [options]=\"commons.appLocales()\" (onChange)=\"switchLocale($event.value)\"></p-dropdown>\n </li>\n }\n @if (topbarUserComponent()) {\n <li #userMenuItem class=\"profile-item topbar-item mr-3\" [mngComponent]=\"topbarUserComponent()\" [attachToHost]=\"true\"></li>\n }\n </ul>\n </div>\n</div>\n","import {AsyncPipe, NgClass, NgTemplateOutlet} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, ElementRef, OnDestroy, Renderer2, Type, inject, signal, viewChild} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {RouterModule} from '@angular/router';\n\nimport {ComponentDirective, NotificationWrapperComponent} from '@mediusinc/mng-commons/core';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT} from '../services/layout-feature-config.token';\nimport {LayoutService} from '../services/layout.service';\nimport {MenuService} from '../services/menu.service';\nimport {BreadcrumbComponent} from './breadcrumb.component';\nimport {FooterComponent} from './footer.component';\nimport {TopbarComponent} from './topbar.component';\n\n@Component({\n standalone: true,\n selector: 'mng-main-layout',\n imports: [NgClass, RouterModule, TopbarComponent, BreadcrumbComponent, ComponentDirective, AsyncPipe, NotificationWrapperComponent, NgTemplateOutlet],\n templateUrl: './main-layout.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MainLayoutComponent implements OnDestroy {\n // private readonly commonsService = inject(CommonsService);\n private readonly config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, {optional: true});\n public readonly layout = inject(LayoutService);\n private readonly menuService = inject(MenuService);\n private readonly renderer = inject(Renderer2);\n\n private appTopbar = viewChild<ElementRef>('topbarCmp');\n\n public readonly ripple = signal(this.config?.ripple ?? true);\n\n public topbarComponent = signal<Type<any> | undefined>(this.config?.components?.topbar === false ? undefined : this.config?.components?.topbar ?? TopbarComponent);\n public breadcrumbsComponent = signal<Type<any> | undefined>(\n this.config?.components?.breadcrumb === false ? undefined : this.config?.components?.breadcrumb ?? BreadcrumbComponent\n );\n public footerComponent = signal<Type<any> | undefined>(this.config?.components?.footer === false ? undefined : this.config?.components?.footer ?? FooterComponent);\n\n public useNotificationWrapper = signal(!this.config?.disableNotificationWrapper);\n private menuOutsideClickListener: any;\n\n constructor() {\n this.layout.overlayOpen$.pipe(takeUntilDestroyed()).subscribe(() => {\n if (!this.menuOutsideClickListener) {\n this.menuOutsideClickListener = this.renderer.listen('document', 'click', event => {\n const isOutsideClicked = !(this.appTopbar()?.nativeElement.isSameNode(event.target) || this.appTopbar()?.nativeElement.contains(event.target));\n if (isOutsideClicked) {\n this.hideMenu();\n }\n });\n }\n if (this.layout.state().staticMenuMobileActive) {\n this.blockBodyScroll();\n }\n });\n }\n\n blockBodyScroll(): void {\n if (document.body.classList) {\n document.body.classList.add('blocked-scroll');\n } else {\n document.body.className += ' blocked-scroll';\n }\n }\n\n unblockBodyScroll(): void {\n if (document.body.classList) {\n document.body.classList.remove('blocked-scroll');\n } else {\n document.body.className = document.body.className.replace(new RegExp('(^|\\\\b)' + 'blocked-scroll'.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n }\n }\n\n hideMenu() {\n this.layout.state.update(state => ({\n ...state,\n overlayMenuActive: false,\n staticMenuMobileActive: false,\n menuHoverActive: false\n }));\n this.menuService.reset();\n if (this.menuOutsideClickListener) {\n this.menuOutsideClickListener();\n this.menuOutsideClickListener = null;\n }\n this.unblockBodyScroll();\n }\n\n ngOnDestroy() {\n if (this.menuOutsideClickListener) {\n this.menuOutsideClickListener();\n }\n }\n}\n","@if (useNotificationWrapper()) {\n <mng-notification-wrapper>\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n </mng-notification-wrapper>\n} @else {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n}\n\n<ng-template #content>\n <div\n class=\"layout-container\"\n [ngClass]=\"{\n 'layout-light': layout.colorScheme() === 'light',\n 'layout-dark': layout.colorScheme() === 'dark',\n 'layout-overlay': layout.menuMode() === 'overlay',\n 'layout-static': layout.menuMode() === 'static',\n 'layout-reveal': layout.menuMode() === 'reveal',\n 'layout-drawer': layout.menuMode() === 'drawer',\n 'layout-slim': layout.menuMode() === 'slim',\n 'layout-slim-plus': layout.menuMode() === 'slim-plus',\n 'layout-static-inactive': layout.state().staticMenuDesktopInactive && layout.menuMode() === 'static',\n 'layout-overlay-active': layout.state().overlayMenuActive,\n 'layout-mobile-active': layout.state().staticMenuMobileActive,\n 'p-ripple-disabled': !ripple(),\n 'layout-sidebar-active': layout.state().sidebarActive,\n 'layout-sidebar-anchored': layout.state().anchored\n }\">\n <div class=\"layout-content-wrapper\">\n @if (topbarComponent()) {\n <div #topbarCmp class=\"layout-topbar-wrapper\" [mngComponent]=\"topbarComponent()\" [attachToHost]=\"true\"></div>\n }\n @if (breadcrumbsComponent()) {\n <div class=\"content-breadcrumb\">\n <div [mngComponent]=\"breadcrumbsComponent()\" [attachToHost]=\"true\"></div>\n </div>\n }\n <div class=\"layout-content\">\n <router-outlet></router-outlet>\n </div>\n <div class=\"layout-mask\"></div>\n @if (footerComponent()) {\n <div [mngComponent]=\"footerComponent()\" [attachToHost]=\"true\"></div>\n }\n </div>\n </div>\n</ng-template>\n","import {RouteBuilder, createRoute} from '@mediusinc/mng-commons/core';\n\nimport {MainLayoutComponent} from '../components/main-layout.component';\n\n/**\n * Creates a layout route on the specified path.\n *\n * @param {String} path - The path of the route.\n * @return {RouteBuilder} - The route builder for the layout route.\n */\nexport function createLayoutRoute(path: string): RouteBuilder {\n return createRoute(path, MainLayoutComponent);\n}\n","import {CommonsFeature, CommonsFeatureTypeEnum} from '@mediusinc/mng-commons/core';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT, LayoutFeatureConfig} from './services/layout-feature-config.token';\nimport {LayoutService} from './services/layout.service';\nimport {MenuService} from './services/menu.service';\nimport {VersionService} from './services/version.service';\n\n/**\n * Prepares providers for usage of the layout functionalities.\n *\n * @returns {CommonsFeature} The `CommonsFeature` object with the layout configuration.\n */\nexport function withLayout(config?: LayoutFeatureConfig): CommonsFeature {\n return {\n type: CommonsFeatureTypeEnum.Layout,\n providers: [\n MenuService,\n VersionService,\n LayoutService,\n {\n provide: COMMONS_LAYOUT_FEATURE_CONFIG_IT,\n useValue: config\n }\n ]\n };\n}\n","// components\nexport * from './lib/components/pages/error/error.page.component';\nexport * from './lib/components/pages/not-found/not-found.page.component';\nexport * from './lib/components/footer.component';\nexport * from './lib/components/breadcrumb.component';\nexport * from './lib/components/main-layout.component';\nexport * from './lib/components/menu.component';\nexport * from './lib/components/menu-item.component';\nexport * from './lib/components/settings.component';\nexport * from './lib/components/sidebar.component';\nexport * from './lib/components/topbar.component';\nexport * from './lib/components/topbar-user.component';\nexport * from './lib/components/version.component';\n\n// helpers\nexport * from './lib/helpers/route-builder';\n\n// models\nexport * from './lib/models/layout-state.model';\nexport * from './lib/models/menu.model';\n\n// services\nexport * from './lib/services/layout-feature-config.token';\nexport * from './lib/services/layout.service';\nexport * from './lib/services/menu.service';\nexport * from './lib/services/version.service';\n\n// provide\nexport * from './lib/provide';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","ngToObservable","toObservable","i3"],"mappings":"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"}
@@ -9,7 +9,6 @@ interface ColorSchemeOption {
9
9
  label: string;
10
10
  }
11
11
  export declare class SettingsComponent {
12
- private readonly document;
13
12
  private readonly dynamicDialogConfig;
14
13
  private readonly dynamicDialogRef;
15
14
  readonly injector: Injector;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mediusinc/mng-commons-layout",
3
- "version": "5.3.0-rc.2",
3
+ "version": "5.3.0-rc.3",
4
4
  "peerDependencies": {
5
5
  "@angular/animations": "^17.3.0 || ^18.0.0",
6
6
  "@angular/common": "^17.3.0 || ^18.0.0",
@@ -10,7 +10,7 @@
10
10
  "@angular/router": "^17.3.0 || ^18.0.0",
11
11
  "@ngx-translate/core": "^15.0.0",
12
12
  "primeng": "^17.18.0",
13
- "@mediusinc/mng-commons": "~5.3.0-rc.2"
13
+ "@mediusinc/mng-commons": "~5.3.0-rc.3"
14
14
  },
15
15
  "dependencies": {
16
16
  "tslib": "^2.3.0"
@@ -34,3 +34,9 @@ mng-number-range.ng-dirty.ng-invalid > div > p-inputnumber .p-inputtext,
34
34
  mng-date-range.ng-dirty.ng-invalid p-calendar > .p-calendar > .p-inputtext {
35
35
  @include invalid-input();
36
36
  }
37
+
38
+ .mng-formly-field-datepicker {
39
+ input.mng-formly-field-datepicker-input {
40
+ max-width: 400px;
41
+ }
42
+ }
@@ -16,3 +16,4 @@
16
16
  @import 'mng_theme_tabview';
17
17
  @import 'mng_theme_tag';
18
18
  @import 'mng_theme_fileupload';
19
+ @import "mng_theme_table";
@@ -0,0 +1,54 @@
1
+ .p-datatable:not(.p-datatable-gridlines) {
2
+ .p-datatable-tbody > tr > td {
3
+ cursor: auto;
4
+ }
5
+
6
+ .p-datatable-tbody > tr > td.clickable {
7
+ cursor: pointer;
8
+ }
9
+ }
10
+
11
+ .p-datatable {
12
+ .p-datatable-header {
13
+ border-top: 0;
14
+ }
15
+
16
+ .p-paginator {
17
+ .p-dropdown {
18
+ .p-dropdown-label {
19
+ display: flex;
20
+ align-items: center;
21
+ }
22
+ }
23
+ }
24
+ }
25
+
26
+ .mng-table-header {
27
+ & > th {
28
+ &:not(:first-child):not(:last-child) {
29
+ border-radius: 0 !important;
30
+ }
31
+
32
+ &:first-child {
33
+ border-top-right-radius: 0 !important;
34
+ border-bottom-right-radius: 0 !important;
35
+ }
36
+
37
+ &:last-child {
38
+ border-radius: 0 !important;
39
+ }
40
+ }
41
+ }
42
+
43
+ .mng-table-columns-multiselect {
44
+ width: 36px;
45
+
46
+ .p-multiselect-label-container {
47
+ width: 0;
48
+ }
49
+ }
50
+
51
+ .mng-table-row-expand-button {
52
+ width: 21px;
53
+ height: 21px;
54
+ }
@@ -21,11 +21,6 @@
21
21
  }
22
22
  }
23
23
 
24
- .table-header {
25
- display: flex;
26
- justify-content: space-between;
27
- }
28
-
29
24
  .p-datatable {
30
25
  .p-datatable-scrollable-table > .p-datatable-thead {
31
26
  z-index: 2;
@@ -43,59 +38,4 @@
43
38
  text-align: left;
44
39
  }
45
40
  }
46
-
47
- /* Responsive */
48
- //.p-datatable-tbody > tr > td .p-column-title {
49
- // display: none;
50
- //}
51
- }
52
-
53
- .p-datatable:not(.p-datatable-gridlines) {
54
- .p-datatable-tbody > tr > td {
55
- cursor: auto;
56
- }
57
-
58
- .p-datatable-tbody > tr > td.clickable {
59
- cursor: pointer;
60
- }
61
- }
62
-
63
- .p-datatable {
64
- .p-datatable-header {
65
- border-top: 0;
66
- }
67
-
68
- .p-paginator {
69
- .p-dropdown {
70
- .p-dropdown-label {
71
- display: flex;
72
- align-items: center;
73
- }
74
- }
75
- }
76
- }
77
-
78
- .mng-table-header {
79
- & > th {
80
- &:not(:first-child):not(:last-child) {
81
- border-radius: 0 !important;
82
- }
83
-
84
- &:first-child {
85
- border-top-right-radius: 0 !important;
86
- border-bottom-right-radius: 0 !important;
87
- }
88
-
89
- &:last-child {
90
- border-radius: 0 !important;
91
- }
92
- }
93
- }
94
-
95
- .mng-table-columns-multiselect {
96
- width: 36px;
97
-
98
- .p-multiselect-label-container {
99
- width: 0;
100
- }
101
41
  }
@@ -3,16 +3,16 @@
3
3
 
4
4
  .p-toast-message {
5
5
  &.p-toast-message-info {
6
- background: var(--surface-section);
6
+ background: var(--surface-toast);
7
7
  }
8
8
  &.p-toast-message-success {
9
- background: var(--surface-section);
9
+ background: var(--surface-toast);
10
10
  }
11
11
  &.p-toast-message-warn {
12
- background: var(--surface-section);
12
+ background: var(--surface-toast);
13
13
  }
14
14
  &.p-toast-message-error {
15
- background: var(--surface-section);
15
+ background: var(--surface-toast);
16
16
  }
17
17
 
18
18
  .p-toast-detail {
@@ -927,8 +927,9 @@ $imagePreviewActionIconBorderRadius: 50% !default;
927
927
  --inline-spacing: #{$inlineSpacing};
928
928
  --border-radius: #{$borderRadius};
929
929
  --surface-ground: linear-gradient(180deg, #2e323f 0%, #0a061a 100%);
930
- --surface-section: #2e323f;
930
+ --surface-section: transparent;
931
931
  --surface-card: rgba(255, 255, 255, 0.05);
932
+ --surface-toast: #2e323f;
932
933
  --surface-overlay: linear-gradient(180deg, #2e323f 0%, #0a061a 100%);
933
934
  --surface-border: rgba(255, 255, 255, 0.15);
934
935
  --surface-hover: rgba(255, 255, 255, 0.05);
@@ -11,4 +11,4 @@ $highlightTextColor: $primaryTextColor !default;
11
11
  @import '../_variables';
12
12
  @import '../../theme-base/_components';
13
13
  @import '../_extensions';
14
- @import '../../extensions/_fullcalendar';
14
+ //@import '../../extensions/_fullcalendar';
@@ -923,8 +923,9 @@ $imagePreviewActionIconBorderRadius: 50% !default;
923
923
  --inline-spacing: #{$inlineSpacing};
924
924
  --border-radius: #{$borderRadius};
925
925
  --surface-ground: linear-gradient(180deg, #f6f9fc 0%, #ececf9 100%);
926
- --surface-section: #ffffff;
926
+ --surface-section: transparent;
927
927
  --surface-card: rgba(255, 255, 255, 0.9);
928
+ --surface-toast: #ffffff;
928
929
  --surface-overlay: #ececf9;
929
930
  --surface-border: rgba(68, 72, 109, 0.2);
930
931
  --surface-hover: rgba(68, 72, 109, 0.07);
@@ -11,4 +11,4 @@ $highlightTextColor: $primaryTextColor !default;
11
11
  @import '../_variables';
12
12
  @import '../../theme-base/_components';
13
13
  @import '../_extensions';
14
- @import '../../extensions/_fullcalendar';
14
+ //@import '../../extensions/_fullcalendar';
package/version-info.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@mediusinc/mng-commons-layout",
3
- "version": "5.3.0-rc.2",
3
+ "version": "5.3.0-rc.3",
4
4
  "tag": "v5.2.0-rc.2",
5
- "distance": 26,
6
- "hash": "e02f975a",
5
+ "distance": 39,
6
+ "hash": "6e974648",
7
7
  "dirty": true,
8
- "semver": "5.2.0-rc.2+26.ge02f975a.dirty",
8
+ "semver": "5.2.0-rc.2+39.g6e974648.dirty",
9
9
  "buildTimestamp": null,
10
- "raw": "v5.2.0-rc.2-26-e02f975a-dirty"
10
+ "raw": "v5.2.0-rc.2-39-6e974648-dirty"
11
11
  }