ng-mat-multilevel-menu 7.0.2
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/animation.mjs +31 -0
- package/esm2022/lib/app.model.mjs +7 -0
- package/esm2022/lib/common-utils.mjs +9 -0
- package/esm2022/lib/constants.mjs +19 -0
- package/esm2022/lib/list-item/list-item-content/list-item-content.component.mjs +68 -0
- package/esm2022/lib/list-item/list-item.component.mjs +176 -0
- package/esm2022/lib/materials.module.mjs +35 -0
- package/esm2022/lib/multilevel-menu.service.mjs +93 -0
- package/esm2022/lib/ng-material-multilevel-menu.component.mjs +204 -0
- package/esm2022/lib/ng-material-multilevel-menu.module.mjs +36 -0
- package/esm2022/ng-mat-multilevel-menu.mjs +5 -0
- package/esm2022/public_api.mjs +9 -0
- package/fesm2022/ng-mat-multilevel-menu.mjs +651 -0
- package/fesm2022/ng-mat-multilevel-menu.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/animation.d.ts +3 -0
- package/lib/app.model.d.ts +52 -0
- package/lib/common-utils.d.ts +4 -0
- package/lib/constants.d.ts +18 -0
- package/lib/list-item/list-item-content/list-item-content.component.d.ts +20 -0
- package/lib/list-item/list-item.component.d.ts +41 -0
- package/lib/materials.module.d.ts +9 -0
- package/lib/multilevel-menu.service.d.ts +21 -0
- package/lib/ng-material-multilevel-menu.component.d.ts +38 -0
- package/lib/ng-material-multilevel-menu.module.d.ts +12 -0
- package/package.json +44 -0
- package/public_api.d.ts +5 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { animate, group, state, style, transition, trigger } from '@angular/animations';
|
|
2
|
+
export const SlideInOut = trigger('SlideInOut', [
|
|
3
|
+
state('in', style({ height: '*', opacity: 0 })),
|
|
4
|
+
transition(':leave', [
|
|
5
|
+
style({ height: '*', opacity: 0.2 }),
|
|
6
|
+
group([
|
|
7
|
+
animate(200, style({ height: 0 })),
|
|
8
|
+
animate('200ms ease-out', style({ opacity: 0 }))
|
|
9
|
+
])
|
|
10
|
+
]),
|
|
11
|
+
transition(':enter', [
|
|
12
|
+
style({ height: '0', opacity: 0 }),
|
|
13
|
+
group([
|
|
14
|
+
animate(200, style({ height: '*' })),
|
|
15
|
+
animate('400ms ease-out', style({ opacity: 1 }))
|
|
16
|
+
])
|
|
17
|
+
])
|
|
18
|
+
]);
|
|
19
|
+
export const ExpandedLTR = trigger('ExpandedLTR', [
|
|
20
|
+
state('no', style({ transform: 'rotate(-90deg)' })),
|
|
21
|
+
state('yes', style({ transform: 'rotate(0deg)', })),
|
|
22
|
+
transition('no => yes', animate(200)),
|
|
23
|
+
transition('yes => no', animate(200))
|
|
24
|
+
]);
|
|
25
|
+
export const ExpandedRTL = trigger('ExpandedRTL', [
|
|
26
|
+
state('no', style({ transform: 'rotate(90deg)' })),
|
|
27
|
+
state('yes', style({ transform: 'rotate(0deg)', })),
|
|
28
|
+
transition('no => yes', animate(200)),
|
|
29
|
+
transition('yes => no', animate(200))
|
|
30
|
+
]);
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWF0ZXJpYWwtbXVsdGlsZXZlbC1tZW51L3NyYy9saWIvYW5pbWF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXhGLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsWUFBWSxFQUFFO0lBQzVDLEtBQUssQ0FDRCxJQUFJLEVBQ0osS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuQyxVQUFVLENBQUMsUUFBUSxFQUFFO1FBQ2pCLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ3BDLEtBQUssQ0FBQztZQUNOLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbEMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQy9DLENBQUM7S0FDTCxDQUFDO0lBQ0YsVUFBVSxDQUFDLFFBQVEsRUFBRTtRQUNqQixLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNsQyxLQUFLLENBQUM7WUFDTixPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3BDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUMvQyxDQUFDO0tBQ0wsQ0FBQztDQUNMLENBQ0osQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsYUFBYSxFQUFFO0lBQzlDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztJQUNuRCxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEdBQUcsQ0FBQyxDQUFDO0lBRW5ELFVBQVUsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0NBQ3hDLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsYUFBYSxFQUFFO0lBQzlDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7SUFDbEQsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsY0FBYyxHQUFHLENBQUMsQ0FBQztJQUVuRCxVQUFVLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQyxVQUFVLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUN4QyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBncm91cCwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcblxyXG5leHBvcnQgY29uc3QgU2xpZGVJbk91dCA9IHRyaWdnZXIoJ1NsaWRlSW5PdXQnLCBbXHJcbiAgICBzdGF0ZShcclxuICAgICAgICAnaW4nLFxyXG4gICAgICAgIHN0eWxlKHsgaGVpZ2h0OiAnKicsIG9wYWNpdHk6IDAgfSkpLFxyXG4gICAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcclxuICAgICAgICAgICAgc3R5bGUoeyBoZWlnaHQ6ICcqJywgb3BhY2l0eTogMC4yIH0pLFxyXG4gICAgICAgICAgICBncm91cChbXHJcbiAgICAgICAgICAgIGFuaW1hdGUoMjAwLCBzdHlsZSh7IGhlaWdodDogMCB9KSksXHJcbiAgICAgICAgICAgIGFuaW1hdGUoJzIwMG1zIGVhc2Utb3V0Jywgc3R5bGUoeyBvcGFjaXR5OiAwIH0pKVxyXG4gICAgICAgICAgICBdKVxyXG4gICAgICAgIF0pLFxyXG4gICAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcclxuICAgICAgICAgICAgc3R5bGUoeyBoZWlnaHQ6ICcwJywgb3BhY2l0eTogMCB9KSxcclxuICAgICAgICAgICAgZ3JvdXAoW1xyXG4gICAgICAgICAgICBhbmltYXRlKDIwMCwgc3R5bGUoeyBoZWlnaHQ6ICcqJyB9KSksXHJcbiAgICAgICAgICAgIGFuaW1hdGUoJzQwMG1zIGVhc2Utb3V0Jywgc3R5bGUoeyBvcGFjaXR5OiAxIH0pKVxyXG4gICAgICAgICAgICBdKVxyXG4gICAgICAgIF0pXHJcbiAgICBdXHJcbik7XHJcblxyXG5leHBvcnQgY29uc3QgRXhwYW5kZWRMVFIgPSB0cmlnZ2VyKCdFeHBhbmRlZExUUicsIFtcclxuICAgIHN0YXRlKCdubycsIHN0eWxlKHsgdHJhbnNmb3JtOiAncm90YXRlKC05MGRlZyknIH0pKSxcclxuICAgIHN0YXRlKCd5ZXMnLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3JvdGF0ZSgwZGVnKScsIH0pKSxcclxuXHJcbiAgICB0cmFuc2l0aW9uKCdubyA9PiB5ZXMnLCBhbmltYXRlKDIwMCkpLFxyXG4gICAgdHJhbnNpdGlvbigneWVzID0+IG5vJywgYW5pbWF0ZSgyMDApKVxyXG5dKTtcclxuXHJcbmV4cG9ydCBjb25zdCBFeHBhbmRlZFJUTCA9IHRyaWdnZXIoJ0V4cGFuZGVkUlRMJywgW1xyXG4gICAgc3RhdGUoJ25vJywgc3R5bGUoeyB0cmFuc2Zvcm06ICdyb3RhdGUoOTBkZWcpJyB9KSksXHJcbiAgICBzdGF0ZSgneWVzJywgc3R5bGUoeyB0cmFuc2Zvcm06ICdyb3RhdGUoMGRlZyknLCB9KSksXHJcblxyXG4gICAgdHJhbnNpdGlvbignbm8gPT4geWVzJywgYW5pbWF0ZSgyMDApKSxcclxuICAgIHRyYW5zaXRpb24oJ3llcyA9PiBubycsIGFuaW1hdGUoMjAwKSlcclxuXSk7XHJcbiJdfQ==
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export var ExpandCollapseStatusEnum;
|
|
2
|
+
(function (ExpandCollapseStatusEnum) {
|
|
3
|
+
ExpandCollapseStatusEnum["expand"] = "expand";
|
|
4
|
+
ExpandCollapseStatusEnum["collapse"] = "collapse";
|
|
5
|
+
ExpandCollapseStatusEnum["neutral"] = "neutral";
|
|
6
|
+
})(ExpandCollapseStatusEnum || (ExpandCollapseStatusEnum = {}));
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWF0ZXJpYWwtbXVsdGlsZXZlbC1tZW51L3NyYy9saWIvYXBwLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW9EQSxNQUFNLENBQU4sSUFBWSx3QkFJWDtBQUpELFdBQVksd0JBQXdCO0lBQ2hDLDZDQUFpQixDQUFBO0lBQ2pCLGlEQUFxQixDQUFBO0lBQ3JCLCtDQUFtQixDQUFBO0FBQ3ZCLENBQUMsRUFKVyx3QkFBd0IsS0FBeEIsd0JBQXdCLFFBSW5DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmF2aWdhdGlvbkV4dHJhcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE11bHRpbGV2ZWxOb2RlIHtcclxuICBpZD86IHN0cmluZztcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIGZhSWNvbj86IHN0cmluZztcclxuICBpY29uPzogc3RyaW5nO1xyXG4gIGltYWdlSWNvbj86IHN0cmluZztcclxuICBzdmdJY29uPzogc3RyaW5nO1xyXG4gIGFjdGl2ZUZhSWNvbj86IHN0cmluZztcclxuICBhY3RpdmVJY29uPzogc3RyaW5nO1xyXG4gIGFjdGl2ZUltYWdlSWNvbj86IHN0cmluZztcclxuICBhY3RpdmVTdmdJY29uPzogc3RyaW5nO1xyXG4gIGhpZGRlbj86IGJvb2xlYW47XHJcbiAgbGluaz86IHN0cmluZztcclxuICBleHRlcm5hbFJlZGlyZWN0PzogYm9vbGVhbjtcclxuICBocmVmVGFyZ2V0VHlwZT86IHN0cmluZztcclxuICBkYXRhPzogYW55O1xyXG4gIGl0ZW1zPzogTXVsdGlsZXZlbE5vZGVbXTtcclxuICBvblNlbGVjdGVkPzogRnVuY3Rpb247XHJcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xyXG4gIGV4cGFuZGVkPzogYm9vbGVhbjtcclxuICBuYXZpZ2F0aW9uRXh0cmFzPzogTmF2aWdhdGlvbkV4dHJhcztcclxuICBkb250RW1pdD86IGJvb2xlYW47XHJcbiAgaGFzQ2hpbGRyZW4/OiBib29sZWFuO1xyXG4gIGlzU2VsZWN0ZWQ/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpZ3VyYXRpb24ge1xyXG4gICAgY2xhc3NuYW1lPzogc3RyaW5nO1xyXG4gICAgcGFkZGluZ0F0U3RhcnQ/OiBib29sZWFuO1xyXG4gICAgYmFja2dyb3VuZENvbG9yPzogc3RyaW5nO1xyXG4gICAgbGlzdEJhY2tncm91bmRDb2xvcj86IHN0cmluZztcclxuICAgIGZvbnRDb2xvcj86IHN0cmluZztcclxuICAgIHNlbGVjdGVkTGlzdEZvbnRDb2xvcj86IHN0cmluZztcclxuICAgIGludGVyZmFjZVdpdGhSb3V0ZT86IGJvb2xlYW47XHJcbiAgICBjb2xsYXBzZU9uU2VsZWN0PzogYm9vbGVhbjtcclxuICAgIGhpZ2hsaWdodE9uU2VsZWN0PzogYm9vbGVhbjtcclxuICAgIHVzZURpdmlkZXJzPzogYm9vbGVhbjtcclxuICAgIHJ0bExheW91dD86IGJvb2xlYW47XHJcbiAgICBjdXN0b21UZW1wbGF0ZT86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQmFja2dyb3VuZFN0eWxlIHtcclxuICAgIGJhY2tncm91bmQ6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBMaXN0U3R5bGUge1xyXG4gICAgYmFja2dyb3VuZDogc3RyaW5nO1xyXG4gICAgY29sb3I6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGVudW0gRXhwYW5kQ29sbGFwc2VTdGF0dXNFbnVtIHtcclxuICAgIGV4cGFuZCA9ICdleHBhbmQnLFxyXG4gICAgY29sbGFwc2UgPSAnY29sbGFwc2UnLFxyXG4gICAgbmV1dHJhbCA9ICduZXV0cmFsJyxcclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export class CommonUtils {
|
|
2
|
+
static { this.isNullOrUndefinedOrEmpty = function (object) {
|
|
3
|
+
return CommonUtils.isNullOrUndefined(object) || object === '';
|
|
4
|
+
}; }
|
|
5
|
+
static { this.isNullOrUndefined = function (object) {
|
|
6
|
+
return object === null || object === undefined;
|
|
7
|
+
}; }
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWF0ZXJpYWwtbXVsdGlsZXZlbC1tZW51L3NyYy9saWIvY29tbW9uLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxXQUFXO2FBRWYsNkJBQXdCLEdBQUcsVUFBVSxNQUFXO1FBQ3JELE9BQU8sV0FBVyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sS0FBSyxFQUFFLENBQUM7SUFDaEUsQ0FBQyxDQUFDO2FBRUssc0JBQWlCLEdBQUcsVUFBVSxNQUFXO1FBQzlDLE9BQU8sTUFBTSxLQUFLLElBQUksSUFBSSxNQUFNLEtBQUssU0FBUyxDQUFDO0lBQ2pELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBDb21tb25VdGlscyB7XHJcblxyXG4gIHN0YXRpYyBpc051bGxPclVuZGVmaW5lZE9yRW1wdHkgPSBmdW5jdGlvbiAob2JqZWN0OiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBDb21tb25VdGlscy5pc051bGxPclVuZGVmaW5lZChvYmplY3QpIHx8IG9iamVjdCA9PT0gJyc7XHJcbiAgfTtcclxuXHJcbiAgc3RhdGljIGlzTnVsbE9yVW5kZWZpbmVkID0gZnVuY3Rpb24gKG9iamVjdDogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gb2JqZWN0ID09PSBudWxsIHx8IG9iamVjdCA9PT0gdW5kZWZpbmVkO1xyXG4gIH07XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export const CONSTANT = {
|
|
2
|
+
PADDING_AT_START: true,
|
|
3
|
+
DEFAULT_CLASS_NAME: `amml-container`,
|
|
4
|
+
DEFAULT_LIST_CLASS_NAME: `amml-item`,
|
|
5
|
+
SELECTED_LIST_CLASS_NAME: `selected-amml-item`,
|
|
6
|
+
ACTIVE_ITEM_CLASS_NAME: `active-amml-item`,
|
|
7
|
+
DISABLED_ITEM_CLASS_NAME: `disabled-amml-item`,
|
|
8
|
+
SUBMENU_ITEM_CLASS_NAME: `amml-submenu`,
|
|
9
|
+
HAS_SUBMENU_ITEM_CLASS_NAME: `has-amml-submenu`,
|
|
10
|
+
DEFAULT_SELECTED_FONT_COLOR: `#1976d2`,
|
|
11
|
+
DEFAULT_LIST_BACKGROUND_COLOR: `transparent`,
|
|
12
|
+
DEFAULT_LIST_FONT_COLOR: `rgba(0,0,0,.87)`,
|
|
13
|
+
DEFAULT_HREF_TARGET_TYPE: '_self',
|
|
14
|
+
ERROR_MESSAGE: `Invalid data for material Multilevel List Component`,
|
|
15
|
+
POSSIBLE: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789',
|
|
16
|
+
YES: 'yes',
|
|
17
|
+
NO: 'no'
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWF0ZXJpYWwtbXVsdGlsZXZlbC1tZW51L3NyYy9saWIvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRztJQUNwQixnQkFBZ0IsRUFBRSxJQUFJO0lBQ3RCLGtCQUFrQixFQUFFLGdCQUFnQjtJQUNwQyx1QkFBdUIsRUFBRSxXQUFXO0lBQ3BDLHdCQUF3QixFQUFFLG9CQUFvQjtJQUM5QyxzQkFBc0IsRUFBRSxrQkFBa0I7SUFDMUMsd0JBQXdCLEVBQUUsb0JBQW9CO0lBQzlDLHVCQUF1QixFQUFFLGNBQWM7SUFDdkMsMkJBQTJCLEVBQUUsa0JBQWtCO0lBQy9DLDJCQUEyQixFQUFFLFNBQVM7SUFDdEMsNkJBQTZCLEVBQUUsYUFBYTtJQUM1Qyx1QkFBdUIsRUFBRSxpQkFBaUI7SUFDMUMsd0JBQXdCLEVBQUUsT0FBTztJQUNqQyxhQUFhLEVBQUUscURBQXFEO0lBQ3BFLFFBQVEsRUFBRSxnRUFBZ0U7SUFDMUUsR0FBRyxFQUFFLEtBQUs7SUFDVixFQUFFLEVBQUUsSUFBSTtDQUNYLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgQ09OU1RBTlQgPSB7XHJcbiAgICBQQURESU5HX0FUX1NUQVJUOiB0cnVlLFxyXG4gICAgREVGQVVMVF9DTEFTU19OQU1FOiBgYW1tbC1jb250YWluZXJgLFxyXG4gICAgREVGQVVMVF9MSVNUX0NMQVNTX05BTUU6IGBhbW1sLWl0ZW1gLFxyXG4gICAgU0VMRUNURURfTElTVF9DTEFTU19OQU1FOiBgc2VsZWN0ZWQtYW1tbC1pdGVtYCxcclxuICAgIEFDVElWRV9JVEVNX0NMQVNTX05BTUU6IGBhY3RpdmUtYW1tbC1pdGVtYCxcclxuICAgIERJU0FCTEVEX0lURU1fQ0xBU1NfTkFNRTogYGRpc2FibGVkLWFtbWwtaXRlbWAsXHJcbiAgICBTVUJNRU5VX0lURU1fQ0xBU1NfTkFNRTogYGFtbWwtc3VibWVudWAsXHJcbiAgICBIQVNfU1VCTUVOVV9JVEVNX0NMQVNTX05BTUU6IGBoYXMtYW1tbC1zdWJtZW51YCxcclxuICAgIERFRkFVTFRfU0VMRUNURURfRk9OVF9DT0xPUjogYCMxOTc2ZDJgLFxyXG4gICAgREVGQVVMVF9MSVNUX0JBQ0tHUk9VTkRfQ09MT1I6IGB0cmFuc3BhcmVudGAsXHJcbiAgICBERUZBVUxUX0xJU1RfRk9OVF9DT0xPUjogYHJnYmEoMCwwLDAsLjg3KWAsXHJcbiAgICBERUZBVUxUX0hSRUZfVEFSR0VUX1RZUEU6ICdfc2VsZicsXHJcbiAgICBFUlJPUl9NRVNTQUdFOiBgSW52YWxpZCBkYXRhIGZvciBtYXRlcmlhbCBNdWx0aWxldmVsIExpc3QgQ29tcG9uZW50YCxcclxuICAgIFBPU1NJQkxFOiAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODknLFxyXG4gICAgWUVTOiAneWVzJyxcclxuICAgIE5POiAnbm8nXHJcbn07XHJcbiJdfQ==
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { ExpandedLTR, ExpandedRTL } from '../../animation';
|
|
3
|
+
import { CommonUtils } from '../../common-utils';
|
|
4
|
+
import { CONSTANT } from '../../constants';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common";
|
|
7
|
+
import * as i2 from "@angular/material/icon";
|
|
8
|
+
import * as i3 from "@angular/cdk/bidi";
|
|
9
|
+
import * as i4 from "@angular/router";
|
|
10
|
+
export class ListItemContentComponent {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.nodeConfiguration = null;
|
|
13
|
+
// NOOP
|
|
14
|
+
}
|
|
15
|
+
ngOnInit() {
|
|
16
|
+
// NOOP
|
|
17
|
+
}
|
|
18
|
+
getListIcon(node) {
|
|
19
|
+
if (!CommonUtils.isNullOrUndefinedOrEmpty(node.icon)) {
|
|
20
|
+
return `icon`;
|
|
21
|
+
}
|
|
22
|
+
else if (!CommonUtils.isNullOrUndefinedOrEmpty(node.faIcon)) {
|
|
23
|
+
return `faIcon`;
|
|
24
|
+
}
|
|
25
|
+
else if (!CommonUtils.isNullOrUndefinedOrEmpty(node.imageIcon)) {
|
|
26
|
+
return `imageIcon`;
|
|
27
|
+
}
|
|
28
|
+
else if (!CommonUtils.isNullOrUndefinedOrEmpty(node.svgIcon)) {
|
|
29
|
+
return `svgIcon`;
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
return ``;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
getHrefTargetType() {
|
|
36
|
+
return this.node.hrefTargetType ? this.node.hrefTargetType : CONSTANT.DEFAULT_HREF_TARGET_TYPE;
|
|
37
|
+
}
|
|
38
|
+
getSelectedSvgIcon() {
|
|
39
|
+
return this.node.isSelected && this.node.activeSvgIcon ? this.node.activeSvgIcon : this.node.svgIcon;
|
|
40
|
+
}
|
|
41
|
+
getSelectedIcon() {
|
|
42
|
+
return this.node.isSelected && this.node.activeIcon ? this.node.activeIcon : this.node.icon;
|
|
43
|
+
}
|
|
44
|
+
getSelectedFaIcon() {
|
|
45
|
+
return this.node.isSelected && this.node.activeFaIcon ? this.node.activeFaIcon : this.node.faIcon;
|
|
46
|
+
}
|
|
47
|
+
getSelectedImageIcon() {
|
|
48
|
+
return this.node.isSelected && this.node.activeImageIcon ? this.node.activeImageIcon : this.node.imageIcon;
|
|
49
|
+
}
|
|
50
|
+
nodeExpandStatus() {
|
|
51
|
+
return this.node.expanded ? CONSTANT.YES : CONSTANT.NO;
|
|
52
|
+
}
|
|
53
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ListItemContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
54
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ListItemContentComponent, selector: "ng-list-item-content", inputs: { node: "node", isRtlLayout: "isRtlLayout", listContentStyle: "listContentStyle", nodeConfiguration: "nodeConfiguration" }, ngImport: i0, template: "<ng-container *ngTemplateOutlet=\"node.externalRedirect ? redirectLinkTemplate : routerLinkTemplate\"></ng-container>\r\n\r\n<ng-template #redirectLinkTemplate>\r\n <a class=\"anml-link\" [href]=\"node.link\" [target]=\"getHrefTargetType()\" [ngStyle]=\"listContentStyle\">\r\n <ng-container *ngTemplateOutlet=\"isRtlLayout ? linkLabelRtlOutlet : linkLabelLtrOutlet\"></ng-container>\r\n </a>\r\n</ng-template>\r\n\r\n<ng-template #routerLinkTemplate>\r\n <ng-container *ngIf=\"node.link && nodeConfiguration.interfaceWithRoute; else defaultContentContainer\">\r\n <a class=\"anml-link\" [routerLink]=\"node.link\" [ngStyle]=\"listContentStyle\">\r\n <ng-container *ngTemplateOutlet=\"isRtlLayout ? linkLabelRtlOutlet : linkLabelLtrOutlet\"></ng-container>\r\n </a>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #defaultContentContainer>\r\n <a class=\"anml-link\" [ngStyle]=\"listContentStyle\">\r\n <ng-container *ngTemplateOutlet=\"isRtlLayout ? linkLabelRtlOutlet : linkLabelLtrOutlet\"></ng-container>\r\n </a>\r\n</ng-template>\r\n\r\n<ng-template #linkLabelLtrOutlet>\r\n <div class=\"anml-data\" [dir]=\"'ltr'\">\r\n <ng-container *ngTemplateOutlet=\"iconContainer\"></ng-container>\r\n <span class=\"label\">{{node.label}}</span>\r\n </div>\r\n <div class=\"amml-icon-arrow-container\" *ngIf='node.hasChildren'>\r\n <mat-icon [@ExpandedLTR]=\"nodeExpandStatus()\">\r\n keyboard_arrow_down\r\n </mat-icon>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #linkLabelRtlOutlet>\r\n <div class=\"anml-data\" [dir]=\"'rtl'\">\r\n <ng-container *ngTemplateOutlet=\"iconContainer\"></ng-container>\r\n <span class=\"label\">{{node.label}}</span>\r\n </div>\r\n <div class=\"amml-icon-arrow-container\" *ngIf='node.hasChildren'>\r\n <mat-icon [@ExpandedRTL]=\"nodeExpandStatus()\">\r\n keyboard_arrow_down\r\n </mat-icon>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #iconContainer>\r\n <div class=\"icon-container\" [ngSwitch]=\"getListIcon(node)\">\r\n <span *ngSwitchCase=\"'faIcon'\" class=\"amml-icon amml-icon-fa\">\r\n <i [ngClass]=\"getSelectedFaIcon()\"></i>\r\n </span>\r\n <mat-icon *ngSwitchCase=\"'icon'\" class=\"amml-icon\">\r\n {{getSelectedIcon()}}\r\n </mat-icon>\r\n <mat-icon *ngSwitchCase=\"'svgIcon'\" class=\"amml-icon amml-svg-icon\"\r\n svgIcon=\"{{getSelectedSvgIcon()}}\">\r\n </mat-icon>\r\n <img *ngSwitchCase=\"'imageIcon'\" class=\"amml-icon amml-img-icon\"\r\n src=\"{{getSelectedImageIcon()}}\" alt=\"{{node.label}}\"/>\r\n </div>\r\n</ng-template>\r\n\r\n", styles: [".amml-item{position:relative;cursor:pointer}.anml-link{width:100%;display:flex;justify-content:flex-start;text-transform:capitalize;text-decoration:none}.anml-data{width:100%;height:48px;display:flex;justify-content:flex-start}.icon-container{display:flex;flex-direction:column;justify-content:center}.amml-icon-fa{font-size:20px}.label{line-height:48px;font-weight:400}.amml-svg-icon{width:22px;height:22px;margin-top:-12px}.amml-img-icon{flex-shrink:0;width:40px;height:40px;border-radius:50%;object-fit:cover}.amml-icon-arrow-container{direction:ltr;display:flex;align-items:center}div[dir=ltr] .amml-icon{margin-right:16px}div[dir=rtl] .amml-icon{margin-left:16px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "directive", type: i4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }], animations: [ExpandedLTR, ExpandedRTL] }); }
|
|
55
|
+
}
|
|
56
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ListItemContentComponent, decorators: [{
|
|
57
|
+
type: Component,
|
|
58
|
+
args: [{ selector: 'ng-list-item-content', animations: [ExpandedLTR, ExpandedRTL], template: "<ng-container *ngTemplateOutlet=\"node.externalRedirect ? redirectLinkTemplate : routerLinkTemplate\"></ng-container>\r\n\r\n<ng-template #redirectLinkTemplate>\r\n <a class=\"anml-link\" [href]=\"node.link\" [target]=\"getHrefTargetType()\" [ngStyle]=\"listContentStyle\">\r\n <ng-container *ngTemplateOutlet=\"isRtlLayout ? linkLabelRtlOutlet : linkLabelLtrOutlet\"></ng-container>\r\n </a>\r\n</ng-template>\r\n\r\n<ng-template #routerLinkTemplate>\r\n <ng-container *ngIf=\"node.link && nodeConfiguration.interfaceWithRoute; else defaultContentContainer\">\r\n <a class=\"anml-link\" [routerLink]=\"node.link\" [ngStyle]=\"listContentStyle\">\r\n <ng-container *ngTemplateOutlet=\"isRtlLayout ? linkLabelRtlOutlet : linkLabelLtrOutlet\"></ng-container>\r\n </a>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #defaultContentContainer>\r\n <a class=\"anml-link\" [ngStyle]=\"listContentStyle\">\r\n <ng-container *ngTemplateOutlet=\"isRtlLayout ? linkLabelRtlOutlet : linkLabelLtrOutlet\"></ng-container>\r\n </a>\r\n</ng-template>\r\n\r\n<ng-template #linkLabelLtrOutlet>\r\n <div class=\"anml-data\" [dir]=\"'ltr'\">\r\n <ng-container *ngTemplateOutlet=\"iconContainer\"></ng-container>\r\n <span class=\"label\">{{node.label}}</span>\r\n </div>\r\n <div class=\"amml-icon-arrow-container\" *ngIf='node.hasChildren'>\r\n <mat-icon [@ExpandedLTR]=\"nodeExpandStatus()\">\r\n keyboard_arrow_down\r\n </mat-icon>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #linkLabelRtlOutlet>\r\n <div class=\"anml-data\" [dir]=\"'rtl'\">\r\n <ng-container *ngTemplateOutlet=\"iconContainer\"></ng-container>\r\n <span class=\"label\">{{node.label}}</span>\r\n </div>\r\n <div class=\"amml-icon-arrow-container\" *ngIf='node.hasChildren'>\r\n <mat-icon [@ExpandedRTL]=\"nodeExpandStatus()\">\r\n keyboard_arrow_down\r\n </mat-icon>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #iconContainer>\r\n <div class=\"icon-container\" [ngSwitch]=\"getListIcon(node)\">\r\n <span *ngSwitchCase=\"'faIcon'\" class=\"amml-icon amml-icon-fa\">\r\n <i [ngClass]=\"getSelectedFaIcon()\"></i>\r\n </span>\r\n <mat-icon *ngSwitchCase=\"'icon'\" class=\"amml-icon\">\r\n {{getSelectedIcon()}}\r\n </mat-icon>\r\n <mat-icon *ngSwitchCase=\"'svgIcon'\" class=\"amml-icon amml-svg-icon\"\r\n svgIcon=\"{{getSelectedSvgIcon()}}\">\r\n </mat-icon>\r\n <img *ngSwitchCase=\"'imageIcon'\" class=\"amml-icon amml-img-icon\"\r\n src=\"{{getSelectedImageIcon()}}\" alt=\"{{node.label}}\"/>\r\n </div>\r\n</ng-template>\r\n\r\n", styles: [".amml-item{position:relative;cursor:pointer}.anml-link{width:100%;display:flex;justify-content:flex-start;text-transform:capitalize;text-decoration:none}.anml-data{width:100%;height:48px;display:flex;justify-content:flex-start}.icon-container{display:flex;flex-direction:column;justify-content:center}.amml-icon-fa{font-size:20px}.label{line-height:48px;font-weight:400}.amml-svg-icon{width:22px;height:22px;margin-top:-12px}.amml-img-icon{flex-shrink:0;width:40px;height:40px;border-radius:50%;object-fit:cover}.amml-icon-arrow-container{direction:ltr;display:flex;align-items:center}div[dir=ltr] .amml-icon{margin-right:16px}div[dir=rtl] .amml-icon{margin-left:16px}\n"] }]
|
|
59
|
+
}], ctorParameters: () => [], propDecorators: { node: [{
|
|
60
|
+
type: Input
|
|
61
|
+
}], isRtlLayout: [{
|
|
62
|
+
type: Input
|
|
63
|
+
}], listContentStyle: [{
|
|
64
|
+
type: Input
|
|
65
|
+
}], nodeConfiguration: [{
|
|
66
|
+
type: Input
|
|
67
|
+
}] } });
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1pdGVtLWNvbnRlbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWF0ZXJpYWwtbXVsdGlsZXZlbC1tZW51L3NyYy9saWIvbGlzdC1pdGVtL2xpc3QtaXRlbS1jb250ZW50L2xpc3QtaXRlbS1jb250ZW50LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1hdGVyaWFsLW11bHRpbGV2ZWwtbWVudS9zcmMvbGliL2xpc3QtaXRlbS9saXN0LWl0ZW0tY29udGVudC9saXN0LWl0ZW0tY29udGVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUV2RCxPQUFPLEVBQUMsV0FBVyxFQUFFLFdBQVcsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUMvQyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7Ozs7OztBQVF6QyxNQUFNLE9BQU8sd0JBQXdCO0lBTW5DO1FBRlMsc0JBQWlCLEdBQWtCLElBQUksQ0FBQztRQUcvQyxPQUFPO0lBQ1QsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPO0lBQ1QsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFvQjtRQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3JELE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7YUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzlELE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUM7YUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ2pFLE9BQU8sV0FBVyxDQUFDO1FBQ3JCLENBQUM7YUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQy9ELE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO0lBQ0gsQ0FBQztJQUVELGlCQUFpQjtRQUNmLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsd0JBQXdCLENBQUM7SUFDakcsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdkcsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDOUYsQ0FBQztJQUVELGlCQUFpQjtRQUNmLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNwRyxDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUM3RyxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztJQUN6RCxDQUFDOytHQWxEVSx3QkFBd0I7bUdBQXhCLHdCQUF3QixnTUNackMseWtGQThEQSw4ekREcERjLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQzs7NEZBRTNCLHdCQUF3QjtrQkFOcEMsU0FBUzsrQkFDRSxzQkFBc0IsY0FHcEIsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDO3dEQUc3QixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIElucHV0LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0NvbmZpZ3VyYXRpb24sIE11bHRpbGV2ZWxOb2RlLCBMaXN0U3R5bGV9IGZyb20gJy4uLy4uL2FwcC5tb2RlbCc7XHJcbmltcG9ydCB7RXhwYW5kZWRMVFIsIEV4cGFuZGVkUlRMfSBmcm9tICcuLi8uLi9hbmltYXRpb24nO1xyXG5pbXBvcnQge0NvbW1vblV0aWxzfSBmcm9tICcuLi8uLi9jb21tb24tdXRpbHMnO1xyXG5pbXBvcnQge0NPTlNUQU5UfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduZy1saXN0LWl0ZW0tY29udGVudCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2xpc3QtaXRlbS1jb250ZW50LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9saXN0LWl0ZW0tY29udGVudC5jb21wb25lbnQuY3NzJ10sXHJcbiAgYW5pbWF0aW9uczogW0V4cGFuZGVkTFRSLCBFeHBhbmRlZFJUTF1cclxufSlcclxuZXhwb3J0IGNsYXNzIExpc3RJdGVtQ29udGVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgbm9kZTogTXVsdGlsZXZlbE5vZGU7XHJcbiAgQElucHV0KCkgaXNSdGxMYXlvdXQ6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgbGlzdENvbnRlbnRTdHlsZTogTGlzdFN0eWxlO1xyXG4gIEBJbnB1dCgpIG5vZGVDb25maWd1cmF0aW9uOiBDb25maWd1cmF0aW9uID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAvLyBOT09QXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIC8vIE5PT1BcclxuICB9XHJcblxyXG4gIGdldExpc3RJY29uKG5vZGU6IE11bHRpbGV2ZWxOb2RlKTogc3RyaW5nIHtcclxuICAgIGlmICghQ29tbW9uVXRpbHMuaXNOdWxsT3JVbmRlZmluZWRPckVtcHR5KG5vZGUuaWNvbikpIHtcclxuICAgICAgcmV0dXJuIGBpY29uYDtcclxuICAgIH0gZWxzZSBpZiAoIUNvbW1vblV0aWxzLmlzTnVsbE9yVW5kZWZpbmVkT3JFbXB0eShub2RlLmZhSWNvbikpIHtcclxuICAgICAgcmV0dXJuIGBmYUljb25gO1xyXG4gICAgfSBlbHNlIGlmICghQ29tbW9uVXRpbHMuaXNOdWxsT3JVbmRlZmluZWRPckVtcHR5KG5vZGUuaW1hZ2VJY29uKSkge1xyXG4gICAgICByZXR1cm4gYGltYWdlSWNvbmA7XHJcbiAgICB9IGVsc2UgaWYgKCFDb21tb25VdGlscy5pc051bGxPclVuZGVmaW5lZE9yRW1wdHkobm9kZS5zdmdJY29uKSkge1xyXG4gICAgICByZXR1cm4gYHN2Z0ljb25gO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGBgO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0SHJlZlRhcmdldFR5cGUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLm5vZGUuaHJlZlRhcmdldFR5cGUgPyB0aGlzLm5vZGUuaHJlZlRhcmdldFR5cGUgOiBDT05TVEFOVC5ERUZBVUxUX0hSRUZfVEFSR0VUX1RZUEU7XHJcbiAgfVxyXG5cclxuICBnZXRTZWxlY3RlZFN2Z0ljb24oKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLm5vZGUuaXNTZWxlY3RlZCAmJiB0aGlzLm5vZGUuYWN0aXZlU3ZnSWNvbiA/IHRoaXMubm9kZS5hY3RpdmVTdmdJY29uIDogdGhpcy5ub2RlLnN2Z0ljb247XHJcbiAgfVxyXG5cclxuICBnZXRTZWxlY3RlZEljb24oKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLm5vZGUuaXNTZWxlY3RlZCAmJiB0aGlzLm5vZGUuYWN0aXZlSWNvbiA/IHRoaXMubm9kZS5hY3RpdmVJY29uIDogdGhpcy5ub2RlLmljb247XHJcbiAgfVxyXG5cclxuICBnZXRTZWxlY3RlZEZhSWNvbigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMubm9kZS5pc1NlbGVjdGVkICYmIHRoaXMubm9kZS5hY3RpdmVGYUljb24gPyB0aGlzLm5vZGUuYWN0aXZlRmFJY29uIDogdGhpcy5ub2RlLmZhSWNvbjtcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGVkSW1hZ2VJY29uKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5ub2RlLmlzU2VsZWN0ZWQgJiYgdGhpcy5ub2RlLmFjdGl2ZUltYWdlSWNvbiA/IHRoaXMubm9kZS5hY3RpdmVJbWFnZUljb24gOiB0aGlzLm5vZGUuaW1hZ2VJY29uO1xyXG4gIH1cclxuXHJcbiAgbm9kZUV4cGFuZFN0YXR1cygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMubm9kZS5leHBhbmRlZCA/IENPTlNUQU5ULllFUyA6IENPTlNUQU5ULk5PO1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibm9kZS5leHRlcm5hbFJlZGlyZWN0ID8gcmVkaXJlY3RMaW5rVGVtcGxhdGUgOiByb3V0ZXJMaW5rVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcmVkaXJlY3RMaW5rVGVtcGxhdGU+XHJcbiAgPGEgY2xhc3M9XCJhbm1sLWxpbmtcIiBbaHJlZl09XCJub2RlLmxpbmtcIiBbdGFyZ2V0XT1cImdldEhyZWZUYXJnZXRUeXBlKClcIiBbbmdTdHlsZV09XCJsaXN0Q29udGVudFN0eWxlXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXNSdGxMYXlvdXQgPyBsaW5rTGFiZWxSdGxPdXRsZXQgOiBsaW5rTGFiZWxMdHJPdXRsZXRcIj48L25nLWNvbnRhaW5lcj5cclxuICA8L2E+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3JvdXRlckxpbmtUZW1wbGF0ZT5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibm9kZS5saW5rICYmIG5vZGVDb25maWd1cmF0aW9uLmludGVyZmFjZVdpdGhSb3V0ZTsgZWxzZSBkZWZhdWx0Q29udGVudENvbnRhaW5lclwiPlxyXG4gICAgPGEgY2xhc3M9XCJhbm1sLWxpbmtcIiBbcm91dGVyTGlua109XCJub2RlLmxpbmtcIiBbbmdTdHlsZV09XCJsaXN0Q29udGVudFN0eWxlXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpc1J0bExheW91dCA/IGxpbmtMYWJlbFJ0bE91dGxldCA6IGxpbmtMYWJlbEx0ck91dGxldFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9hPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNkZWZhdWx0Q29udGVudENvbnRhaW5lcj5cclxuICA8YSBjbGFzcz1cImFubWwtbGlua1wiIFtuZ1N0eWxlXT1cImxpc3RDb250ZW50U3R5bGVcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpc1J0bExheW91dCA/IGxpbmtMYWJlbFJ0bE91dGxldCA6IGxpbmtMYWJlbEx0ck91dGxldFwiPjwvbmctY29udGFpbmVyPlxyXG4gIDwvYT5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbGlua0xhYmVsTHRyT3V0bGV0PlxyXG4gIDxkaXYgY2xhc3M9XCJhbm1sLWRhdGFcIiBbZGlyXT1cIidsdHInXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaWNvbkNvbnRhaW5lclwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPnt7bm9kZS5sYWJlbH19PC9zcGFuPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJhbW1sLWljb24tYXJyb3ctY29udGFpbmVyXCIgKm5nSWY9J25vZGUuaGFzQ2hpbGRyZW4nPlxyXG4gICAgPG1hdC1pY29uIFtARXhwYW5kZWRMVFJdPVwibm9kZUV4cGFuZFN0YXR1cygpXCI+XHJcbiAgICAgIGtleWJvYXJkX2Fycm93X2Rvd25cclxuICAgIDwvbWF0LWljb24+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2xpbmtMYWJlbFJ0bE91dGxldD5cclxuICA8ZGl2IGNsYXNzPVwiYW5tbC1kYXRhXCIgW2Rpcl09XCIncnRsJ1wiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImljb25Db250YWluZXJcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj57e25vZGUubGFiZWx9fTwvc3Bhbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiYW1tbC1pY29uLWFycm93LWNvbnRhaW5lclwiICpuZ0lmPSdub2RlLmhhc0NoaWxkcmVuJz5cclxuICAgIDxtYXQtaWNvbiBbQEV4cGFuZGVkUlRMXT1cIm5vZGVFeHBhbmRTdGF0dXMoKVwiPlxyXG4gICAgICBrZXlib2FyZF9hcnJvd19kb3duXHJcbiAgICA8L21hdC1pY29uPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNpY29uQ29udGFpbmVyPlxyXG4gIDxkaXYgY2xhc3M9XCJpY29uLWNvbnRhaW5lclwiIFtuZ1N3aXRjaF09XCJnZXRMaXN0SWNvbihub2RlKVwiPlxyXG4gICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2ZhSWNvbidcIiBjbGFzcz1cImFtbWwtaWNvbiBhbW1sLWljb24tZmFcIj5cclxuICAgICAgICA8aSBbbmdDbGFzc109XCJnZXRTZWxlY3RlZEZhSWNvbigpXCI+PC9pPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8bWF0LWljb24gKm5nU3dpdGNoQ2FzZT1cIidpY29uJ1wiIGNsYXNzPVwiYW1tbC1pY29uXCI+XHJcbiAgICAgIHt7Z2V0U2VsZWN0ZWRJY29uKCl9fVxyXG4gICAgPC9tYXQtaWNvbj5cclxuICAgIDxtYXQtaWNvbiAqbmdTd2l0Y2hDYXNlPVwiJ3N2Z0ljb24nXCIgY2xhc3M9XCJhbW1sLWljb24gYW1tbC1zdmctaWNvblwiXHJcbiAgICAgICAgICAgICAgc3ZnSWNvbj1cInt7Z2V0U2VsZWN0ZWRTdmdJY29uKCl9fVwiPlxyXG4gICAgPC9tYXQtaWNvbj5cclxuICAgIDxpbWcgKm5nU3dpdGNoQ2FzZT1cIidpbWFnZUljb24nXCIgY2xhc3M9XCJhbW1sLWljb24gYW1tbC1pbWctaWNvblwiXHJcbiAgICAgICAgIHNyYz1cInt7Z2V0U2VsZWN0ZWRJbWFnZUljb24oKX19XCIgYWx0PVwie3tub2RlLmxhYmVsfX1cIi8+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG4iXX0=
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import { ExpandCollapseStatusEnum } from '../app.model';
|
|
3
|
+
import { CONSTANT } from '../constants';
|
|
4
|
+
import { SlideInOut } from '../animation';
|
|
5
|
+
import { CommonUtils } from '../common-utils';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/router";
|
|
8
|
+
import * as i2 from "../multilevel-menu.service";
|
|
9
|
+
import * as i3 from "@angular/common";
|
|
10
|
+
import * as i4 from "@angular/cdk/bidi";
|
|
11
|
+
import * as i5 from "@angular/material/list";
|
|
12
|
+
import * as i6 from "@angular/material/divider";
|
|
13
|
+
import * as i7 from "@angular/material/core";
|
|
14
|
+
import * as i8 from "./list-item-content/list-item-content.component";
|
|
15
|
+
export class ListItemComponent {
|
|
16
|
+
constructor(router, multilevelMenuService) {
|
|
17
|
+
this.router = router;
|
|
18
|
+
this.multilevelMenuService = multilevelMenuService;
|
|
19
|
+
this.level = 1;
|
|
20
|
+
this.submenuLevel = 0;
|
|
21
|
+
this.nodeConfiguration = null;
|
|
22
|
+
this.nodeExpandCollapseStatus = null;
|
|
23
|
+
this.listTemplate = null;
|
|
24
|
+
this.selectedItem = new EventEmitter();
|
|
25
|
+
this.isSelected = false;
|
|
26
|
+
this.expanded = false;
|
|
27
|
+
this.firstInitializer = false;
|
|
28
|
+
this.selectedListClasses = {
|
|
29
|
+
[CONSTANT.DEFAULT_LIST_CLASS_NAME]: true,
|
|
30
|
+
[CONSTANT.SELECTED_LIST_CLASS_NAME]: false,
|
|
31
|
+
[CONSTANT.ACTIVE_ITEM_CLASS_NAME]: false,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
ngOnChanges() {
|
|
35
|
+
this.nodeChildren = this.node && this.node.items ? this.node.items.filter(n => !n.hidden) : [];
|
|
36
|
+
this.node.hasChildren = this.hasItems();
|
|
37
|
+
if (!CommonUtils.isNullOrUndefined(this.selectedNode)) {
|
|
38
|
+
this.setSelectedClass(this.multilevelMenuService.recursiveCheckId(this.node, this.selectedNode.id));
|
|
39
|
+
}
|
|
40
|
+
this.setExpandCollapseStatus();
|
|
41
|
+
}
|
|
42
|
+
ngOnInit() {
|
|
43
|
+
this.selectedListClasses[CONSTANT.DISABLED_ITEM_CLASS_NAME] = this.node.disabled;
|
|
44
|
+
if (!CommonUtils.isNullOrUndefined(this.node.faIcon) &&
|
|
45
|
+
this.node.faIcon.match(/\bfa\w(?!-)/) === null) {
|
|
46
|
+
this.node.faIcon = `fas ${this.node.faIcon}`;
|
|
47
|
+
}
|
|
48
|
+
this.selectedListClasses[`level-${this.level}-submenulevel-${this.submenuLevel}`] = true;
|
|
49
|
+
if (typeof this.node.expanded === 'boolean') {
|
|
50
|
+
this.expanded = this.node.expanded;
|
|
51
|
+
}
|
|
52
|
+
this.setClasses();
|
|
53
|
+
}
|
|
54
|
+
setSelectedClass(isFound) {
|
|
55
|
+
if (isFound) {
|
|
56
|
+
if (!this.firstInitializer) {
|
|
57
|
+
this.expanded = true;
|
|
58
|
+
}
|
|
59
|
+
this.isSelected = this.nodeConfiguration.highlightOnSelect || this.selectedNode.items === undefined;
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
this.isSelected = false;
|
|
63
|
+
if (this.nodeConfiguration.collapseOnSelect) {
|
|
64
|
+
this.node.expanded = false;
|
|
65
|
+
this.expanded = false;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
this.selectedListClasses = {
|
|
69
|
+
[CONSTANT.DEFAULT_LIST_CLASS_NAME]: true,
|
|
70
|
+
[CONSTANT.SELECTED_LIST_CLASS_NAME]: this.isSelected,
|
|
71
|
+
[CONSTANT.ACTIVE_ITEM_CLASS_NAME]: this.selectedNode.id === this.node.id,
|
|
72
|
+
[CONSTANT.DISABLED_ITEM_CLASS_NAME]: this.node.disabled,
|
|
73
|
+
[`level-${this.level}-submenulevel-${this.submenuLevel}`]: true,
|
|
74
|
+
};
|
|
75
|
+
this.node.isSelected = this.isSelected;
|
|
76
|
+
this.setClasses();
|
|
77
|
+
}
|
|
78
|
+
getPaddingAtStart() {
|
|
79
|
+
return this.nodeConfiguration.paddingAtStart;
|
|
80
|
+
}
|
|
81
|
+
getListStyle() {
|
|
82
|
+
const styles = {
|
|
83
|
+
background: CONSTANT.DEFAULT_LIST_BACKGROUND_COLOR,
|
|
84
|
+
color: CONSTANT.DEFAULT_LIST_FONT_COLOR
|
|
85
|
+
};
|
|
86
|
+
if (this.nodeConfiguration.listBackgroundColor !== null) {
|
|
87
|
+
styles.background = this.nodeConfiguration.listBackgroundColor;
|
|
88
|
+
}
|
|
89
|
+
if (this.isSelected) {
|
|
90
|
+
this.nodeConfiguration.selectedListFontColor !== null ?
|
|
91
|
+
styles.color = this.nodeConfiguration.selectedListFontColor : styles.color = CONSTANT.DEFAULT_SELECTED_FONT_COLOR;
|
|
92
|
+
}
|
|
93
|
+
else if (this.nodeConfiguration.fontColor !== null) {
|
|
94
|
+
styles.color = this.nodeConfiguration.fontColor;
|
|
95
|
+
}
|
|
96
|
+
return styles;
|
|
97
|
+
}
|
|
98
|
+
hasItems() {
|
|
99
|
+
return this.nodeChildren.length > 0;
|
|
100
|
+
}
|
|
101
|
+
isRtlLayout() {
|
|
102
|
+
return this.nodeConfiguration.rtlLayout;
|
|
103
|
+
}
|
|
104
|
+
setClasses() {
|
|
105
|
+
this.classes = {
|
|
106
|
+
[`level-${this.level + 1}`]: true,
|
|
107
|
+
[CONSTANT.SUBMENU_ITEM_CLASS_NAME]: this.hasItems() && this.getPaddingAtStart(),
|
|
108
|
+
[CONSTANT.HAS_SUBMENU_ITEM_CLASS_NAME]: this.hasItems()
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
setExpandCollapseStatus() {
|
|
112
|
+
if (!CommonUtils.isNullOrUndefined(this.nodeExpandCollapseStatus)) {
|
|
113
|
+
if (this.nodeExpandCollapseStatus === ExpandCollapseStatusEnum.expand) {
|
|
114
|
+
this.expanded = true;
|
|
115
|
+
if (this.nodeConfiguration.customTemplate) {
|
|
116
|
+
this.node.expanded = true;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
if (this.nodeExpandCollapseStatus === ExpandCollapseStatusEnum.collapse) {
|
|
120
|
+
this.expanded = false;
|
|
121
|
+
if (this.nodeConfiguration.customTemplate) {
|
|
122
|
+
this.node.expanded = false;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
expand(node) {
|
|
128
|
+
if (node.disabled) {
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
this.nodeExpandCollapseStatus = ExpandCollapseStatusEnum.neutral;
|
|
132
|
+
this.expanded = !this.expanded;
|
|
133
|
+
this.node.expanded = this.expanded;
|
|
134
|
+
this.firstInitializer = true;
|
|
135
|
+
this.setClasses();
|
|
136
|
+
if (this.nodeConfiguration.interfaceWithRoute !== null
|
|
137
|
+
&& this.nodeConfiguration.interfaceWithRoute
|
|
138
|
+
&& node.link !== undefined
|
|
139
|
+
&& node.link) {
|
|
140
|
+
this.router.navigate([node.link], node.navigationExtras).then();
|
|
141
|
+
}
|
|
142
|
+
else if (node.onSelected && typeof node.onSelected === 'function') {
|
|
143
|
+
node.onSelected(node);
|
|
144
|
+
this.selectedListItem(node);
|
|
145
|
+
}
|
|
146
|
+
else if (node.items === undefined || this.nodeConfiguration.collapseOnSelect) {
|
|
147
|
+
this.selectedListItem(node);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
selectedListItem(node) {
|
|
151
|
+
this.selectedItem.emit(node);
|
|
152
|
+
}
|
|
153
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ListItemComponent, deps: [{ token: i1.Router }, { token: i2.MultilevelMenuService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
154
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ListItemComponent, selector: "ng-list-item", inputs: { node: "node", level: "level", submenuLevel: "submenuLevel", selectedNode: "selectedNode", nodeConfiguration: "nodeConfiguration", nodeExpandCollapseStatus: "nodeExpandCollapseStatus", listTemplate: "listTemplate" }, outputs: { selectedItem: "selectedItem" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"amml-menu-container\">\r\n <!-- Base Template rendering condition starts -->\r\n <div *ngIf=\"nodeConfiguration.customTemplate && !node.hidden;else baseTemplate\"\r\n [ngClass]=\"selectedListClasses\"\r\n (click)=\"expand(node)\">\r\n <ng-container [ngTemplateOutlet]=\"listTemplate\"\r\n [ngTemplateOutletContext]=\"{item: node, configuration: nodeConfiguration}\">\r\n </ng-container>\r\n </div>\r\n <!-- Base Template rendering condition ends -->\r\n\r\n <!-- Recursive Template calls begins -->\r\n <div *ngIf=\"hasItems() && expanded\" [@SlideInOut] [dir]=\"isRtlLayout() ? 'rtl' : 'ltr'\" [ngClass]=\"classes\">\r\n <ng-list-item *ngFor=\"let singleNode of nodeChildren | keyvalue : multilevelMenuService.kvDummyComparerFn\"\r\n [nodeConfiguration]='nodeConfiguration'\r\n [node]=\"singleNode.value\"\r\n [level]=\"level + 1\"\r\n [submenuLevel]=\"singleNode.key\"\r\n [selectedNode]='selectedNode'\r\n [nodeExpandCollapseStatus]='nodeExpandCollapseStatus'\r\n (selectedItem)=\"selectedListItem($event)\"\r\n [listTemplate]=\"listTemplate\">\r\n </ng-list-item>\r\n </div>\r\n</div>\r\n<!-- Recursive Template calls ends -->\r\n\r\n<!-- Base Template starts from here -->\r\n<ng-template #baseTemplate>\r\n <mat-list-item matRipple\r\n *ngIf=\"!node.hidden\"\r\n title=\"{{node.label}}\"\r\n [matRippleDisabled]=\"node.disabled\"\r\n [ngClass]=\"selectedListClasses\"\r\n (click)=\"expand(node)\">\r\n <ng-container *ngTemplateOutlet=\"linkTemplate\"></ng-container>\r\n </mat-list-item>\r\n <mat-divider *ngIf=\"nodeConfiguration.useDividers\"></mat-divider>\r\n</ng-template>\r\n\r\n<ng-template #linkTemplate>\r\n <ng-list-item-content class=\"filled\" [node]=\"node\" [nodeConfiguration]=\"nodeConfiguration\" [isRtlLayout]=\"isRtlLayout()\" [listContentStyle]=\"getListStyle()\"></ng-list-item-content>\r\n</ng-template>\r\n", styles: [".filled{width:100%}div[dir=rtl].amml-submenu{margin-right:16px}div[dir=ltr].amml-submenu{margin-left:16px}.disabled-amml-item{opacity:.5;text-decoration:none;pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "component", type: i5.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "component", type: i6.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i7.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: ListItemComponent, selector: "ng-list-item", inputs: ["node", "level", "submenuLevel", "selectedNode", "nodeConfiguration", "nodeExpandCollapseStatus", "listTemplate"], outputs: ["selectedItem"] }, { kind: "component", type: i8.ListItemContentComponent, selector: "ng-list-item-content", inputs: ["node", "isRtlLayout", "listContentStyle", "nodeConfiguration"] }, { kind: "pipe", type: i3.KeyValuePipe, name: "keyvalue" }], animations: [SlideInOut] }); }
|
|
155
|
+
}
|
|
156
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ListItemComponent, decorators: [{
|
|
157
|
+
type: Component,
|
|
158
|
+
args: [{ selector: 'ng-list-item', animations: [SlideInOut], template: "<div class=\"amml-menu-container\">\r\n <!-- Base Template rendering condition starts -->\r\n <div *ngIf=\"nodeConfiguration.customTemplate && !node.hidden;else baseTemplate\"\r\n [ngClass]=\"selectedListClasses\"\r\n (click)=\"expand(node)\">\r\n <ng-container [ngTemplateOutlet]=\"listTemplate\"\r\n [ngTemplateOutletContext]=\"{item: node, configuration: nodeConfiguration}\">\r\n </ng-container>\r\n </div>\r\n <!-- Base Template rendering condition ends -->\r\n\r\n <!-- Recursive Template calls begins -->\r\n <div *ngIf=\"hasItems() && expanded\" [@SlideInOut] [dir]=\"isRtlLayout() ? 'rtl' : 'ltr'\" [ngClass]=\"classes\">\r\n <ng-list-item *ngFor=\"let singleNode of nodeChildren | keyvalue : multilevelMenuService.kvDummyComparerFn\"\r\n [nodeConfiguration]='nodeConfiguration'\r\n [node]=\"singleNode.value\"\r\n [level]=\"level + 1\"\r\n [submenuLevel]=\"singleNode.key\"\r\n [selectedNode]='selectedNode'\r\n [nodeExpandCollapseStatus]='nodeExpandCollapseStatus'\r\n (selectedItem)=\"selectedListItem($event)\"\r\n [listTemplate]=\"listTemplate\">\r\n </ng-list-item>\r\n </div>\r\n</div>\r\n<!-- Recursive Template calls ends -->\r\n\r\n<!-- Base Template starts from here -->\r\n<ng-template #baseTemplate>\r\n <mat-list-item matRipple\r\n *ngIf=\"!node.hidden\"\r\n title=\"{{node.label}}\"\r\n [matRippleDisabled]=\"node.disabled\"\r\n [ngClass]=\"selectedListClasses\"\r\n (click)=\"expand(node)\">\r\n <ng-container *ngTemplateOutlet=\"linkTemplate\"></ng-container>\r\n </mat-list-item>\r\n <mat-divider *ngIf=\"nodeConfiguration.useDividers\"></mat-divider>\r\n</ng-template>\r\n\r\n<ng-template #linkTemplate>\r\n <ng-list-item-content class=\"filled\" [node]=\"node\" [nodeConfiguration]=\"nodeConfiguration\" [isRtlLayout]=\"isRtlLayout()\" [listContentStyle]=\"getListStyle()\"></ng-list-item-content>\r\n</ng-template>\r\n", styles: [".filled{width:100%}div[dir=rtl].amml-submenu{margin-right:16px}div[dir=ltr].amml-submenu{margin-left:16px}.disabled-amml-item{opacity:.5;text-decoration:none;pointer-events:none}\n"] }]
|
|
159
|
+
}], ctorParameters: () => [{ type: i1.Router }, { type: i2.MultilevelMenuService }], propDecorators: { node: [{
|
|
160
|
+
type: Input
|
|
161
|
+
}], level: [{
|
|
162
|
+
type: Input
|
|
163
|
+
}], submenuLevel: [{
|
|
164
|
+
type: Input
|
|
165
|
+
}], selectedNode: [{
|
|
166
|
+
type: Input
|
|
167
|
+
}], nodeConfiguration: [{
|
|
168
|
+
type: Input
|
|
169
|
+
}], nodeExpandCollapseStatus: [{
|
|
170
|
+
type: Input
|
|
171
|
+
}], listTemplate: [{
|
|
172
|
+
type: Input
|
|
173
|
+
}], selectedItem: [{
|
|
174
|
+
type: Output
|
|
175
|
+
}] } });
|
|
176
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1hdGVyaWFsLW11bHRpbGV2ZWwtbWVudS9zcmMvbGliL2xpc3QtaXRlbS9saXN0LWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWF0ZXJpYWwtbXVsdGlsZXZlbC1tZW51L3NyYy9saWIvbGlzdC1pdGVtL2xpc3QtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLFlBQVksRUFBMkIsTUFBTSxlQUFlLENBQUM7QUFHbkgsT0FBTyxFQUE0Qyx3QkFBd0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNsRyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXhDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUMsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7Ozs7O0FBUTVDLE1BQU0sT0FBTyxpQkFBaUI7SUFtQjVCLFlBQW9CLE1BQWMsRUFDZixxQkFBNEM7UUFEM0MsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNmLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFsQnRELFVBQUssR0FBRyxDQUFDLENBQUM7UUFDVixpQkFBWSxHQUFHLENBQUMsQ0FBQztRQUVqQixzQkFBaUIsR0FBa0IsSUFBSSxDQUFDO1FBQ3hDLDZCQUF3QixHQUE2QixJQUFJLENBQUM7UUFDMUQsaUJBQVksR0FBNEIsSUFBSSxDQUFDO1FBRTVDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFFNUQsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLHFCQUFnQixHQUFHLEtBQUss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QUMsQ0FBQztRQUM5QixDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMvRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxJQUFvQjtRQUNuQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDOytHQTVKVSxpQkFBaUI7bUdBQWpCLGlCQUFpQixzVkNmOUIseWtFQTJDQSxtMUNENUJhLGlCQUFpQixtYUFGaEIsQ0FBQyxVQUFVLENBQUM7OzRGQUViLGlCQUFpQjtrQkFON0IsU0FBUzsrQkFDRSxjQUFjLGNBR1osQ0FBQyxVQUFVLENBQUM7K0dBR2YsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVJLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFRlbXBsYXRlUmVmLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBDb25maWd1cmF0aW9uLCBMaXN0U3R5bGUsIE11bHRpbGV2ZWxOb2RlLCBFeHBhbmRDb2xsYXBzZVN0YXR1c0VudW0gfSBmcm9tICcuLi9hcHAubW9kZWwnO1xyXG5pbXBvcnQgeyBDT05TVEFOVCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IE11bHRpbGV2ZWxNZW51U2VydmljZSB9IGZyb20gJy4uL211bHRpbGV2ZWwtbWVudS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2xpZGVJbk91dCB9IGZyb20gJy4uL2FuaW1hdGlvbic7XHJcbmltcG9ydCB7Q29tbW9uVXRpbHN9IGZyb20gJy4uL2NvbW1vbi11dGlscyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ25nLWxpc3QtaXRlbScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2xpc3QtaXRlbS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbGlzdC1pdGVtLmNvbXBvbmVudC5jc3MnXSxcclxuICBhbmltYXRpb25zOiBbU2xpZGVJbk91dF1cclxufSlcclxuZXhwb3J0IGNsYXNzIExpc3RJdGVtQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQge1xyXG4gIEBJbnB1dCgpIG5vZGU6IE11bHRpbGV2ZWxOb2RlO1xyXG4gIEBJbnB1dCgpIGxldmVsID0gMTtcclxuICBASW5wdXQoKSBzdWJtZW51TGV2ZWwgPSAwO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkTm9kZTogTXVsdGlsZXZlbE5vZGU7XHJcbiAgQElucHV0KCkgbm9kZUNvbmZpZ3VyYXRpb246IENvbmZpZ3VyYXRpb24gPSBudWxsO1xyXG4gIEBJbnB1dCgpIG5vZGVFeHBhbmRDb2xsYXBzZVN0YXR1czogRXhwYW5kQ29sbGFwc2VTdGF0dXNFbnVtID0gbnVsbDtcclxuICBASW5wdXQoKSBsaXN0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPEVsZW1lbnRSZWY+ID0gbnVsbDtcclxuXHJcbiAgQE91dHB1dCgpIHNlbGVjdGVkSXRlbSA9IG5ldyBFdmVudEVtaXR0ZXI8TXVsdGlsZXZlbE5vZGU+KCk7XHJcblxyXG4gIGlzU2VsZWN0ZWQgPSBmYWxzZTtcclxuICBleHBhbmRlZCA9IGZhbHNlO1xyXG4gIGZpcnN0SW5pdGlhbGl6ZXIgPSBmYWxzZTtcclxuXHJcbiAgbm9kZUNoaWxkcmVuOiBNdWx0aWxldmVsTm9kZVtdO1xyXG4gIGNsYXNzZXM6IHsgW2luZGV4OiBzdHJpbmddOiBib29sZWFuIH07XHJcbiAgc2VsZWN0ZWRMaXN0Q2xhc3NlczogeyBbaW5kZXg6IHN0cmluZ106IGJvb2xlYW4gfTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgICAgICAgICAgICBwdWJsaWMgbXVsdGlsZXZlbE1lbnVTZXJ2aWNlOiBNdWx0aWxldmVsTWVudVNlcnZpY2UpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRMaXN0Q2xhc3NlcyA9IHtcclxuICAgICAgW0NPTlNUQU5ULkRFRkFVTFRfTElTVF9DTEFTU19OQU1FXTogdHJ1ZSxcclxuICAgICAgW0NPTlNUQU5ULlNFTEVDVEVEX0xJU1RfQ0xBU1NfTkFNRV06IGZhbHNlLFxyXG4gICAgICBbQ09OU1RBTlQuQUNUSVZFX0lURU1fQ0xBU1NfTkFNRV06IGZhbHNlLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKCkge1xyXG4gICAgdGhpcy5ub2RlQ2hpbGRyZW4gPSB0aGlzLm5vZGUgJiYgdGhpcy5ub2RlLml0ZW1zID8gdGhpcy5ub2RlLml0ZW1zLmZpbHRlcihuID0+ICFuLmhpZGRlbikgOiBbXTtcclxuICAgIHRoaXMubm9kZS5oYXNDaGlsZHJlbiA9IHRoaXMuaGFzSXRlbXMoKTtcclxuXHJcbiAgICBpZiAoIUNvbW1vblV0aWxzLmlzTnVsbE9yVW5kZWZpbmVkKHRoaXMuc2VsZWN0ZWROb2RlKSkge1xyXG4gICAgICB0aGlzLnNldFNlbGVjdGVkQ2xhc3ModGhpcy5tdWx0aWxldmVsTWVudVNlcnZpY2UucmVjdXJzaXZlQ2hlY2tJZCh0aGlzLm5vZGUsIHRoaXMuc2VsZWN0ZWROb2RlLmlkKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldEV4cGFuZENvbGxhcHNlU3RhdHVzKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRMaXN0Q2xhc3Nlc1tDT05TVEFOVC5ESVNBQkxFRF9JVEVNX0NMQVNTX05BTUVdID0gdGhpcy5ub2RlLmRpc2FibGVkO1xyXG5cclxuICAgIGlmICghQ29tbW9uVXRpbHMuaXNOdWxsT3JVbmRlZmluZWQodGhpcy5ub2RlLmZhSWNvbikgJiZcclxuICAgICAgdGhpcy5ub2RlLmZhSWNvbi5tYXRjaCgvXFxiZmFcXHcoPyEtKS8pID09PSBudWxsKSB7XHJcbiAgICAgIHRoaXMubm9kZS5mYUljb24gPSBgZmFzICR7dGhpcy5ub2RlLmZhSWNvbn1gO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRMaXN0Q2xhc3Nlc1tgbGV2ZWwtJHt0aGlzLmxldmVsfS1zdWJtZW51bGV2ZWwtJHt0aGlzLnN1Ym1lbnVMZXZlbH1gXSA9IHRydWU7XHJcbiAgICBpZiAodHlwZW9mIHRoaXMubm9kZS5leHBhbmRlZCA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgIHRoaXMuZXhwYW5kZWQgPSB0aGlzLm5vZGUuZXhwYW5kZWQ7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldENsYXNzZXMoKTtcclxuICB9XHJcblxyXG4gIHNldFNlbGVjdGVkQ2xhc3MoaXNGb3VuZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKGlzRm91bmQpIHtcclxuICAgICAgaWYgKCF0aGlzLmZpcnN0SW5pdGlhbGl6ZXIpIHtcclxuICAgICAgICB0aGlzLmV4cGFuZGVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmlzU2VsZWN0ZWQgPSB0aGlzLm5vZGVDb25maWd1cmF0aW9uLmhpZ2hsaWdodE9uU2VsZWN0IHx8IHRoaXMuc2VsZWN0ZWROb2RlLml0ZW1zID09PSB1bmRlZmluZWQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmlzU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgaWYgKHRoaXMubm9kZUNvbmZpZ3VyYXRpb24uY29sbGFwc2VPblNlbGVjdCkge1xyXG4gICAgICAgIHRoaXMubm9kZS5leHBhbmRlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZXhwYW5kZWQgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5zZWxlY3RlZExpc3RDbGFzc2VzID0ge1xyXG4gICAgICBbQ09OU1RBTlQuREVGQVVMVF9MSVNUX0NMQVNTX05BTUVdOiB0cnVlLFxyXG4gICAgICBbQ09OU1RBTlQuU0VMRUNURURfTElTVF9DTEFTU19OQU1FXTogdGhpcy5pc1NlbGVjdGVkLFxyXG4gICAgICBbQ09OU1RBTlQuQUNUSVZFX0lURU1fQ0xBU1NfTkFNRV06IHRoaXMuc2VsZWN0ZWROb2RlLmlkID09PSB0aGlzLm5vZGUuaWQsXHJcbiAgICAgIFtDT05TVEFOVC5ESVNBQkxFRF9JVEVNX0NMQVNTX05BTUVdOiB0aGlzLm5vZGUuZGlzYWJsZWQsXHJcbiAgICAgIFtgbGV2ZWwtJHt0aGlzLmxldmVsfS1zdWJtZW51bGV2ZWwtJHt0aGlzLnN1Ym1lbnVMZXZlbH1gXTogdHJ1ZSxcclxuICAgIH07XHJcbiAgICB0aGlzLm5vZGUuaXNTZWxlY3RlZCA9IHRoaXMuaXNTZWxlY3RlZDtcclxuICAgIHRoaXMuc2V0Q2xhc3NlcygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGFkZGluZ0F0U3RhcnQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5ub2RlQ29uZmlndXJhdGlvbi5wYWRkaW5nQXRTdGFydDtcclxuICB9XHJcblxyXG4gIGdldExpc3RTdHlsZSgpOiBMaXN0U3R5bGUge1xyXG4gICAgY29uc3Qgc3R5bGVzID0ge1xyXG4gICAgICBiYWNrZ3JvdW5kOiBDT05TVEFOVC5ERUZBVUxUX0xJU1RfQkFDS0dST1VORF9DT0xPUixcclxuICAgICAgY29sb3I6IENPTlNUQU5ULkRFRkFVTFRfTElTVF9GT05UX0NPTE9SXHJcbiAgICB9O1xyXG4gICAgaWYgKHRoaXMubm9kZUNvbmZpZ3VyYXRpb24ubGlzdEJhY2tncm91bmRDb2xvciAhPT0gbnVsbCkge1xyXG4gICAgICBzdHlsZXMuYmFja2dyb3VuZCA9IHRoaXMubm9kZUNvbmZpZ3VyYXRpb24ubGlzdEJhY2tncm91bmRDb2xvcjtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmlzU2VsZWN0ZWQpIHtcclxuICAgICAgdGhpcy5ub2RlQ29uZmlndXJhdGlvbi5zZWxlY3RlZExpc3RGb250Q29sb3IgIT09IG51bGwgP1xyXG4gICAgICAgIHN0eWxlcy5jb2xvciA9IHRoaXMubm9kZUNvbmZpZ3VyYXRpb24uc2VsZWN0ZWRMaXN0Rm9udENvbG9yIDogc3R5bGVzLmNvbG9yID0gQ09OU1RBTlQuREVGQVVMVF9TRUxFQ1RFRF9GT05UX0NPTE9SO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLm5vZGVDb25maWd1cmF0aW9uLmZvbnRDb2xvciAhPT0gbnVsbCkge1xyXG4gICAgICBzdHlsZXMuY29sb3IgPSB0aGlzLm5vZGVDb25maWd1cmF0aW9uLmZvbnRDb2xvcjtcclxuICAgIH1cclxuICAgIHJldHVybiBzdHlsZXM7XHJcbiAgfVxyXG5cclxuICBoYXNJdGVtcygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLm5vZGVDaGlsZHJlbi5sZW5ndGggPiAwO1xyXG4gIH1cclxuXHJcbiAgaXNSdGxMYXlvdXQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5ub2RlQ29uZmlndXJhdGlvbi5ydGxMYXlvdXQ7XHJcbiAgfVxyXG5cclxuICBzZXRDbGFzc2VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jbGFzc2VzID0ge1xyXG4gICAgICBbYGxldmVsLSR7dGhpcy5sZXZlbCArIDF9YF06IHRydWUsXHJcbiAgICAgIFtDT05TVEFOVC5TVUJNRU5VX0lURU1fQ0xBU1NfTkFNRV06IHRoaXMuaGFzSXRlbXMoKSAmJiB0aGlzLmdldFBhZGRpbmdBdFN0YXJ0KCksXHJcbiAgICAgIFtDT05TVEFOVC5IQVNfU1VCTUVOVV9JVEVNX0NMQVNTX05BTUVdOiB0aGlzLmhhc0l0ZW1zKClcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBzZXRFeHBhbmRDb2xsYXBzZVN0YXR1cygpOiB2b2lkIHtcclxuICAgIGlmICghQ29tbW9uVXRpbHMuaXNOdWxsT3JVbmRlZmluZWQodGhpcy5ub2RlRXhwYW5kQ29sbGFwc2VTdGF0dXMpKSB7XHJcbiAgICAgIGlmICh0aGlzLm5vZGVFeHBhbmRDb2xsYXBzZVN0YXR1cyA9PT0gRXhwYW5kQ29sbGFwc2VTdGF0dXNFbnVtLmV4cGFuZCkge1xyXG4gICAgICAgIHRoaXMuZXhwYW5kZWQgPSB0cnVlO1xyXG4gICAgICAgIGlmICh0aGlzLm5vZGVDb25maWd1cmF0aW9uLmN1c3RvbVRlbXBsYXRlKSB7XHJcbiAgICAgICAgICB0aGlzLm5vZGUuZXhwYW5kZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5ub2RlRXhwYW5kQ29sbGFwc2VTdGF0dXMgPT09IEV4cGFuZENvbGxhcHNlU3RhdHVzRW51bS5jb2xsYXBzZSkge1xyXG4gICAgICAgIHRoaXMuZXhwYW5kZWQgPSBmYWxzZTtcclxuICAgICAgICBpZiAodGhpcy5ub2RlQ29uZmlndXJhdGlvbi5jdXN0b21UZW1wbGF0ZSkge1xyXG4gICAgICAgICAgdGhpcy5ub2RlLmV4cGFuZGVkID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBleHBhbmQobm9kZTogTXVsdGlsZXZlbE5vZGUpOiB2b2lkIHtcclxuICAgIGlmIChub2RlLmRpc2FibGVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMubm9kZUV4cGFuZENvbGxhcHNlU3RhdHVzID0gRXhwYW5kQ29sbGFwc2VTdGF0dXNFbnVtLm5ldXRyYWw7XHJcbiAgICB0aGlzLmV4cGFuZGVkID0gIXRoaXMuZXhwYW5kZWQ7XHJcbiAgICB0aGlzLm5vZGUuZXhwYW5kZWQgPSAgdGhpcy5leHBhbmRlZDtcclxuICAgIHRoaXMuZmlyc3RJbml0aWFsaXplciA9IHRydWU7XHJcbiAgICB0aGlzLnNldENsYXNzZXMoKTtcclxuICAgIGlmICh0aGlzLm5vZGVDb25maWd1cmF0aW9uLmludGVyZmFjZVdpdGhSb3V0ZSAhPT0gbnVsbFxyXG4gICAgICAmJiB0aGlzLm5vZGVDb25maWd1cmF0aW9uLmludGVyZmFjZVdpdGhSb3V0ZVxyXG4gICAgICAmJiBub2RlLmxpbmsgIT09IHVuZGVmaW5lZFxyXG4gICAgICAmJiBub2RlLmxpbmtcclxuICAgICkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbbm9kZS5saW5rXSwgbm9kZS5uYXZpZ2F0aW9uRXh0cmFzKS50aGVuKCk7XHJcbiAgICB9IGVsc2UgaWYgKG5vZGUub25TZWxlY3RlZCAmJiB0eXBlb2Ygbm9kZS5vblNlbGVjdGVkID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgIG5vZGUub25TZWxlY3RlZChub2RlKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZExpc3RJdGVtKG5vZGUpO1xyXG4gICAgfSBlbHNlIGlmIChub2RlLml0ZW1zID09PSB1bmRlZmluZWQgfHwgdGhpcy5ub2RlQ29uZmlndXJhdGlvbi5jb2xsYXBzZU9uU2VsZWN0KSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRMaXN0SXRlbShub2RlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdGVkTGlzdEl0ZW0obm9kZTogTXVsdGlsZXZlbE5vZGUpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtLmVtaXQobm9kZSk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiYW1tbC1tZW51LWNvbnRhaW5lclwiPlxyXG4gIDwhLS0gQmFzZSBUZW1wbGF0ZSByZW5kZXJpbmcgY29uZGl0aW9uIHN0YXJ0cyAtLT5cclxuICA8ZGl2ICpuZ0lmPVwibm9kZUNvbmZpZ3VyYXRpb24uY3VzdG9tVGVtcGxhdGUgJiYgIW5vZGUuaGlkZGVuO2Vsc2UgYmFzZVRlbXBsYXRlXCJcclxuICAgICAgIFtuZ0NsYXNzXT1cInNlbGVjdGVkTGlzdENsYXNzZXNcIlxyXG4gICAgICAgKGNsaWNrKT1cImV4cGFuZChub2RlKVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJsaXN0VGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2l0ZW06IG5vZGUsIGNvbmZpZ3VyYXRpb246IG5vZGVDb25maWd1cmF0aW9ufVwiPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbiAgPCEtLSBCYXNlIFRlbXBsYXRlIHJlbmRlcmluZyBjb25kaXRpb24gZW5kcyAtLT5cclxuXHJcbiAgPCEtLSBSZWN1cnNpdmUgVGVtcGxhdGUgY2FsbHMgYmVnaW5zIC0tPlxyXG4gIDxkaXYgKm5nSWY9XCJoYXNJdGVtcygpICYmIGV4cGFuZGVkXCIgW0BTbGlkZUluT3V0XSBbZGlyXT1cImlzUnRsTGF5b3V0KCkgPyAncnRsJyA6ICdsdHInXCIgW25nQ2xhc3NdPVwiY2xhc3Nlc1wiPlxyXG4gICAgPG5nLWxpc3QtaXRlbSAqbmdGb3I9XCJsZXQgc2luZ2xlTm9kZSBvZiBub2RlQ2hpbGRyZW4gfCBrZXl2YWx1ZSA6IG11bHRpbGV2ZWxNZW51U2VydmljZS5rdkR1bW15Q29tcGFyZXJGblwiXHJcbiAgICAgICAgICAgICAgICAgIFtub2RlQ29uZmlndXJhdGlvbl09J25vZGVDb25maWd1cmF0aW9uJ1xyXG4gICAgICAgICAgICAgICAgICBbbm9kZV09XCJzaW5nbGVOb2RlLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgW2xldmVsXT1cImxldmVsICsgMVwiXHJcbiAgICAgICAgICAgICAgICAgIFtzdWJtZW51TGV2ZWxdPVwic2luZ2xlTm9kZS5rZXlcIlxyXG4gICAgICAgICAgICAgICAgICBbc2VsZWN0ZWROb2RlXT0nc2VsZWN0ZWROb2RlJ1xyXG4gICAgICAgICAgICAgICAgICBbbm9kZUV4cGFuZENvbGxhcHNlU3RhdHVzXT0nbm9kZUV4cGFuZENvbGxhcHNlU3RhdHVzJ1xyXG4gICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRJdGVtKT1cInNlbGVjdGVkTGlzdEl0ZW0oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgIFtsaXN0VGVtcGxhdGVdPVwibGlzdFRlbXBsYXRlXCI+XHJcbiAgICA8L25nLWxpc3QtaXRlbT5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbjwhLS0gUmVjdXJzaXZlIFRlbXBsYXRlIGNhbGxzIGVuZHMgLS0+XHJcblxyXG48IS0tIEJhc2UgVGVtcGxhdGUgc3RhcnRzIGZyb20gaGVyZSAtLT5cclxuPG5nLXRlbXBsYXRlICNiYXNlVGVtcGxhdGU+XHJcbiAgPG1hdC1saXN0LWl0ZW0gbWF0UmlwcGxlXHJcbiAgICAgICAgICAgICAgICAgKm5nSWY9XCIhbm9kZS5oaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgIHRpdGxlPVwie3tub2RlLmxhYmVsfX1cIlxyXG4gICAgICAgICAgICAgICAgIFttYXRSaXBwbGVEaXNhYmxlZF09XCJub2RlLmRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RlZExpc3RDbGFzc2VzXCJcclxuICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZXhwYW5kKG5vZGUpXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibGlua1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9tYXQtbGlzdC1pdGVtPlxyXG4gIDxtYXQtZGl2aWRlciAqbmdJZj1cIm5vZGVDb25maWd1cmF0aW9uLnVzZURpdmlkZXJzXCI+PC9tYXQtZGl2aWRlcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbGlua1RlbXBsYXRlPlxyXG4gIDxuZy1saXN0LWl0ZW0tY29udGVudCBjbGFzcz1cImZpbGxlZFwiIFtub2RlXT1cIm5vZGVcIiBbbm9kZUNvbmZpZ3VyYXRpb25dPVwibm9kZUNvbmZpZ3VyYXRpb25cIiBbaXNSdGxMYXlvdXRdPVwiaXNSdGxMYXlvdXQoKVwiIFtsaXN0Q29udGVudFN0eWxlXT1cImdldExpc3RTdHlsZSgpXCI+PC9uZy1saXN0LWl0ZW0tY29udGVudD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { MatRippleModule } from '@angular/material/core';
|
|
3
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
4
|
+
import { MatListModule } from '@angular/material/list';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class MaterialsModule {
|
|
7
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MaterialsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
8
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: MaterialsModule, imports: [MatIconModule,
|
|
9
|
+
MatListModule,
|
|
10
|
+
MatRippleModule], exports: [MatIconModule,
|
|
11
|
+
MatListModule,
|
|
12
|
+
MatRippleModule] }); }
|
|
13
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MaterialsModule, imports: [MatIconModule,
|
|
14
|
+
MatListModule,
|
|
15
|
+
MatRippleModule, MatIconModule,
|
|
16
|
+
MatListModule,
|
|
17
|
+
MatRippleModule] }); }
|
|
18
|
+
}
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MaterialsModule, decorators: [{
|
|
20
|
+
type: NgModule,
|
|
21
|
+
args: [{
|
|
22
|
+
imports: [
|
|
23
|
+
MatIconModule,
|
|
24
|
+
MatListModule,
|
|
25
|
+
MatRippleModule,
|
|
26
|
+
],
|
|
27
|
+
declarations: [],
|
|
28
|
+
exports: [
|
|
29
|
+
MatIconModule,
|
|
30
|
+
MatListModule,
|
|
31
|
+
MatRippleModule,
|
|
32
|
+
]
|
|
33
|
+
}]
|
|
34
|
+
}] });
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWxzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1hdGVyaWFsLW11bHRpbGV2ZWwtbWVudS9zcmMvbGliL21hdGVyaWFscy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFldkQsTUFBTSxPQUFPLGVBQWU7K0dBQWYsZUFBZTtnSEFBZixlQUFlLFlBWHhCLGFBQWE7WUFDYixhQUFhO1lBQ2IsZUFBZSxhQUlmLGFBQWE7WUFDYixhQUFhO1lBQ2IsZUFBZTtnSEFHTixlQUFlLFlBWHhCLGFBQWE7WUFDYixhQUFhO1lBQ2IsZUFBZSxFQUlmLGFBQWE7WUFDYixhQUFhO1lBQ2IsZUFBZTs7NEZBR04sZUFBZTtrQkFiM0IsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsYUFBYTt3QkFDYixhQUFhO3dCQUNiLGVBQWU7cUJBQ2hCO29CQUNELFlBQVksRUFBRSxFQUFFO29CQUNoQixPQUFPLEVBQUU7d0JBQ1AsYUFBYTt3QkFDYixhQUFhO3dCQUNiLGVBQWU7cUJBQ2hCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IE1hdFJpcHBsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdExpc3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9saXN0JztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW1xyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIE1hdExpc3RNb2R1bGUsXHJcbiAgICBNYXRSaXBwbGVNb2R1bGUsXHJcbiAgXSxcclxuICBkZWNsYXJhdGlvbnM6IFtdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBNYXRMaXN0TW9kdWxlLFxyXG4gICAgTWF0UmlwcGxlTW9kdWxlLFxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIE1hdGVyaWFsc01vZHVsZSB7IH1cclxuIl19
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import { ExpandCollapseStatusEnum } from './app.model';
|
|
4
|
+
import { CONSTANT } from './constants';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class MultilevelMenuService {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.expandCollapseStatus = new Subject();
|
|
9
|
+
this.expandCollapseStatus$ = this.expandCollapseStatus.asObservable();
|
|
10
|
+
this.selectedMenuID = new Subject();
|
|
11
|
+
this.selectedMenuID$ = this.selectedMenuID.asObservable();
|
|
12
|
+
}
|
|
13
|
+
generateId() {
|
|
14
|
+
let text = '';
|
|
15
|
+
for (let i = 0; i < 20; i++) {
|
|
16
|
+
text += CONSTANT.POSSIBLE.charAt(Math.floor(Math.random() * CONSTANT.POSSIBLE.length));
|
|
17
|
+
}
|
|
18
|
+
return text;
|
|
19
|
+
}
|
|
20
|
+
addRandomId(nodes) {
|
|
21
|
+
nodes.forEach((node) => {
|
|
22
|
+
node.id = this.generateId();
|
|
23
|
+
if (node.items !== undefined) {
|
|
24
|
+
this.addRandomId(node.items);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
recursiveCheckId(node, nodeId) {
|
|
29
|
+
if (node.id === nodeId) {
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
if (node.items !== undefined) {
|
|
34
|
+
return node.items.some((nestedNode) => {
|
|
35
|
+
return this.recursiveCheckId(nestedNode, nodeId);
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
findNodeRecursively({ nodes, link, id }) {
|
|
41
|
+
for (let nodeIndex = 0; nodeIndex < nodes.length; nodeIndex++) {
|
|
42
|
+
const node = nodes[nodeIndex];
|
|
43
|
+
for (const key in node) {
|
|
44
|
+
if (node.hasOwnProperty(key)) {
|
|
45
|
+
if (encodeURI(node.link) === link) {
|
|
46
|
+
this.foundLinkObject = node;
|
|
47
|
+
}
|
|
48
|
+
else if (node.id === id) {
|
|
49
|
+
this.foundLinkObject = node;
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
if (node.items !== undefined) {
|
|
53
|
+
this.findNodeRecursively({
|
|
54
|
+
nodes: node.items,
|
|
55
|
+
link: link ? link : null,
|
|
56
|
+
id: id ? id : null
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
getMatchedObjectByUrl(nodes, link) {
|
|
65
|
+
this.findNodeRecursively({ nodes, link });
|
|
66
|
+
return this.foundLinkObject;
|
|
67
|
+
}
|
|
68
|
+
getMatchedObjectById(nodes, id) {
|
|
69
|
+
this.findNodeRecursively({ nodes, id });
|
|
70
|
+
return this.foundLinkObject;
|
|
71
|
+
}
|
|
72
|
+
// overrides key-value pipe's default reordering (by key) by implementing dummy comprarer function
|
|
73
|
+
// https://angular.io/api/common/KeyValuePipe#description
|
|
74
|
+
kvDummyComparerFn() {
|
|
75
|
+
return 0;
|
|
76
|
+
}
|
|
77
|
+
setMenuExpandCollapseStatus(status) {
|
|
78
|
+
this.expandCollapseStatus.next(status ? status : ExpandCollapseStatusEnum.neutral);
|
|
79
|
+
}
|
|
80
|
+
selectMenuByID(menuID) {
|
|
81
|
+
this.selectedMenuID.next(menuID);
|
|
82
|
+
return this.foundLinkObject;
|
|
83
|
+
}
|
|
84
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MultilevelMenuService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
85
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MultilevelMenuService, providedIn: 'root' }); }
|
|
86
|
+
}
|
|
87
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MultilevelMenuService, decorators: [{
|
|
88
|
+
type: Injectable,
|
|
89
|
+
args: [{
|
|
90
|
+
providedIn: 'root'
|
|
91
|
+
}]
|
|
92
|
+
}] });
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlsZXZlbC1tZW51LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1tYXRlcmlhbC1tdWx0aWxldmVsLW1lbnUvc3JjL2xpYi9tdWx0aWxldmVsLW1lbnUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBOEIsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzFELE9BQU8sRUFBa0Isd0JBQXdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkUsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGFBQWEsQ0FBQzs7QUFLckMsTUFBTSxPQUFPLHFCQUFxQjtJQUhsQztRQUtVLHlCQUFvQixHQUFzQyxJQUFJLE9BQU8sRUFBNEIsQ0FBQztRQUMxRywwQkFBcUIsR0FBeUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBRS9GLG1CQUFjLEdBQW9CLElBQUksT0FBTyxFQUFVLENBQUM7UUFDaEUsb0JBQWUsR0FBdUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztLQXNFMUU7SUFwRVMsVUFBVTtRQUNoQixJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDNUIsSUFBSSxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN6RixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsV0FBVyxDQUFDLEtBQXVCO1FBQ2pDLEtBQUssQ0FB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QUMsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFDRCxjQUFjLENBQUMsTUFBYztRQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqQyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQzsrR0EzRVUscUJBQXFCO21IQUFyQixxQkFBcUIsY0FGcEIsTUFBTTs7NEZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBNdWx0aWxldmVsTm9kZSwgRXhwYW5kQ29sbGFwc2VTdGF0dXNFbnVtIH0gZnJvbSAnLi9hcHAubW9kZWwnO1xyXG5pbXBvcnQge0NPTlNUQU5UfSBmcm9tICcuL2NvbnN0YW50cyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNdWx0aWxldmVsTWVudVNlcnZpY2Uge1xyXG4gIGZvdW5kTGlua09iamVjdDogTXVsdGlsZXZlbE5vZGU7XHJcbiAgcHJpdmF0ZSBleHBhbmRDb2xsYXBzZVN0YXR1czogU3ViamVjdDxFeHBhbmRDb2xsYXBzZVN0YXR1c0VudW0+ID0gbmV3IFN1YmplY3Q8RXhwYW5kQ29sbGFwc2VTdGF0dXNFbnVtPigpO1xyXG4gIGV4cGFuZENvbGxhcHNlU3RhdHVzJDogT2JzZXJ2YWJsZTxFeHBhbmRDb2xsYXBzZVN0YXR1c0VudW0+ID0gdGhpcy5leHBhbmRDb2xsYXBzZVN0YXR1cy5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJpdmF0ZSBzZWxlY3RlZE1lbnVJRDogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xyXG4gIHNlbGVjdGVkTWVudUlEJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5zZWxlY3RlZE1lbnVJRC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJpdmF0ZSBnZW5lcmF0ZUlkKCk6IHN0cmluZyB7XHJcbiAgICBsZXQgdGV4dCA9ICcnO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyMDsgaSsrKSB7XHJcbiAgICAgIHRleHQgKz0gQ09OU1RBTlQuUE9TU0lCTEUuY2hhckF0KE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIENPTlNUQU5ULlBPU1NJQkxFLmxlbmd0aCkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRleHQ7XHJcbiAgfVxyXG4gIGFkZFJhbmRvbUlkKG5vZGVzOiBNdWx0aWxldmVsTm9kZVtdKTogdm9pZCB7XHJcbiAgICBub2Rlcy5mb3JFYWNoKChub2RlOiBNdWx0aWxldmVsTm9kZSkgPT4ge1xyXG4gICAgICBub2RlLmlkID0gdGhpcy5nZW5lcmF0ZUlkKCk7XHJcbiAgICAgIGlmIChub2RlLml0ZW1zICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzLmFkZFJhbmRvbUlkKG5vZGUuaXRlbXMpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgcmVjdXJzaXZlQ2hlY2tJZChub2RlOiBNdWx0aWxldmVsTm9kZSwgbm9kZUlkOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGlmIChub2RlLmlkID09PSBub2RlSWQpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAobm9kZS5pdGVtcyAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgcmV0dXJuIG5vZGUuaXRlbXMuc29tZSgobmVzdGVkTm9kZTogTXVsdGlsZXZlbE5vZGUpID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLnJlY3Vyc2l2ZUNoZWNrSWQobmVzdGVkTm9kZSwgbm9kZUlkKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBwcml2YXRlIGZpbmROb2RlUmVjdXJzaXZlbHkoe25vZGVzLCBsaW5rLCBpZH06IHtub2RlczogTXVsdGlsZXZlbE5vZGVbXSwgbGluaz86IHN0cmluZywgaWQ/OiBzdHJpbmd9KTogdm9pZCB7XHJcbiAgICBmb3IgKGxldCBub2RlSW5kZXggPSAwOyBub2RlSW5kZXggPCBub2Rlcy5sZW5ndGg7IG5vZGVJbmRleCsrKSB7XHJcbiAgICAgIGNvbnN0IG5vZGUgPSBub2Rlc1tub2RlSW5kZXhdO1xyXG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBub2RlKSB7XHJcbiAgICAgICAgaWYgKG5vZGUuaGFzT3duUHJvcGVydHkoa2V5KSkge1xyXG4gICAgICAgICAgaWYgKGVuY29kZVVSSShub2RlLmxpbmspID09PSBsaW5rKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm91bmRMaW5rT2JqZWN0ID0gbm9kZTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAobm9kZS5pZCA9PT0gaWQpIHtcclxuICAgICAgICAgICAgdGhpcy5mb3VuZExpbmtPYmplY3QgPSBub2RlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKG5vZGUuaXRlbXMgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuZmluZE5vZGVSZWN1cnNpdmVseSh7XHJcbiAgICAgICAgICAgICAgICBub2Rlczogbm9kZS5pdGVtcyxcclxuICAgICAgICAgICAgICAgIGxpbms6IGxpbmsgPyBsaW5rIDogbnVsbCxcclxuICAgICAgICAgICAgICAgIGlkOiBpZCA/IGlkIDogbnVsbFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldE1hdGNoZWRPYmplY3RCeVVybChub2RlczogTXVsdGlsZXZlbE5vZGVbXSwgbGluazogc3RyaW5nKTogTXVsdGlsZXZlbE5vZGUge1xyXG4gICAgdGhpcy5maW5kTm9kZVJlY3Vyc2l2ZWx5KHtub2RlcywgbGlua30pO1xyXG4gICAgcmV0dXJuIHRoaXMuZm91bmRMaW5rT2JqZWN0O1xyXG4gIH1cclxuICBnZXRNYXRjaGVkT2JqZWN0QnlJZChub2RlczogTXVsdGlsZXZlbE5vZGVbXSwgaWQ6IHN0cmluZyk6IE11bHRpbGV2ZWxOb2RlIHtcclxuICAgIHRoaXMuZmluZE5vZGVSZWN1cnNpdmVseSh7bm9kZXMsIGlkfSk7XHJcbiAgICByZXR1cm4gdGhpcy5mb3VuZExpbmtPYmplY3Q7XHJcbiAgfVxyXG4gIC8vIG92ZXJyaWRlcyBrZXktdmFsdWUgcGlwZSdzIGRlZmF1bHQgcmVvcmRlcmluZyAoYnkga2V5KSBieSBpbXBsZW1lbnRpbmcgZHVtbXkgY29tcHJhcmVyIGZ1bmN0aW9uXHJcbiAgLy8gaHR0cHM6Ly9hbmd1bGFyLmlvL2FwaS9jb21tb24vS2V5VmFsdWVQaXBlI2Rlc2NyaXB0aW9uXHJcbiAga3ZEdW1teUNvbXBhcmVyRm4oKSB7XHJcbiAgICByZXR1cm4gMDtcclxuICB9XHJcbiAgc2V0TWVudUV4cGFuZENvbGxhcHNlU3RhdHVzKHN0YXR1czogRXhwYW5kQ29sbGFwc2VTdGF0dXNFbnVtKTogdm9pZCB7XHJcbiAgICB0aGlzLmV4cGFuZENvbGxhcHNlU3RhdHVzLm5leHQoc3RhdHVzID8gc3RhdHVzIDogRXhwYW5kQ29sbGFwc2VTdGF0dXNFbnVtLm5ldXRyYWwpO1xyXG4gIH1cclxuICBzZWxlY3RNZW51QnlJRChtZW51SUQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5zZWxlY3RlZE1lbnVJRC5uZXh0KG1lbnVJRCk7XHJcbiAgICByZXR1cm4gdGhpcy5mb3VuZExpbmtPYmplY3Q7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|