udp-react-enterprise-component-library 25.16.1 → 25.16.2-beta.1
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/dist/{MenuPage-BSU-NITc.js → MenuPage-C4LnhsE3.js} +36 -12
- package/dist/MenuPage-C4LnhsE3.js.map +1 -0
- package/dist/{MenuPage-BtoG6GuI.js → MenuPage-fQS1_KWY.js} +1 -1
- package/dist/{UdpPublicForm-DNVbin2l.js → UdpPublicForm-CGo9h-lA.js} +3 -6
- package/dist/UdpPublicForm-CGo9h-lA.js.map +1 -0
- package/dist/{UdpPublicForm-DQ70FtUQ.js → UdpPublicForm-iGqFAAqg.js} +1 -1
- package/dist/{UdpRoutes-BctzBOjG.js → UdpRoutes-DgjUyGo6.js} +3 -3
- package/dist/{UdpRoutes-BctzBOjG.js.map → UdpRoutes-DgjUyGo6.js.map} +1 -1
- package/dist/index.js +10 -7
- package/dist/index.js.map +1 -1
- package/dist/menuPage/index.js +1 -1
- package/dist/routes/index.js +1 -1
- package/dist/types/maintenanceEngine/tableBrowser/TableColumnDefs.d.ts +1 -1
- package/dist/types/menuPage/CustomMenuPage.d.ts +3 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dist/types/udp/utilities/useDateStringColumnDef.d.ts +1 -1
- package/dist/udp/pages/index.js +2 -2
- package/dist/{udpPages-DigIOO_J.js → udpPages-D8I3GU4V.js} +7 -4
- package/dist/{udpPages-DigIOO_J.js.map → udpPages-D8I3GU4V.js.map} +1 -1
- package/export-map.json +1 -1
- package/package.json +3 -3
- package/dist/MenuPage-BSU-NITc.js.map +0 -1
- package/dist/UdpPublicForm-DNVbin2l.js.map +0 -1
|
@@ -68,7 +68,7 @@ const MenuPage = (props) => {
|
|
|
68
68
|
const user = useUser();
|
|
69
69
|
const { t } = useTranslation();
|
|
70
70
|
const setLocationState = useSetLocationState();
|
|
71
|
-
const { innerMenuOverride, mainContent, menuTitle } = props;
|
|
71
|
+
const { innerMenuOverride, mainContent, menuTitle, allowMissingPageParam = false } = props;
|
|
72
72
|
const [menuItemsList, setMenuItemsList] = useState([]);
|
|
73
73
|
const [selectedNode, setSelectedNode] = useState(null);
|
|
74
74
|
const [sidebarExpanded, setSidebarExpanded] = useState(true);
|
|
@@ -80,6 +80,18 @@ const MenuPage = (props) => {
|
|
|
80
80
|
const { setSubHeaderActionHasChildren, setNavigationExpanded } = useShellStore();
|
|
81
81
|
const [{ data: pageData, loading: pageLoading, error: pageError }] = useAxiosGet(ConfigService.tenantV1ApiUrl, `page/${selectedNode?.properties?.page?.id}`, {}, !selectedNode?.properties?.page?.id, false);
|
|
82
82
|
const handleSelectedNode = useCallback((node, menuIndex) => {
|
|
83
|
+
if (allowMissingPageParam) {
|
|
84
|
+
const firstNode = menuItemsList?.[0];
|
|
85
|
+
if (firstNode && String(node?.id) === String(firstNode.id)) {
|
|
86
|
+
if (location.search) history.replace({
|
|
87
|
+
pathname: location.pathname,
|
|
88
|
+
search: ""
|
|
89
|
+
});
|
|
90
|
+
setSelectedNode(node);
|
|
91
|
+
setHasUnsavedChanges(false);
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
83
95
|
const searchParams = new URLSearchParams(location.search);
|
|
84
96
|
searchParams.set("page", node.id);
|
|
85
97
|
history.push({
|
|
@@ -88,7 +100,12 @@ const MenuPage = (props) => {
|
|
|
88
100
|
});
|
|
89
101
|
setSelectedNode(node);
|
|
90
102
|
setHasUnsavedChanges(false);
|
|
91
|
-
}, [
|
|
103
|
+
}, [
|
|
104
|
+
history,
|
|
105
|
+
location,
|
|
106
|
+
allowMissingPageParam,
|
|
107
|
+
menuItemsList
|
|
108
|
+
]);
|
|
92
109
|
const handleDropNode = useCallback((sourceNode, targetNode, sourceNodeMenuIndex, targetNodeMenuIndex) => {}, []);
|
|
93
110
|
const handleSidebarExpandClick = useCallback(() => {
|
|
94
111
|
setSidebarExpanded((expanded) => !expanded);
|
|
@@ -143,14 +160,20 @@ const MenuPage = (props) => {
|
|
|
143
160
|
setNavigationExpanded(false);
|
|
144
161
|
} else if (list.length > 0) {
|
|
145
162
|
const firstNode = list[0];
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
163
|
+
if (allowMissingPageParam) {
|
|
164
|
+
setSelectedNode(firstNode);
|
|
165
|
+
setHasUnsavedChanges(false);
|
|
166
|
+
setNavigationExpanded(false);
|
|
167
|
+
} else {
|
|
168
|
+
searchParams.set("page", firstNode.id);
|
|
169
|
+
history.replace({
|
|
170
|
+
pathname: location.pathname,
|
|
171
|
+
search: searchParams.toString()
|
|
172
|
+
});
|
|
173
|
+
setSelectedNode(firstNode);
|
|
174
|
+
setHasUnsavedChanges(false);
|
|
175
|
+
setNavigationExpanded(false);
|
|
176
|
+
}
|
|
154
177
|
}
|
|
155
178
|
}
|
|
156
179
|
prevInnerMenuId.current = innerMenuId;
|
|
@@ -160,7 +183,8 @@ const MenuPage = (props) => {
|
|
|
160
183
|
history,
|
|
161
184
|
location,
|
|
162
185
|
innerMenuId,
|
|
163
|
-
findNodeById
|
|
186
|
+
findNodeById,
|
|
187
|
+
allowMissingPageParam
|
|
164
188
|
]);
|
|
165
189
|
useEffect(() => {
|
|
166
190
|
setSubHeaderActionHasChildren(false);
|
|
@@ -224,4 +248,4 @@ var MenuPage_default = MenuPage;
|
|
|
224
248
|
|
|
225
249
|
//#endregion
|
|
226
250
|
export { MenuPage_default };
|
|
227
|
-
//# sourceMappingURL=MenuPage-
|
|
251
|
+
//# sourceMappingURL=MenuPage-C4LnhsE3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MenuPage-C4LnhsE3.js","names":[],"sources":["../src/menuPage/MenuPage.jsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { useHistory, useLocation, Prompt } from 'react-router-dom';\nimport { useAxiosGet } from '../utilities/useAxiosGet';\nimport { UtilitySideBar } from '../UI/utilityDisplay/UtilitySideBar';\nimport { makeStyles } from '@material-ui/core';\nimport { PageContainer } from '../page/PageContainer';\nimport { transformMenuPageTree } from '../utilities/tree/TreeUtilities';\nimport { BaseTreeMenu } from '../treeMenu/BaseTreeMenu';\nimport { TreeViewModeEnums } from '../enums/unitySystemEnums';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useUser } from '../utilities/auth/useUser';\nimport { useShellStore } from '../stores/shellStore';\nimport { NodeLoader } from '../UI/feedback/NodeLoader';\nimport {\n APP_RIBBON_SPACE,\n useBuildEnvironment\n} from '../shell/ui/EnvironmentRibbon';\nimport { useSetLocationState } from '../hooks/useSetLocationState';\nimport { useTranslation } from 'react-i18next';\nimport { ConfigService } from 'udp-react-stencil-component-library';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n flex: 1,\n minHeight: ({ appRibbonSpace }) => `calc(100vh - ${appRibbonSpace + 56}px)`,\n display: 'grid',\n gridTemplateAreas: ['sidebar content'].map((line) => `\"${line}\"`).join(' '),\n gridTemplateColumns: 'auto 1fr',\n gridTemplateRows: 'auto 1fr'\n },\n sidebar: {\n gridArea: 'sidebar',\n marginRight: theme.spacing(1)\n },\n content: {\n gridArea: 'content',\n display: 'flex',\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n height: ({ appRibbonSpace }) => `calc(100vh - ${appRibbonSpace + 56}px)`,\n overflowY: 'auto'\n },\n menuContent: {\n marginTop: theme.spacing(1),\n height: ({ appRibbonSpace }) => `calc(100vh - ${appRibbonSpace + 116}px)`,\n overflowX: 'hidden'\n },\n loader: {\n marginRight: theme.spacing(1),\n marginLeft: theme.spacing(1)\n },\n loadingContent: {\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center'\n }\n}));\n\nconst MenuPage = (props) => {\n const buildEnv = useBuildEnvironment();\n const classes = useStyles({\n ...props,\n appRibbonSpace: buildEnv ? APP_RIBBON_SPACE : 0\n });\n const history = useHistory();\n const location = useLocation();\n const user = useUser();\n const { t } = useTranslation();\n const setLocationState = useSetLocationState();\n // Allow callers to provide an innerMenu directly (CustomMenuPage wrapper)\n const {\n innerMenuOverride,\n mainContent,\n menuTitle,\n allowMissingPageParam = false\n } = props;\n\n const [menuItemsList, setMenuItemsList] = useState([]); // holds a list of trees\n const [selectedNode, setSelectedNode] = useState(null);\n const [sidebarExpanded, setSidebarExpanded] = useState(true);\n const [hasUnsavedChanges, setHasUnsavedChanges] = useState(false);\n // Just the menuInstanceId for an inner menu\n const innerMenuId = location.pathname.replace('/menupage/', '');\n\n const prevInnerMenuId = useRef(innerMenuId);\n\n const [{ data: fetchedInnerMenu, loading: menuLoading }] = useAxiosGet(\n ConfigService.tenantV1ApiUrl,\n `menus/${innerMenuId}`,\n {},\n !innerMenuId,\n false\n );\n\n const innerMenu = innerMenuOverride ?? fetchedInnerMenu;\n\n const { setSubHeaderActionHasChildren, setNavigationExpanded } =\n useShellStore();\n\n const [{ data: pageData, loading: pageLoading, error: pageError }] =\n useAxiosGet(\n ConfigService.tenantV1ApiUrl,\n `page/${selectedNode?.properties?.page?.id}`,\n {},\n !selectedNode?.properties?.page?.id,\n false\n );\n\n const handleSelectedNode = useCallback(\n (node, menuIndex) => {\n if (allowMissingPageParam) {\n const firstNode = menuItemsList?.[0];\n if (firstNode && String(node?.id) === String(firstNode.id)) {\n // If there is an existing query string, normalize back to the base path\n if (location.search) {\n history.replace({\n pathname: location.pathname,\n search: ''\n });\n }\n setSelectedNode(node);\n setHasUnsavedChanges(false);\n return;\n }\n }\n\n const searchParams = new URLSearchParams(location.search);\n searchParams.set('page', node.id);\n\n history.push({\n pathname: location.pathname,\n search: searchParams.toString()\n });\n setSelectedNode(node);\n setHasUnsavedChanges(false);\n },\n [history, location, allowMissingPageParam, menuItemsList]\n );\n\n const handleDropNode = useCallback(\n (sourceNode, targetNode, sourceNodeMenuIndex, targetNodeMenuIndex) => {\n // TODO: Implement if we need to for next Phase\n },\n []\n );\n\n const handleSidebarExpandClick = useCallback(() => {\n setSidebarExpanded((expanded) => !expanded);\n }, []);\n\n const findNodeById = useCallback((node, id) => {\n if (!node) return null;\n if (node.id.toString() === id) return node;\n if (node.children) {\n for (const child of node.children) {\n const found = findNodeById(child, id);\n if (found) return found;\n }\n }\n return null;\n }, []);\n\n useEffect(() => {\n const searchParams = new URLSearchParams(location.search);\n const pageId = searchParams.get('page');\n if (pageId && menuItemsList.length > 0) {\n // Search all root menu trees for the node\n let node = null;\n for (const tree of menuItemsList) {\n node = findNodeById(tree, pageId);\n if (node) break;\n }\n if (node && node.id !== selectedNode?.id) {\n setSelectedNode(node);\n setHasUnsavedChanges(false);\n }\n }\n }, [location.search, menuItemsList, findNodeById, selectedNode]);\n\n useEffect(() => {\n const mainPageIdChanged = prevInnerMenuId.current !== innerMenuId;\n\n if (innerMenu) {\n const list = [];\n innerMenu.menuItemInstanceStructureViews.forEach((menuInstance) => {\n const updatedMenu = transformMenuPageTree(menuInstance);\n if (updatedMenu) {\n list.push(updatedMenu);\n }\n });\n setMenuItemsList(list);\n\n // Find the node matching the current page param\n const searchParams = new URLSearchParams(location.search);\n const pageId = searchParams.get('page');\n let nodeToSelect = null;\n\n if (pageId && list.length > 0) {\n // Try to find the node with this id\n for (const tree of list) {\n nodeToSelect = findNodeById(tree, pageId);\n if (nodeToSelect) break;\n }\n }\n\n // If we found a node, select it. If not, select the first node.\n if (nodeToSelect) {\n setSelectedNode(nodeToSelect);\n setHasUnsavedChanges(false);\n setNavigationExpanded(false);\n } else if (list.length > 0) {\n const firstNode = list[0];\n if (allowMissingPageParam) {\n // Do not modify URL when missing page param; select first node only.\n setSelectedNode(firstNode);\n setHasUnsavedChanges(false);\n setNavigationExpanded(false);\n } else {\n // No valid page param, select first node and update URL\n searchParams.set('page', firstNode.id);\n history.replace({\n pathname: location.pathname,\n search: searchParams.toString()\n });\n setSelectedNode(firstNode);\n setHasUnsavedChanges(false);\n setNavigationExpanded(false);\n }\n }\n }\n prevInnerMenuId.current = innerMenuId;\n }, [\n innerMenu,\n setNavigationExpanded,\n history,\n location,\n innerMenuId,\n findNodeById,\n allowMissingPageParam\n ]);\n\n useEffect(() => {\n setSubHeaderActionHasChildren(false);\n }, [setSubHeaderActionHasChildren]);\n\n // Setting location state label so that if this page was saved to favorites\n // we can determine the bread crumb\n useEffect(() => {\n if (innerMenu) {\n setLocationState({ label: t(innerMenu?.name) });\n }\n }, [setLocationState, t, innerMenu]);\n\n return (\n <DndProvider backend={HTML5Backend}>\n <Prompt\n when={hasUnsavedChanges}\n message='You have unsaved changes. Are you sure you want to leave this page?'\n />\n <div className={classes.root}>\n <div className={classes.sidebar}>\n <UtilitySideBar\n title={innerMenu?.name || menuTitle}\n isUsingChildren={true}\n resizable={true}\n removePadding={true}\n removeTopLayoutUnit={true}\n onUtilitySidebarToggleExpandClick={handleSidebarExpandClick}\n collapsedWidth={64}\n >\n <div className={classes.menuContent} key={innerMenuId}>\n {menuItemsList?.length > 0 &&\n !menuLoading &&\n menuItemsList.map((menuItems, index) => (\n <div key={menuItems.id} className={classes.nodeContainer}>\n <BaseTreeMenu\n menuItems={menuItems}\n onSelectNode={handleSelectedNode}\n onDropNode={handleDropNode}\n menuIndex={index}\n selectedNodeId={selectedNode?.id}\n selectedNodeParentId={selectedNode?.parentId}\n sidebarExpanded={sidebarExpanded}\n treeViewMode={TreeViewModeEnums.Classic}\n />\n </div>\n ))}\n {menuLoading && (\n <div className={classes.loader}>\n <NodeLoader loading={menuLoading} />\n </div>\n )}\n </div>\n </UtilitySideBar>\n </div>\n <div className={classes.content}>\n {mainContent ? (\n typeof mainContent === 'function'\n ? mainContent({ selectedNode, menuItemsList })\n : mainContent\n ) : (\n selectedNode?.properties?.page?.id && (\n <PageContainer\n user={user}\n key={selectedNode?.id}\n pageData={pageData}\n pageLoading={pageLoading}\n widgetParams={{\n pageId: pageData?.pageId,\n entityName: selectedNode?.properties?.page?.entity?.entityName,\n pbiReportCode: selectedNode?.properties?.page?.pbiReportCode,\n requiredFieldsMap:\n selectedNode?.properties?.page?.requiredFieldMapping,\n udpTagId: selectedNode?.properties?.page?.udpTagId,\n queryId: selectedNode?.properties?.page?.queryId,\n inquiryTreeId: selectedNode?.properties?.page?.inquiryTreeId,\n setHasUnsavedChanges: setHasUnsavedChanges\n }}\n disableMargins={true}\n fromMenu={true}\n />\n )\n )}\n </div>\n </div>\n </DndProvider>\n );\n};\n\nexport default MenuPage;\n"],"mappings":"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"}
|
|
@@ -51,6 +51,6 @@ import "./AggregateChip-7tOziH82.js";
|
|
|
51
51
|
import "./UtilityBarInport-BZbPE650.js";
|
|
52
52
|
import "./UtilitySideBar-otYqGPhu.js";
|
|
53
53
|
import "./BaseTreeMenu-CroItvOA.js";
|
|
54
|
-
import { MenuPage_default } from "./MenuPage-
|
|
54
|
+
import { MenuPage_default } from "./MenuPage-C4LnhsE3.js";
|
|
55
55
|
|
|
56
56
|
export { MenuPage_default as default };
|
|
@@ -20,15 +20,12 @@ const UdpPublicForm = (props) => {
|
|
|
20
20
|
const queryParams = useSearchParams();
|
|
21
21
|
const formId = queryParams.get("udpf_formId");
|
|
22
22
|
const tenantId = queryParams.get("udpf_tenantId");
|
|
23
|
+
const submissionId = queryParams.get("udpf_submissionId");
|
|
23
24
|
const callbackUrl = queryParams.get("udpf_callback_url");
|
|
24
|
-
useEffect(() => {
|
|
25
|
-
if (!formId) handleErrorSnackbar({}, "Form Id not found, please specify udpf_formid in the query params");
|
|
26
|
-
if (!tenantId) handleErrorSnackbar({}, "tenantId not found, please specify udpf_formid in the query params");
|
|
27
|
-
}, []);
|
|
28
|
-
if (!formId || !tenantId) return null;
|
|
29
25
|
return /* @__PURE__ */ React.createElement(UdpFormsRenderer, {
|
|
30
26
|
formId,
|
|
31
27
|
tenantId,
|
|
28
|
+
submissionId,
|
|
32
29
|
productId: ConfigService.config.UNITY_PRODUCT_ID,
|
|
33
30
|
apiUrlBase: ConfigService.productV1ApiUrl,
|
|
34
31
|
callbackUrl,
|
|
@@ -41,4 +38,4 @@ var UdpPublicForm_default = UdpPublicForm;
|
|
|
41
38
|
|
|
42
39
|
//#endregion
|
|
43
40
|
export { UdpPublicForm, UdpPublicForm_default, UdpPublicForm_exports };
|
|
44
|
-
//# sourceMappingURL=UdpPublicForm-
|
|
41
|
+
//# sourceMappingURL=UdpPublicForm-CGo9h-lA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UdpPublicForm-CGo9h-lA.js","names":[],"sources":["../src/udp/pages/UdpPublicForm.jsx"],"sourcesContent":["import React, { useEffect } from 'react';\nimport { UdpFormsRenderer } from 'udp-react-stencil-component-library';\nimport { useLocation } from 'react-router-dom';\nimport { useHandleAxiosSnackbar } from '../../utilities/apiHelpers';\nimport { useSnackbar } from 'notistack';\n\n\nconst useSearchParams = () => {\n const search = useLocation().search;\n\n // when params are populated with an internal redirect, like on a Page menu, the useLocation hook does not get the query params\n // so it will fallback with window.location.search in that case\n return new URLSearchParams(search || window.location.search);\n}\nexport const UdpPublicForm = (props) => {\n const { handleErrorSnackbar } = useHandleAxiosSnackbar();\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n \n const queryParams = useSearchParams()\n\n const formId = queryParams.get('udpf_formId');\n const tenantId = queryParams.get('udpf_tenantId');\n const submissionId = queryParams.get('udpf_submissionId');\n const callbackUrl = queryParams.get('udpf_callback_url');\n\n // useEffect(() => {\n // if (!formId) {\n // handleErrorSnackbar({}, 'Form Id not found, please specify udpf_formid in the query params');\n // }\n // if (!tenantId) {\n // handleErrorSnackbar({}, 'tenantId not found, please specify udpf_formid in the query params');\n // }\n // }, []);\n\n return (\n <UdpFormsRenderer\n formId={formId}\n tenantId={tenantId}\n submissionId={submissionId}\n productId={ConfigService.config.UNITY_PRODUCT_ID}\n apiUrlBase={ConfigService.productV1ApiUrl}\n callbackUrl={callbackUrl}\n enqueueSnackbar={enqueueSnackbar}\n closeSnackbar={closeSnackbar}\n isPublic\n />\n );\n};\n\nexport default UdpPublicForm;\n"],"mappings":";;;;;;;;;;;;AAOA,MAAM,wBAAwB;CAC5B,MAAM,SAAS,aAAa,CAAC;AAI7B,QAAO,IAAI,gBAAgB,UAAU,OAAO,SAAS,OAAO;;AAE9D,MAAa,iBAAiB,UAAU;CACtC,MAAM,EAAE,wBAAwB,wBAAwB;CACxD,MAAM,EAAE,iBAAiB,kBAAkB,aAAa;CAExD,MAAM,cAAc,iBAAiB;CAErC,MAAM,SAAS,YAAY,IAAI,cAAc;CAC7C,MAAM,WAAW,YAAY,IAAI,gBAAgB;CACjD,MAAM,eAAe,YAAY,IAAI,oBAAoB;CACzD,MAAM,cAAc,YAAY,IAAI,oBAAoB;AAWxD,QACE,oCAAC;EACS;EACE;EACI;EACd,WAAW,cAAc,OAAO;EAChC,YAAY,cAAc;EACb;EACI;EACF;EACf;GACA;;AAIN,4BAAe"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "./apiHelpers-Bju2gkBq.js";
|
|
2
2
|
import "./pageEnums-CT6NFA8B.js";
|
|
3
3
|
import "./UnitySessionStorage-DBqfMiK5.js";
|
|
4
|
-
import { UdpPublicForm, UdpPublicForm_default } from "./UdpPublicForm-
|
|
4
|
+
import { UdpPublicForm, UdpPublicForm_default } from "./UdpPublicForm-CGo9h-lA.js";
|
|
5
5
|
|
|
6
6
|
export { UdpPublicForm, UdpPublicForm_default as default };
|
|
@@ -49,8 +49,8 @@ const PrivateRoute = ({ ...otherProps }) => {
|
|
|
49
49
|
//#endregion
|
|
50
50
|
//#region src/routes/UdpRoutes.jsx
|
|
51
51
|
const VirtualBrowser = lazy(() => import("./VirtualBrowser-CiO6tvKp.js"));
|
|
52
|
-
const MenuPage = lazy(() => import("./MenuPage-
|
|
53
|
-
const UdpPublicForm = lazy(() => import("./UdpPublicForm-
|
|
52
|
+
const MenuPage = lazy(() => import("./MenuPage-fQS1_KWY.js"));
|
|
53
|
+
const UdpPublicForm = lazy(() => import("./UdpPublicForm-iGqFAAqg.js"));
|
|
54
54
|
const WorkflowContainer = lazy(() => import("./WorkflowContainer-DtvXxyTb.js"));
|
|
55
55
|
const PasswordResetRedirect = lazy(() => import("./PasswordResetRedirect-DmhA2INZ.js"));
|
|
56
56
|
const MyExportsPage = lazy(() => import("./MyExportsPage-DbH8z4-2.js"));
|
|
@@ -107,4 +107,4 @@ const UdpRoutes = (props) => {
|
|
|
107
107
|
|
|
108
108
|
//#endregion
|
|
109
109
|
export { PrivateRoute, UdpRoutes };
|
|
110
|
-
//# sourceMappingURL=UdpRoutes-
|
|
110
|
+
//# sourceMappingURL=UdpRoutes-DgjUyGo6.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UdpRoutes-
|
|
1
|
+
{"version":3,"file":"UdpRoutes-DgjUyGo6.js","names":["Switch","props"],"sources":["../src/routes/components/PageForbiddenRoute.jsx","../src/routes/PrivateRoute.jsx","../src/routes/UdpRoutes.jsx"],"sourcesContent":["import React from 'react';\nimport { makeStyles } from '@material-ui/core';\nimport { PageStatus } from './PageStatus';\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n marginTop: theme.spacing(4)\n }\n}));\n\nexport const PageForbiddenRoute = (props) => {\n const { title, statusCode, subheader, message, showButton } = props;\n const classes = useStyles();\n const { t } = useTranslation();\n\n return (\n <div className={classes.root}>\n <PageStatus\n title={title ?? t('Page Forbidden')}\n statusCode={statusCode ?? '403'}\n subheader={\n subheader ?? t('Sorry, you do not have permission to view this page.')\n }\n message={message ?? t('Please contact an administrator to get access.')}\n to='/'\n buttonLabel={t('Back to Home Page')}\n showButton={showButton}\n />\n </div>\n );\n};\n","import React, { useMemo } from 'react';\nimport { Route, Redirect } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { useIsUnityAuthenticated } from '../utilities/auth/useIsUnityAuthenticated';\nimport { useUser } from '../utilities/auth/useUser';\nimport { PageForbiddenRoute } from './components/PageForbiddenRoute';\n\nexport const PrivateRoute = ({ ...otherProps }) => {\n const isAuthenticated = useIsUnityAuthenticated();\n const user = useUser();\n const { t } = useTranslation();\n \n const userHasAccessToTenant = useMemo(() => {\n if (user?.tenantIds?.includes(user.currentTenantId)) {\n return true;\n }\n return false;\n }, [user]);\n\n if (!userHasAccessToTenant && isAuthenticated && user?.statusCode === 200) {\n return (\n <Route\n path='*'\n render={(props) => (\n <PageForbiddenRoute\n message={t('You do not have access to this tenant. Please select a different Tenant.')}\n showButton={false}\n />\n )}\n />\n );\n }\n\n if (isAuthenticated && user?.statusCode === 200) {\n return <Route {...otherProps} />;\n }\n\n return null;\n};\n","import React, { Suspense, lazy } from 'react';\nimport { Route, Switch } from 'react-router-dom';\nimport { PrivateRoute } from './PrivateRoute';\nimport { UdpPageEnums } from '../enums/pageEnums';\nimport { ConfigService } from 'udp-react-stencil-component-library';\nimport { PageLoading } from '../UI/feedback/PageLoading';\n\n// Lazy load route components\nconst VirtualBrowser = lazy(() =>\n import('../maintenanceEngine/virtualBrowser/VirtualBrowser')\n);\nconst MenuPage = lazy(() => import('../menuPage/MenuPage'));\nconst UdpPublicForm = lazy(() => import('../udp/pages/UdpPublicForm'));\nconst WorkflowContainer = lazy(() => import('../workflow/WorkflowContainer'));\nconst PasswordResetRedirect = lazy(() =>\n import('./components/PasswordResetRedirect')\n);\nconst MyExportsPage = lazy(() => import('../udp/export/MyExportsPage'));\nconst PageNotFoundRoute = lazy(() => import('./components/PageNotFoundRoute'));\nconst UdpMaintenanceConfigPage = lazy(() =>\n import('../udp/pages/UdpMaintenanceConfigPage')\n);\nconst UdpMaintenanceEnginePage = lazy(() =>\n import('../udp/pages/UdpMaintenanceEnginePage')\n);\n\nexport const UdpRoutes = (props) => {\n const { ...other } = props;\n return (\n <Suspense fallback={<PageLoading />}>\n <Switch>\n <PrivateRoute\n path='/virtual/:id'\n render={(props) => <VirtualBrowser {...props} {...other} />}\n />\n <PrivateRoute\n path='/menupage/:id'\n render={(props) => <MenuPage {...props} {...other} />}\n />\n\n <Route\n path={`/page/${UdpPageEnums.Udp_Public_Forms_Page}`}\n render={(props) => <UdpPublicForm {...props} {...other} />}\n />\n <Route\n path={`/passwordresetsuccess`}\n render={(props) => <PasswordResetRedirect props={props} />}\n />\n <PrivateRoute\n path='/workflowtask/:id'\n render={(props) => <WorkflowContainer {...props} {...other} />}\n />\n <PrivateRoute\n path='/myexports'\n render={(props) => (\n <MyExportsPage\n productId={ConfigService.config.UNITY_PRODUCT_ID}\n {...props}\n {...other}\n />\n )}\n />\n <PrivateRoute\n path='/crudbrowser'\n render={(props) => <UdpMaintenanceEnginePage {...props} />}\n />\n <PrivateRoute\n path='/tablebrowser'\n render={(props) => <UdpMaintenanceConfigPage {...props} />}\n />\n <PrivateRoute path='*' component={PageNotFoundRoute} />\n </Switch>\n </Suspense>\n );\n};\n"],"mappings":";;;;;;;;;;;;AAKA,MAAM,YAAY,YAAY,WAAW,EACvC,MAAM,EACJ,WAAW,MAAM,QAAQ,EAAE,EAC5B,EACF,EAAE;AAEH,MAAa,sBAAsB,UAAU;CAC3C,MAAM,EAAE,OAAO,YAAY,WAAW,SAAS,eAAe;CAC9D,MAAM,UAAU,WAAW;CAC3B,MAAM,EAAE,MAAM,gBAAgB;AAE9B,QACE,oCAAC,SAAI,WAAW,QAAQ,QACtB,oCAAC;EACC,OAAO,SAAS,EAAE,iBAAiB;EACnC,YAAY,cAAc;EAC1B,WACE,aAAa,EAAE,uDAAuD;EAExE,SAAS,WAAW,EAAE,iDAAiD;EACvE,IAAG;EACH,aAAa,EAAE,oBAAoB;EACvB;GACZ,CACE;;;;;ACtBV,MAAa,gBAAgB,EAAE,GAAG,iBAAiB;CACjD,MAAM,kBAAkB,yBAAyB;CACjD,MAAM,OAAO,SAAS;CACtB,MAAM,EAAE,MAAM,gBAAgB;AAS9B,KAAI,CAP0B,cAAc;AAC1C,MAAI,MAAM,WAAW,SAAS,KAAK,gBAAgB,CACjD,QAAO;AAET,SAAO;IACN,CAAC,KAAK,CAAC,IAEoB,mBAAmB,MAAM,eAAe,IACpE,QACE,oCAAC;EACC,MAAK;EACL,SAAS,UACP,oCAAC;GACC,SAAS,EAAE,2EAA2E;GACtF,YAAY;IACZ;GAEJ;AAIN,KAAI,mBAAmB,MAAM,eAAe,IAC1C,QAAO,oCAAC,OAAU,WAAc;AAGlC,QAAO;;;;;AC7BT,MAAM,iBAAiB,WACrB,OAAO,gCACR;AACD,MAAM,WAAW,WAAW,OAAO,0BAAwB;AAC3D,MAAM,gBAAgB,WAAW,OAAO,+BAA8B;AACtE,MAAM,oBAAoB,WAAW,OAAO,mCAAiC;AAC7E,MAAM,wBAAwB,WAC5B,OAAO,uCACR;AACD,MAAM,gBAAgB,WAAW,OAAO,+BAA+B;AACvE,MAAM,oBAAoB,WAAW,OAAO,mCAAkC;AAC9E,MAAM,2BAA2B,WAC/B,OAAO,0CACR;AACD,MAAM,2BAA2B,WAC/B,OAAO,0CACR;AAED,MAAa,aAAa,UAAU;CAClC,MAAM,EAAE,GAAG,UAAU;AACrB,QACE,oCAAC,YAAS,UAAU,oCAAC,kBAAc,IACjC,oCAACA,gBACC,oCAAC;EACC,MAAK;EACL,SAAS,YAAU,oCAAC;GAAe,GAAIC;GAAO,GAAI;IAAS;GAC3D,EACF,oCAAC;EACC,MAAK;EACL,SAAS,YAAU,oCAAC;GAAS,GAAIA;GAAO,GAAI;IAAS;GACrD,EAEF,oCAAC;EACC,MAAM,SAAS,aAAa;EAC5B,SAAS,YAAU,oCAAC;GAAc,GAAIA;GAAO,GAAI;IAAS;GAC1D,EACF,oCAAC;EACC,MAAM;EACN,SAAS,YAAU,oCAAC,yBAAsB,OAAOA,UAAS;GAC1D,EACF,oCAAC;EACC,MAAK;EACL,SAAS,YAAU,oCAAC;GAAkB,GAAIA;GAAO,GAAI;IAAS;GAC9D,EACF,oCAAC;EACC,MAAK;EACL,SAAS,YACP,oCAAC;GACC,WAAW,cAAc,OAAO;GAChC,GAAIA;GACJ,GAAI;IACJ;GAEJ,EACF,oCAAC;EACC,MAAK;EACL,SAAS,YAAU,oCAAC,0BAA6BA,QAAS;GAC1D,EACF,oCAAC;EACC,MAAK;EACL,SAAS,YAAU,oCAAC,0BAA6BA,QAAS;GAC1D,EACF,oCAAC;EAAa,MAAK;EAAI,WAAW;GAAqB,CAChD,CACA"}
|
package/dist/index.js
CHANGED
|
@@ -196,7 +196,7 @@ import { PageContent, PageHeader, PageSectionHeader, PageSectionSpacer } from ".
|
|
|
196
196
|
import { useIsUnityAuthenticated } from "./useIsUnityAuthenticated-n3QuDnIj.js";
|
|
197
197
|
import { PowerBIReport } from "./PowerBIReport-CYX6YxbE.js";
|
|
198
198
|
import { PageStatus } from "./PageStatus-CjupI8az.js";
|
|
199
|
-
import { PrivateRoute, UdpRoutes } from "./UdpRoutes-
|
|
199
|
+
import { PrivateRoute, UdpRoutes } from "./UdpRoutes-DgjUyGo6.js";
|
|
200
200
|
import { PageLoading } from "./PageLoading-DCoyVjWf.js";
|
|
201
201
|
import { AmbientProjectSwitcher, FluentProfileMenuCard, ShellDropdown } from "./FluentProfileMenuCard-BIwebgKW.js";
|
|
202
202
|
import "./redirectToLink-B4Y9oH1K.js";
|
|
@@ -228,7 +228,7 @@ import "./tagEnums-BD6xUu3X.js";
|
|
|
228
228
|
import { CrudForm, UdpCrudFormFields } from "./CrudForm-CS8iy0jE.js";
|
|
229
229
|
import "./CrudTableSidePanel-DdQ_D8g0.js";
|
|
230
230
|
import { UdpMaintenanceEnginePage } from "./UdpMaintenanceEnginePage-CpqXzyEv.js";
|
|
231
|
-
import { DonutChartWidget_exports, FluentPrimaryStatNumber_default, FluentSecondaryStatNumber_default, FluentStatNumber_default, FluentStatsSnippet_default, ProgressBarWidget_exports, RecentlyLoadedNodesWidget_exports, RemindersWidget_exports, SparklineWidget_exports, UdpPages, convertISODate } from "./udpPages-
|
|
231
|
+
import { DonutChartWidget_exports, FluentPrimaryStatNumber_default, FluentSecondaryStatNumber_default, FluentStatNumber_default, FluentStatsSnippet_default, ProgressBarWidget_exports, RecentlyLoadedNodesWidget_exports, RemindersWidget_exports, SparklineWidget_exports, UdpPages, convertISODate } from "./udpPages-D8I3GU4V.js";
|
|
232
232
|
import { FluentCheckbox } from "./FluentCheckbox-DdPx94AF.js";
|
|
233
233
|
import "./FluentIconKey-DdoCGnzt.js";
|
|
234
234
|
import "./IconLibrary-CPErCan6.js";
|
|
@@ -236,7 +236,7 @@ import { ItemsWidgetCard, WidgetCard_default } from "./widgets-CRzkTpIV.js";
|
|
|
236
236
|
import { AmbientVisualizer } from "./AmbientVisualizer-BFFwonre.js";
|
|
237
237
|
import "./DataBrowserContainer-CESNdu3e.js";
|
|
238
238
|
import "./RemindersCard-BJhfqNQk.js";
|
|
239
|
-
import { UdpPublicForm } from "./UdpPublicForm-
|
|
239
|
+
import { UdpPublicForm } from "./UdpPublicForm-CGo9h-lA.js";
|
|
240
240
|
import { AmbientAutoComplete } from "./AmbientAutoComplete-BmBgMVpv.js";
|
|
241
241
|
import { AmbientStepper, ImportDataFromFileMapping } from "./ImportDataFromFileMapping-CjANFPa8.js";
|
|
242
242
|
import { Divider } from "./Divider-BU1-Ll14.js";
|
|
@@ -347,7 +347,7 @@ import { FieldArrayCard, FieldType } from "./FieldArrayCard-BOx60qvz.js";
|
|
|
347
347
|
import { ApprovalIcon, RejectIcon } from "./RejectIcon-BbYRcoLI.js";
|
|
348
348
|
import { MyExportsPage, StatusCellRenderer } from "./MyExportsPage-C3PjlL4J.js";
|
|
349
349
|
import "./BaseTreeMenu-CroItvOA.js";
|
|
350
|
-
import { MenuPage_default } from "./MenuPage-
|
|
350
|
+
import { MenuPage_default } from "./MenuPage-C4LnhsE3.js";
|
|
351
351
|
import * as React$1 from "react";
|
|
352
352
|
import React, { Fragment, forwardRef, useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
353
353
|
import { Avatar, Badge, Box as Box$1, Card, CardContent, Chip, Divider as Divider$1, FormControl as FormControl$1, FormControlLabel as FormControlLabel$1, FormGroup, Grid as Grid$1, Grow, IconButton, InputAdornment as InputAdornment$1, InputLabel, LinearProgress as LinearProgress$1, ListItemIcon, Menu, MenuItem, Select, Tab, Tabs, Tooltip, Typography as Typography$1, colors as colors$1, darken, lighten, makeStyles, styled, useTheme } from "@material-ui/core";
|
|
@@ -4153,7 +4153,7 @@ function buildInnerMenuFromItems(items = [], menuTitle, idPrefix = "custom", sho
|
|
|
4153
4153
|
idMap
|
|
4154
4154
|
};
|
|
4155
4155
|
}
|
|
4156
|
-
const CustomMenuPage = ({ items = [], className = "", menuTitle, mainContent: clientMainContent, idPrefix = "custom", showItemCount = false, itemCountAccessor = null }) => {
|
|
4156
|
+
const CustomMenuPage = ({ items = [], className = "", menuTitle, mainContent: clientMainContent, idPrefix = "custom", showItemCount = false, itemCountAccessor = null, allowMissingPageParam = false }) => {
|
|
4157
4157
|
const classes = useStyles$1();
|
|
4158
4158
|
const { innerMenu, idMap } = buildInnerMenuFromItems(items, menuTitle, idPrefix, showItemCount, itemCountAccessor);
|
|
4159
4159
|
const clientContent = clientMainContent ? ({ selectedNode, menuItemsList }) => clientMainContent({
|
|
@@ -4170,7 +4170,9 @@ const CustomMenuPage = ({ items = [], className = "", menuTitle, mainContent: cl
|
|
|
4170
4170
|
}));
|
|
4171
4171
|
return /* @__PURE__ */ React.createElement(MenuPage_default, {
|
|
4172
4172
|
innerMenuOverride: innerMenu,
|
|
4173
|
-
mainContent: composedMainContent
|
|
4173
|
+
mainContent: composedMainContent,
|
|
4174
|
+
menuTitle,
|
|
4175
|
+
allowMissingPageParam
|
|
4174
4176
|
});
|
|
4175
4177
|
};
|
|
4176
4178
|
CustomMenuPage.propTypes = {
|
|
@@ -4180,7 +4182,8 @@ CustomMenuPage.propTypes = {
|
|
|
4180
4182
|
mainContent: PropTypes.func,
|
|
4181
4183
|
idPrefix: PropTypes.string,
|
|
4182
4184
|
showItemCount: PropTypes.bool,
|
|
4183
|
-
itemCountAccessor: PropTypes.func
|
|
4185
|
+
itemCountAccessor: PropTypes.func,
|
|
4186
|
+
allowMissingPageParam: PropTypes.bool
|
|
4184
4187
|
};
|
|
4185
4188
|
var CustomMenuPage_default = CustomMenuPage;
|
|
4186
4189
|
|