@tilde-nlp/ngx-menu 6.1.11 → 6.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/esm2022/lib/components/menu-columns/menu-columns.component.mjs +1 -1
  2. package/esm2022/lib/components/menu-icon/menu-icon.component.mjs +5 -6
  3. package/esm2022/lib/components/menu-item-list/menu-item-list.component.mjs +4 -4
  4. package/esm2022/lib/components/side-nav-menu/side-nav-menu.component.mjs +149 -126
  5. package/esm2022/lib/constants/index.mjs +2 -0
  6. package/esm2022/lib/constants/user-menu-options.const.mjs +36 -0
  7. package/esm2022/lib/models/active-menu-items.model.mjs +1 -1
  8. package/esm2022/lib/models/custom-menu-item.model.mjs +2 -0
  9. package/esm2022/lib/models/index.mjs +2 -2
  10. package/esm2022/lib/models/menu-item-group.model.mjs +1 -1
  11. package/esm2022/lib/services/menu-items.service.mjs +5 -10
  12. package/esm2022/lib/services/strapi.service.mjs +1 -1
  13. package/esm2022/public-api.mjs +2 -1
  14. package/fesm2022/tilde-nlp-ngx-menu.mjs +196 -144
  15. package/fesm2022/tilde-nlp-ngx-menu.mjs.map +1 -1
  16. package/lib/components/menu-columns/menu-columns.component.d.ts +1 -1
  17. package/lib/components/menu-item-list/menu-item-list.component.d.ts +1 -1
  18. package/lib/components/side-nav-menu/side-nav-menu.component.d.ts +4 -2
  19. package/lib/constants/index.d.ts +1 -0
  20. package/lib/constants/user-menu-options.const.d.ts +12 -0
  21. package/lib/models/active-menu-items.model.d.ts +1 -1
  22. package/lib/models/{custom-menu-item.d.ts → custom-menu-item.model.d.ts} +0 -1
  23. package/lib/models/index.d.ts +1 -1
  24. package/lib/models/menu-item-group.model.d.ts +1 -1
  25. package/lib/services/menu-items.service.d.ts +4 -6
  26. package/lib/services/strapi.service.d.ts +1 -1
  27. package/package.json +1 -1
  28. package/public-api.d.ts +1 -0
  29. package/esm2022/lib/models/custom-menu-item.mjs +0 -2
@@ -28,6 +28,8 @@ import { MatDialogModule } from '@angular/material/dialog';
28
28
  import { MatListModule } from '@angular/material/list';
29
29
  import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';
30
30
 
31
+ const MENU_SHARED_CONFIG = "menu-shared-config";
32
+
31
33
  /** Necessary for menu components to determine where loaded data from strapi should be placed - either in front of pre defined items or in end. */
32
34
  var StrapiDataLocation;
33
35
  (function (StrapiDataLocation) {
@@ -35,8 +37,6 @@ var StrapiDataLocation;
35
37
  StrapiDataLocation[StrapiDataLocation["END"] = 1] = "END";
36
38
  })(StrapiDataLocation || (StrapiDataLocation = {}));
37
39
 
38
- const MENU_SHARED_CONFIG = "menu-shared-config";
39
-
40
40
  const MENU_ICON_STRAPI_EXTENSION = ".svg";
41
41
 
