keycloak/themes/zariot/keycloak-preview/account/resources/app/ContentPages.js
2025-02-18 15:55:19 +03:00

128 lines
5.1 KiB
JavaScript

"use strict";
/*
* Copyright 2019 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
Object.defineProperty(exports, "__esModule", { value: true });
var React = require("react");
var react_router_dom_1 = require("react-router-dom");
var react_core_1 = require("@patternfly/react-core");
var Msg_1 = require("./widgets/Msg");
var PageNotFound_1 = require("./content/page-not-found/PageNotFound");
;
function isModulePageDef(item) {
return item.modulePath !== undefined;
}
exports.isModulePageDef = isModulePageDef;
function isExpansion(contentItem) {
return contentItem.content !== undefined;
}
exports.isExpansion = isExpansion;
function groupId(group) {
return 'grp-' + group;
}
function itemId(group, item) {
return 'grp-' + group + '_itm-' + item;
}
function isChildOf(parent, child) {
for (var _i = 0, _a = parent.content; _i < _a.length; _i++) {
var item = _a[_i];
if (isExpansion(item) && isChildOf(item, child))
return true;
if (parent.groupId === child.groupId)
return true;
}
return false;
}
function createNavItems(activePage, contentParam, groupNum) {
if (typeof content === 'undefined')
return (React.createElement(React.Fragment, null));
var links = contentParam.map(function (item) {
var navLinkId = "nav-link-" + item.id;
if (isExpansion(item)) {
return React.createElement(react_core_1.NavExpandable, { id: navLinkId, groupId: item.groupId, key: item.groupId, title: Msg_1.Msg.localize(item.label, item.labelParams), isExpanded: isChildOf(item, activePage) }, createNavItems(activePage, item.content, groupNum + 1));
}
else {
var page = item;
return React.createElement(react_core_1.NavItem, { id: navLinkId, groupId: item.groupId, itemId: item.itemId, key: item.itemId, to: '#/app/' + page.path, isActive: activePage.itemId === item.itemId, type: "button" }, Msg_1.Msg.localize(page.label, page.labelParams));
}
});
return (React.createElement(React.Fragment, null, links));
}
function makeNavItems(activePage) {
console.log({ activePage: activePage });
return createNavItems(activePage, content, 0);
}
exports.makeNavItems = makeNavItems;
function setIds(contentParam, groupNum) {
if (typeof contentParam === 'undefined')
return groupNum;
var expansionGroupNum = groupNum;
for (var i = 0; i < contentParam.length; i++) {
var item = contentParam[i];
if (isExpansion(item)) {
item.itemId = itemId(groupNum, i);
expansionGroupNum = expansionGroupNum + 1;
item.groupId = groupId(expansionGroupNum);
expansionGroupNum = setIds(item.content, expansionGroupNum);
console.log('currentGroup=' + (expansionGroupNum));
}
else {
item.groupId = groupId(groupNum);
item.itemId = itemId(groupNum, i);
}
}
;
return expansionGroupNum;
}
function initGroupAndItemIds() {
setIds(content, 0);
console.log({ content: content });
}
exports.initGroupAndItemIds = initGroupAndItemIds;
// get rid of Expansions and put all PageDef items into a single array
function flattenContent(pageDefs) {
var flat = [];
for (var _i = 0, pageDefs_1 = pageDefs; _i < pageDefs_1.length; _i++) {
var item = pageDefs_1[_i];
if (isExpansion(item)) {
flat.push.apply(flat, flattenContent(item.content));
}
else {
flat.push(item);
}
}
return flat;
}
exports.flattenContent = flattenContent;
function makeRoutes() {
if (typeof content === 'undefined')
return (React.createElement("span", null));
var pageDefs = flattenContent(content);
var routes = pageDefs.map(function (page) {
if (isModulePageDef(page)) {
var node_1 = React.createElement(page.module[page.componentName], { 'pageDef': page });
return React.createElement(react_router_dom_1.Route, { key: page.itemId, path: '/app/' + page.path, exact: true, render: function () { return node_1; } });
}
else {
var pageDef = page;
return React.createElement(react_router_dom_1.Route, { key: page.itemId, path: '/app/' + page.path, exact: true, component: pageDef.component });
}
});
return (React.createElement(react_router_dom_1.Switch, null,
routes,
React.createElement(react_router_dom_1.Route, { component: PageNotFound_1.PageNotFound })));
}
exports.makeRoutes = makeRoutes;
//# sourceMappingURL=ContentPages.js.map