UNPKG

rap-react

Version:

To make it easy for you to get started with GitLab, here's a list of recommended next steps.

446 lines (445 loc) 21.4 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.Header = void 0; var _react = _interopRequireWildcard(require("react")); var _userContext = require("../../../context/user/userContext"); var _entityService = require("../../../services/entityService"); var _dialog = require("../dialog"); var _permissionService = require("../../../services/permissionService"); var _enums = require("../../../constants/enums"); var _jquery = _interopRequireDefault(require("jquery")); var _jsxRuntime = require("react/jsx-runtime"); function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } const Header = _ref => { let { brandCode } = _ref; const dialogRef = (0, _react.useRef)(null); const { state, logout } = (0, _react.useContext)(_userContext.UserContext); const [show, SetShow] = (0, _react.useState)(false); const [showOAMenu, SetShowOAMenu] = (0, _react.useState)(false); const [showSSRMenu, SetShowSSRMenu] = (0, _react.useState)(false); const [showRRMenu, SetShowRRMenu] = (0, _react.useState)(false); const [showRolesUsersMenu, SetShowRolesUsersMenu] = (0, _react.useState)(false); const [showLocationsMenu, SetShowLocationsMenu] = (0, _react.useState)(false); const dashboardUrl = (0, _entityService.getEntityUrl)("Dashboard"); let distinctModules = state.user.distinctModules; const moduleNames = { OrderAheadStatusModule: "OrderAheadStatus", ManageRolesAndUsersModule: "ManageRolesAndUsers", SmartSellReportingModule: "SmartSellReporting", RevenueManagement: "RevenueManagement", Locations: "Locations" }; const handleLogout = e => { logout(); }; const handleToggle = () => { // SetShow(current => !current); SetShow(!show); SetShowOAMenu(false); SetShowSSRMenu(false); SetShowRolesUsersMenu(false); SetShowLocationsMenu(false); }; const ref = (0, _react.useRef)(null); (0, _react.useEffect)(() => { let handler = e => { if (!ref.current.contains(e.target)) { SetShow(false); } }; document.addEventListener("mousedown", handler); return () => { document.removeEventListener("mousedown", handler); }; }, []); const handleOAmenu = () => { SetShowOAMenu(!showOAMenu); }; const handleSSRMenu = () => { SetShowSSRMenu(!showSSRMenu); }; const handleRRMenu = () => { SetShowRRMenu(!showRRMenu); }; const handleRolesUsersMenu = () => { SetShowRolesUsersMenu(!showRolesUsersMenu); }; const handleLocationsMenu = () => { SetShowLocationsMenu(!showLocationsMenu); }; const canResetPassword = () => { var _state$user; const loginUserType = state === null || state === void 0 || (_state$user = state.user) === null || _state$user === void 0 || (_state$user = _state$user.userProfile) === null || _state$user === void 0 || (_state$user = _state$user.loginUserType) === null || _state$user === void 0 ? void 0 : _state$user.toUpperCase(); if (loginUserType === "BREAKGLASS" || loginUserType === "FRMUSER") { var _state$user$userProfi, _state$user2; return (_state$user$userProfi = state === null || state === void 0 || (_state$user2 = state.user) === null || _state$user2 === void 0 || (_state$user2 = _state$user2.userProfile) === null || _state$user2 === void 0 ? void 0 : _state$user2.isPrimaryBrand) !== null && _state$user$userProfi !== void 0 ? _state$user$userProfi : false; } return false; }; const canSwitchBrand = () => { var _state$user3; const hasMultipleBrands = state === null || state === void 0 || (_state$user3 = state.user) === null || _state$user3 === void 0 || (_state$user3 = _state$user3.userProfile) === null || _state$user3 === void 0 ? void 0 : _state$user3.hasMultipleBrands; if (hasMultipleBrands !== undefined && hasMultipleBrands === true) { return true; } return false; }; const getDashboard = () => { return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_react.default.Fragment, { children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", { className: "menu-accordian", children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: "menu-acc-head", children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { children: /*#__PURE__*/(0, _jsxRuntime.jsx)("a", { href: dashboardUrl, children: "Home" }) }) }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: "menu-any-body" })] }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: "dd-link-seperator" })] }); }; const getModuleEntities = mName => { const privileges = state.user.privileges; let values = privileges.filter(x => x.moduleName === mName && x.showInMenu === true); values = values.sort((a, b) => a.order - b.order); return values; }; const getEntityName = (eName, eDescription) => { switch (eName) { case _enums.entityNames.ROLEMANAGEMENT: return "Roles"; case _enums.entityNames.USERMANAGEMENT: return "Users"; case _enums.entityNames.GROUPMANAGEMENT: return "Groups"; default: return eDescription; } }; const getModuleEntity = (entity, i) => { var _state$user4; const entityName = entity.entityName; const displayName = getEntityName(entity.entityName, entity.entityDescription); const url = (0, _entityService.getEntityUrl)(entityName); const showEntity = (0, _permissionService.hasAccess)(state === null || state === void 0 || (_state$user4 = state.user) === null || _state$user4 === void 0 ? void 0 : _state$user4.privileges, entityName, _enums.accessTypes.READ); if (showEntity) { return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_react.default.Fragment, { children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("a", { href: url, "data-value": entityName, className: "menu-link-block w-inline-block", tabIndex: "0", children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { children: displayName }) }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: "dd-link-seperator" })] }, i); } return /*#__PURE__*/(0, _jsxRuntime.jsx)(_react.default.Fragment, {}); }; const getClassHandler = mName => { if (mName === moduleNames.OrderAheadStatusModule) { handleOAmenu(); } if (mName === moduleNames.ManageRolesAndUsersModule) { handleRolesUsersMenu(); } if (mName === moduleNames.SmartSellReportingModule) { handleSSRMenu(); } if (mName === moduleNames.RevenueManagement) { handleRRMenu(); } if (mName === moduleNames.Locations) { handleLocationsMenu(); } }; const getClassVariable = (mName, mainClsName, trueClsName, falseClsName) => { let bValue = false; switch (mName) { case moduleNames.ManageRolesAndUsersModule: { bValue = showRolesUsersMenu; break; } case moduleNames.Locations: { bValue = showLocationsMenu; break; } case moduleNames.SmartSellReportingModule: { bValue = showSSRMenu; break; } case moduleNames.RevenueManagement: { bValue = showRRMenu; break; } case moduleNames.OrderAheadStatusModule: default: { bValue = showOAMenu; break; } } return mainClsName + " " + (bValue === true ? trueClsName : falseClsName); }; const hasAtleastTwoModuleAccess = () => { const privileges = state.user.privileges; let modules = privileges.filter(x => x.showInMenu === true && x.canRead === true); let moduleNames = []; for (let c = 0; c < modules.length; c++) { let m = modules[c]; if (moduleNames.indexOf(m.moduleName) === -1) { moduleNames.push(m.moduleName); } } return moduleNames.length > 1; }; const getModule = (obj, k) => { let module = obj; let moduleName = obj.moduleName; let moduleDisplayName = module.moduleDescription; let moduleEntities = getModuleEntities(moduleName); let accessibleEntities = moduleEntities.filter(x => x.showInMenu === true && x.canRead === true); if (accessibleEntities.length > 0) return /*#__PURE__*/(0, _jsxRuntime.jsx)(_react.default.Fragment, { children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", { className: "menu-accordian", children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", { className: "menu-acc-head", onClick: () => { getClassHandler(moduleName); }, children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", { children: moduleDisplayName }), /*#__PURE__*/(0, _jsxRuntime.jsx)("img", { loading: "lazy", alt: "", className: getClassVariable(moduleName, "menu-acc-icon", "expand", "") })] }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: getClassVariable(moduleName, "menu-acc-body", "", "collapse"), children: moduleEntities.map((entity, i) => { return getModuleEntity(entity, i); }) })] }) }, k); }; const getName = () => { var _state$user5, _userProfile$firstNam, _userProfile$lastName; let userProfile = state === null || state === void 0 || (_state$user5 = state.user) === null || _state$user5 === void 0 ? void 0 : _state$user5.userProfile; let firstName = (_userProfile$firstNam = userProfile === null || userProfile === void 0 ? void 0 : userProfile.firstName) !== null && _userProfile$firstNam !== void 0 ? _userProfile$firstNam : ""; let lastName = (_userProfile$lastName = userProfile === null || userProfile === void 0 ? void 0 : userProfile.lastName) !== null && _userProfile$lastName !== void 0 ? _userProfile$lastName : ""; let name = firstName + (lastName.length > 0 ? " " + lastName : ""); return name; }; const getInitials = () => { var _state$user6, _userProfile$firstNam2, _userProfile$lastName2; let userProfile = state === null || state === void 0 || (_state$user6 = state.user) === null || _state$user6 === void 0 ? void 0 : _state$user6.userProfile; let firstName = (_userProfile$firstNam2 = userProfile === null || userProfile === void 0 ? void 0 : userProfile.firstName) !== null && _userProfile$firstNam2 !== void 0 ? _userProfile$firstNam2 : ""; let lastName = (_userProfile$lastName2 = userProfile === null || userProfile === void 0 ? void 0 : userProfile.lastName) !== null && _userProfile$lastName2 !== void 0 ? _userProfile$lastName2 : ""; let initials = (firstName === null || firstName === void 0 ? void 0 : firstName.slice(0, 1)) + lastName.slice(0, 1); return initials; }; const getDisplayRoleName = () => { var _state$user7; let userProfile = state === null || state === void 0 || (_state$user7 = state.user) === null || _state$user7 === void 0 ? void 0 : _state$user7.userProfile; return userProfile === null || userProfile === void 0 ? void 0 : userProfile.userRoleType; }; const onResetPassword = () => { SetShow(false); dialogRef.current.handleResetPassword(); }; const onSwitchBrand = () => { var _state$user8, _state$user9; const completeApplicationUrl = "".concat(process.env.REACT_APP_GENERIC_APP_URL, "ExternalBrandSelection"); const token = state === null || state === void 0 ? void 0 : state.token; const brandAPIUrl = process.env.REACT_APP_AUTH_API_PRIVATE_URL; const isCorporateUser = (state === null || state === void 0 || (_state$user8 = state.user) === null || _state$user8 === void 0 || (_state$user8 = _state$user8.userProfile) === null || _state$user8 === void 0 || (_state$user8 = _state$user8.loginUserType) === null || _state$user8 === void 0 ? void 0 : _state$user8.toUpperCase()) === "OKTACORPORATE"; const corpBrandCode = state === null || state === void 0 || (_state$user9 = state.user) === null || _state$user9 === void 0 || (_state$user9 = _state$user9.userProfile) === null || _state$user9 === void 0 ? void 0 : _state$user9.corpBrandCode; const frm = (0, _jquery.default)("form[data-name=form-hidden"); const getHiddenElement = name => { return (0, _jquery.default)(frm).find("input[type=hidden][name=" + name + "]"); }; const setHiddenElementValue = (name, value) => { let hiddenElement = getHiddenElement(name); hiddenElement.val(value); }; const fnSubmitToSinglePageApp = () => { setHiddenElementValue("hdnToken", token); setHiddenElementValue("hdnIsCorporateUser", isCorporateUser); setHiddenElementValue("hdnBrandAPIUrl", brandAPIUrl); setHiddenElementValue("hdnCorpBrandCode", corpBrandCode); frm.attr("action", completeApplicationUrl); frm.attr("method", "post"); frm[0].submit(); }; fnSubmitToSinglePageApp(); }; const onSendFeedback = () => { SetShow(false); dialogRef.current.handleSendFeedback(); }; return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_react.default.Fragment, { children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_dialog.DialogBox, { ref: dialogRef }), canSwitchBrand() ? /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: "blank-container", children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("form", { "data-name": "form-hidden", children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("input", { type: "hidden", name: "hdnToken", value: "" }), /*#__PURE__*/(0, _jsxRuntime.jsx)("input", { type: "hidden", name: "hdnBrandAPIUrl", value: "" }), /*#__PURE__*/(0, _jsxRuntime.jsx)("input", { type: "hidden", name: "hdnIsCorporateUser", value: "" }), /*#__PURE__*/(0, _jsxRuntime.jsx)("input", { type: "hidden", name: "hdnCorpBrandCode", value: "" })] }) }) : /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: "blank-container" }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: "dashboard-header", children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: "container menu", children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: "dashboard-header", children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", { className: "container menu", children: [hasAtleastTwoModuleAccess() && /*#__PURE__*/(0, _jsxRuntime.jsx)("a", { href: dashboardUrl, className: "main-logo-wrapper w-inline-block", children: " " }), hasAtleastTwoModuleAccess() === false && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: "main-logo-wrapper w-inline-block" }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: "menu-link-wrapper", children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", { ref: ref, "data-hover": "false", "data-delay": "0", className: "menu-dropdown w-dropdown", children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: "menu-dd-toggle w-dropdown-toggle", children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", { className: "hamburger-menu", onClick: event => { handleToggle(event); }, children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: "ham-line" }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: "ham-line" }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: "ham-line" })] }) }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("nav", { className: "menu-dd-list w-dropdown-list ".concat(show ? "w--open" : "w-close"), children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: "dd-triangle" }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", { className: "dd-link-wrapper", children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", { className: "menu-profile-header", children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: "user-profile-icon", children: getInitials() }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", { className: "user-profile-title", children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: "user-title", children: getName() }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: "user-role", children: getDisplayRoleName() })] })] }), hasAtleastTwoModuleAccess() && getDashboard(), distinctModules.length > 0 && distinctModules.map((obj, k) => { return getModule(obj, k); }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: "dd-link-seperator" }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", { onClick: onSendFeedback, className: "menu-link-block w-inline-block", children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: "dd-link-icon feedback" }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { children: "Feedback/Support" })] }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: "dd-link-seperator" }), canResetPassword() && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_react.default.Fragment, { children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", { onClick: onResetPassword, className: "menu-link-block w-inline-block", children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: "dd-link-icon" }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { children: "Reset Password" })] }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: "dd-link-seperator" })] }), canSwitchBrand() && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_react.default.Fragment, { children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", { onClick: onSwitchBrand, className: "menu-link-block w-inline-block", children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: "dd-link-icon dd-link-switchbrand" }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { children: "Switch Brand" })] }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: "dd-link-seperator" })] }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", { onClick: handleLogout, className: "menu-link-block w-inline-block", children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: "dd-link-icon logout" }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { children: "Logout" })] })] })] })] }) })] }) }) }) })] }); }; exports.Header = Header; var _default = exports.default = Header;