42
42
  class StarpiMenuService {
@@ -135,9 +135,9 @@ class MenuItemsService {
135
135
  get strapiDataLocation() { return this.menuSharedConfig?.strapiDataLocation ?? StrapiDataLocation.END; }
136
136
  get mergedGroups() { return this._mergedGroups; }
137
137
  get menuItemGroups() { return this.menuSharedConfig.itemGroups; }
138
- constructor(router, config, strapiService) {
138
+ constructor(router, menuSharedConfig, strapiService) {
139
139
  this.router = router;
140
- this.config = config;
140
+ this.menuSharedConfig = menuSharedConfig;
141
141
  this.strapiService = strapiService;
142
142
  this._activeElements = new BehaviorSubject({});
143
143
  this.strapiItems = [];
@@ -148,14 +148,9 @@ class MenuItemsService {
148
148
  fragment: 'exact'
149
149
  };
150
150
  this._mergedGroups = [];
151
- this.menuSharedConfig = config;
152
- this.initData();
151
+ this.getStrapiData();
153
152
  this.subscribeToRouteChanges();
154
153
  }
155
- setMenuItems(config) {
156
- this.menuSharedConfig = config;
157
- this.initData();
158
- }
159
154
  subscribeToRouteChanges() {
160
155
  this.router.events
161
156
  .pipe(filter(e => e instanceof NavigationEnd))
@@ -194,7 +189,7 @@ class MenuItemsService {
194
189
  }
195
190
  return customIdElement;
196
191
  }
197
- initData() {
192
+ getStrapiData() {
198
193
  if (!this.menuSharedConfig?.disableStrapi) {
199
194
  this.strapiService.getMenuItems().subscribe(this.loadData.bind(this));
200
195
  }
@@ -290,18 +285,17 @@ function MenuIconComponent_ng_container_0_mat_icon_1_Template(rf, ctx) { if (rf
290
285
  i0.ɵɵproperty("svgIcon", ctx_r0.menuItem.icon);
291
286
  } }
292
287
  function MenuIconComponent_ng_container_0_ng_template_2_Template(rf, ctx) { if (rf & 1) {
293
- i0.ɵɵelementStart(0, "span", 4);
288
+ i0.ɵɵelementStart(0, "mat-icon", 4);
294
289
  i0.ɵɵtext(1);
295
290
  i0.ɵɵelementEnd();
296
291
  } if (rf & 2) {
297
292
  const ctx_r0 = i0.ɵɵnextContext(2);
298
- i0.ɵɵclassProp("material-icons-outlined", ctx_r0.menuItem == null ? null : ctx_r0.menuItem.isIconOutlined);
299
293
  i0.ɵɵadvance();
300
294
  i0.ɵɵtextInterpolate(ctx_r0.menuItem.icon);
301
295
  } }
302
296
  function MenuIconComponent_ng_container_0_Template(rf, ctx) { if (rf & 1) {
303
297
  i0.ɵɵelementContainerStart(0);
304
- i0.ɵɵtemplate(1, MenuIconComponent_ng_container_0_mat_icon_1_Template, 1, 1, "mat-icon", 2)(2, MenuIconComponent_ng_container_0_ng_template_2_Template, 2, 3, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
298
+ i0.ɵɵtemplate(1, MenuIconComponent_ng_container_0_mat_icon_1_Template, 1, 1, "mat-icon", 2)(2, MenuIconComponent_ng_container_0_ng_template_2_Template, 2, 1, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
305
299
  i0.ɵɵelementContainerEnd();
306
300
  } if (rf & 2) {
307
301
  const materialIcon_r2 = i0.ɵɵreference(3);
@@ -318,7 +312,7 @@ class MenuIconComponent {
318
312
  return typeof icon !== "string";
319
313
  }
320
314
  static { this.ɵfac = function MenuIconComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MenuIconComponent)(); }; }
321
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MenuIconComponent, selectors: [["tld-menu-icon"]], inputs: { menuItem: "menuItem" }, decls: 1, vars: 1, consts: [["materialIcon", ""], [4, "ngIf"], ["class", "menu-icon", 3, "svgIcon", 4, "ngIf", "ngIfElse"], [1, "menu-icon", 3, "svgIcon"], [1, "material-icons", "menu-icon"]], template: function MenuIconComponent_Template(rf, ctx) { if (rf & 1) {
315
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MenuIconComponent, selectors: [["tld-menu-icon"]], inputs: { menuItem: "menuItem" }, decls: 1, vars: 1, consts: [["materialIcon", ""], [4, "ngIf"], ["class", "menu-icon", 3, "svgIcon", 4, "ngIf", "ngIfElse"], [1, "menu-icon", 3, "svgIcon"], [1, "menu-icon"]], template: function MenuIconComponent_Template(rf, ctx) { if (rf & 1) {
322
316
  i0.ɵɵtemplate(0, MenuIconComponent_ng_container_0_Template, 4, 2, "ng-container", 1);
323
317
  } if (rf & 2) {
324
318
  i0.ɵɵproperty("ngIf", ctx.menuItem.icon);
@@ -326,7 +320,7 @@ class MenuIconComponent {
326
320
  }
327
321
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MenuIconComponent, [{
328
322
  type: Component,
329
- args: [{ selector: 'tld-menu-icon', template: "<ng-container *ngIf=\"menuItem.icon\">\r\n <mat-icon class=\"menu-icon\" [svgIcon]=\"menuItem.icon\" *ngIf=\"!menuItem.materialIcon; else materialIcon;\"></mat-icon>\r\n <ng-template #materialIcon>\r\n <span class=\"material-icons menu-icon\" [class.material-icons-outlined]=\"menuItem?.isIconOutlined\">{{menuItem.icon}}</span>\r\n </ng-template>\r\n</ng-container>\r\n", styles: [".menu-icon{color:var(--base-30);margin:auto;min-width:24px;min-height:24px;max-width:24px;max-height:24px;vertical-align:middle}\n"] }]
323
+ args: [{ selector: 'tld-menu-icon', template: "<ng-container *ngIf=\"menuItem.icon\">\r\n <mat-icon class=\"menu-icon\" [svgIcon]=\"menuItem.icon\" *ngIf=\"!menuItem.materialIcon; else materialIcon;\"></mat-icon>\r\n <ng-template #materialIcon>\r\n <mat-icon class=\"menu-icon\">{{menuItem.icon}}</mat-icon>\r\n </ng-template>\r\n</ng-container>\r\n", styles: [".menu-icon{color:var(--base-30);margin:auto;min-width:24px;min-height:24px;max-width:24px;max-height:24px;vertical-align:middle}\n"] }]
330
324
  }], null, { menuItem: [{
331
325
  type: Input
332
326
  }] }); })();
@@ -545,7 +539,7 @@ class MenuItemListComponent {
545
539
  this.toggleExpand.next(menuItem);
546
540
  }
547
541
  static { this.ɵfac = function MenuItemListComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MenuItemListComponent)(); }; }
548
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MenuItemListComponent, selectors: [["menu-item-list"]], inputs: { direction: "direction", labelsVisible: "labelsVisible", activeItem: "activeItem", showIcons: "showIcons", items: "items", menuItemGroup: "menuItemGroup" }, outputs: { toggleExpand: "toggleExpand" }, decls: 8, vars: 3, consts: [["itemWithChildren", ""], ["menuItemLink", ""], [1, "menu-list-wrapper"], ["fxLayoutAlign", "center center", "class", "menu-item-list-title", 4, "ngIf"], ["fxLayout", "column", 1, "menu-item-list", 3, "fxLayoutAlign"], [4, "ngFor", "ngForOf"], ["fxLayoutAlign", "center center", 1, "menu-item-list-title"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], ["matTooltipPosition", "after", "matTooltipClass", "menu-tooltip", "fxLayoutGap", "0.375rem", 1, "text-m", "menu-item", 3, "click", "ngClass.lt-md", "fxLayout", "matTooltip", "fxLayoutAlign"], [4, "ngIf"], [3, "menuItem"], [1, "menu-item-title"], [1, "title-content"], ["class", "material-icons", 4, "ngIf"], [1, "material-icons"], ["class", "child-list", 3, "items", "direction", "labelsVisible", "activeItem", 4, "ngIf"], [1, "child-list", 3, "items", "direction", "labelsVisible", "activeItem"], [3, "ngClass.lt-md", "menuItem", "direction", "labelsVisible", "activeItem", "showIcons"]], template: function MenuItemListComponent_Template(rf, ctx) { if (rf & 1) {
542
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MenuItemListComponent, selectors: [["menu-item-list"]], inputs: { direction: "direction", labelsVisible: "labelsVisible", activeItem: "activeItem", showIcons: "showIcons", items: "items", menuItemGroup: "menuItemGroup" }, outputs: { toggleExpand: "toggleExpand" }, decls: 8, vars: 3, consts: [["itemWithChildren", ""], ["menuItemLink", ""], [1, "menu-list-wrapper"], ["fxLayoutAlign", "start center", "class", "menu-item-list-title", 4, "ngIf"], ["fxLayout", "column", 1, "menu-item-list", 3, "fxLayoutAlign"], [4, "ngFor", "ngForOf"], ["fxLayoutAlign", "start center", 1, "menu-item-list-title"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], ["matTooltipPosition", "after", "matTooltipClass", "menu-tooltip", "fxLayoutGap", "0.375rem", 1, "text-m", "menu-item", 3, "click", "ngClass.lt-md", "fxLayout", "matTooltip", "fxLayoutAlign"], [4, "ngIf"], [3, "menuItem"], [1, "menu-item-title"], [1, "title-content"], ["class", "material-icons", 4, "ngIf"], [1, "material-icons"], ["class", "child-list", 3, "items", "direction", "labelsVisible", "activeItem", 4, "ngIf"], [1, "child-list", 3, "items", "direction", "labelsVisible", "activeItem"], [3, "ngClass.lt-md", "menuItem", "direction", "labelsVisible", "activeItem", "showIcons"]], template: function MenuItemListComponent_Template(rf, ctx) { if (rf & 1) {
549
543
  i0.ɵɵelementStart(0, "div", 2);
550
544
  i0.ɵɵtemplate(1, MenuItemListComponent_div_1_Template, 3, 3, "div", 3);
551
545
  i0.ɵɵelementStart(2, "div", 4);
@@ -559,11 +553,11 @@ class MenuItemListComponent {
559
553
  i0.ɵɵproperty("fxLayoutAlign", ctx.menuLayoutDirection);
560
554
  i0.ɵɵadvance();
561
555
  i0.ɵɵproperty("ngForOf", ctx.items);
562
- } }, dependencies: [i4.DefaultLayoutDirective, i4.DefaultLayoutGapDirective, i4.DefaultLayoutAlignDirective, i5.DefaultClassDirective, i3.NgForOf, i3.NgIf, i3.NgTemplateOutlet, i5$1.MatTooltip, MenuItemListComponent, MenuIconComponent, MenuItemLinkComponent, i8.TranslatePipe], styles: ["[_nghost-%COMP%]{display:inline-block} .collapsed .menu-item-list{display:flex!important;justify-content:center!important;align-items:center!important} .collapsed .menu-list-wrapper, .collapsed tld-menu-item-link{display:flex!important;justify-content:center!important} .collapsed .menu-item{display:flex!important;place-content:center center!important} .collapsed tld-menu-item-link:not(:first-child){margin-top:16px!important}[_nghost-%COMP%] .menu-list-wrapper .menu-item{cursor:pointer;font-style:normal;color:var(--base-30);text-decoration:none;align-items:center!important;font-weight:400;background:none;border:none}[_nghost-%COMP%] .menu-list-wrapper .menu-item:not(button):not(.active-menu-item):hover{background-color:var(--base-70)!important}[_nghost-%COMP%] .menu-list-wrapper .menu-item.active-menu-item, [_nghost-%COMP%] .menu-list-wrapper .menu-item.active-menu-item mat-icon, [_nghost-%COMP%] .menu-list-wrapper .menu-item.active-menu-item:hover{font-weight:600}[_nghost-%COMP%] .menu-list-wrapper .menu-item span{display:inline-block}[_nghost-%COMP%] .menu-list-wrapper .menu-item .menu-item-title{display:flex;flex-direction:row;align-items:start;width:100%}[_nghost-%COMP%] .menu-list-wrapper .menu-item .menu-item-title .title-content{display:block}[_nghost-%COMP%] .menu-list-wrapper .menu-item .menu-item-title .title-content:before{display:block;content:attr(content);font-weight:600;height:0;overflow:hidden;visibility:hidden}.child-list[_nghost-%COMP%]{margin-bottom:1rem}.child-list[_nghost-%COMP%] .menu-item[_ngcontent-%COMP%] + .menu-item[_ngcontent-%COMP%]{margin-top:.5rem} .menu-tooltip{left:.625rem;font-family:Roboto;font-style:normal;font-weight:400;font-size:.75rem;line-height:1.25rem;color:var(--base-70);border-radius:.25rem;position:relative} .menu-tooltip:after{width:0;height:0;content:\"\";position:absolute;border-left:.5rem solid transparent;border-right:.5rem solid transparent;border-bottom:.5rem solid var(--menu-border-dark-color);left:-.75rem;top:calc(50% - .25rem);transform:rotate(270deg);overflow:initial}.menu-item-list-title[_ngcontent-%COMP%]{padding:8px 0 24px;font-size:16px;font-weight:600}.menu-item-list[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_slide-in .3s forwards}@keyframes _ngcontent-%COMP%_slide-in{0%{margin-left:-100px}to{margin-left:0}}"] }); }
556
+ } }, dependencies: [i4.DefaultLayoutDirective, i4.DefaultLayoutGapDirective, i4.DefaultLayoutAlignDirective, i5.DefaultClassDirective, i3.NgForOf, i3.NgIf, i3.NgTemplateOutlet, i5$1.MatTooltip, MenuItemListComponent, MenuIconComponent, MenuItemLinkComponent, i8.TranslatePipe], styles: ["[_nghost-%COMP%]{display:inline-block} .collapsed .menu-item-list{display:flex!important;justify-content:center!important;align-items:center!important} .collapsed .menu-list-wrapper, .collapsed tld-menu-item-link{display:flex!important;justify-content:center!important} .collapsed .menu-item{display:flex!important;place-content:center center!important} .collapsed tld-menu-item-link:not(:first-child){margin-top:16px!important}[_nghost-%COMP%] .menu-list-wrapper .menu-item{cursor:pointer;font-style:normal;color:var(--base-30);text-decoration:none;align-items:center!important;font-weight:400;background:none;border:none}[_nghost-%COMP%] .menu-list-wrapper .menu-item:not(button):not(.active-menu-item):hover{background-color:var(--base-70)!important}[_nghost-%COMP%] .menu-list-wrapper .menu-item.active-menu-item, [_nghost-%COMP%] .menu-list-wrapper .menu-item.active-menu-item mat-icon, [_nghost-%COMP%] .menu-list-wrapper .menu-item.active-menu-item:hover{font-weight:600}[_nghost-%COMP%] .menu-list-wrapper .menu-item span{display:inline-block}[_nghost-%COMP%] .menu-list-wrapper .menu-item .menu-item-title{display:flex;flex-direction:row;align-items:start;width:100%}[_nghost-%COMP%] .menu-list-wrapper .menu-item .menu-item-title .title-content{display:block}[_nghost-%COMP%] .menu-list-wrapper .menu-item .menu-item-title .title-content:before{display:block;content:attr(content);font-weight:600;height:0;overflow:hidden;visibility:hidden}.child-list[_nghost-%COMP%]{margin-bottom:1rem}.child-list[_nghost-%COMP%] .menu-item[_ngcontent-%COMP%] + .menu-item[_ngcontent-%COMP%]{margin-top:.5rem} .menu-tooltip{left:.625rem;font-family:Roboto;font-style:normal;font-weight:400;font-size:.75rem;line-height:1.25rem;color:var(--base-70);border-radius:.25rem;position:relative} .menu-tooltip:after{width:0;height:0;content:\"\";position:absolute;border-left:.5rem solid transparent;border-right:.5rem solid transparent;border-bottom:.5rem solid var(--menu-border-dark-color);left:-.75rem;top:calc(50% - .25rem);transform:rotate(270deg);overflow:initial}"] }); }
563
557
  }
