@tilde-nlp/ngx-menu 4.1.3 → 5.0.1
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.
- package/esm2022/lib/assets/menu-logo.svg.mjs +1 -1
- package/esm2022/lib/components/menu-columns/menu-columns.component.mjs +66 -66
- package/esm2022/lib/components/menu-icon/menu-icon.component.mjs +23 -23
- package/esm2022/lib/components/menu-item-icon/menu-item-icon.component.mjs +74 -74
- package/esm2022/lib/components/menu-item-icon/menu.model.mjs +3 -3
- package/esm2022/lib/components/menu-item-icon/models/menu-dialog-settings.model.mjs +1 -1
- package/esm2022/lib/components/menu-item-icon/models/menu-item-settings.model.mjs +1 -1
- package/esm2022/lib/components/menu-item-icon/models/menu-title-placement.model.mjs +6 -6
- package/esm2022/lib/components/menu-item-link/menu-item-link.component.mjs +52 -52
- package/esm2022/lib/components/menu-item-list/menu-item-list.component.mjs +62 -62
- package/esm2022/lib/components/modal-nav-menu/modal-nav-menu.component.mjs +39 -39
- package/esm2022/lib/components/nav-base/models/index.mjs +1 -1
- package/esm2022/lib/components/nav-base/models/strapi-data-location.enum.mjs +6 -6
- package/esm2022/lib/components/nav-base/nav-base.component.mjs +32 -32
- package/esm2022/lib/components/side-nav-menu/index.mjs +2 -2
- package/esm2022/lib/components/side-nav-menu/models/index.mjs +1 -1
- package/esm2022/lib/components/side-nav-menu/models/side-nav-settings.model.mjs +1 -1
- package/esm2022/lib/components/side-nav-menu/side-nav-menu.component.mjs +93 -93
- package/esm2022/lib/injection-tokens/index.mjs +1 -1
- package/esm2022/lib/injection-tokens/menu-shared-config.token.mjs +1 -1
- package/esm2022/lib/menu.module.mjs +113 -113
- package/esm2022/lib/models/active-menu-item-config.model.mjs +1 -1
- package/esm2022/lib/models/active-menu-items.model.mjs +1 -1
- package/esm2022/lib/models/custom-menu-item.mjs +1 -1
- package/esm2022/lib/models/index.mjs +7 -7
- package/esm2022/lib/models/menu-icon-strapi-extension.const.mjs +1 -1
- package/esm2022/lib/models/menu-item-group.model.mjs +1 -1
- package/esm2022/lib/models/menu-layout-direction.model.mjs +5 -5
- package/esm2022/lib/models/menu-shared-config.model.mjs +1 -1
- package/esm2022/lib/services/index.mjs +2 -2
- package/esm2022/lib/services/menu-items.service.mjs +125 -125
- package/esm2022/lib/services/strapi.service.mjs +93 -93
- package/esm2022/public-api.mjs +15 -15
- package/esm2022/tilde-nlp-ngx-menu.mjs +4 -4
- package/fesm2022/tilde-nlp-ngx-menu.mjs +659 -659
- package/fesm2022/tilde-nlp-ngx-menu.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/lib/assets/menu-logo.svg.d.ts +1 -1
- package/lib/components/menu-columns/menu-columns.component.d.ts +28 -28
- package/lib/components/menu-icon/menu-icon.component.d.ts +10 -10
- package/lib/components/menu-item-icon/menu-item-icon.component.d.ts +29 -29
- package/lib/components/menu-item-icon/menu.model.d.ts +3 -3
- package/lib/components/menu-item-icon/models/menu-dialog-settings.model.d.ts +8 -8
- package/lib/components/menu-item-icon/models/menu-item-settings.model.d.ts +6 -6
- package/lib/components/menu-item-icon/models/menu-title-placement.model.d.ts +5 -5
- package/lib/components/menu-item-link/menu-item-link.component.d.ts +25 -25
- package/lib/components/menu-item-list/menu-item-list.component.d.ts +22 -22
- package/lib/components/modal-nav-menu/modal-nav-menu.component.d.ts +15 -15
- package/lib/components/nav-base/models/index.d.ts +1 -1
- package/lib/components/nav-base/models/strapi-data-location.enum.d.ts +5 -5
- package/lib/components/nav-base/nav-base.component.d.ts +19 -19
- package/lib/components/side-nav-menu/index.d.ts +2 -2
- package/lib/components/side-nav-menu/models/index.d.ts +1 -1
- package/lib/components/side-nav-menu/models/side-nav-settings.model.d.ts +7 -7
- package/lib/components/side-nav-menu/side-nav-menu.component.d.ts +33 -33
- package/lib/injection-tokens/index.d.ts +1 -1
- package/lib/injection-tokens/menu-shared-config.token.d.ts +1 -1
- package/lib/menu.module.d.ts +29 -29
- package/lib/models/active-menu-item-config.model.d.ts +4 -4
- package/lib/models/active-menu-items.model.d.ts +6 -6
- package/lib/models/custom-menu-item.d.ts +20 -20
- package/lib/models/index.d.ts +7 -7
- package/lib/models/menu-icon-strapi-extension.const.d.ts +1 -1
- package/lib/models/menu-item-group.model.d.ts +9 -9
- package/lib/models/menu-layout-direction.model.d.ts +4 -4
- package/lib/models/menu-shared-config.model.d.ts +21 -21
- package/lib/services/index.d.ts +2 -2
- package/lib/services/menu-items.service.d.ts +38 -38
- package/lib/services/strapi.service.d.ts +20 -20
- package/package.json +8 -8
- package/public-api.d.ts +12 -12
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export var MenuLayoutDirection;
|
|
2
|
-
(function (MenuLayoutDirection) {
|
|
3
|
-
MenuLayoutDirection["column"] = "column";
|
|
4
|
-
MenuLayoutDirection["row"] = "row";
|
|
5
|
-
})(MenuLayoutDirection || (MenuLayoutDirection = {}));
|
|
1
|
+
export var MenuLayoutDirection;
|
|
2
|
+
(function (MenuLayoutDirection) {
|
|
3
|
+
MenuLayoutDirection["column"] = "column";
|
|
4
|
+
MenuLayoutDirection["row"] = "row";
|
|
5
|
+
})(MenuLayoutDirection || (MenuLayoutDirection = {}));
|
|
6
6
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1sYXlvdXQtZGlyZWN0aW9uLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1lbnUvc3JjL2xpYi9tb2RlbHMvbWVudS1sYXlvdXQtZGlyZWN0aW9uLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE1BQU0sQ0FBTixJQUFZLG1CQUdYO0FBSEQsV0FBWSxtQkFBbUI7SUFDN0Isd0NBQWlCLENBQUE7SUFDakIsa0NBQVcsQ0FBQTtBQUNiLENBQUMsRUFIVyxtQkFBbUIsS0FBbkIsbUJBQW1CLFFBRzlCIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmV4cG9ydCBlbnVtIE1lbnVMYXlvdXREaXJlY3Rpb24ge1xyXG4gIGNvbHVtbiA9IFwiY29sdW1uXCIsXHJcbiAgcm93ID0gXCJyb3dcIlxyXG59XHJcbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export {};
|
|
2
2
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1zaGFyZWQtY29uZmlnLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1lbnUvc3JjL2xpYi9tb2RlbHMvbWVudS1zaGFyZWQtY29uZmlnLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJc0FjdGl2ZU1hdGNoT3B0aW9ucyB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgTWVudUl0ZW1Hcm91cCB9IGZyb20gXCIuL21lbnUtaXRlbS1ncm91cC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBTdHJhcGlEYXRhTG9jYXRpb24gfSBmcm9tIFwiLi4vY29tcG9uZW50cy9uYXYtYmFzZS9tb2RlbHNcIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTWVudVNoYXJlZENvbmZpZyB7XHJcbiAgLyoqIGJhc2UgdXJsIGZvciBtZW51IGl0ZW1zIHdpdGggcmVsYXRpdmUgdXJsICovXHJcbiAgYmFzZVVybD86IHN0cmluZztcclxuICAvKiogQ3VzdG9tIGFwcCBJRCBzbyB0aGF0IG1lbnUga25vd3Mgd2hpY2ggZWxlbWVudCBpcyBhY3RpdmUsIGlmIG5vIHJvdXRlciBsaW5rIGlzIGFjdGl2ZSAqL1xyXG4gIGN1c3RvbUlkPzogc3RyaW5nO1xyXG4gIC8qKiBGb3Igc2VsZWN0aW5nIGFjdGl2ZSBlbGVtZW50LCBhY3RpdmUgbWF0Y2ggb3B0aW9ucyBtaWdodCBkcGVuZCBmcm9tIHByb2plY3Qgc3BlY2lmaWNzICovXHJcbiAgYWN0aXZlTWF0Y2hPcHRpb25zPzogSXNBY3RpdmVNYXRjaE9wdGlvbnM7XHJcbiAgLyoqIERpc2FibGluZyBzdHJhcGkgZm9yIGFsbCBtZW51cy4gKi9cclxuICBkaXNhYmxlU3RyYXBpPzogYm9vbGVhbjtcclxuICAvKiogTWVudSBpdGVtIGdyb3VwcyBjb21pbmcgZnJvbSBhcHAuICovXHJcbiAgaXRlbUdyb3Vwcz86IE1lbnVJdGVtR3JvdXBbXTtcclxuICAvKiogU3RyYXBpIGdyb3VwIGJhc2UgKi9cclxuICBzdHJhcGlHcm91cEJhc2U/OiBNZW51SXRlbUdyb3VwW11cclxuICAvKiogSGlkZXMgZWxlbWVudCBpZiBjdXN0b21JZCBpcyB0aGUgc2FtZSBhcyBlbGVtZW50IGN1c3RvbUlEICovXHJcbiAgaGlkZVNlbGVjdGVkQ3VzdG9tSWQ/OiBib29sZWFuO1xyXG4gIC8qKiBXaGVyZSBzdHJhcGkgZGF0YSBzaG91bGQgYmUgcGxhY2VkICovXHJcbiAgc3RyYXBpRGF0YUxvY2F0aW9uPzogU3RyYXBpRGF0YUxvY2F0aW9uO1xyXG59XHJcbiJdfQ==
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from './menu-items.service';
|
|
2
|
-
export * from './strapi.service';
|
|
1
|
+
export * from './menu-items.service';
|
|
2
|
+
export * from './strapi.service';
|
|
3
3
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWVudS9zcmMvbGliL3NlcnZpY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbWVudS1pdGVtcy5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9zdHJhcGkuc2VydmljZSc7Il19
|
|
@@ -1,125 +1,125 @@
|
|
|
1
|
-
import { Inject, Injectable, Optional } from '@angular/core';
|
|
2
|
-
import { NavigationEnd } from '@angular/router';
|
|
3
|
-
import { BehaviorSubject, filter } from 'rxjs';
|
|
4
|
-
import { StrapiDataLocation } from '../components/nav-base/models';
|
|
5
|
-
import { MENU_SHARED_CONFIG } from '../injection-tokens';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@angular/router";
|
|
8
|
-
import * as i2 from "./strapi.service";
|
|
9
|
-
export class MenuItemsService {
|
|
10
|
-
get activeElements() { return this._activeElements.asObservable(); }
|
|
11
|
-
get allRootItems() { return this._allRootItems; }
|
|
12
|
-
get strapiGroup() { return this._strapiGroup; }
|
|
13
|
-
get customId() { return this.menuSharedConfig?.customId; }
|
|
14
|
-
get hideSelectedCustomId() { return this.menuSharedConfig?.hideSelectedCustomId; }
|
|
15
|
-
get strapiGroupBase() { return this.menuSharedConfig?.strapiGroupBase; }
|
|
16
|
-
get strapiDataLocation() { return this.menuSharedConfig?.strapiDataLocation ?? StrapiDataLocation.END; }
|
|
17
|
-
get mergedGroups() { return this._mergedGroups; }
|
|
18
|
-
get menuItemGroups() { return this.menuSharedConfig.itemGroups; }
|
|
19
|
-
constructor(router, menuSharedConfig, strapiService) {
|
|
20
|
-
this.router = router;
|
|
21
|
-
this.menuSharedConfig = menuSharedConfig;
|
|
22
|
-
this.strapiService = strapiService;
|
|
23
|
-
this._activeElements = new BehaviorSubject({});
|
|
24
|
-
this.strapiItems = [];
|
|
25
|
-
this.isActiveMatchOptions = {
|
|
26
|
-
matrixParams: 'exact',
|
|
27
|
-
queryParams: 'exact',
|
|
28
|
-
paths: 'exact',
|
|
29
|
-
fragment: 'exact'
|
|
30
|
-
};
|
|
31
|
-
this._mergedGroups = [];
|
|
32
|
-
this.getStrapiData();
|
|
33
|
-
this.subscribeToRouteChanges();
|
|
34
|
-
}
|
|
35
|
-
subscribeToRouteChanges() {
|
|
36
|
-
this.router.events
|
|
37
|
-
.pipe(filter(e => e instanceof NavigationEnd))
|
|
38
|
-
.subscribe(() => { this.updateActive(); });
|
|
39
|
-
}
|
|
40
|
-
updateActive() {
|
|
41
|
-
const items = this.allRootItems;
|
|
42
|
-
const root = this.findActiveElement(items, false);
|
|
43
|
-
const child = this.findActiveElement(items, true);
|
|
44
|
-
this._activeElements.next({ root, child });
|
|
45
|
-
}
|
|
46
|
-
/** Finds active element from whole list. RouterLink has priority over custom Id. */
|
|
47
|
-
// at this version, child elements should not have customId, since that property comes from strapi and strapi provides only one level structure
|
|
48
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
49
|
-
findActiveElement(items, includeChildren) {
|
|
50
|
-
if (!items?.length) {
|
|
51
|
-
return undefined;
|
|
52
|
-
}
|
|
53
|
-
let customIdElement;
|
|
54
|
-
for (const item of items) {
|
|
55
|
-
// Child element has priority over parent, so need to check if any child is active
|
|
56
|
-
if (this.isElementRouterLinkActive(item)) {
|
|
57
|
-
// If has children and they are visible, return active child or current item
|
|
58
|
-
return includeChildren ? this.findActiveElement(item.children, includeChildren) ?? item : item;
|
|
59
|
-
}
|
|
60
|
-
// if selected custom id element is hidden, no need to look for it and set it to active;
|
|
61
|
-
else if (!this.hideSelectedCustomId && this.isElementCustomIdActive(item)) {
|
|
62
|
-
customIdElement = item;
|
|
63
|
-
}
|
|
64
|
-
else if (includeChildren && item.children?.length) {
|
|
65
|
-
const activeChild = this.findActiveElement(item.children, includeChildren);
|
|
66
|
-
if (activeChild) {
|
|
67
|
-
return activeChild;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
return customIdElement;
|
|
72
|
-
}
|
|
73
|
-
getStrapiData() {
|
|
74
|
-
if (!this.menuSharedConfig?.disableStrapi) {
|
|
75
|
-
this.strapiService.getMenuItems().subscribe(this.loadData.bind(this));
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
this.loadData([]);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
loadData(data) {
|
|
82
|
-
// hide custom id based on input param
|
|
83
|
-
this.strapiItems = (this.hideSelectedCustomId && this.customId) ? data.filter(item => item.customId !== this.customId) : data;
|
|
84
|
-
this._strapiGroup = {
|
|
85
|
-
...this.strapiGroupBase,
|
|
86
|
-
items: this.strapiItems
|
|
87
|
-
};
|
|
88
|
-
if (this.strapiDataLocation === StrapiDataLocation.START) {
|
|
89
|
-
this._mergedGroups = [this.strapiGroup, ...this.menuItemGroups ?? []];
|
|
90
|
-
}
|
|
91
|
-
else if (this.strapiDataLocation === StrapiDataLocation.END) {
|
|
92
|
-
this._mergedGroups = [...this.menuItemGroups ?? [], this.strapiGroup];
|
|
93
|
-
}
|
|
94
|
-
const allItems = this.mergedGroups.map(map => map.items);
|
|
95
|
-
let newArray = [];
|
|
96
|
-
allItems.forEach((array) => { newArray = newArray.concat(array); });
|
|
97
|
-
this._allRootItems = newArray;
|
|
98
|
-
this.updateActive();
|
|
99
|
-
}
|
|
100
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
101
|
-
// private isMenuItem(item: any): item is MenuItems {
|
|
102
|
-
// return item.customId;
|
|
103
|
-
// }
|
|
104
|
-
isElementCustomIdActive(element) {
|
|
105
|
-
return this.customId && element.customId === this.customId;
|
|
106
|
-
}
|
|
107
|
-
isElementRouterLinkActive(element) {
|
|
108
|
-
const routerLinkActiveOptions = element.routerLinkActiveOptions ?? this.menuSharedConfig.activeMatchOptions ?? this.isActiveMatchOptions;
|
|
109
|
-
return this.router.isActive(element.link, routerLinkActiveOptions);
|
|
110
|
-
}
|
|
111
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
112
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
113
|
-
}
|
|
114
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
115
|
-
type: Injectable,
|
|
116
|
-
args: [{
|
|
117
|
-
providedIn: 'root'
|
|
118
|
-
}]
|
|
119
|
-
}], ctorParameters:
|
|
120
|
-
type: Optional
|
|
121
|
-
}, {
|
|
122
|
-
type: Inject,
|
|
123
|
-
args: [MENU_SHARED_CONFIG]
|
|
124
|
-
}] }, { type: i2.StarpiMenuService }]
|
|
125
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1pdGVtcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1lbnUvc3JjL2xpYi9zZXJ2aWNlcy9tZW51LWl0ZW1zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBd0IsYUFBYSxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFVekQsTUFBTSxPQUFPLGdCQUFnQjtJQUczQixJQUFJLGNBQWMsS0FBSyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBT3BFLElBQUksWUFBWSxLQUFLLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFFakQsSUFBSSxXQUFXLEtBQUssT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQVMvQyxJQUFZLFFBQVEsS0FBSyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLElBQVksb0JBQW9CLEtBQUssT0FBTyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO0lBQzFGLElBQVksZUFBZSxLQUFLLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUM7SUFDaEYsSUFBWSxrQkFBa0IsS0FBSyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxrQkFBa0IsSUFBSSxrQkFBa0Is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QyxLQUFLLENBQUMsQ0FBQztRQUN6RCxJQUFJLFFBQVEsR0FBcUIsRUFBRSxDQUFDO1FBQ3BDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxHQUFHLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUM7UUFFOUIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCw4REFBOEQ7SUFDOUQscURBQXFEO0lBQ3JELDBCQUEwQjtJQUMxQixJQUFJO0lBRUksdUJBQXVCLENBQUMsT0FBdUI7UUFDckQsT0FBTyxJQUFJLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUM3RCxDQUFDO0lBRU8seUJBQXlCLENBQUMsT0FBdUI7UUFDdkQsTUFBTSx1QkFBdUIsR0FBMEIsT0FBMEIsQ0FBQyx1QkFBdUIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDO1FBRW5MLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7K0dBN0hVLGdCQUFnQix3Q0ErQkwsa0JBQWtCO21IQS9CN0IsZ0JBQWdCLGNBRmYsTUFBTTs7NEZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBZ0NJLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJc0FjdGl2ZU1hdGNoT3B0aW9ucywgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmaWx0ZXIgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU3RyYXBpRGF0YUxvY2F0aW9uIH0gZnJvbSAnLi4vY29tcG9uZW50cy9uYXYtYmFzZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBNRU5VX1NIQVJFRF9DT05GSUcgfSBmcm9tICcuLi9pbmplY3Rpb24tdG9rZW5zJztcclxuaW1wb3J0IHsgU3RhcnBpTWVudVNlcnZpY2UgfSBmcm9tICcuL3N0cmFwaS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWN0aXZlTWVudUl0ZW1zIH0gZnJvbSAnLi4vbW9kZWxzL2FjdGl2ZS1tZW51LWl0ZW1zLm1vZGVsJztcclxuaW1wb3J0IHsgQ3VzdG9tTWVudUl0ZW0gfSBmcm9tICcuLi9tb2RlbHMvY3VzdG9tLW1lbnUtaXRlbSc7XHJcbmltcG9ydCB7IE1lbnVTaGFyZWRDb25maWcgfSBmcm9tICcuLi9tb2RlbHMvbWVudS1zaGFyZWQtY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgTWVudUl0ZW1Hcm91cCB9IGZyb20gJy4uL21vZGVscy9tZW51LWl0ZW0tZ3JvdXAubW9kZWwnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTWVudUl0ZW1zU2VydmljZSB7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2FjdGl2ZUVsZW1lbnRzOiBCZWhhdmlvclN1YmplY3Q8QWN0aXZlTWVudUl0ZW1zPiA9IG5ldyBCZWhhdmlvclN1YmplY3Qoe30pO1xyXG4gIGdldCBhY3RpdmVFbGVtZW50cygpIHsgcmV0dXJuIHRoaXMuX2FjdGl2ZUVsZW1lbnRzLmFzT2JzZXJ2YWJsZSgpOyB9XHJcblxyXG4gIHByaXZhdGUgc3RyYXBpSXRlbXM6IEN1c3RvbU1lbnVJdGVtW10gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBfc3RyYXBpR3JvdXAhOiBNZW51SXRlbUdyb3VwO1xyXG5cclxuICBwcml2YXRlIF9hbGxSb290SXRlbXMhOiBDdXN0b21NZW51SXRlbVtdO1xyXG4gIGdldCBhbGxSb290SXRlbXMoKSB7IHJldHVybiB0aGlzLl9hbGxSb290SXRlbXM7IH1cclxuXHJcbiAgZ2V0IHN0cmFwaUdyb3VwKCkgeyByZXR1cm4gdGhpcy5fc3RyYXBpR3JvdXA7IH1cclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBpc0FjdGl2ZU1hdGNoT3B0aW9uczogSXNBY3RpdmVNYXRjaE9wdGlvbnMgPSB7XHJcbiAgICBtYXRyaXhQYXJhbXM6ICdleGFjdCcsXHJcbiAgICBxdWVyeVBhcmFtczogJ2V4YWN0JyxcclxuICAgIHBhdGhzOiAnZXhhY3QnLFxyXG4gICAgZnJhZ21lbnQ6ICdleGFjdCdcclxuICB9O1xyXG5cclxuICBwcml2YXRlIGdldCBjdXN0b21JZCgpIHsgcmV0dXJuIHRoaXMubWVudVNoYXJlZENvbmZpZz8uY3VzdG9tSWQ7IH1cclxuICBwcml2YXRlIGdldCBoaWRlU2VsZWN0ZWRDdXN0b21JZCgpIHsgcmV0dXJuIHRoaXMubWVudVNoYXJlZENvbmZpZz8uaGlkZVNlbGVjdGVkQ3VzdG9tSWQ7IH1cclxuICBwcml2YXRlIGdldCBzdHJhcGlHcm91cEJhc2UoKSB7IHJldHVybiB0aGlzLm1lbnVTaGFyZWRDb25maWc/LnN0cmFwaUdyb3VwQmFzZTsgfVxyXG4gIHByaXZhdGUgZ2V0IHN0cmFwaURhdGFMb2NhdGlvbigpIHsgcmV0dXJuIHRoaXMubWVudVNoYXJlZENvbmZpZz8uc3RyYXBpRGF0YUxvY2F0aW9uID8/IFN0cmFwaURhdGFMb2NhdGlvbi5FTkQgfVxyXG4gIHByaXZhdGUgX21lcmdlZEdyb3VwczogTWVudUl0ZW1Hcm91cFtdID0gW107XHJcbiAgZ2V0IG1lcmdlZEdyb3VwcygpIHsgcmV0dXJuIHRoaXMuX21lcmdlZEdyb3VwczsgfVxyXG5cclxuICBwcml2YXRlIGdldCBtZW51SXRlbUdyb3VwcygpIHsgcmV0dXJuIHRoaXMubWVudVNoYXJlZENvbmZpZy5pdGVtR3JvdXBzIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcclxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTUVOVV9TSEFSRURfQ09ORklHKSBwcm90ZWN0ZWQgcmVhZG9ubHkgbWVudVNoYXJlZENvbmZpZzogTWVudVNoYXJlZENvbmZpZyxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RyYXBpU2VydmljZTogU3RhcnBpTWVudVNlcnZpY2UpIHtcclxuICAgIHRoaXMuZ2V0U3RyYXBpRGF0YSgpO1xyXG4gICAgdGhpcy5zdWJzY3JpYmVUb1JvdXRlQ2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb1JvdXRlQ2hhbmdlcygpIHtcclxuICAgIHRoaXMucm91dGVyLmV2ZW50c1xyXG4gICAgICAucGlwZShmaWx0ZXIoZSA9PiBlIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4geyB0aGlzLnVwZGF0ZUFjdGl2ZSgpOyB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlQWN0aXZlKCkge1xyXG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLmFsbFJvb3RJdGVtcztcclxuICAgIGNvbnN0IHJvb3QgPSB0aGlzLmZpbmRBY3RpdmVFbGVtZW50KGl0ZW1zLCBmYWxzZSk7XHJcbiAgICBjb25zdCBjaGlsZCA9IHRoaXMuZmluZEFjdGl2ZUVsZW1lbnQoaXRlbXMsIHRydWUpO1xyXG4gICAgdGhpcy5fYWN0aXZlRWxlbWVudHMubmV4dCh7IHJvb3QsIGNoaWxkIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqIEZpbmRzIGFjdGl2ZSBlbGVtZW50IGZyb20gd2hvbGUgbGlzdC4gUm91dGVyTGluayBoYXMgcHJpb3JpdHkgb3ZlciBjdXN0b20gSWQuICovXHJcbiAgLy8gYXQgdGhpcyB2ZXJzaW9uLCBjaGlsZCBlbGVtZW50cyBzaG91bGQgbm90IGhhdmUgY3VzdG9tSWQsIHNpbmNlIHRoYXQgcHJvcGVydHkgY29tZXMgZnJvbSBzdHJhcGkgYW5kIHN0cmFwaSBwcm92aWRlcyBvbmx5IG9uZSBsZXZlbCBzdHJ1Y3R1cmVcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXHJcbiAgcHJpdmF0ZSBmaW5kQWN0aXZlRWxlbWVudChpdGVtczogQ3VzdG9tTWVudUl0ZW1bXSB8IHVuZGVmaW5lZCwgaW5jbHVkZUNoaWxkcmVuOiBib29sZWFuKTogQ3VzdG9tTWVudUl0ZW0gfCB1bmRlZmluZWQge1xyXG4gICAgaWYgKCFpdGVtcz8ubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGN1c3RvbUlkRWxlbWVudDogQ3VzdG9tTWVudUl0ZW0gfCB1bmRlZmluZWQ7XHJcblxyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XHJcbiAgICAgIC8vIENoaWxkIGVsZW1lbnQgaGFzIHByaW9yaXR5IG92ZXIgcGFyZW50LCBzbyBuZWVkIHRvIGNoZWNrIGlmIGFueSBjaGlsZCBpcyBhY3RpdmVcclxuICAgICAgaWYgKHRoaXMuaXNFbGVtZW50Um91dGVyTGlua0FjdGl2ZShpdGVtKSkge1xyXG4gICAgICAgIC8vIElmIGhhcyBjaGlsZHJlbiBhbmQgdGhleSBhcmUgdmlzaWJsZSwgcmV0dXJuIGFjdGl2ZSBjaGlsZCBvciBjdXJyZW50IGl0ZW1cclxuICAgICAgICByZXR1cm4gaW5jbHVkZUNoaWxkcmVuID8gdGhpcy5maW5kQWN0aXZlRWxlbWVudChpdGVtLmNoaWxkcmVuLCBpbmNsdWRlQ2hpbGRyZW4pID8/IGl0ZW0gOiBpdGVtO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIGlmIHNlbGVjdGVkIGN1c3RvbSBpZCBlbGVtZW50IGlzIGhpZGRlbiwgbm8gbmVlZCB0byBsb29rIGZvciBpdCBhbmQgc2V0IGl0IHRvIGFjdGl2ZTtcclxuICAgICAgZWxzZSBpZiAoIXRoaXMuaGlkZVNlbGVjdGVkQ3VzdG9tSWQgJiYgdGhpcy5pc0VsZW1lbnRDdXN0b21JZEFjdGl2ZShpdGVtKSkge1xyXG4gICAgICAgIGN1c3RvbUlkRWxlbWVudCA9IGl0ZW07XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoaW5jbHVkZUNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4/Lmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnN0IGFjdGl2ZUNoaWxkID0gdGhpcy5maW5kQWN0aXZlRWxlbWVudChpdGVtLmNoaWxkcmVuLCBpbmNsdWRlQ2hpbGRyZW4pO1xyXG4gICAgICAgIGlmIChhY3RpdmVDaGlsZCkge1xyXG4gICAgICAgICAgcmV0dXJuIGFjdGl2ZUNoaWxkO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGN1c3RvbUlkRWxlbWVudDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0U3RyYXBpRGF0YSgpIHtcclxuICAgIGlmICghdGhpcy5tZW51U2hhcmVkQ29uZmlnPy5kaXNhYmxlU3RyYXBpKSB7XHJcbiAgICAgIHRoaXMuc3RyYXBpU2VydmljZS5nZXRNZW51SXRlbXMoKS5zdWJzY3JpYmUodGhpcy5sb2FkRGF0YS5iaW5kKHRoaXMpKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmxvYWREYXRhKFtdKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZERhdGEoZGF0YTogQ3VzdG9tTWVudUl0ZW1bXSkge1xyXG4gICAgLy8gaGlkZSBjdXN0b20gaWQgYmFzZWQgb24gaW5wdXQgcGFyYW1cclxuICAgIHRoaXMuc3RyYXBpSXRlbXMgPSAodGhpcy5oaWRlU2VsZWN0ZWRDdXN0b21JZCAmJiB0aGlzLmN1c3RvbUlkKSA/IGRhdGEuZmlsdGVyKGl0ZW0gPT4gaXRlbS5jdXN0b21JZCAhPT0gdGhpcy5jdXN0b21JZCkgOiBkYXRhO1xyXG4gICAgdGhpcy5fc3RyYXBpR3JvdXAgPSB7XHJcbiAgICAgIC4uLnRoaXMuc3RyYXBpR3JvdXBCYXNlLFxyXG4gICAgICBpdGVtczogdGhpcy5zdHJhcGlJdGVtc1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnN0cmFwaURhdGFMb2NhdGlvbiA9PT0gU3RyYXBpRGF0YUxvY2F0aW9uLlNUQVJUKSB7XHJcbiAgICAgIHRoaXMuX21lcmdlZEdyb3VwcyA9IFt0aGlzLnN0cmFwaUdyb3VwLCAuLi50aGlzLm1lbnVJdGVtR3JvdXBzID8/IFtdXTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuc3RyYXBpRGF0YUxvY2F0aW9uID09PSBTdHJhcGlEYXRhTG9jYXRpb24uRU5EKSB7XHJcbiAgICAgIHRoaXMuX21lcmdlZEdyb3VwcyA9IFsuLi50aGlzLm1lbnVJdGVtR3JvdXBzID8/IFtdLCB0aGlzLnN0cmFwaUdyb3VwXTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBhbGxJdGVtcyA9IHRoaXMubWVyZ2VkR3JvdXBzLm1hcChtYXAgPT4gbWFwLml0ZW1zKTtcclxuICAgIGxldCBuZXdBcnJheTogQ3VzdG9tTWVudUl0ZW1bXSA9IFtdO1xyXG4gICAgYWxsSXRlbXMuZm9yRWFjaCgoYXJyYXkpID0+IHsgbmV3QXJyYXkgPSBuZXdBcnJheS5jb25jYXQoYXJyYXkpIH0pO1xyXG4gICAgdGhpcy5fYWxsUm9vdEl0ZW1zID0gbmV3QXJyYXk7XHJcblxyXG4gICAgdGhpcy51cGRhdGVBY3RpdmUoKTtcclxuICB9XHJcblxyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgLy8gcHJpdmF0ZSBpc01lbnVJdGVtKGl0ZW06IGFueSk6IGl0ZW0gaXMgTWVudUl0ZW1zIHtcclxuICAvLyAgIHJldHVybiBpdGVtLmN1c3RvbUlkO1xyXG4gIC8vIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0VsZW1lbnRDdXN0b21JZEFjdGl2ZShlbGVtZW50OiBDdXN0b21NZW51SXRlbSkge1xyXG4gICAgcmV0dXJuIHRoaXMuY3VzdG9tSWQgJiYgZWxlbWVudC5jdXN0b21JZCA9PT0gdGhpcy5jdXN0b21JZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNFbGVtZW50Um91dGVyTGlua0FjdGl2ZShlbGVtZW50OiBDdXN0b21NZW51SXRlbSkge1xyXG4gICAgY29uc3Qgcm91dGVyTGlua0FjdGl2ZU9wdGlvbnM6IElzQWN0aXZlTWF0Y2hPcHRpb25zID0gKGVsZW1lbnQgYXMgQ3VzdG9tTWVudUl0ZW0pLnJvdXRlckxpbmtBY3RpdmVPcHRpb25zID8/IHRoaXMubWVudVNoYXJlZENvbmZpZy5hY3RpdmVNYXRjaE9wdGlvbnMgPz8gdGhpcy5pc0FjdGl2ZU1hdGNoT3B0aW9ucztcclxuXHJcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXIuaXNBY3RpdmUoZWxlbWVudC5saW5rLCByb3V0ZXJMaW5rQWN0aXZlT3B0aW9ucyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
1
|
+
import { Inject, Injectable, Optional } from '@angular/core';
|
|
2
|
+
import { NavigationEnd } from '@angular/router';
|
|
3
|
+
import { BehaviorSubject, filter } from 'rxjs';
|
|
4
|
+
import { StrapiDataLocation } from '../components/nav-base/models';
|
|
5
|
+
import { MENU_SHARED_CONFIG } from '../injection-tokens';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/router";
|
|
8
|
+
import * as i2 from "./strapi.service";
|
|
9
|
+
export class MenuItemsService {
|
|
10
|
+
get activeElements() { return this._activeElements.asObservable(); }
|
|
11
|
+
get allRootItems() { return this._allRootItems; }
|
|
12
|
+
get strapiGroup() { return this._strapiGroup; }
|
|
13
|
+
get customId() { return this.menuSharedConfig?.customId; }
|
|
14
|
+
get hideSelectedCustomId() { return this.menuSharedConfig?.hideSelectedCustomId; }
|
|
15
|
+
get strapiGroupBase() { return this.menuSharedConfig?.strapiGroupBase; }
|
|
16
|
+
get strapiDataLocation() { return this.menuSharedConfig?.strapiDataLocation ?? StrapiDataLocation.END; }
|
|
17
|
+
get mergedGroups() { return this._mergedGroups; }
|
|
18
|
+
get menuItemGroups() { return this.menuSharedConfig.itemGroups; }
|
|
19
|
+
constructor(router, menuSharedConfig, strapiService) {
|
|
20
|
+
this.router = router;
|
|
21
|
+
this.menuSharedConfig = menuSharedConfig;
|
|
22
|
+
this.strapiService = strapiService;
|
|
23
|
+
this._activeElements = new BehaviorSubject({});
|
|
24
|
+
this.strapiItems = [];
|
|
25
|
+
this.isActiveMatchOptions = {
|
|
26
|
+
matrixParams: 'exact',
|
|
27
|
+
queryParams: 'exact',
|
|
28
|
+
paths: 'exact',
|
|
29
|
+
fragment: 'exact'
|
|
30
|
+
};
|
|
31
|
+
this._mergedGroups = [];
|
|
32
|
+
this.getStrapiData();
|
|
33
|
+
this.subscribeToRouteChanges();
|
|
34
|
+
}
|
|
35
|
+
subscribeToRouteChanges() {
|
|
36
|
+
this.router.events
|
|
37
|
+
.pipe(filter(e => e instanceof NavigationEnd))
|
|
38
|
+
.subscribe(() => { this.updateActive(); });
|
|
39
|
+
}
|
|
40
|
+
updateActive() {
|
|
41
|
+
const items = this.allRootItems;
|
|
42
|
+
const root = this.findActiveElement(items, false);
|
|
43
|
+
const child = this.findActiveElement(items, true);
|
|
44
|
+
this._activeElements.next({ root, child });
|
|
45
|
+
}
|
|
46
|
+
/** Finds active element from whole list. RouterLink has priority over custom Id. */
|
|
47
|
+
// at this version, child elements should not have customId, since that property comes from strapi and strapi provides only one level structure
|
|
48
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
49
|
+
findActiveElement(items, includeChildren) {
|
|
50
|
+
if (!items?.length) {
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
let customIdElement;
|
|
54
|
+
for (const item of items) {
|
|
55
|
+
// Child element has priority over parent, so need to check if any child is active
|
|
56
|
+
if (this.isElementRouterLinkActive(item)) {
|
|
57
|
+
// If has children and they are visible, return active child or current item
|
|
58
|
+
return includeChildren ? this.findActiveElement(item.children, includeChildren) ?? item : item;
|
|
59
|
+
}
|
|
60
|
+
// if selected custom id element is hidden, no need to look for it and set it to active;
|
|
61
|
+
else if (!this.hideSelectedCustomId && this.isElementCustomIdActive(item)) {
|
|
62
|
+
customIdElement = item;
|
|
63
|
+
}
|
|
64
|
+
else if (includeChildren && item.children?.length) {
|
|
65
|
+
const activeChild = this.findActiveElement(item.children, includeChildren);
|
|
66
|
+
if (activeChild) {
|
|
67
|
+
return activeChild;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return customIdElement;
|
|
72
|
+
}
|
|
73
|
+
getStrapiData() {
|
|
74
|
+
if (!this.menuSharedConfig?.disableStrapi) {
|
|
75
|
+
this.strapiService.getMenuItems().subscribe(this.loadData.bind(this));
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
this.loadData([]);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
loadData(data) {
|
|
82
|
+
// hide custom id based on input param
|
|
83
|
+
this.strapiItems = (this.hideSelectedCustomId && this.customId) ? data.filter(item => item.customId !== this.customId) : data;
|
|
84
|
+
this._strapiGroup = {
|
|
85
|
+
...this.strapiGroupBase,
|
|
86
|
+
items: this.strapiItems
|
|
87
|
+
};
|
|
88
|
+
if (this.strapiDataLocation === StrapiDataLocation.START) {
|
|
89
|
+
this._mergedGroups = [this.strapiGroup, ...this.menuItemGroups ?? []];
|
|
90
|
+
}
|
|
91
|
+
else if (this.strapiDataLocation === StrapiDataLocation.END) {
|
|
92
|
+
this._mergedGroups = [...this.menuItemGroups ?? [], this.strapiGroup];
|
|
93
|
+
}
|
|
94
|
+
const allItems = this.mergedGroups.map(map => map.items);
|
|
95
|
+
let newArray = [];
|
|
96
|
+
allItems.forEach((array) => { newArray = newArray.concat(array); });
|
|
97
|
+
this._allRootItems = newArray;
|
|
98
|
+
this.updateActive();
|
|
99
|
+
}
|
|
100
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
101
|
+
// private isMenuItem(item: any): item is MenuItems {
|
|
102
|
+
// return item.customId;
|
|
103
|
+
// }
|
|
104
|
+
isElementCustomIdActive(element) {
|
|
105
|
+
return this.customId && element.customId === this.customId;
|
|
106
|
+
}
|
|
107
|
+
isElementRouterLinkActive(element) {
|
|
108
|
+
const routerLinkActiveOptions = element.routerLinkActiveOptions ?? this.menuSharedConfig.activeMatchOptions ?? this.isActiveMatchOptions;
|
|
109
|
+
return this.router.isActive(element.link, routerLinkActiveOptions);
|
|
110
|
+
}
|
|
111
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MenuItemsService, deps: [{ token: i1.Router }, { token: MENU_SHARED_CONFIG, optional: true }, { token: i2.StarpiMenuService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
112
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MenuItemsService, providedIn: 'root' }); }
|
|
113
|
+
}
|
|
114
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: MenuItemsService, decorators: [{
|
|
115
|
+
type: Injectable,
|
|
116
|
+
args: [{
|
|
117
|
+
providedIn: 'root'
|
|
118
|
+
}]
|
|
119
|
+
}], ctorParameters: () => [{ type: i1.Router }, { type: undefined, decorators: [{
|
|
120
|
+
type: Optional
|
|
121
|
+
}, {
|
|
122
|
+
type: Inject,
|
|
123
|
+
args: [MENU_SHARED_CONFIG]
|
|
124
|
+
}] }, { type: i2.StarpiMenuService }] });
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1pdGVtcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1lbnUvc3JjL2xpYi9zZXJ2aWNlcy9tZW51LWl0ZW1zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBd0IsYUFBYSxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFVekQsTUFBTSxPQUFPLGdCQUFnQjtJQUczQixJQUFJLGNBQWMsS0FBSyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBT3BFLElBQUksWUFBWSxLQUFLLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFFakQsSUFBSSxXQUFXLEtBQUssT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQVMvQyxJQUFZLFFBQVEsS0FBSyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLElBQVksb0JBQW9CLEtBQUssT0FBTyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO0lBQzFGLElBQVksZUFBZSxLQUFLLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUM7SUFDaEYsSUFBWSxrQkFBa0IsS0FBSyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxrQkFBa0IsSUFBSSxrQkFBa0Is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IEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElzQWN0aXZlTWF0Y2hPcHRpb25zLCBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZpbHRlciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTdHJhcGlEYXRhTG9jYXRpb24gfSBmcm9tICcuLi9jb21wb25lbnRzL25hdi1iYXNlL21vZGVscyc7XHJcbmltcG9ydCB7IE1FTlVfU0hBUkVEX0NPTkZJRyB9IGZyb20gJy4uL2luamVjdGlvbi10b2tlbnMnO1xyXG5pbXBvcnQgeyBTdGFycGlNZW51U2VydmljZSB9IGZyb20gJy4vc3RyYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBY3RpdmVNZW51SXRlbXMgfSBmcm9tICcuLi9tb2RlbHMvYWN0aXZlLW1lbnUtaXRlbXMubW9kZWwnO1xyXG5pbXBvcnQgeyBDdXN0b21NZW51SXRlbSB9IGZyb20gJy4uL21vZGVscy9jdXN0b20tbWVudS1pdGVtJztcclxuaW1wb3J0IHsgTWVudVNoYXJlZENvbmZpZyB9IGZyb20gJy4uL21vZGVscy9tZW51LXNoYXJlZC1jb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBNZW51SXRlbUdyb3VwIH0gZnJvbSAnLi4vbW9kZWxzL21lbnUtaXRlbS1ncm91cC5tb2RlbCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNZW51SXRlbXNTZXJ2aWNlIHtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aXZlRWxlbWVudHM6IEJlaGF2aW9yU3ViamVjdDxBY3RpdmVNZW51SXRlbXM+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh7fSk7XHJcbiAgZ2V0IGFjdGl2ZUVsZW1lbnRzKCkgeyByZXR1cm4gdGhpcy5fYWN0aXZlRWxlbWVudHMuYXNPYnNlcnZhYmxlKCk7IH1cclxuXHJcbiAgcHJpdmF0ZSBzdHJhcGlJdGVtczogQ3VzdG9tTWVudUl0ZW1bXSA9IFtdO1xyXG5cclxuICBwcml2YXRlIF9zdHJhcGlHcm91cCE6IE1lbnVJdGVtR3JvdXA7XHJcblxyXG4gIHByaXZhdGUgX2FsbFJvb3RJdGVtcyE6IEN1c3RvbU1lbnVJdGVtW107XHJcbiAgZ2V0IGFsbFJvb3RJdGVtcygpIHsgcmV0dXJuIHRoaXMuX2FsbFJvb3RJdGVtczsgfVxyXG5cclxuICBnZXQgc3RyYXBpR3JvdXAoKSB7IHJldHVybiB0aGlzLl9zdHJhcGlHcm91cDsgfVxyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGlzQWN0aXZlTWF0Y2hPcHRpb25zOiBJc0FjdGl2ZU1hdGNoT3B0aW9ucyA9IHtcclxuICAgIG1hdHJpeFBhcmFtczogJ2V4YWN0JyxcclxuICAgIHF1ZXJ5UGFyYW1zOiAnZXhhY3QnLFxyXG4gICAgcGF0aHM6ICdleGFjdCcsXHJcbiAgICBmcmFnbWVudDogJ2V4YWN0J1xyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgZ2V0IGN1c3RvbUlkKCkgeyByZXR1cm4gdGhpcy5tZW51U2hhcmVkQ29uZmlnPy5jdXN0b21JZDsgfVxyXG4gIHByaXZhdGUgZ2V0IGhpZGVTZWxlY3RlZEN1c3RvbUlkKCkgeyByZXR1cm4gdGhpcy5tZW51U2hhcmVkQ29uZmlnPy5oaWRlU2VsZWN0ZWRDdXN0b21JZDsgfVxyXG4gIHByaXZhdGUgZ2V0IHN0cmFwaUdyb3VwQmFzZSgpIHsgcmV0dXJuIHRoaXMubWVudVNoYXJlZENvbmZpZz8uc3RyYXBpR3JvdXBCYXNlOyB9XHJcbiAgcHJpdmF0ZSBnZXQgc3RyYXBpRGF0YUxvY2F0aW9uKCkgeyByZXR1cm4gdGhpcy5tZW51U2hhcmVkQ29uZmlnPy5zdHJhcGlEYXRhTG9jYXRpb24gPz8gU3RyYXBpRGF0YUxvY2F0aW9uLkVORCB9XHJcbiAgcHJpdmF0ZSBfbWVyZ2VkR3JvdXBzOiBNZW51SXRlbUdyb3VwW10gPSBbXTtcclxuICBnZXQgbWVyZ2VkR3JvdXBzKCkgeyByZXR1cm4gdGhpcy5fbWVyZ2VkR3JvdXBzOyB9XHJcblxyXG4gIHByaXZhdGUgZ2V0IG1lbnVJdGVtR3JvdXBzKCkgeyByZXR1cm4gdGhpcy5tZW51U2hhcmVkQ29uZmlnLml0ZW1Hcm91cHMgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxyXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChNRU5VX1NIQVJFRF9DT05GSUcpIHByb3RlY3RlZCByZWFkb25seSBtZW51U2hhcmVkQ29uZmlnOiBNZW51U2hhcmVkQ29uZmlnLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdHJhcGlTZXJ2aWNlOiBTdGFycGlNZW51U2VydmljZSkge1xyXG4gICAgdGhpcy5nZXRTdHJhcGlEYXRhKCk7XHJcbiAgICB0aGlzLnN1YnNjcmliZVRvUm91dGVDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN1YnNjcmliZVRvUm91dGVDaGFuZ2VzKCkge1xyXG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzXHJcbiAgICAgIC5waXBlKGZpbHRlcihlID0+IGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7IHRoaXMudXBkYXRlQWN0aXZlKCk7IH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVBY3RpdmUoKSB7XHJcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuYWxsUm9vdEl0ZW1zO1xyXG4gICAgY29uc3Qgcm9vdCA9IHRoaXMuZmluZEFjdGl2ZUVsZW1lbnQoaXRlbXMsIGZhbHNlKTtcclxuICAgIGNvbnN0IGNoaWxkID0gdGhpcy5maW5kQWN0aXZlRWxlbWVudChpdGVtcywgdHJ1ZSk7XHJcbiAgICB0aGlzLl9hY3RpdmVFbGVtZW50cy5uZXh0KHsgcm9vdCwgY2hpbGQgfSk7XHJcbiAgfVxyXG5cclxuICAvKiogRmluZHMgYWN0aXZlIGVsZW1lbnQgZnJvbSB3aG9sZSBsaXN0LiBSb3V0ZXJMaW5rIGhhcyBwcmlvcml0eSBvdmVyIGN1c3RvbSBJZC4gKi9cclxuICAvLyBhdCB0aGlzIHZlcnNpb24sIGNoaWxkIGVsZW1lbnRzIHNob3VsZCBub3QgaGF2ZSBjdXN0b21JZCwgc2luY2UgdGhhdCBwcm9wZXJ0eSBjb21lcyBmcm9tIHN0cmFwaSBhbmQgc3RyYXBpIHByb3ZpZGVzIG9ubHkgb25lIGxldmVsIHN0cnVjdHVyZVxyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcclxuICBwcml2YXRlIGZpbmRBY3RpdmVFbGVtZW50KGl0ZW1zOiBDdXN0b21NZW51SXRlbVtdIHwgdW5kZWZpbmVkLCBpbmNsdWRlQ2hpbGRyZW46IGJvb2xlYW4pOiBDdXN0b21NZW51SXRlbSB8IHVuZGVmaW5lZCB7XHJcbiAgICBpZiAoIWl0ZW1zPy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgY3VzdG9tSWRFbGVtZW50OiBDdXN0b21NZW51SXRlbSB8IHVuZGVmaW5lZDtcclxuXHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcclxuICAgICAgLy8gQ2hpbGQgZWxlbWVudCBoYXMgcHJpb3JpdHkgb3ZlciBwYXJlbnQsIHNvIG5lZWQgdG8gY2hlY2sgaWYgYW55IGNoaWxkIGlzIGFjdGl2ZVxyXG4gICAgICBpZiAodGhpcy5pc0VsZW1lbnRSb3V0ZXJMaW5rQWN0aXZlKGl0ZW0pKSB7XHJcbiAgICAgICAgLy8gSWYgaGFzIGNoaWxkcmVuIGFuZCB0aGV5IGFyZSB2aXNpYmxlLCByZXR1cm4gYWN0aXZlIGNoaWxkIG9yIGN1cnJlbnQgaXRlbVxyXG4gICAgICAgIHJldHVybiBpbmNsdWRlQ2hpbGRyZW4gPyB0aGlzLmZpbmRBY3RpdmVFbGVtZW50KGl0ZW0uY2hpbGRyZW4sIGluY2x1ZGVDaGlsZHJlbikgPz8gaXRlbSA6IGl0ZW07XHJcbiAgICAgIH1cclxuICAgICAgLy8gaWYgc2VsZWN0ZWQgY3VzdG9tIGlkIGVsZW1lbnQgaXMgaGlkZGVuLCBubyBuZWVkIHRvIGxvb2sgZm9yIGl0IGFuZCBzZXQgaXQgdG8gYWN0aXZlO1xyXG4gICAgICBlbHNlIGlmICghdGhpcy5oaWRlU2VsZWN0ZWRDdXN0b21JZCAmJiB0aGlzLmlzRWxlbWVudEN1c3RvbUlkQWN0aXZlKGl0ZW0pKSB7XHJcbiAgICAgICAgY3VzdG9tSWRFbGVtZW50ID0gaXRlbTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChpbmNsdWRlQ2hpbGRyZW4gJiYgaXRlbS5jaGlsZHJlbj8ubGVuZ3RoKSB7XHJcbiAgICAgICAgY29uc3QgYWN0aXZlQ2hpbGQgPSB0aGlzLmZpbmRBY3RpdmVFbGVtZW50KGl0ZW0uY2hpbGRyZW4sIGluY2x1ZGVDaGlsZHJlbik7XHJcbiAgICAgICAgaWYgKGFjdGl2ZUNoaWxkKSB7XHJcbiAgICAgICAgICByZXR1cm4gYWN0aXZlQ2hpbGQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY3VzdG9tSWRFbGVtZW50O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRTdHJhcGlEYXRhKCkge1xyXG4gICAgaWYgKCF0aGlzLm1lbnVTaGFyZWRDb25maWc/LmRpc2FibGVTdHJhcGkpIHtcclxuICAgICAgdGhpcy5zdHJhcGlTZXJ2aWNlLmdldE1lbnVJdGVtcygpLnN1YnNjcmliZSh0aGlzLmxvYWREYXRhLmJpbmQodGhpcykpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMubG9hZERhdGEoW10pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkRGF0YShkYXRhOiBDdXN0b21NZW51SXRlbVtdKSB7XHJcbiAgICAvLyBoaWRlIGN1c3RvbSBpZCBiYXNlZCBvbiBpbnB1dCBwYXJhbVxyXG4gICAgdGhpcy5zdHJhcGlJdGVtcyA9ICh0aGlzLmhpZGVTZWxlY3RlZEN1c3RvbUlkICYmIHRoaXMuY3VzdG9tSWQpID8gZGF0YS5maWx0ZXIoaXRlbSA9PiBpdGVtLmN1c3RvbUlkICE9PSB0aGlzLmN1c3RvbUlkKSA6IGRhdGE7XHJcbiAgICB0aGlzLl9zdHJhcGlHcm91cCA9IHtcclxuICAgICAgLi4udGhpcy5zdHJhcGlHcm91cEJhc2UsXHJcbiAgICAgIGl0ZW1zOiB0aGlzLnN0cmFwaUl0ZW1zXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc3RyYXBpRGF0YUxvY2F0aW9uID09PSBTdHJhcGlEYXRhTG9jYXRpb24uU1RBUlQpIHtcclxuICAgICAgdGhpcy5fbWVyZ2VkR3JvdXBzID0gW3RoaXMuc3RyYXBpR3JvdXAsIC4uLnRoaXMubWVudUl0ZW1Hcm91cHMgPz8gW11dO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5zdHJhcGlEYXRhTG9jYXRpb24gPT09IFN0cmFwaURhdGFMb2NhdGlvbi5FTkQpIHtcclxuICAgICAgdGhpcy5fbWVyZ2VkR3JvdXBzID0gWy4uLnRoaXMubWVudUl0ZW1Hcm91cHMgPz8gW10sIHRoaXMuc3RyYXBpR3JvdXBdO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGFsbEl0ZW1zID0gdGhpcy5tZXJnZWRHcm91cHMubWFwKG1hcCA9PiBtYXAuaXRlbXMpO1xyXG4gICAgbGV0IG5ld0FycmF5OiBDdXN0b21NZW51SXRlbVtdID0gW107XHJcbiAgICBhbGxJdGVtcy5mb3JFYWNoKChhcnJheSkgPT4geyBuZXdBcnJheSA9IG5ld0FycmF5LmNvbmNhdChhcnJheSkgfSk7XHJcbiAgICB0aGlzLl9hbGxSb290SXRlbXMgPSBuZXdBcnJheTtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZUFjdGl2ZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAvLyBwcml2YXRlIGlzTWVudUl0ZW0oaXRlbTogYW55KTogaXRlbSBpcyBNZW51SXRlbXMge1xyXG4gIC8vICAgcmV0dXJuIGl0ZW0uY3VzdG9tSWQ7XHJcbiAgLy8gfVxyXG5cclxuICBwcml2YXRlIGlzRWxlbWVudEN1c3RvbUlkQWN0aXZlKGVsZW1lbnQ6IEN1c3RvbU1lbnVJdGVtKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jdXN0b21JZCAmJiBlbGVtZW50LmN1c3RvbUlkID09PSB0aGlzLmN1c3RvbUlkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0VsZW1lbnRSb3V0ZXJMaW5rQWN0aXZlKGVsZW1lbnQ6IEN1c3RvbU1lbnVJdGVtKSB7XHJcbiAgICBjb25zdCByb3V0ZXJMaW5rQWN0aXZlT3B0aW9uczogSXNBY3RpdmVNYXRjaE9wdGlvbnMgPSAoZWxlbWVudCBhcyBDdXN0b21NZW51SXRlbSkucm91dGVyTGlua0FjdGl2ZU9wdGlvbnMgPz8gdGhpcy5tZW51U2hhcmVkQ29uZmlnLmFjdGl2ZU1hdGNoT3B0aW9ucyA/PyB0aGlzLmlzQWN0aXZlTWF0Y2hPcHRpb25zO1xyXG5cclxuICAgIHJldHVybiB0aGlzLnJvdXRlci5pc0FjdGl2ZShlbGVtZW50LmxpbmssIHJvdXRlckxpbmtBY3RpdmVPcHRpb25zKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,93 +1,93 @@
|
|
|
1
|
-
import { Inject, Injectable, Optional } from "@angular/core";
|
|
2
|
-
import { STRAPI_API_CONFIG_TOKEN } from "@tilde-nlp/ngx-strapi";
|
|
3
|
-
import { map } from "rxjs";
|
|
4
|
-
import { CollectionTypes } from "@tilde-nlp/strapi-models";
|
|
5
|
-
import { MENU_ICON_STRAPI_EXTENSION } from "../models/menu-icon-strapi-extension.const";
|
|
6
|
-
import { MENU_SHARED_CONFIG } from "../injection-tokens/menu-shared-config.token";
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@tilde-nlp/ngx-strapi";
|
|
9
|
-
import * as i2 from "@tilde-nlp/ngx-common";
|
|
10
|
-
export class StarpiMenuService {
|
|
11
|
-
constructor(strapiSubscription, menuConfig, strapiConfig, iconService) {
|
|
12
|
-
this.strapiSubscription = strapiSubscription;
|
|
13
|
-
this.menuConfig = menuConfig;
|
|
14
|
-
this.iconService = iconService;
|
|
15
|
-
this.svgIconNamePrefix = "strapi-menu-icon-";
|
|
16
|
-
this.imgBaseUrl = '';
|
|
17
|
-
this.imgBaseUrl = strapiConfig.apiUrl;
|
|
18
|
-
}
|
|
19
|
-
getMenuItems() {
|
|
20
|
-
const responseObs = this.strapiSubscription.subscribeCollectionType(CollectionTypes.MENU_ITEMS)
|
|
21
|
-
.pipe(map((items) => {
|
|
22
|
-
// Remove disabled items so they are not processed later.
|
|
23
|
-
const convertedItems = [];
|
|
24
|
-
if (!items || items.length === 0) {
|
|
25
|
-
return convertedItems;
|
|
26
|
-
}
|
|
27
|
-
items = items.filter(item => !item.disabled);
|
|
28
|
-
items.forEach((menu) => {
|
|
29
|
-
menu.link = this.addBaseUrlIfNecessary(menu.link);
|
|
30
|
-
const originalMenuIcon = menu.icon.data.attributes;
|
|
31
|
-
if (originalMenuIcon.url.startsWith('/')) {
|
|
32
|
-
originalMenuIcon.url = this.imgBaseUrl + originalMenuIcon.url;
|
|
33
|
-
}
|
|
34
|
-
if (originalMenuIcon.ext === MENU_ICON_STRAPI_EXTENSION) {
|
|
35
|
-
// add custom prefix so that it is not easy to mix with other icons in registry
|
|
36
|
-
menu.icon.data.attributes.name = this.svgIconNamePrefix + originalMenuIcon.name;
|
|
37
|
-
this.iconService.registerIconFromUrl(originalMenuIcon.name, originalMenuIcon.url);
|
|
38
|
-
}
|
|
39
|
-
convertedItems.push(this.convertToCustomMenuItem(menu));
|
|
40
|
-
});
|
|
41
|
-
return convertedItems;
|
|
42
|
-
}));
|
|
43
|
-
return responseObs;
|
|
44
|
-
}
|
|
45
|
-
unsubscribe() {
|
|
46
|
-
this.strapiSubscription.unsubscribe(CollectionTypes.MENU_ITEMS);
|
|
47
|
-
}
|
|
48
|
-
addBaseUrlIfNecessary(link) {
|
|
49
|
-
if (!this.menuConfig?.baseUrl) {
|
|
50
|
-
return link;
|
|
51
|
-
}
|
|
52
|
-
try {
|
|
53
|
-
new URL(link);
|
|
54
|
-
// eslint-disable-next-line no-empty
|
|
55
|
-
}
|
|
56
|
-
catch { }
|
|
57
|
-
try {
|
|
58
|
-
return new URL(link, this.menuConfig.baseUrl).href;
|
|
59
|
-
}
|
|
60
|
-
catch {
|
|
61
|
-
return link;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
convertToCustomMenuItem(item) {
|
|
65
|
-
return {
|
|
66
|
-
icon: item.icon.data.attributes.name,
|
|
67
|
-
link: item.link,
|
|
68
|
-
title: item.title,
|
|
69
|
-
externalLink: item.externalLink,
|
|
70
|
-
// Material icons should not come from strapi
|
|
71
|
-
materialIcon: false,
|
|
72
|
-
plausibleEvent: item.plausibleEvent,
|
|
73
|
-
customId: item.customId
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
77
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
78
|
-
}
|
|
79
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
80
|
-
type: Injectable,
|
|
81
|
-
args: [{
|
|
82
|
-
providedIn: 'root'
|
|
83
|
-
}]
|
|
84
|
-
}], ctorParameters:
|
|
85
|
-
type: Optional
|
|
86
|
-
}, {
|
|
87
|
-
type: Inject,
|
|
88
|
-
args: [MENU_SHARED_CONFIG]
|
|
89
|
-
}] }, { type: undefined, decorators: [{
|
|
90
|
-
type: Inject,
|
|
91
|
-
args: [STRAPI_API_CONFIG_TOKEN]
|
|
92
|
-
}] }, { type: i2.IconService }]
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Inject, Injectable, Optional } from "@angular/core";
|
|
2
|
+
import { STRAPI_API_CONFIG_TOKEN } from "@tilde-nlp/ngx-strapi";
|
|
3
|
+
import { map } from "rxjs";
|
|
4
|
+
import { CollectionTypes } from "@tilde-nlp/strapi-models";
|
|
5
|
+
import { MENU_ICON_STRAPI_EXTENSION } from "../models/menu-icon-strapi-extension.const";
|
|
6
|
+
import { MENU_SHARED_CONFIG } from "../injection-tokens/menu-shared-config.token";
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@tilde-nlp/ngx-strapi";
|
|
9
|
+
import * as i2 from "@tilde-nlp/ngx-common";
|
|
10
|
+
export class StarpiMenuService {
|
|
11
|
+
constructor(strapiSubscription, menuConfig, strapiConfig, iconService) {
|
|
12
|
+
this.strapiSubscription = strapiSubscription;
|
|
13
|
+
this.menuConfig = menuConfig;
|
|
14
|
+
this.iconService = iconService;
|
|
15
|
+
this.svgIconNamePrefix = "strapi-menu-icon-";
|
|
16
|
+
this.imgBaseUrl = '';
|
|
17
|
+
this.imgBaseUrl = strapiConfig.apiUrl;
|
|
18
|
+
}
|
|
19
|
+
getMenuItems() {
|
|
20
|
+
const responseObs = this.strapiSubscription.subscribeCollectionType(CollectionTypes.MENU_ITEMS)
|
|
21
|
+
.pipe(map((items) => {
|
|
22
|
+
// Remove disabled items so they are not processed later.
|
|
23
|
+
const convertedItems = [];
|
|
24
|
+
if (!items || items.length === 0) {
|
|
25
|
+
return convertedItems;
|
|
26
|
+
}
|
|
27
|
+
items = items.filter(item => !item.disabled);
|
|
28
|
+
items.forEach((menu) => {
|
|
29
|
+
menu.link = this.addBaseUrlIfNecessary(menu.link);
|
|
30
|
+
const originalMenuIcon = menu.icon.data.attributes;
|
|
31
|
+
if (originalMenuIcon.url.startsWith('/')) {
|
|
32
|
+
originalMenuIcon.url = this.imgBaseUrl + originalMenuIcon.url;
|
|
33
|
+
}
|
|
34
|
+
if (originalMenuIcon.ext === MENU_ICON_STRAPI_EXTENSION) {
|
|
35
|
+
// add custom prefix so that it is not easy to mix with other icons in registry
|
|
36
|
+
menu.icon.data.attributes.name = this.svgIconNamePrefix + originalMenuIcon.name;
|
|
37
|
+
this.iconService.registerIconFromUrl(originalMenuIcon.name, originalMenuIcon.url);
|
|
38
|
+
}
|
|
39
|
+
convertedItems.push(this.convertToCustomMenuItem(menu));
|
|
40
|
+
});
|
|
41
|
+
return convertedItems;
|
|
42
|
+
}));
|
|
43
|
+
return responseObs;
|
|
44
|
+
}
|
|
45
|
+
unsubscribe() {
|
|
46
|
+
this.strapiSubscription.unsubscribe(CollectionTypes.MENU_ITEMS);
|
|
47
|
+
}
|
|
48
|
+
addBaseUrlIfNecessary(link) {
|
|
49
|
+
if (!this.menuConfig?.baseUrl) {
|
|
50
|
+
return link;
|
|
51
|
+
}
|
|
52
|
+
try {
|
|
53
|
+
new URL(link);
|
|
54
|
+
// eslint-disable-next-line no-empty
|
|
55
|
+
}
|
|
56
|
+
catch { }
|
|
57
|
+
try {
|
|
58
|
+
return new URL(link, this.menuConfig.baseUrl).href;
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
return link;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
convertToCustomMenuItem(item) {
|
|
65
|
+
return {
|
|
66
|
+
icon: item.icon.data.attributes.name,
|
|
67
|
+
link: item.link,
|
|
68
|
+
title: item.title,
|
|
69
|
+
externalLink: item.externalLink,
|
|
70
|
+
// Material icons should not come from strapi
|
|
71
|
+
materialIcon: false,
|
|
72
|
+
plausibleEvent: item.plausibleEvent,
|
|
73
|
+
customId: item.customId
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: StarpiMenuService, deps: [{ token: i1.StrapiSubscriptionService }, { token: MENU_SHARED_CONFIG, optional: true }, { token: STRAPI_API_CONFIG_TOKEN }, { token: i2.IconService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
77
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: StarpiMenuService, providedIn: 'root' }); }
|
|
78
|
+
}
|
|
79
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: StarpiMenuService, decorators: [{
|
|
80
|
+
type: Injectable,
|
|
81
|
+
args: [{
|
|
82
|
+
providedIn: 'root'
|
|
83
|
+
}]
|
|
84
|
+
}], ctorParameters: () => [{ type: i1.StrapiSubscriptionService }, { type: undefined, decorators: [{
|
|
85
|
+
type: Optional
|
|
86
|
+
}, {
|
|
87
|
+
type: Inject,
|
|
88
|
+
args: [MENU_SHARED_CONFIG]
|
|
89
|
+
}] }, { type: undefined, decorators: [{
|
|
90
|
+
type: Inject,
|
|
91
|
+
args: [STRAPI_API_CONFIG_TOKEN]
|
|
92
|
+
}] }, { type: i2.IconService }] });
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWVudS9zcmMvbGliL3NlcnZpY2VzL3N0cmFwaS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBQThDLHVCQUF1QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUcsT0FBTyxFQUFFLEdBQUcsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsZUFBZSxFQUFhLE1BQU0sMEJBQTBCLENBQUM7QUFFdEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFFeEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOENBQThDLENBQUM7Ozs7QUFLbEYsTUFBTSxPQUFPLGlCQUFpQjtJQUk1QixZQUE2QixrQkFBNkMsRUFDZixVQUE0QixFQUNwRCxZQUE2QixFQUM3QyxXQUF3QjtRQUhkLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBMkI7UUFDZixlQUFVLEdBQVYsVUFBVSxDQUFrQjtRQUVwRSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQU5sQyxzQkFBaUIsR0FBRyxtQkFBbUIsQ0FBQztRQUNqRCxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBTWQsSUFBSSxDQUFDLFVBQVUsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxZQUFZO1FBQ1YsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLHVCQUF1QixDQUFZLGVBQWUsQ0FBQyxVQUFVLENBQUM7YUFDdkcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQXlCLEVBQUUsRUFBRTtZQUN0Qyx5REFBeUQ7WUFFekQsTUFBTSxjQUFjLEdBQXFCLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ2pDLE9BQU8sY0FBYyxDQUFDO1lBQ3hCLENBQUM7WUFDRCxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzdDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFlLEVBQUUsRUFBRTtnQkFDaEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNsRCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztnQkFDbkQsSUFBSSxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ3pDLGdCQUFnQixDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQztnQkFDaEUsQ0FBQztnQkFFRCxJQUFJLGdCQUFnQixDQUFDLEdBQUcsS0FBSywwQkFBMEIsRUFBRSxDQUFDO29CQUN4RCwrRUFBK0U7b0JBQy9FLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQztvQkFDaEYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3BGLENBQUM7Z0JBRUQsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUMxRCxDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sY0FBYyxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDTixPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxJQUFZO1FBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQzlCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELElBQUksQ0FBQztZQUNILElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2Qsb0NBQW9DO1FBQ3RDLENBQUM7UUFBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ1gsSUFBSSxDQUFDO1lBQ0gsT0FBTyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDckQsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxJQUFlO1FBQzdDLE9BQU87WUFDTCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUk7WUFDcEMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMvQiw2Q0FBNkM7WUFDN0MsWUFBWSxFQUFFLEtBQUs7WUFDbkIsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQ25DLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtTQUN4QixDQUFBO0lBQ0gsQ0FBQzs4R0F2RVUsaUJBQWlCLDJEQUtOLGtCQUFrQiw2QkFDOUIsdUJBQXVCO2tIQU50QixpQkFBaUIsY0FGaEIsTUFBTTs7MkZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBTUksUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxrQkFBa0I7OzBCQUNyQyxNQUFNOzJCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBJY29uU2VydmljZSB9IGZyb20gXCJAdGlsZGUtbmxwL25neC1jb21tb25cIjtcclxuaW1wb3J0IHsgU3RyYXBpQXBpQ29uZmlnLCBTdHJhcGlTdWJzY3JpcHRpb25TZXJ2aWNlLCBTVFJBUElfQVBJX0NPTkZJR19UT0tFTiB9IGZyb20gXCJAdGlsZGUtbmxwL25neC1zdHJhcGlcIjtcclxuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgQ29sbGVjdGlvblR5cGVzLCBNZW51SXRlbXMgfSBmcm9tIFwiQHRpbGRlLW5scC9zdHJhcGktbW9kZWxzXCI7XHJcbmltcG9ydCB7IEN1c3RvbU1lbnVJdGVtIH0gZnJvbSBcIi4uL21vZGVscy9jdXN0b20tbWVudS1pdGVtXCI7XHJcbmltcG9ydCB7IE1FTlVfSUNPTl9TVFJBUElfRVhURU5TSU9OIH0gZnJvbSBcIi4uL21vZGVscy9tZW51LWljb24tc3RyYXBpLWV4dGVuc2lvbi5jb25zdFwiO1xyXG5pbXBvcnQgeyBNZW51U2hhcmVkQ29uZmlnIH0gZnJvbSBcIi4uL21vZGVscy9tZW51LXNoYXJlZC1jb25maWcubW9kZWxcIjtcclxuaW1wb3J0IHsgTUVOVV9TSEFSRURfQ09ORklHIH0gZnJvbSBcIi4uL2luamVjdGlvbi10b2tlbnMvbWVudS1zaGFyZWQtY29uZmlnLnRva2VuXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdGFycGlNZW51U2VydmljZSB7XHJcbiAgcmVhZG9ubHkgc3ZnSWNvbk5hbWVQcmVmaXggPSBcInN0cmFwaS1tZW51LWljb24tXCI7XHJcbiAgaW1nQmFzZVVybCA9ICcnO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHN0cmFwaVN1YnNjcmlwdGlvbjogU3RyYXBpU3Vic2NyaXB0aW9uU2VydmljZSxcclxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTUVOVV9TSEFSRURfQ09ORklHKSBwcml2YXRlIHJlYWRvbmx5IG1lbnVDb25maWc6IE1lbnVTaGFyZWRDb25maWcsXHJcbiAgICBASW5qZWN0KFNUUkFQSV9BUElfQ09ORklHX1RPS0VOKSBzdHJhcGlDb25maWc6IFN0cmFwaUFwaUNvbmZpZyxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaWNvblNlcnZpY2U6IEljb25TZXJ2aWNlKSB7XHJcbiAgICB0aGlzLmltZ0Jhc2VVcmwgPSBzdHJhcGlDb25maWcuYXBpVXJsO1xyXG4gIH1cclxuXHJcbiAgZ2V0TWVudUl0ZW1zKCk6IE9ic2VydmFibGU8Q3VzdG9tTWVudUl0ZW1bXT4ge1xyXG4gICAgY29uc3QgcmVzcG9uc2VPYnMgPSB0aGlzLnN0cmFwaVN1YnNjcmlwdGlvbi5zdWJzY3JpYmVDb2xsZWN0aW9uVHlwZTxNZW51SXRlbXM+KENvbGxlY3Rpb25UeXBlcy5NRU5VX0lURU1TKVxyXG4gICAgICAucGlwZShtYXAoKGl0ZW1zOiBNZW51SXRlbXNbXSB8IG51bGwpID0+IHtcclxuICAgICAgICAvLyBSZW1vdmUgZGlzYWJsZWQgaXRlbXMgc28gdGhleSBhcmUgbm90IHByb2Nlc3NlZCBsYXRlci5cclxuXHJcbiAgICAgICAgY29uc3QgY29udmVydGVkSXRlbXM6IEN1c3RvbU1lbnVJdGVtW10gPSBbXTtcclxuICAgICAgICBpZiAoIWl0ZW1zIHx8IGl0ZW1zLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgcmV0dXJuIGNvbnZlcnRlZEl0ZW1zO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpdGVtcyA9IGl0ZW1zLmZpbHRlcihpdGVtID0+ICFpdGVtLmRpc2FibGVkKTtcclxuICAgICAgICBpdGVtcy5mb3JFYWNoKChtZW51OiBNZW51SXRlbXMpID0+IHtcclxuICAgICAgICAgIG1lbnUubGluayA9IHRoaXMuYWRkQmFzZVVybElmTmVjZXNzYXJ5KG1lbnUubGluayk7XHJcbiAgICAgICAgICBjb25zdCBvcmlnaW5hbE1lbnVJY29uID0gbWVudS5pY29uLmRhdGEuYXR0cmlidXRlcztcclxuICAgICAgICAgIGlmIChvcmlnaW5hbE1lbnVJY29uLnVybC5zdGFydHNXaXRoKCcvJykpIHtcclxuICAgICAgICAgICAgb3JpZ2luYWxNZW51SWNvbi51cmwgPSB0aGlzLmltZ0Jhc2VVcmwgKyBvcmlnaW5hbE1lbnVJY29uLnVybDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAob3JpZ2luYWxNZW51SWNvbi5leHQgPT09IE1FTlVfSUNPTl9TVFJBUElfRVhURU5TSU9OKSB7XHJcbiAgICAgICAgICAgIC8vIGFkZCBjdXN0b20gcHJlZml4IHNvIHRoYXQgaXQgaXMgbm90IGVhc3kgdG8gbWl4IHdpdGggb3RoZXIgaWNvbnMgaW4gcmVnaXN0cnlcclxuICAgICAgICAgICAgbWVudS5pY29uLmRhdGEuYXR0cmlidXRlcy5uYW1lID0gdGhpcy5zdmdJY29uTmFtZVByZWZpeCArIG9yaWdpbmFsTWVudUljb24ubmFtZTtcclxuICAgICAgICAgICAgdGhpcy5pY29uU2VydmljZS5yZWdpc3Rlckljb25Gcm9tVXJsKG9yaWdpbmFsTWVudUljb24ubmFtZSwgb3JpZ2luYWxNZW51SWNvbi51cmwpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGNvbnZlcnRlZEl0ZW1zLnB1c2godGhpcy5jb252ZXJ0VG9DdXN0b21NZW51SXRlbShtZW51KSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIGNvbnZlcnRlZEl0ZW1zO1xyXG4gICAgICB9KSk7XHJcbiAgICByZXR1cm4gcmVzcG9uc2VPYnM7XHJcbiAgfVxyXG5cclxuICB1bnN1YnNjcmliZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3RyYXBpU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKENvbGxlY3Rpb25UeXBlcy5NRU5VX0lURU1TKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkQmFzZVVybElmTmVjZXNzYXJ5KGxpbms6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXRoaXMubWVudUNvbmZpZz8uYmFzZVVybCkge1xyXG4gICAgICByZXR1cm4gbGluaztcclxuICAgIH1cclxuICAgIHRyeSB7XHJcbiAgICAgIG5ldyBVUkwobGluayk7XHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eVxyXG4gICAgfSBjYXRjaCB7IH1cclxuICAgIHRyeSB7XHJcbiAgICAgIHJldHVybiBuZXcgVVJMKGxpbmssIHRoaXMubWVudUNvbmZpZy5iYXNlVXJsKS5ocmVmO1xyXG4gICAgfSBjYXRjaCB7XHJcbiAgICAgIHJldHVybiBsaW5rO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb252ZXJ0VG9DdXN0b21NZW51SXRlbShpdGVtOiBNZW51SXRlbXMpOiBDdXN0b21NZW51SXRlbSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBpY29uOiBpdGVtLmljb24uZGF0YS5hdHRyaWJ1dGVzLm5hbWUsXHJcbiAgICAgIGxpbms6IGl0ZW0ubGluayxcclxuICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXHJcbiAgICAgIGV4dGVybmFsTGluazogaXRlbS5leHRlcm5hbExpbmssXHJcbiAgICAgIC8vIE1hdGVyaWFsIGljb25zIHNob3VsZCBub3QgY29tZSBmcm9tIHN0cmFwaVxyXG4gICAgICBtYXRlcmlhbEljb246IGZhbHNlLFxyXG4gICAgICBwbGF1c2libGVFdmVudDogaXRlbS5wbGF1c2libGVFdmVudCxcclxuICAgICAgY3VzdG9tSWQ6IGl0ZW0uY3VzdG9tSWRcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
package/esm2022/public-api.mjs
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Public API Surface of ngx-menu
|
|
3
|
-
*/
|
|
4
|
-
export * from './lib/components/side-nav-menu';
|
|
5
|
-
export * from './lib/injection-tokens';
|
|
6
|
-
export * from './lib/models';
|
|
7
|
-
export * from './lib/menu.module';
|
|
8
|
-
export * from './lib/components/menu-item-icon/menu.model';
|
|
9
|
-
export * from './lib/components/side-nav-menu/side-nav-menu.component';
|
|
10
|
-
export * from './lib/components/modal-nav-menu/modal-nav-menu.component';
|
|
11
|
-
export * from './lib/components/menu-item-icon/menu-item-icon.component';
|
|
12
|
-
export * from './lib/components/menu-columns/menu-columns.component';
|
|
13
|
-
export * from './lib/components/nav-base/nav-base.component';
|
|
14
|
-
export * from './lib/components/nav-base/models';
|
|
15
|
-
export * from "./lib/services";
|
|
1
|
+
/*
|
|
2
|
+
* Public API Surface of ngx-menu
|
|
3
|
+
*/
|
|
4
|
+
export * from './lib/components/side-nav-menu';
|
|
5
|
+
export * from './lib/injection-tokens';
|
|
6
|
+
export * from './lib/models';
|
|
7
|
+
export * from './lib/menu.module';
|
|
8
|
+
export * from './lib/components/menu-item-icon/menu.model';
|
|
9
|
+
export * from './lib/components/side-nav-menu/side-nav-menu.component';
|
|
10
|
+
export * from './lib/components/modal-nav-menu/modal-nav-menu.component';
|
|
11
|
+
export * from './lib/components/menu-item-icon/menu-item-icon.component';
|
|
12
|
+
export * from './lib/components/menu-columns/menu-columns.component';
|
|
13
|
+
export * from './lib/components/nav-base/nav-base.component';
|
|
14
|
+
export * from './lib/components/nav-base/models';
|
|
15
|
+
export * from "./lib/services";
|
|
16
16
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC1tZW51L3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBR0gsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLHdEQUF3RCxDQUFDO0FBQ3ZFLGNBQWMsMERBQTBELENBQUM7QUFDekUsY0FBYywwREFBMEQsQ0FBQztBQUN6RSxjQUFjLHNEQUFzRCxDQUFDO0FBQ3JFLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIG5neC1tZW51XHJcbiAqL1xyXG5cclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvc2lkZS1uYXYtbWVudSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2luamVjdGlvbi10b2tlbnMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZW51Lm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbWVudS1pdGVtLWljb24vbWVudS5tb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvc2lkZS1uYXYtbWVudS9zaWRlLW5hdi1tZW51LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbW9kYWwtbmF2LW1lbnUvbW9kYWwtbmF2LW1lbnUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tZW51LWl0ZW0taWNvbi9tZW51LWl0ZW0taWNvbi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL21lbnUtY29sdW1ucy9tZW51LWNvbHVtbnMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9uYXYtYmFzZS9uYXYtYmFzZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL25hdi1iYXNlL21vZGVscyc7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9zZXJ2aWNlc1wiO1xyXG4iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public-api';
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
5
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlsZGUtbmxwLW5neC1tZW51LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1lbnUvc3JjL3RpbGRlLW5scC1uZ3gtbWVudS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
|