react-application-core
Version:
A react-based application core for the business applications.
105 lines • 5.24 kB
JavaScript
;
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