564
558
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MenuItemListComponent, [{
565
559
  type: Component,
566
- args: [{ selector: 'menu-item-list', template: "<div class=\"menu-list-wrapper\">\r\n <div *ngIf=\"titleKey && showTitle && labelsVisible\" fxLayoutAlign=\"center center\" class=\"menu-item-list-title\">\r\n {{ titleKey | translate }}\r\n </div>\r\n <div fxLayout=\"column\" [fxLayoutAlign]=\"menuLayoutDirection\" class=\"menu-item-list\">\r\n <ng-container *ngFor=\"let menuItem of items\">\r\n <ng-container\r\n *ngTemplateOutlet=\"!menuItem.showChildren || !menuItem.children || menuItem?.children?.length === 0 ? menuItemLink : itemWithChildren; context: {menuItem: menuItem}\">\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<ng-template #itemWithChildren let-menuItem=\"menuItem\">\r\n <button [attr.id]=\"menuItem.customId\" [ngClass.lt-md]=\"'mob-menu-item'\" [fxLayout]=\"menuItemLayout\" class=\"text-m menu-item\"\r\n [matTooltip]=\"!labelsVisible ? (menuItem.title | translate) : ''\" matTooltipPosition=\"after\" [class.menu-labels-visible]=\"labelsVisible\"\r\n [fxLayoutAlign]=\"menuLayoutDirection\" matTooltipClass=\"menu-tooltip\" fxLayoutGap=\"0.375rem\"\r\n [class.active-menu-item]=\"activeItem?.link && menuItem === activeItem\" (click)=\"toggleItemExpand($event,menuItem)\">\r\n <ng-container *ngIf=\"showIcons && menuItem.icon\">\r\n <tld-menu-icon [menuItem]=\"menuItem\"></tld-menu-icon>\r\n </ng-container>\r\n <ng-container *ngIf=\"labelsVisible\">\r\n <span class=\"menu-item-title\">\r\n <span class=\"title-content\">{{ menuItem.title | translate }}</span></span>\r\n <span class=\"material-icons\" *ngIf=\"menuItem.showChildren && menuItem.children\">\r\n {{ menuItem.expanded ? 'arrow_drop_up' : 'arrow_drop_down' }}\r\n </span>\r\n </ng-container>\r\n </button>\r\n <ng-container *ngIf=\"menuItem.showChildren && menuItem.expanded && labelsVisible\">\r\n <menu-item-list class=\"child-list\" *ngIf=\"menuItem.children && menuItem.children.length\" [items]=\"menuItem.children\"\r\n [direction]=\"direction\" [labelsVisible]=\"labelsVisible\" [activeItem]=\"activeItem\">\r\n </menu-item-list>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #menuItemLink let-menuItem=\"menuItem\">\r\n <tld-menu-item-link [ngClass.lt-md]=\"'mob-menu-item'\" [menuItem]=\"menuItem\" [direction]=\"direction\" [labelsVisible]=\"labelsVisible\"\r\n [activeItem]=\"activeItem\" [showIcons]=\"showIcons\"></tld-menu-item-link>\r\n</ng-template>", styles: [":host{display:inline-block}::ng-deep .collapsed .menu-item-list{display:flex!important;justify-content:center!important;align-items:center!important}::ng-deep .collapsed .menu-list-wrapper,::ng-deep .collapsed tld-menu-item-link{display:flex!important;justify-content:center!important}::ng-deep .collapsed .menu-item{display:flex!important;place-content:center center!important}::ng-deep .collapsed tld-menu-item-link:not(:first-child){margin-top:16px!important}:host ::ng-deep .menu-list-wrapper .menu-item{cursor:pointer;font-style:normal;color:var(--base-30);text-decoration:none;align-items:center!important;font-weight:400;background:none;border:none}:host ::ng-deep .menu-list-wrapper .menu-item:not(button):not(.active-menu-item):hover{background-color:var(--base-70)!important}:host ::ng-deep .menu-list-wrapper .menu-item.active-menu-item,:host ::ng-deep .menu-list-wrapper .menu-item.active-menu-item mat-icon,:host ::ng-deep .menu-list-wrapper .menu-item.active-menu-item:hover{font-weight:600}:host ::ng-deep .menu-list-wrapper .menu-item span{display:inline-block}:host ::ng-deep .menu-list-wrapper .menu-item .menu-item-title{display:flex;flex-direction:row;align-items:start;width:100%}:host ::ng-deep .menu-list-wrapper .menu-item .menu-item-title .title-content{display:block}:host ::ng-deep .menu-list-wrapper .menu-item .menu-item-title .title-content:before{display:block;content:attr(content);font-weight:600;height:0;overflow:hidden;visibility:hidden}:host.child-list{margin-bottom:1rem}:host.child-list .menu-item+.menu-item{margin-top:.5rem}::ng-deep .menu-tooltip{left:.625rem;font-family:Roboto;font-style:normal;font-weight:400;font-size:.75rem;line-height:1.25rem;color:var(--base-70);border-radius:.25rem;position:relative}::ng-deep .menu-tooltip:after{width:0;height:0;content:\"\";position:absolute;border-left:.5rem solid transparent;border-right:.5rem solid transparent;border-bottom:.5rem solid var(--menu-border-dark-color);left:-.75rem;top:calc(50% - .25rem);transform:rotate(270deg);overflow:initial}.menu-item-list-title{padding:8px 0 24px;font-size:16px;font-weight:600}.menu-item-list{animation:slide-in .3s forwards}@keyframes slide-in{0%{margin-left:-100px}to{margin-left:0}}\n"] }]
560
+ args: [{ selector: 'menu-item-list', template: "<div class=\"menu-list-wrapper\">\r\n <div *ngIf=\"titleKey && showTitle && labelsVisible\" fxLayoutAlign=\"start center\" class=\"menu-item-list-title\">\r\n {{ titleKey | translate }}\r\n </div>\r\n <div fxLayout=\"column\" [fxLayoutAlign]=\"menuLayoutDirection\" class=\"menu-item-list\">\r\n <ng-container *ngFor=\"let menuItem of items\">\r\n <ng-container\r\n *ngTemplateOutlet=\"!menuItem.showChildren || !menuItem.children || menuItem?.children?.length === 0 ? menuItemLink : itemWithChildren; context: {menuItem: menuItem}\">\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<ng-template #itemWithChildren let-menuItem=\"menuItem\">\r\n <button [attr.id]=\"menuItem.customId\" [ngClass.lt-md]=\"'mob-menu-item'\" [fxLayout]=\"menuItemLayout\" class=\"text-m menu-item\"\r\n [matTooltip]=\"!labelsVisible ? (menuItem.title | translate) : ''\" matTooltipPosition=\"after\" [class.menu-labels-visible]=\"labelsVisible\"\r\n [fxLayoutAlign]=\"menuLayoutDirection\" matTooltipClass=\"menu-tooltip\" fxLayoutGap=\"0.375rem\"\r\n [class.active-menu-item]=\"activeItem?.link && menuItem === activeItem\" (click)=\"toggleItemExpand($event,menuItem)\">\r\n <ng-container *ngIf=\"showIcons && menuItem.icon\">\r\n <tld-menu-icon [menuItem]=\"menuItem\"></tld-menu-icon>\r\n </ng-container>\r\n <ng-container *ngIf=\"labelsVisible\">\r\n <span class=\"menu-item-title\">\r\n <span class=\"title-content\">{{ menuItem.title | translate }}</span></span>\r\n <span class=\"material-icons\" *ngIf=\"menuItem.showChildren && menuItem.children\">\r\n {{ menuItem.expanded ? 'arrow_drop_up' : 'arrow_drop_down' }}\r\n </span>\r\n </ng-container>\r\n </button>\r\n <ng-container *ngIf=\"menuItem.showChildren && menuItem.expanded && labelsVisible\">\r\n <menu-item-list class=\"child-list\" *ngIf=\"menuItem.children && menuItem.children.length\" [items]=\"menuItem.children\"\r\n [direction]=\"direction\" [labelsVisible]=\"labelsVisible\" [activeItem]=\"activeItem\">\r\n </menu-item-list>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #menuItemLink let-menuItem=\"menuItem\">\r\n <tld-menu-item-link [ngClass.lt-md]=\"'mob-menu-item'\" [menuItem]=\"menuItem\" [direction]=\"direction\" [labelsVisible]=\"labelsVisible\"\r\n [activeItem]=\"activeItem\" [showIcons]=\"showIcons\"></tld-menu-item-link>\r\n</ng-template>", styles: [":host{display:inline-block}::ng-deep .collapsed .menu-item-list{display:flex!important;justify-content:center!important;align-items:center!important}::ng-deep .collapsed .menu-list-wrapper,::ng-deep .collapsed tld-menu-item-link{display:flex!important;justify-content:center!important}::ng-deep .collapsed .menu-item{display:flex!important;place-content:center center!important}::ng-deep .collapsed tld-menu-item-link:not(:first-child){margin-top:16px!important}:host ::ng-deep .menu-list-wrapper .menu-item{cursor:pointer;font-style:normal;color:var(--base-30);text-decoration:none;align-items:center!important;font-weight:400;background:none;border:none}:host ::ng-deep .menu-list-wrapper .menu-item:not(button):not(.active-menu-item):hover{background-color:var(--base-70)!important}:host ::ng-deep .menu-list-wrapper .menu-item.active-menu-item,:host ::ng-deep .menu-list-wrapper .menu-item.active-menu-item mat-icon,:host ::ng-deep .menu-list-wrapper .menu-item.active-menu-item:hover{font-weight:600}:host ::ng-deep .menu-list-wrapper .menu-item span{display:inline-block}:host ::ng-deep .menu-list-wrapper .menu-item .menu-item-title{display:flex;flex-direction:row;align-items:start;width:100%}:host ::ng-deep .menu-list-wrapper .menu-item .menu-item-title .title-content{display:block}:host ::ng-deep .menu-list-wrapper .menu-item .menu-item-title .title-content:before{display:block;content:attr(content);font-weight:600;height:0;overflow:hidden;visibility:hidden}:host.child-list{margin-bottom:1rem}:host.child-list .menu-item+.menu-item{margin-top:.5rem}::ng-deep .menu-tooltip{left:.625rem;font-family:Roboto;font-style:normal;font-weight:400;font-size:.75rem;line-height:1.25rem;color:var(--base-70);border-radius:.25rem;position:relative}::ng-deep .menu-tooltip:after{width:0;height:0;content:\"\";position:absolute;border-left:.5rem solid transparent;border-right:.5rem solid transparent;border-bottom:.5rem solid var(--menu-border-dark-color);left:-.75rem;top:calc(50% - .25rem);transform:rotate(270deg);overflow:initial}\n"] }]
567
561
  }], null, { direction: [{
568
562
  type: Input
569
563
  }], labelsVisible: [{
@@ -679,13 +673,42 @@ class MenuColumnsComponent {
679
673
 
680
674
  const _forTrack0 = ($index, $item) => $item.label;
681
675
  const _c0 = (a0, a1) => ({ icon: a0, label: a1 });
682
- function SideNavMenuComponent_a_14_Template(rf, ctx) { if (rf & 1) {
676
+ function SideNavMenuComponent_div_0_Template(rf, ctx) { if (rf & 1) {
683
677
  const _r2 = i0.ɵɵgetCurrentView();
684
- i0.ɵɵelementStart(0, "a", 6);
678
+ i0.ɵɵelementStart(0, "div", 14)(1, "a", 15);
679
+ i0.ɵɵpipe(2, "translate");
680
+ i0.ɵɵlistener("click", function SideNavMenuComponent_div_0_Template_a_click_1_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.logoClick($event)); });
681
+ i0.ɵɵelement(3, "img", 16);
682
+ i0.ɵɵelementStart(4, "span", 17);
683
+ i0.ɵɵtext(5);
684
+ i0.ɵɵelementEnd()();
685
+ i0.ɵɵelementStart(6, "button", 9);
686
+ i0.ɵɵpipe(7, "translate");
687
+ i0.ɵɵlistener("click", function SideNavMenuComponent_div_0_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.toggleCollapse()); });
688
+ i0.ɵɵelementStart(8, "mat-icon");
689
+ i0.ɵɵtext(9, "menu");
690
+ i0.ɵɵelementEnd()()();
691
+ } if (rf & 2) {
692
+ const ctx_r2 = i0.ɵɵnextContext();
693
+ i0.ɵɵproperty("fxHide", !ctx_r2.collapsed);
694
+ i0.ɵɵadvance();
695
+ i0.ɵɵproperty("libPlausibleEvent", ctx_r2.LOGOCLICK_PLAUSIBLE_EVENT)("href", ctx_r2.baseUrl, i0.ɵɵsanitizeUrl);
696
+ i0.ɵɵattribute("aria-label", i0.ɵɵpipeBind1(2, 8, "MENU.ARIA_LABELS.LOGO"));
697
+ i0.ɵɵadvance(2);
698
+ i0.ɵɵproperty("src", ctx_r2.menuLogoImage, i0.ɵɵsanitizeUrl);
699
+ i0.ɵɵadvance(2);
700
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.productName, " ");
701
+ i0.ɵɵadvance();
702
+ i0.ɵɵproperty("libPlausibleEvent", ctx_r2.collapsed ? ctx_r2.EXPAND_PLAUSIBLE_EVENT : ctx_r2.COLLAPSE_PLAUSIBLE_EVENT);
703
+ i0.ɵɵattribute("aria-label", i0.ɵɵpipeBind1(7, 10, "ARIA_LABELS.MENU_TOGGLER"));
704
+ } }
705
+ function SideNavMenuComponent_a_4_Template(rf, ctx) { if (rf & 1) {
706
+ const _r4 = i0.ɵɵgetCurrentView();
707
+ i0.ɵɵelementStart(0, "a", 15);
685
708
  i0.ɵɵpipe(1, "translate");
686
- i0.ɵɵlistener("click", function SideNavMenuComponent_a_14_Template_a_click_0_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.logoClick($event)); });
687
- i0.ɵɵelement(2, "img", 7);
688
- i0.ɵɵelementStart(3, "span", 8);
709
+ i0.ɵɵlistener("click", function SideNavMenuComponent_a_4_Template_a_click_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.logoClick($event)); });
710
+ i0.ɵɵelement(2, "img", 16);
711
+ i0.ɵɵelementStart(3, "span", 17);
689
712
  i0.ɵɵtext(4);
