UNPKG

react-application-core

Version:

A react-based application core for the business applications.

105 lines 5.24 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __spreadArrays = (this && this.__spreadArrays) || function () { for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j]; return r; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.NavigationMenuBuilder = void 0; var di_1 = require("../di"); var definition_1 = require("../definition"); var util_1 = require("../util"); var NavigationMenuBuilder = /** @class */ (function () { function NavigationMenuBuilder() { } NavigationMenuBuilder_1 = NavigationMenuBuilder; NavigationMenuBuilder.prototype.provide = function (wrapperEntity) { var _this = this; var menuItems = []; this.menu.forEach(function (item) { var itemChildren = item.children; if (item.type === definition_1.NavigationItemTypesEnum.GROUP && Array.isArray(itemChildren) && itemChildren.length > 0) { var filteredChildren = itemChildren.filter(function (itm) { return _this.isAccessible(itm); }); if (filteredChildren.length) { menuItems = menuItems .concat(util_1.TypeUtils.isDef(item.label) ? __assign(__assign({}, item), { type: definition_1.NavigationItemTypesEnum.SUB_HEADER }) : []) .concat(filteredChildren.map(function (itm) { return (__assign(__assign({}, itm), { parent: item })); })); } } else if (_this.isAccessible(item)) { menuItems.push(__assign({}, item)); } }); var dynamicSections = this.dynamicSections; // TODO refactoring var stackRoutePaths = util_1.ifNotNilThanValue(wrapperEntity.stack.stack, function (stack) { return Array.from(stack.map(function (itm) { return util_1.getRoutePathBySection(itm.section, dynamicSections); })).reverse(); }, []); var activeItem = null; for (var _i = 0, stackRoutePaths_1 = stackRoutePaths; _i < stackRoutePaths_1.length; _i++) { var routePath = stackRoutePaths_1[_i]; if (activeItem) { break; } for (var _a = 0, menuItems_1 = menuItems; _a < menuItems_1.length; _a++) { var itm = menuItems_1[_a]; if (__spreadArrays([itm.link], (itm.relatedLinks || [])).includes(routePath)) { activeItem = itm; break; } } } return menuItems.map(function (item) { return activeItem && item === activeItem ? (__assign(__assign({}, item), { active: true })) : (__assign({}, item)); }); }; /** * @stable [19.10.2018] * @param {INavigationListItemEntity} itm * @returns {boolean} */ NavigationMenuBuilder.prototype.isAccessible = function (itm) { return !itm.accessConfiguration || this.permissionsManager.isAccessible(itm.accessConfiguration); }; var NavigationMenuBuilder_1; __decorate([ di_1.lazyInject(di_1.DI_TYPES.DynamicSections), __metadata("design:type", Object) ], NavigationMenuBuilder.prototype, "dynamicSections", void 0); __decorate([ di_1.lazyInject(di_1.DI_TYPES.Menu), __metadata("design:type", Array) ], NavigationMenuBuilder.prototype, "menu", void 0); __decorate([ di_1.lazyInject(di_1.DI_TYPES.PermissionsManager), __metadata("design:type", Object) ], NavigationMenuBuilder.prototype, "permissionsManager", void 0); NavigationMenuBuilder = NavigationMenuBuilder_1 = __decorate([ di_1.provideInSingleton(NavigationMenuBuilder_1) ], NavigationMenuBuilder); return NavigationMenuBuilder; }()); exports.NavigationMenuBuilder = NavigationMenuBuilder; //# sourceMappingURL=navigation-menu.builder.js.map