690
713
  i0.ɵɵelementEnd()();
691
714
  } if (rf & 2) {
@@ -697,144 +720,158 @@ function SideNavMenuComponent_a_14_Template(rf, ctx) { if (rf & 1) {
697
720
  i0.ɵɵadvance(2);
698
721
  i0.ɵɵtextInterpolate1(" ", ctx_r2.productName, " ");
699
722
  } }
700
- function SideNavMenuComponent_button_23_ng_container_4_mat_icon_3_Template(rf, ctx) { if (rf & 1) {
701
- i0.ɵɵelementStart(0, "mat-icon", 24);
723
+ function SideNavMenuComponent_Conditional_7_Template(rf, ctx) { if (rf & 1) {
724
+ i0.ɵɵelementStart(0, "mat-icon");
725
+ i0.ɵɵtext(1, "close");
726
+ i0.ɵɵelementEnd();
727
+ } }
728
+ function SideNavMenuComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
729
+ i0.ɵɵelementStart(0, "mat-icon");
730
+ i0.ɵɵtext(1);
731
+ i0.ɵɵelementEnd();
732
+ } if (rf & 2) {
733
+ const ctx_r2 = i0.ɵɵnextContext();
734
+ i0.ɵɵadvance();
735
+ i0.ɵɵtextInterpolate(ctx_r2.collapsed ? "keyboard_double_arrow_right" : "keyboard_double_arrow_left");
736
+ } }
737
+ function SideNavMenuComponent_button_11_ng_container_4_mat_icon_3_Template(rf, ctx) { if (rf & 1) {
738
+ i0.ɵɵelementStart(0, "mat-icon", 23);
702
739
  i0.ɵɵtext(1);
703
740
  i0.ɵɵelementEnd();
704
741
  } if (rf & 2) {
705
742
  i0.ɵɵadvance();
706
743
  i0.ɵɵtextInterpolate("keyboard_arrow_down");
707
744
  } }
708
- function SideNavMenuComponent_button_23_ng_container_4_ng_template_4_Template(rf, ctx) { if (rf & 1) {
709
- i0.ɵɵelementStart(0, "mat-icon", 24);
745
+ function SideNavMenuComponent_button_11_ng_container_4_ng_template_4_Template(rf, ctx) { if (rf & 1) {
746
+ i0.ɵɵelementStart(0, "mat-icon", 23);
710
747
  i0.ɵɵtext(1);
711
748
  i0.ɵɵelementEnd();
712
749
  } if (rf & 2) {
713
750
  i0.ɵɵadvance();
714
751
  i0.ɵɵtextInterpolate("keyboard_arrow_up");
715
752
  } }
716
- function SideNavMenuComponent_button_23_ng_container_4_Template(rf, ctx) { if (rf & 1) {
753
+ function SideNavMenuComponent_button_11_ng_container_4_Template(rf, ctx) { if (rf & 1) {
717
754
  i0.ɵɵelementContainerStart(0);
718
- i0.ɵɵelementStart(1, "span", 22);
755
+ i0.ɵɵelementStart(1, "span", 21);
719
756
  i0.ɵɵtext(2);
720
757
  i0.ɵɵelementEnd();
721
- i0.ɵɵtemplate(3, SideNavMenuComponent_button_23_ng_container_4_mat_icon_3_Template, 2, 1, "mat-icon", 23)(4, SideNavMenuComponent_button_23_ng_container_4_ng_template_4_Template, 2, 1, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor);
758
+ i0.ɵɵtemplate(3, SideNavMenuComponent_button_11_ng_container_4_mat_icon_3_Template, 2, 1, "mat-icon", 22)(4, SideNavMenuComponent_button_11_ng_container_4_ng_template_4_Template, 2, 1, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor);
722
759
  i0.ɵɵelementContainerEnd();
723
760
  } if (rf & 2) {
724
- const iconDown_r4 = i0.ɵɵreference(5);
761
+ const iconDown_r5 = i0.ɵɵreference(5);
725
762
  i0.ɵɵnextContext();
726
- const state_r5 = i0.ɵɵreference(1);
763
+ const state_r6 = i0.ɵɵreference(1);
727
764
  const ctx_r2 = i0.ɵɵnextContext();
728
765
  i0.ɵɵadvance(2);
729
766
  i0.ɵɵtextInterpolate1(" ", ctx_r2.username, " ");
730
767
  i0.ɵɵadvance();
731
- i0.ɵɵproperty("ngIf", state_r5.menuOpen)("ngIfElse", iconDown_r4);
768
+ i0.ɵɵproperty("ngIf", state_r6.menuOpen)("ngIfElse", iconDown_r5);
732
769
  } }
733
- function SideNavMenuComponent_button_23_Template(rf, ctx) { if (rf & 1) {
734
- i0.ɵɵelementStart(0, "button", 19, 2)(2, "div", 20);
770
+ function SideNavMenuComponent_button_11_Template(rf, ctx) { if (rf & 1) {
771
+ i0.ɵɵelementStart(0, "button", 18, 2)(2, "div", 19);
735
772
  i0.ɵɵtext(3);
736
773
  i0.ɵɵelementEnd();
737
- i0.ɵɵtemplate(4, SideNavMenuComponent_button_23_ng_container_4_Template, 6, 3, "ng-container", 21);
774
+ i0.ɵɵtemplate(4, SideNavMenuComponent_button_11_ng_container_4_Template, 6, 3, "ng-container", 20);
738
775
  i0.ɵɵelementEnd();
739
776
  } if (rf & 2) {
740
777
  const ctx_r2 = i0.ɵɵnextContext();
741
- const menu_r6 = i0.ɵɵreference(25);
742
- i0.ɵɵproperty("matMenuTriggerFor", menu_r6);
778
+ const menu_r7 = i0.ɵɵreference(13);
779
+ i0.ɵɵproperty("matMenuTriggerFor", menu_r7);
743
780
  i0.ɵɵadvance(3);
744
781
  i0.ɵɵtextInterpolate1(" ", ctx_r2.userInitials, " ");
745
782
  i0.ɵɵadvance();
746
783
  i0.ɵɵproperty("ngIf", !ctx_r2.collapsed);
747
784
  } }
748
- function SideNavMenuComponent_For_27_Conditional_0_Conditional_0_ng_container_1_Template(rf, ctx) { if (rf & 1) {
785
+ function SideNavMenuComponent_For_15_Conditional_0_Conditional_0_ng_container_1_Template(rf, ctx) { if (rf & 1) {
749
786
  i0.ɵɵelementContainer(0);
750
787
  } }
751
- function SideNavMenuComponent_For_27_Conditional_0_Conditional_0_Template(rf, ctx) { if (rf & 1) {
752
- i0.ɵɵelementStart(0, "a", 26);
753
- i0.ɵɵtemplate(1, SideNavMenuComponent_For_27_Conditional_0_Conditional_0_ng_container_1_Template, 1, 0, "ng-container", 28);
788
+ function SideNavMenuComponent_For_15_Conditional_0_Conditional_0_Template(rf, ctx) { if (rf & 1) {
789
+ i0.ɵɵelementStart(0, "a", 25);
790
+ i0.ɵɵtemplate(1, SideNavMenuComponent_For_15_Conditional_0_Conditional_0_ng_container_1_Template, 1, 0, "ng-container", 27);
754
791
  i0.ɵɵelementEnd();
755
792
  } if (rf & 2) {
756
- const item_r7 = i0.ɵɵnextContext(2).$implicit;
793
+ const item_r8 = i0.ɵɵnextContext(2).$implicit;
757
794
  i0.ɵɵnextContext();
758
- const profileMenuItem_r8 = i0.ɵɵreference(29);
759
- i0.ɵɵproperty("href", item_r7.link.href, i0.ɵɵsanitizeUrl);
795
+ const profileMenuItem_r9 = i0.ɵɵreference(17);
796
+ i0.ɵɵproperty("href", item_r8.link.href, i0.ɵɵsanitizeUrl);
760
797
  i0.ɵɵadvance();
761
- i0.ɵɵproperty("ngTemplateOutlet", profileMenuItem_r8)("ngTemplateOutletContext", i0.ɵɵpureFunction2(3, _c0, item_r7.icon, item_r7.label));
798
+ i0.ɵɵproperty("ngTemplateOutlet", profileMenuItem_r9)("ngTemplateOutletContext", i0.ɵɵpureFunction2(3, _c0, item_r8.icon, item_r8.label));
762
799
  } }
763
- function SideNavMenuComponent_For_27_Conditional_0_Conditional_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
800
+ function SideNavMenuComponent_For_15_Conditional_0_Conditional_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
764
801
  i0.ɵɵelementContainer(0);
765
802
  } }
766
- function SideNavMenuComponent_For_27_Conditional_0_Conditional_1_Template(rf, ctx) { if (rf & 1) {
767
- i0.ɵɵelementStart(0, "a", 27);
768
- i0.ɵɵtemplate(1, SideNavMenuComponent_For_27_Conditional_0_Conditional_1_ng_container_1_Template, 1, 0, "ng-container", 28);
803
+ function SideNavMenuComponent_For_15_Conditional_0_Conditional_1_Template(rf, ctx) { if (rf & 1) {
804
+ i0.ɵɵelementStart(0, "a", 26);
805
+ i0.ɵɵtemplate(1, SideNavMenuComponent_For_15_Conditional_0_Conditional_1_ng_container_1_Template, 1, 0, "ng-container", 27);
769
806
  i0.ɵɵelementEnd();
770
807
  } if (rf & 2) {
771
- const item_r7 = i0.ɵɵnextContext(2).$implicit;
808
+ const item_r8 = i0.ɵɵnextContext(2).$implicit;
772
809
  i0.ɵɵnextContext();
773
- const profileMenuItem_r8 = i0.ɵɵreference(29);
774
- i0.ɵɵproperty("routerLink", item_r7.link.href);
810
+ const profileMenuItem_r9 = i0.ɵɵreference(17);
811
+ i0.ɵɵproperty("routerLink", item_r8.link.href);
775
812
  i0.ɵɵadvance();
776
- i0.ɵɵproperty("ngTemplateOutlet", profileMenuItem_r8)("ngTemplateOutletContext", i0.ɵɵpureFunction2(3, _c0, item_r7.icon, item_r7.label));
813
+ i0.ɵɵproperty("ngTemplateOutlet", profileMenuItem_r9)("ngTemplateOutletContext", i0.ɵɵpureFunction2(3, _c0, item_r8.icon, item_r8.label));
777
814
  } }
778
- function SideNavMenuComponent_For_27_Conditional_0_Template(rf, ctx) { if (rf & 1) {
779
- i0.ɵɵtemplate(0, SideNavMenuComponent_For_27_Conditional_0_Conditional_0_Template, 2, 6, "a", 26)(1, SideNavMenuComponent_For_27_Conditional_0_Conditional_1_Template, 2, 6, "a", 27);
815
+ function SideNavMenuComponent_For_15_Conditional_0_Template(rf, ctx) { if (rf & 1) {
816
+ i0.ɵɵtemplate(0, SideNavMenuComponent_For_15_Conditional_0_Conditional_0_Template, 2, 6, "a", 25)(1, SideNavMenuComponent_For_15_Conditional_0_Conditional_1_Template, 2, 6, "a", 26);
780
817
  } if (rf & 2) {
781
- const item_r7 = i0.ɵɵnextContext().$implicit;
782
- i0.ɵɵconditional(item_r7.link.isExternal ? 0 : 1);
818
+ const item_r8 = i0.ɵɵnextContext().$implicit;
819
+ i0.ɵɵconditional(item_r8.link.isExternal ? 0 : 1);
783
820
  } }
784
- function SideNavMenuComponent_For_27_Conditional_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
821
+ function SideNavMenuComponent_For_15_Conditional_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
785
822
  i0.ɵɵelementContainer(0);
786
823
  } }
787
- function SideNavMenuComponent_For_27_Conditional_1_Template(rf, ctx) { if (rf & 1) {
788
- const _r9 = i0.ɵɵgetCurrentView();
789
- i0.ɵɵelementStart(0, "button", 29);
790
- i0.ɵɵlistener("click", function SideNavMenuComponent_For_27_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r9); const item_r7 = i0.ɵɵnextContext().$implicit; return i0.ɵɵresetView(item_r7.button == null ? null : item_r7.button.callback()); });
791
- i0.ɵɵtemplate(1, SideNavMenuComponent_For_27_Conditional_1_ng_container_1_Template, 1, 0, "ng-container", 28);
824
+ function SideNavMenuComponent_For_15_Conditional_1_Template(rf, ctx) { if (rf & 1) {
825
+ const _r10 = i0.ɵɵgetCurrentView();
826
+ i0.ɵɵelementStart(0, "button", 28);
827
+ i0.ɵɵlistener("click", function SideNavMenuComponent_For_15_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r10); const item_r8 = i0.ɵɵnextContext().$implicit; return i0.ɵɵresetView(item_r8.button == null ? null : item_r8.button.callback()); });
828
+ i0.ɵɵtemplate(1, SideNavMenuComponent_For_15_Conditional_1_ng_container_1_Template, 1, 0, "ng-container", 27);
792
829
  i0.ɵɵelementEnd();
793
830
  } if (rf & 2) {
794
- const item_r7 = i0.ɵɵnextContext().$implicit;
831
+ const item_r8 = i0.ɵɵnextContext().$implicit;
795
832
  i0.ɵɵnextContext();
796
- const profileMenuItem_r8 = i0.ɵɵreference(29);
833
+ const profileMenuItem_r9 = i0.ɵɵreference(17);
797
834
  i0.ɵɵadvance();
798
- i0.ɵɵproperty("ngTemplateOutlet", profileMenuItem_r8)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c0, item_r7.icon, item_r7.label));
835
+ i0.ɵɵproperty("ngTemplateOutlet", profileMenuItem_r9)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c0, item_r8.icon, item_r8.label));
799
836
  } }
800
- function SideNavMenuComponent_For_27_Template(rf, ctx) { if (rf & 1) {
801
- i0.ɵɵtemplate(0, SideNavMenuComponent_For_27_Conditional_0_Template, 2, 1)(1, SideNavMenuComponent_For_27_Conditional_1_Template, 2, 5, "button", 25);
837
+ function SideNavMenuComponent_For_15_Template(rf, ctx) { if (rf & 1) {
838
+ i0.ɵɵtemplate(0, SideNavMenuComponent_For_15_Conditional_0_Template, 2, 1)(1, SideNavMenuComponent_For_15_Conditional_1_Template, 2, 5, "button", 24);
802
839
  } if (rf & 2) {
803
- const item_r7 = ctx.$implicit;
804
- i0.ɵɵconditional(item_r7.link ? 0 : 1);
840
+ const item_r8 = ctx.$implicit;
841
+ i0.ɵɵconditional(item_r8.link ? 0 : 1);
805
842
  } }
806
- function SideNavMenuComponent_ng_template_28_Conditional_0_Conditional_0_Template(rf, ctx) { if (rf & 1) {
807
- i0.ɵɵelementStart(0, "span", 32);
843
+ function SideNavMenuComponent_ng_template_16_Conditional_0_Conditional_0_Template(rf, ctx) { if (rf & 1) {
844
+ i0.ɵɵelementStart(0, "span", 31);
808
845
  i0.ɵɵtext(1);
809
846
  i0.ɵɵelementEnd();
810
847
  } if (rf & 2) {
811
- const icon_r10 = i0.ɵɵnextContext(2).icon;
812
- i0.ɵɵclassProp("material-icons-outlined", icon_r10 == null ? null : icon_r10.isOutlined);
848
+ const icon_r11 = i0.ɵɵnextContext(2).icon;
849
+ i0.ɵɵclassProp("material-icons-outlined", icon_r11 == null ? null : icon_r11.isOutlined);
813
850
  i0.ɵɵadvance();
814
- i0.ɵɵtextInterpolate1(" ", icon_r10 == null ? null : icon_r10.name, " ");
851
+ i0.ɵɵtextInterpolate1(" ", icon_r11 == null ? null : icon_r11.name, " ");
815
852
  } }
816
- function SideNavMenuComponent_ng_template_28_Conditional_0_Conditional_1_Template(rf, ctx) { if (rf & 1) {
817
- i0.ɵɵelement(0, "mat-icon", 31);
853
+ function SideNavMenuComponent_ng_template_16_Conditional_0_Conditional_1_Template(rf, ctx) { if (rf & 1) {
854
+ i0.ɵɵelement(0, "mat-icon", 30);
818
855
  } if (rf & 2) {
819
- const icon_r10 = i0.ɵɵnextContext(2).icon;
820
- i0.ɵɵproperty("svgIcon", icon_r10 == null ? null : icon_r10.name);
856
+ const icon_r11 = i0.ɵɵnextContext(2).icon;
857
+ i0.ɵɵproperty("svgIcon", icon_r11 == null ? null : icon_r11.name);
821
858
  } }
822
- function SideNavMenuComponent_ng_template_28_Conditional_0_Template(rf, ctx) { if (rf & 1) {
823
- i0.ɵɵtemplate(0, SideNavMenuComponent_ng_template_28_Conditional_0_Conditional_0_Template, 2, 3, "span", 30)(1, SideNavMenuComponent_ng_template_28_Conditional_0_Conditional_1_Template, 1, 1, "mat-icon", 31);
859
+ function SideNavMenuComponent_ng_template_16_Conditional_0_Template(rf, ctx) { if (rf & 1) {
860
+ i0.ɵɵtemplate(0, SideNavMenuComponent_ng_template_16_Conditional_0_Conditional_0_Template, 2, 3, "span", 29)(1, SideNavMenuComponent_ng_template_16_Conditional_0_Conditional_1_Template, 1, 1, "mat-icon", 30);
824
861
  } if (rf & 2) {
825
- const icon_r10 = i0.ɵɵnextContext().icon;
826
- i0.ɵɵconditional(!(icon_r10 == null ? null : icon_r10.isCustom) ? 0 : 1);
862
+ const icon_r11 = i0.ɵɵnextContext().icon;
863
+ i0.ɵɵconditional(!(icon_r11 == null ? null : icon_r11.isCustom) ? 0 : 1);
827
864
  } }
828
- function SideNavMenuComponent_ng_template_28_Template(rf, ctx) { if (rf & 1) {
829
- i0.ɵɵtemplate(0, SideNavMenuComponent_ng_template_28_Conditional_0_Template, 2, 1);
865
+ function SideNavMenuComponent_ng_template_16_Template(rf, ctx) { if (rf & 1) {
866
+ i0.ɵɵtemplate(0, SideNavMenuComponent_ng_template_16_Conditional_0_Template, 2, 1);
830
867
  i0.ɵɵtext(1);
831
868
  i0.ɵɵpipe(2, "translate");
832
869
  } if (rf & 2) {
833
- const icon_r10 = ctx.icon;
834
- const label_r11 = ctx.label;
835
- i0.ɵɵconditional(icon_r10 ? 0 : -1);
870
+ const icon_r11 = ctx.icon;
871
+ const label_r12 = ctx.label;
872
+ i0.ɵɵconditional(icon_r11 ? 0 : -1);
836
873
  i0.ɵɵadvance();
837
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, label_r11), "\n");
874
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, label_r12), "\n");
838
875
  } }
839
876
  class SideNavMenuComponent extends NavBaseComponent {
840
877
  #username;
@@ -851,7 +888,7 @@ class SideNavMenuComponent extends NavBaseComponent {
851
888
  get sideNavWidth() {
852
889
  return this.collapsed ? this.menuSettings.collapsedWidth : this.menuSettings.expandedWidth;
853
890
  }
854
- constructor(strapiLinkService, domService, menuItems) {
891
+ constructor(strapiLinkService, domService, menuItems, menuSharedConfig) {
855
892
  super(menuItems);
856
893
  this.strapiLinkService = strapiLinkService;
857
894
  this.domService = domService;
@@ -864,6 +901,7 @@ class SideNavMenuComponent extends NavBaseComponent {
864
901
  disableStrapi: false
865
902
  };
866
903
  this.collapsed = false;
904
+ this.isMobile = ResolutionHelper.isMobileRes();
867
905
  this.COLLAPSED_LOCAL_STORAGE_KEY = "TLD_MENU_SIDE_NAV_COLLAPSED";
868
906
  //#region Plausible event variables for collapse button
869
907
  this.COLLAPSE_PLAUSIBLE_EVENT_ID = "collapseMenu";
@@ -881,7 +919,7 @@ class SideNavMenuComponent extends NavBaseComponent {
881
919
  eventId: this.COLLAPSE_PLAUSIBLE_EVENT_ID,
882
920
  properties: [{ key: this.COLLAPSE_PLAUSIBLE_ACTION_KEY, value: "collapse" }]
883
921
  };
884
- this.baseUrl = menuItems.menuSharedConfig.baseUrl || '';
922
+ this.baseUrl = menuSharedConfig.baseUrl || '';
885
923
  }
886
924
  ngOnInit() {
887
925
  super.ngOnInit();
@@ -899,7 +937,7 @@ class SideNavMenuComponent extends NavBaseComponent {
899
937
  if (!this.domService.localStorage) {
900
938
  return;
901
939
  }
902
- this.collapsed = (this.domService.localStorage.getItem(this.COLLAPSED_LOCAL_STORAGE_KEY) == 'true' || ResolutionHelper.isMobileRes()) ? true : false;
940
+ this.collapsed = (this.domService.localStorage.getItem(this.COLLAPSED_LOCAL_STORAGE_KEY) == 'true' || this.isMobile) ? true : false;
903
941
  }
904
942
  setColapsedFromLocalStorage() {
905
943
  if (!this.domService.localStorage) {
@@ -921,56 +959,29 @@ class SideNavMenuComponent extends NavBaseComponent {
921
959
  // If there are more than one word, use the first letter of the first two names
922
960
  this.userInitials = splittedUsername[0][0] + splittedUsername[1][0];
923
961
  }
924
- static { this.ɵfac = function SideNavMenuComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SideNavMenuComponent)(i0.ɵɵdirectiveInject(i1.StrapiLinkService), i0.ɵɵdirectiveInject(i2.DOMService), i0.ɵɵdirectiveInject(MenuItemsService)); }; }
925
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SideNavMenuComponent, selectors: [["lib-side-nav-menu"]], inputs: { username: "username", menuSettings: "menuSettings", productName: "productName" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 30, vars: 28, consts: [["menu", "matMenu"], ["profileMenuItem", ""], ["state", "matMenuTrigger"], ["iconDown", ""], ["fxHide.gt-xs", ""], [1, "mobile-header", 3, "fxHide"], ["fxFlex", "3.125em", "fxLayoutAlign", "start center", 3, "click", "libPlausibleEvent", "href"], ["height", "40", "width", "40", "alt", "logo", 1, "menu-logo", 3, "src"], [1, "menu-product-name"], ["mat-icon-button", "", 1, "toggler", 3, "click", "libPlausibleEvent"], ["fxLayout", "column", 1, "menu-container", 3, "ngClass.lt-sm"], ["fxLayout", "column", "fxFlexFill", "", 1, "content"], ["fxLayout", "row", 1, "menu-container-header", 3, "fxLayoutAlign"], ["fxFlex", "3.125em", "fxLayoutAlign", "start center", 3, "libPlausibleEvent", "href", "click", 4, "ngIf"], ["fxHide.lt-sm", ""], ["fxLayout", "column", "fxFlex", "", 1, "menu-wrapper"], ["role", "navigation", "fxFlex", "", 3, "toggleCollapseEvent", "direction", "isOpen", "active"], ["class", "profile-wrapper", 3, "matMenuTriggerFor", 4, "ngIf"], [1, "profile-menu"], [1, "profile-wrapper", 3, "matMenuTriggerFor"], [1, "profile-icon"], [4, "ngIf"], [1, "profile-name"], ["class", "spin", 4, "ngIf", "ngIfElse"], [1, "spin"], ["mat-menu-item", "", 1, "profile-option"], ["target", "_blank", 1, "mat-mdc-menu-item", 3, "href"], [1, "mat-mdc-menu-item", 3, "routerLink"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], ["mat-menu-item", "", 1, "profile-option", 3, "click"], [1, "material-icons", "profile-option-icon", 3, "material-icons-outlined"], [1, "profile-option-icon", 3, "svgIcon"], [1, "material-icons", "profile-option-icon"]], template: function SideNavMenuComponent_Template(rf, ctx) { if (rf & 1) {
962
+ static { this.ɵfac = function SideNavMenuComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SideNavMenuComponent)(i0.ɵɵdirectiveInject(i1.StrapiLinkService), i0.ɵɵdirectiveInject(i2.DOMService), i0.ɵɵdirectiveInject(MenuItemsService), i0.ɵɵdirectiveInject(MENU_SHARED_CONFIG, 8)); }; }
963
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SideNavMenuComponent, selectors: [["lib-side-nav-menu"]], inputs: { username: "username", menuSettings: "menuSettings", productName: "productName" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 18, vars: 17, consts: [["menu", "matMenu"], ["profileMenuItem", ""], ["state", "matMenuTrigger"], ["iconDown", ""], ["class", "mobile-header", 3, "fxHide", 4, "ngIf"], ["fxLayout", "column", 1, "menu-container", 3, "ngClass.lt-sm"], ["fxLayout", "column", "fxFlexFill", "", 1, "content"], ["fxLayout", "row", 1, "menu-container-header", 3, "fxLayoutAlign"], ["fxFlex", "3.125em", "fxLayoutAlign", "start center", 3, "libPlausibleEvent", "href", "click", 4, "ngIf"], ["mat-icon-button", "", 1, "toggler", 3, "click", "libPlausibleEvent"], ["fxLayout", "column", "fxFlex", "", 1, "menu-wrapper"], ["role", "navigation", "fxFlex", "", 3, "toggleCollapseEvent", "direction", "isOpen", "active"], ["class", "profile-wrapper", 3, "matMenuTriggerFor", 4, "ngIf"], [1, "profile-menu"], [1, "mobile-header", 3, "fxHide"], ["fxFlex", "3.125em", "fxLayoutAlign", "start center", 3, "click", "libPlausibleEvent", "href"], ["height", "40", "width", "40", "alt", "logo", 1, "menu-logo", 3, "src"], [1, "menu-product-name"], [1, "profile-wrapper", 3, "matMenuTriggerFor"], [1, "profile-icon"], [4, "ngIf"], [1, "profile-name"], ["class", "spin", 4, "ngIf", "ngIfElse"], [1, "spin"], ["mat-menu-item", "", 1, "profile-option"], ["target", "_blank", 1, "mat-mdc-menu-item", 3, "href"], [1, "mat-mdc-menu-item", 3, "routerLink"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], ["mat-menu-item", "", 1, "profile-option", 3, "click"], [1, "material-icons", "profile-option-icon", 3, "material-icons-outlined"], [1, "profile-option-icon", 3, "svgIcon"], [1, "material-icons", "profile-option-icon"]], template: function SideNavMenuComponent_Template(rf, ctx) { if (rf & 1) {
926
964
  const _r1 = i0.ɵɵgetCurrentView();
927
- i0.ɵɵelementStart(0, "div", 4)(1, "div", 5)(2, "a", 6);
928
- i0.ɵɵpipe(3, "translate");
929
- i0.ɵɵlistener("click", function SideNavMenuComponent_Template_a_click_2_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.logoClick($event)); });
930
- i0.ɵɵelement(4, "img", 7);
931
- i0.ɵɵelementStart(5, "span", 8);
932
- i0.ɵɵtext(6);
965
+ i0.ɵɵtemplate(0, SideNavMenuComponent_div_0_Template, 10, 12, "div", 4);
966
+ i0.ɵɵelementStart(1, "div", 5)(2, "div", 6)(3, "div", 7);
967
+ i0.ɵɵtemplate(4, SideNavMenuComponent_a_4_Template, 5, 7, "a", 8);
968
+ i0.ɵɵelementStart(5, "button", 9);
969
+ i0.ɵɵpipe(6, "translate");
970
+ i0.ɵɵlistener("click", function SideNavMenuComponent_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.toggleCollapse()); });
971
+ i0.ɵɵtemplate(7, SideNavMenuComponent_Conditional_7_Template, 2, 0, "mat-icon")(8, SideNavMenuComponent_Conditional_8_Template, 2, 1, "mat-icon");
933
972
  i0.ɵɵelementEnd()();
934
- i0.ɵɵelementStart(7, "button", 9);
935
- i0.ɵɵpipe(8, "translate");
936
- i0.ɵɵlistener("click", function SideNavMenuComponent_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.toggleCollapse()); });
937
- i0.ɵɵelementStart(9, "mat-icon");
938
- i0.ɵɵtext(10, "menu");
939
- i0.ɵɵelementEnd()()()();
940
- i0.ɵɵelementStart(11, "div", 10)(12, "div", 11)(13, "div", 12);
941
- i0.ɵɵtemplate(14, SideNavMenuComponent_a_14_Template, 5, 7, "a", 13);
942
- i0.ɵɵelementStart(15, "button", 9);
943
- i0.ɵɵpipe(16, "translate");
944
- i0.ɵɵlistener("click", function SideNavMenuComponent_Template_button_click_15_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.toggleCollapse()); });
945
- i0.ɵɵelementStart(17, "mat-icon", 4);
946
- i0.ɵɵtext(18, "close");
947
- i0.ɵɵelementEnd();
948
- i0.ɵɵelementStart(19, "mat-icon", 14);
949
- i0.ɵɵtext(20);
950
- i0.ɵɵelementEnd()()();
951
- i0.ɵɵelementStart(21, "div", 15)(22, "menu-columns", 16);
952
- i0.ɵɵlistener("toggleCollapseEvent", function SideNavMenuComponent_Template_menu_columns_toggleCollapseEvent_22_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.toggleCollapse()); });
973
+ i0.ɵɵelementStart(9, "div", 10)(10, "menu-columns", 11);
974
+ i0.ɵɵlistener("toggleCollapseEvent", function SideNavMenuComponent_Template_menu_columns_toggleCollapseEvent_10_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.toggleCollapse()); });
953
975
  i0.ɵɵelementEnd()();
954
- i0.ɵɵtemplate(23, SideNavMenuComponent_button_23_Template, 5, 3, "button", 17);
955
- i0.ɵɵelementStart(24, "mat-menu", 18, 0);
956
- i0.ɵɵrepeaterCreate(26, SideNavMenuComponent_For_27_Template, 2, 1, null, null, _forTrack0);
976
+ i0.ɵɵtemplate(11, SideNavMenuComponent_button_11_Template, 5, 3, "button", 12);
977
+ i0.ɵɵelementStart(12, "mat-menu", 13, 0);
978
+ i0.ɵɵrepeaterCreate(14, SideNavMenuComponent_For_15_Template, 2, 1, null, null, _forTrack0);
957
979
  i0.ɵɵelementEnd()();
958
- i0.ɵɵtemplate(28, SideNavMenuComponent_ng_template_28_Template, 3, 4, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
980
+ i0.ɵɵtemplate(16, SideNavMenuComponent_ng_template_16_Template, 3, 4, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
959
981
  i0.ɵɵelementEnd();
960
982
  } if (rf & 2) {
983
+ i0.ɵɵproperty("ngIf", ctx.isMobile);
961
984
  i0.ɵɵadvance();
962
- i0.ɵɵproperty("fxHide", !ctx.collapsed);
963
- i0.ɵɵadvance();
964
- i0.ɵɵproperty("libPlausibleEvent", ctx.LOGOCLICK_PLAUSIBLE_EVENT)("href", ctx.baseUrl, i0.ɵɵsanitizeUrl);
965
- i0.ɵɵattribute("aria-label", i0.ɵɵpipeBind1(3, 22, "MENU.ARIA_LABELS.LOGO"));
966
- i0.ɵɵadvance(2);
967
- i0.ɵɵproperty("src", ctx.menuLogoImage, i0.ɵɵsanitizeUrl);
968
- i0.ɵɵadvance(2);
969
- i0.ɵɵtextInterpolate1(" ", ctx.productName, " ");
970
- i0.ɵɵadvance();
971
- i0.ɵɵproperty("libPlausibleEvent", ctx.collapsed ? ctx.EXPAND_PLAUSIBLE_EVENT : ctx.COLLAPSE_PLAUSIBLE_EVENT);
972
- i0.ɵɵattribute("aria-label", i0.ɵɵpipeBind1(8, 24, "ARIA_LABELS.MENU_TOGGLER"));
973
- i0.ɵɵadvance(4);
974
985
  i0.ɵɵstyleProp("width", ctx.sideNavWidth);
975
986
  i0.ɵɵclassProp("collapsed", ctx.collapsed);
976
987
  i0.ɵɵproperty("ngClass.lt-sm", "mobile");
@@ -980,10 +991,10 @@ class SideNavMenuComponent extends NavBaseComponent {
980
991
  i0.ɵɵproperty("ngIf", !ctx.collapsed);
981
992
  i0.ɵɵadvance();
982
993
  i0.ɵɵproperty("libPlausibleEvent", ctx.collapsed ? ctx.EXPAND_PLAUSIBLE_EVENT : ctx.COLLAPSE_PLAUSIBLE_EVENT);
983
- i0.ɵɵattribute("aria-label", i0.ɵɵpipeBind1(16, 26, "ARIA_LABELS.MENU_TOGGLER"));
984
- i0.ɵɵadvance(5);
985
- i0.ɵɵtextInterpolate(ctx.collapsed ? "keyboard_double_arrow_right" : "keyboard_double_arrow_left");
994
+ i0.ɵɵattribute("aria-label", i0.ɵɵpipeBind1(6, 15, "ARIA_LABELS.MENU_TOGGLER"));
986
995
  i0.ɵɵadvance(2);
996
+ i0.ɵɵconditional(ctx.isMobile ? 7 : 8);
997
+ i0.ɵɵadvance(3);
987
998
  i0.ɵɵproperty("direction", ctx.direction)("isOpen", !ctx.collapsed)("active", ctx.active);
988
999
  i0.ɵɵadvance();
989
1000
  i0.ɵɵproperty("ngIf", ctx.userInitials);
@@ -993,15 +1004,20 @@ class SideNavMenuComponent extends NavBaseComponent {
993
1004
  }
994
1005
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SideNavMenuComponent, [{
995
1006
  type: Component,
996
- args: [{ selector: 'lib-side-nav-menu', template: "<div fxHide.gt-xs>\r\n <div [fxHide]=\"!collapsed\" class=\"mobile-header\">\r\n <a [libPlausibleEvent]=\"LOGOCLICK_PLAUSIBLE_EVENT\" fxFlex=\"3.125em\" [href]=\"baseUrl\"\r\n [attr.aria-label]=\"'MENU.ARIA_LABELS.LOGO' | translate\" (click)=\"logoClick($event)\" fxLayoutAlign=\"start center\"\r\n >\r\n <img height=\"40\" width=\"40\" class=\"menu-logo\" [src]=\"menuLogoImage\" alt=\"logo\" />\r\n <span class=\"menu-product-name\">\r\n {{ productName }}\r\n </span>\r\n </a>\r\n \r\n <button\r\n mat-icon-button\r\n class=\"toggler\"\r\n [attr.aria-label]=\"'ARIA_LABELS.MENU_TOGGLER' | translate\"\r\n [libPlausibleEvent]=\"collapsed ? EXPAND_PLAUSIBLE_EVENT : COLLAPSE_PLAUSIBLE_EVENT\"\r\n (click)=\"toggleCollapse()\"\r\n >\r\n <mat-icon>menu</mat-icon>\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<div [ngClass.lt-sm]=\"'mobile'\" class=\"menu-container\" [style.width]=\"sideNavWidth\" fxLayout=\"column\" [class.collapsed]=\"collapsed\">\r\n <div class=\"content\" fxLayout=\"column\" fxFlexFill>\r\n <div class=\"menu-container-header\" fxLayout=\"row\" [fxLayoutAlign]=\"collapsed ? 'center center' : 'space-between center'\">\r\n <a *ngIf=\"!collapsed\" [libPlausibleEvent]=\"LOGOCLICK_PLAUSIBLE_EVENT\" fxFlex=\"3.125em\" [href]=\"baseUrl\"\r\n [attr.aria-label]=\"'MENU.ARIA_LABELS.LOGO' | translate\" (click)=\"logoClick($event)\" fxLayoutAlign=\"start center\"\r\n >\r\n <img height=\"40\" width=\"40\" class=\"menu-logo\" [src]=\"menuLogoImage\" alt=\"logo\" />\r\n <span class=\"menu-product-name\">\r\n {{ productName }}\r\n </span>\r\n </a>\r\n \r\n <button\r\n mat-icon-button\r\n class=\"toggler\"\r\n [attr.aria-label]=\"'ARIA_LABELS.MENU_TOGGLER' | translate\"\r\n [libPlausibleEvent]=\"collapsed ? EXPAND_PLAUSIBLE_EVENT : COLLAPSE_PLAUSIBLE_EVENT\"\r\n (click)=\"toggleCollapse()\"\r\n >\r\n <mat-icon fxHide.gt-xs>close</mat-icon>\r\n <mat-icon fxHide.lt-sm>{{ collapsed ? 'keyboard_double_arrow_right' : 'keyboard_double_arrow_left' }}</mat-icon>\r\n </button>\r\n </div>\r\n \r\n <div class=\"menu-wrapper\" fxLayout=\"column\" fxFlex>\r\n <menu-columns (toggleCollapseEvent)=\"toggleCollapse()\" [direction]=\"direction\" role=\"navigation\" fxFlex [isOpen]=\"!collapsed\"\r\n [active]=\"active\"></menu-columns>\r\n </div>\r\n\r\n\r\n <button *ngIf=\"userInitials\" #state=\"matMenuTrigger\" [matMenuTriggerFor]=\"menu\" class=\"profile-wrapper\">\r\n <div class=\"profile-icon\">\r\n {{userInitials}}\r\n </div>\r\n\r\n <ng-container *ngIf=\"!collapsed\">\r\n <span class=\"profile-name\">\r\n {{ username }}\r\n </span>\r\n \r\n <mat-icon *ngIf=\"state.menuOpen; else iconDown\" class=\"spin\">{{\"keyboard_arrow_down\"}}</mat-icon>\r\n\r\n <ng-template #iconDown>\r\n <mat-icon class=\"spin\">{{\"keyboard_arrow_up\" }}</mat-icon>\r\n </ng-template>\r\n </ng-container>\r\n </button>\r\n\r\n <mat-menu #menu=\"matMenu\" class=\"profile-menu\">\r\n @for (item of menuSettings.userOptions; track item.label) {\r\n @if (item.link) {\r\n @if (item.link.isExternal) {\r\n <a class=\"mat-mdc-menu-item\" [href]=\"item.link.href\" target=\"_blank\">\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, label: item.label }\">\r\n </ng-container>\r\n </a>\r\n } @else {\r\n <a class=\"mat-mdc-menu-item\" [routerLink]=\"item.link.href\">\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, label: item.label }\">\r\n </ng-container>\r\n </a>\r\n }\r\n } @else {\r\n <button\r\n mat-menu-item\r\n class=\"profile-option\"\r\n (click)=\"item.button?.callback()\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, label: item.label }\">\r\n </ng-container>\r\n </button>\r\n }\r\n }\r\n </mat-menu>\r\n </div>\r\n\r\n<ng-template #profileMenuItem let-icon=\"icon\" let-label=\"label\">\r\n @if (icon) {\r\n @if (!icon?.isCustom) {\r\n <span class=\"material-icons profile-option-icon\" [class.material-icons-outlined]=\"icon?.isOutlined\">\r\n {{icon?.name}}\r\n </span>\r\n } @else {\r\n <mat-icon class=\"profile-option-icon\" [svgIcon]=\"icon?.name\"></mat-icon>\r\n }\r\n }\r\n {{ label | translate }}\r\n</ng-template>", styles: ["a{text-decoration:none}.mobile-header{display:flex;justify-content:space-between;padding:23px 27px;background-color:#fcfcfc;border:1px solid var(--base-70)}.mobile.menu-container.collapsed{display:none!important}.mobile.menu-container:not(.collapsed){display:block!important;position:absolute;min-width:100vw;min-height:100vh;z-index:1000}.mobile .profile-wrapper{position:relative}.mobile .profile-wrapper mat-icon{position:absolute!important;right:0}.menu-product-name{white-space:nowrap;margin-left:12px;font-weight:600;color:var(--primary-accent-darker)}.menu-container{max-height:100vh;white-space:nowrap;height:100%;transition:width .2s ease;min-height:100vh;overflow:auto;background:var(--base-100);border-right:2px solid var(--base-95)}.menu-container .menu-container-header{margin:24px 0;max-height:40px}.menu-container.collapsed .menu-container-header{margin:24px 0 32px!important}.menu-container .content:not(.collapsed){overflow-x:hidden;padding:0 12px}.menu-container .content:not(.collapsed) .menu-logo{margin-left:16px;max-width:100%}.menu-container .divider{width:100%}.menu-container .profile-wrapper{background:none;color:var(--base-30);display:flex;align-items:center;justify-content:start;margin:32px 16px}.menu-container .profile-icon{display:flex;justify-content:center;align-items:center;min-width:40px;height:40px;border-radius:100%;color:var(--base-0);background-color:var(--base-70);font-size:16px;font-weight:600}.menu-container .profile-name{max-width:145px;overflow:hidden;margin-left:12px}.profile-option-icon{vertical-align:middle;margin:0 5px 5px 0}:host ::ng-deep .collapsed .profile-wrapper{left:8px!important}:host ::ng-deep .menu-item{display:flex;padding:16px!important;border-radius:4px!important}:host ::ng-deep .child-list .menu-item{padding:8px 46px!important}:host ::ng-deep .collapsed .menu-item{padding:0!important;width:40px;height:40px;border-radius:50%!important}:host ::ng-deep .active-menu-item{background-color:var(--base-95)!important}:host ::ng-deep .menu-item-title{margin-left:12px}tld-menu-icon{margin-right:10px}.spin{animation:spinArrow .3s forwards}:host::ng-deep button.collapse-btn .mat-mdc-button-persistent-ripple,:host::ng-deep button.toggler .mat-mdc-button-persistent-ripple{display:none}:host ::ng-deep .mobile .child-list .menu-item{padding:8px 54px!important}::ng-deep .cdk-overlay-container .profile-menu{margin:10px 0!important}::ng-deep .mat-mdc-menu-item .mat-icon{margin-right:5px!important}::ng-deep .collapsed .profile-wrapper{justify-content:center!important}::ng-deep .profile-menu a{font-weight:400!important;display:flex;align-items:center;gap:5px}::ng-deep .profile-menu a:hover{color:var(--mat-menu-item-label-text-color, var(--mat-app-on-surface))!important;text-decoration:inherit}@keyframes spinArrow{to{transform:rotate(180deg)}}\n"] }]
997
- }], () => [{ type: i1.StrapiLinkService }, { type: i2.DOMService }, { type: MenuItemsService }], { username: [{
1007
+ args: [{ selector: 'lib-side-nav-menu', template: "<div *ngIf=\"isMobile\" [fxHide]=\"!collapsed\" class=\"mobile-header\">\r\n <a [libPlausibleEvent]=\"LOGOCLICK_PLAUSIBLE_EVENT\" fxFlex=\"3.125em\" [href]=\"baseUrl\"\r\n [attr.aria-label]=\"'MENU.ARIA_LABELS.LOGO' | translate\" (click)=\"logoClick($event)\" fxLayoutAlign=\"start center\"\r\n >\r\n <img height=\"40\" width=\"40\" class=\"menu-logo\" [src]=\"menuLogoImage\" alt=\"logo\" />\r\n <span class=\"menu-product-name\">\r\n {{ productName }}\r\n </span>\r\n </a>\r\n \r\n <button\r\n mat-icon-button\r\n class=\"toggler\"\r\n [attr.aria-label]=\"'ARIA_LABELS.MENU_TOGGLER' | translate\"\r\n [libPlausibleEvent]=\"collapsed ? EXPAND_PLAUSIBLE_EVENT : COLLAPSE_PLAUSIBLE_EVENT\"\r\n (click)=\"toggleCollapse()\"\r\n >\r\n <mat-icon>menu</mat-icon>\r\n </button>\r\n</div>\r\n\r\n<div [ngClass.lt-sm]=\"'mobile'\" class=\"menu-container\" [style.width]=\"sideNavWidth\" fxLayout=\"column\" [class.collapsed]=\"collapsed\">\r\n <div class=\"content\" fxLayout=\"column\" fxFlexFill>\r\n <div class=\"menu-container-header\" fxLayout=\"row\" [fxLayoutAlign]=\"collapsed ? 'center center' : 'space-between center'\">\r\n <a *ngIf=\"!collapsed\" [libPlausibleEvent]=\"LOGOCLICK_PLAUSIBLE_EVENT\" fxFlex=\"3.125em\" [href]=\"baseUrl\"\r\n [attr.aria-label]=\"'MENU.ARIA_LABELS.LOGO' | translate\" (click)=\"logoClick($event)\" fxLayoutAlign=\"start center\"\r\n >\r\n <img height=\"40\" width=\"40\" class=\"menu-logo\" [src]=\"menuLogoImage\" alt=\"logo\" />\r\n <span class=\"menu-product-name\">\r\n {{ productName }}\r\n </span>\r\n </a>\r\n \r\n <button\r\n mat-icon-button\r\n class=\"toggler\"\r\n [attr.aria-label]=\"'ARIA_LABELS.MENU_TOGGLER' | translate\"\r\n [libPlausibleEvent]=\"collapsed ? EXPAND_PLAUSIBLE_EVENT : COLLAPSE_PLAUSIBLE_EVENT\"\r\n (click)=\"toggleCollapse()\"\r\n >\r\n @if (isMobile) {\r\n <mat-icon>close</mat-icon>\r\n } @else {\r\n <mat-icon>{{ collapsed ? 'keyboard_double_arrow_right' : 'keyboard_double_arrow_left' }}</mat-icon>\r\n }\r\n </button>\r\n </div>\r\n \r\n <div class=\"menu-wrapper\" fxLayout=\"column\" fxFlex>\r\n <menu-columns (toggleCollapseEvent)=\"toggleCollapse()\" [direction]=\"direction\" role=\"navigation\" fxFlex [isOpen]=\"!collapsed\"\r\n [active]=\"active\"></menu-columns>\r\n </div>\r\n\r\n\r\n <button *ngIf=\"userInitials\" #state=\"matMenuTrigger\" [matMenuTriggerFor]=\"menu\" class=\"profile-wrapper\">\r\n <div class=\"profile-icon\">\r\n {{userInitials}}\r\n </div>\r\n\r\n <ng-container *ngIf=\"!collapsed\">\r\n <span class=\"profile-name\">\r\n {{ username }}\r\n </span>\r\n \r\n <mat-icon *ngIf=\"state.menuOpen; else iconDown\" class=\"spin\">{{\"keyboard_arrow_down\"}}</mat-icon>\r\n\r\n <ng-template #iconDown>\r\n <mat-icon class=\"spin\">{{\"keyboard_arrow_up\" }}</mat-icon>\r\n </ng-template>\r\n </ng-container>\r\n </button>\r\n\r\n <mat-menu #menu=\"matMenu\" class=\"profile-menu\">\r\n @for (item of menuSettings.userOptions; track item.label) {\r\n @if (item.link) {\r\n @if (item.link.isExternal) {\r\n <a class=\"mat-mdc-menu-item\" [href]=\"item.link.href\" target=\"_blank\">\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, label: item.label }\">\r\n </ng-container>\r\n </a>\r\n } @else {\r\n <a class=\"mat-mdc-menu-item\" [routerLink]=\"item.link.href\">\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, label: item.label }\">\r\n </ng-container>\r\n </a>\r\n }\r\n } @else {\r\n <button\r\n mat-menu-item\r\n class=\"profile-option\"\r\n (click)=\"item.button?.callback()\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"profileMenuItem; context: { icon: item.icon, label: item.label }\">\r\n </ng-container>\r\n </button>\r\n }\r\n }\r\n </mat-menu>\r\n </div>\r\n\r\n<ng-template #profileMenuItem let-icon=\"icon\" let-label=\"label\">\r\n @if (icon) {\r\n @if (!icon?.isCustom) {\r\n <span class=\"material-icons profile-option-icon\" [class.material-icons-outlined]=\"icon?.isOutlined\">\r\n {{icon?.name}}\r\n </span>\r\n } @else {\r\n <mat-icon class=\"profile-option-icon\" [svgIcon]=\"icon?.name\"></mat-icon>\r\n }\r\n }\r\n {{ label | translate }}\r\n</ng-template>", styles: ["a{text-decoration:none}.mobile-header{display:flex;justify-content:space-between;padding:23px 27px;background-color:#fcfcfc;border:1px solid var(--base-70)}.mobile.menu-container.collapsed{display:none!important}.mobile.menu-container:not(.collapsed){display:block!important;position:absolute;min-width:100vw;min-height:100vh;z-index:1000}.mobile .profile-wrapper{position:relative}.mobile .profile-wrapper mat-icon{position:absolute!important;right:0}.menu-product-name{white-space:nowrap;margin-left:12px;font-weight:600;color:var(--primary-accent-darker)}.menu-container{max-height:100vh;white-space:nowrap;height:100%;transition:width .2s ease;min-height:100vh;overflow:auto;background:var(--base-100);border-right:2px solid var(--base-95)}.menu-container .menu-container-header{margin:24px 0;max-height:40px}.menu-container.collapsed .menu-container-header{margin:24px 0 32px!important}.menu-container .content:not(.collapsed){overflow-x:hidden;padding:0 12px}.menu-container .content:not(.collapsed) .menu-logo{margin-left:16px;max-width:100%}.menu-container .divider{width:100%}.menu-container .profile-wrapper{background:none;color:var(--base-30);display:flex;align-items:center;justify-content:start;margin:32px 16px}.menu-container .profile-icon{display:flex;justify-content:center;align-items:center;min-width:40px;height:40px;border-radius:100%;color:var(--base-0);background-color:var(--base-70);font-size:16px;font-weight:600}.menu-container .profile-name{max-width:145px;overflow:hidden;margin-left:12px}.profile-option-icon{vertical-align:middle;margin:0 5px 5px 0}:host ::ng-deep .collapsed .profile-wrapper{left:8px!important}:host ::ng-deep .menu-item{display:flex;padding:16px!important;border-radius:4px!important}:host ::ng-deep .child-list .menu-item{padding:8px 46px!important}:host ::ng-deep .collapsed .menu-item{padding:0!important;width:40px;height:40px;border-radius:50%!important}:host ::ng-deep .active-menu-item{background-color:var(--base-95)!important}:host ::ng-deep .menu-item-title{margin-left:12px}tld-menu-icon{margin-right:10px}.spin{animation:spinArrow .3s forwards}:host::ng-deep button.collapse-btn .mat-mdc-button-persistent-ripple,:host::ng-deep button.toggler .mat-mdc-button-persistent-ripple{display:none}:host ::ng-deep .mobile .child-list .menu-item{padding:8px 54px!important}::ng-deep .cdk-overlay-container .profile-menu{margin:10px 0!important}::ng-deep .mat-mdc-menu-item .mat-icon{margin-right:5px!important}::ng-deep .collapsed .profile-wrapper{justify-content:center!important}::ng-deep .profile-menu a{font-weight:400!important;display:flex;align-items:center;gap:5px}::ng-deep .profile-menu a:hover{color:var(--mat-menu-item-label-text-color, var(--mat-app-on-surface))!important;text-decoration:inherit}@keyframes spinArrow{to{transform:rotate(180deg)}}\n"] }]
1008
+ }], () => [{ type: i1.StrapiLinkService }, { type: i2.DOMService }, { type: MenuItemsService }, { type: undefined, decorators: [{
1009
+ type: Optional
1010
+ }, {
1011
+ type: Inject,
1012
+ args: [MENU_SHARED_CONFIG]
1013
+ }] }], { username: [{
998
1014
  type: Input
999
1015
  }], menuSettings: [{
1000
1016
  type: Input
1001
1017
  }], productName: [{
1002
1018
  type: Input
1003
1019
  }] }); })();
1004
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SideNavMenuComponent, { className: "SideNavMenuComponent", filePath: "lib\\components\\side-nav-menu\\side-nav-menu.component.ts", lineNumber: 14 }); })();
1020
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SideNavMenuComponent, { className: "SideNavMenuComponent", filePath: "lib\\components\\side-nav-menu\\side-nav-menu.component.ts", lineNumber: 16 }); })();
1005
1021
 
1006
1022
  class MenuModule {
1007
1023
  static forRoot(config) {
@@ -1076,6 +1092,42 @@ class MenuModule {
1076
1092
  PlausibleModule], exports: [SideNavMenuComponent,
1077
1093
  MenuColumnsComponent] }); })();
1078
1094
 
1095
+ /**
1096
+ * Prefefined user menu options, so that same style of items are used across all products. Use this by passing necessary configuration.
1097
+ */
1098
+ const USER_MENU_OPTIONS = {
1099
+ subscription: (href) => ({
1100
+ icon: { name: "credit_card" },
1101
+ label: 'MENU.SUBSCRIPTION',
1102
+ link: { href: href }
1103
+ }),
1104
+ termsOfUse: (href) => ({
1105
+ icon: { name: "text_snippet" },
1106
+ label: 'MENU.TERMS_OF_USE',
1107
+ link: { href, isExternal: true }
1108
+ }),
1109
+ privacy: (href) => ({
1110
+ icon: { name: "gpp_maybe" },
1111
+ label: 'MENU.PRIVACY',
1112
+ link: { href, isExternal: true },
1113
+ }),
1114
+ help: (href) => ({
1115
+ label: 'MENU.HELP_CENTER',
1116
+ icon: { name: `help` },
1117
+ link: { href, isExternal: true }
1118
+ }),
1119
+ contactUs: (href) => ({
1120
+ label: 'MENU.CONTACT_US',
1121
+ icon: { name: `mail` },
1122
+ link: { href, isExternal: true }
1123
+ }),
1124
+ logout: (callback) => ({
1125
+ icon: { name: "logout" },
1126
+ label: 'MENU.LOG_OUT',
1127
+ button: { callback: () => callback() }
1128
+ })
1129
+ };
1130
+
1079
1131
  /*
1080
1132
  * Public API Surface of ngx-menu
1081
1133
  */
@@ -1084,5 +1136,5 @@ class MenuModule {
1084
1136
  * Generated bundle index. Do not edit.
1085
1137
  */
1086
1138
 
1087
- export { MENU_ICON_STRAPI_EXTENSION, MENU_SHARED_CONFIG, MenuColumnsComponent, MenuItemsService, MenuLayoutDirection, MenuModule, NavBaseComponent, SideNavMenuComponent, StarpiMenuService, StrapiDataLocation };
1139
+ export { MENU_ICON_STRAPI_EXTENSION, MENU_SHARED_CONFIG, MenuColumnsComponent, MenuItemsService, MenuLayoutDirection, MenuModule, NavBaseComponent, SideNavMenuComponent, StarpiMenuService, StrapiDataLocation, USER_MENU_OPTIONS };
1088
1140
  //# sourceMappingURL=tilde-nlp-ngx-menu.mjs.map