udp-react-enterprise-component-library 25.18.3-beta.4 → 25.18.3-beta.6

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.
Files changed (74) hide show
  1. package/dist/{AppMenu-5JJDLddA.js → AppMenu-C_Bl1RvA.js} +3 -2
  2. package/dist/AppMenu-C_Bl1RvA.js.map +1 -0
  3. package/dist/{BaseTreeMenu-CHRy-g7V.js → BaseTreeMenu-Ceq3glfG.js} +3 -4
  4. package/dist/BaseTreeMenu-Ceq3glfG.js.map +1 -0
  5. package/dist/{Inquiry-CsHgJgaV.js → Inquiry-DAhC82sz.js} +2 -2
  6. package/dist/{Inquiry-CsHgJgaV.js.map → Inquiry-DAhC82sz.js.map} +1 -1
  7. package/dist/Inquiry-UieTwtBP.js +3 -0
  8. package/dist/MenuPage-BJ4uxotv.js +3 -0
  9. package/dist/{MenuPage-DiNO7jTV.js → MenuPage-SA6u84EV.js} +3 -3
  10. package/dist/MenuPage-SA6u84EV.js.map +1 -0
  11. package/dist/{Shell-CiVs1HZp.js → Shell-XnaXB62L.js} +4 -4
  12. package/dist/{Shell-CiVs1HZp.js.map → Shell-XnaXB62L.js.map} +1 -1
  13. package/dist/SidebarCollapseButton-_UUtsftD.js.map +1 -1
  14. package/dist/{SiteHeader-CwTZVROQ.js → SiteHeader-CduuXQZG.js} +2 -2
  15. package/dist/{SiteHeader-CwTZVROQ.js.map → SiteHeader-CduuXQZG.js.map} +1 -1
  16. package/dist/UI/index.js +2 -2
  17. package/dist/UI/navigation/index.js +1 -1
  18. package/dist/UI/navigation/menus/index.js +1 -1
  19. package/dist/UI/utilityDisplay/index.js +1 -1
  20. package/dist/{UdpFormsSubmissionGrid-BRJpRv4S.js → UdpFormsSubmissionGrid-C40IFoeD.js} +2 -2
  21. package/dist/{UdpFormsSubmissionGrid-BRJpRv4S.js.map → UdpFormsSubmissionGrid-C40IFoeD.js.map} +1 -1
  22. package/dist/{UdpInquiryMaintenanceEnginePage-eKMlKemV.js → UdpInquiryMaintenanceEnginePage-niKERvHU.js} +2 -2
  23. package/dist/{UdpInquiryMaintenanceEnginePage-eKMlKemV.js.map → UdpInquiryMaintenanceEnginePage-niKERvHU.js.map} +1 -1
  24. package/dist/{UdpMaintenanceEnginePage-g4EGoMtb.js → UdpMaintenanceEnginePage-SlGEwD-7.js} +2 -2
  25. package/dist/{UdpMaintenanceEnginePage-g4EGoMtb.js.map → UdpMaintenanceEnginePage-SlGEwD-7.js.map} +1 -1
  26. package/dist/{UdpTransactionsPage-D3LYIRnP.js → UdpTransactionsPage-BpHCN2VF.js} +14 -8
  27. package/dist/UdpTransactionsPage-BpHCN2VF.js.map +1 -0
  28. package/dist/{UtilitySideBar-BU3ppHrv.js → UtilitySideBar-DcWKNOfr.js} +14 -13
  29. package/dist/UtilitySideBar-DcWKNOfr.js.map +1 -0
  30. package/dist/{WorkflowContainer-BouRffwp.js → WorkflowContainer-Cs6LBgWw.js} +2 -2
  31. package/dist/{WorkflowContainer-BouRffwp.js.map → WorkflowContainer-Cs6LBgWw.js.map} +1 -1
  32. package/dist/{WorkflowContainer-DugpUjjf.js → WorkflowContainer-Cwt061ez.js} +1 -1
  33. package/dist/index.js +10 -10
  34. package/dist/inquiry/index.js +1 -1
  35. package/dist/menuPage/index.js +1 -1
  36. package/dist/{menuPage-BCcvcFa5.js → menuPage-DoZR4-kk.js} +3 -6
  37. package/dist/menuPage-DoZR4-kk.js.map +1 -0
  38. package/dist/routes/index.js +1 -1
  39. package/dist/{routes-JTWJvNY3.js → routes-CzJd_612.js} +4 -4
  40. package/dist/{routes-JTWJvNY3.js.map → routes-CzJd_612.js.map} +1 -1
  41. package/dist/shell/index.js +2 -2
  42. package/dist/shell/ui/index.js +1 -1
  43. package/dist/treeMenu/index.js +1 -1
  44. package/dist/types/src/UI/navigation/menus/AppMenuItem.d.ts.map +1 -1
  45. package/dist/types/src/UI/utilityDisplay/UtilitySideBar.d.ts.map +1 -1
  46. package/dist/types/src/maintenanceEngine/tableBrowser/TableColumnDefs.d.ts +1 -1
  47. package/dist/types/src/maintenanceEngine/tableBrowser/TableColumnDefs.d.ts.map +1 -1
  48. package/dist/types/src/menuPage/CustomMenuPage.d.ts +1 -1
  49. package/dist/types/src/menuPage/CustomMenuPage.d.ts.map +1 -1
  50. package/dist/types/src/menuPage/MenuPage.d.ts.map +1 -1
  51. package/dist/types/src/shell/ui/SidebarCollapseButton.d.ts.map +1 -1
  52. package/dist/types/src/treeMenu/BaseTreeMenuItem.d.ts.map +1 -1
  53. package/dist/types/src/udp/pages/UdpTransactionsPage/UdpTransactionSidesheet.d.ts.map +1 -1
  54. package/dist/types/src/udp/pages/UdpTransactionsPage/components/UdpTransactionCustomPage.d.ts.map +1 -1
  55. package/dist/types/src/udp/pages/UdpTransactionsPage/sidesheets/EditTransaction.d.ts.map +1 -1
  56. package/dist/types/src/udp/pages/UdpTransactionsPage/sidesheets/WorkflowActions.d.ts.map +1 -1
  57. package/dist/types/src/udp/utilities/useDateStringColumnDef.d.ts +1 -1
  58. package/dist/types/tsconfig.tsbuildinfo +1 -1
  59. package/dist/udp/pages/UdpFormsSubmissionGrid/index.js +1 -1
  60. package/dist/udp/pages/UdpInquiryMaintenanceEnginePage/index.js +1 -1
  61. package/dist/udp/pages/UdpMaintenanceEnginePage/index.js +1 -1
  62. package/dist/udp/pages/UdpPages/index.js +3 -3
  63. package/dist/udp/pages/UdpTransactionsPage/index.js +1 -1
  64. package/dist/workflow/index.js +1 -1
  65. package/export-map.json +1 -1
  66. package/package.json +1 -1
  67. package/dist/AppMenu-5JJDLddA.js.map +0 -1
  68. package/dist/BaseTreeMenu-CHRy-g7V.js.map +0 -1
  69. package/dist/Inquiry-DjeqfXvY.js +0 -3
  70. package/dist/MenuPage-DiNO7jTV.js.map +0 -1
  71. package/dist/MenuPage-DiuaPlMe.js +0 -3
  72. package/dist/UdpTransactionsPage-D3LYIRnP.js.map +0 -1
  73. package/dist/UtilitySideBar-BU3ppHrv.js.map +0 -1
  74. package/dist/menuPage-BCcvcFa5.js.map +0 -1
@@ -1,3 +1,3 @@
1
- import { t as UdpFormsSubmissionGrid } from "../../../UdpFormsSubmissionGrid-BRJpRv4S.js";
1
+ import { t as UdpFormsSubmissionGrid } from "../../../UdpFormsSubmissionGrid-C40IFoeD.js";
2
2
 
3
3
  export { UdpFormsSubmissionGrid };
@@ -1,3 +1,3 @@
1
- import { n as UdpInquiryMaintenanceEnginePage_default } from "../../../UdpInquiryMaintenanceEnginePage-eKMlKemV.js";
1
+ import { n as UdpInquiryMaintenanceEnginePage_default } from "../../../UdpInquiryMaintenanceEnginePage-niKERvHU.js";
2
2
 
3
3
  export { UdpInquiryMaintenanceEnginePage_default as default };
@@ -1,3 +1,3 @@
1
- import { n as UdpMaintenanceEnginePage, r as UdpMaintenanceEnginePage_default } from "../../../UdpMaintenanceEnginePage-g4EGoMtb.js";
1
+ import { n as UdpMaintenanceEnginePage, r as UdpMaintenanceEnginePage_default } from "../../../UdpMaintenanceEnginePage-SlGEwD-7.js";
2
2
 
3
3
  export { UdpMaintenanceEnginePage, UdpMaintenanceEnginePage_default as default };
@@ -1,8 +1,8 @@
1
- import { t as UdpMaintenanceEnginePage_exports } from "../../../UdpMaintenanceEnginePage-g4EGoMtb.js";
1
+ import { t as UdpMaintenanceEnginePage_exports } from "../../../UdpMaintenanceEnginePage-SlGEwD-7.js";
2
2
  import { t as UdpNotesPage_exports } from "../../../UdpNotesPage-D0p12dX2.js";
3
3
  import { t as UdpVerticalManagementPage_exports } from "../../../UdpVerticalManagementPage-Dl3ub3z_.js";
4
4
  import { t as UdpGridPanelManagementPage_exports } from "../../../UdpGridPanelManagementPage-DrQKKAKQ.js";
5
- import { t as UdpInquiryMaintenanceEnginePage_exports } from "../../../UdpInquiryMaintenanceEnginePage-eKMlKemV.js";
5
+ import { t as UdpInquiryMaintenanceEnginePage_exports } from "../../../UdpInquiryMaintenanceEnginePage-niKERvHU.js";
6
6
  import { t as UdpReportsPage_exports } from "../../../UdpReportsPage-n1ymR1VK.js";
7
7
  import { t as DonutChartWidget_exports } from "../../../DonutChartWidget-C6HPYg7I.js";
8
8
  import { t as SparklineWidget_exports } from "../../../SparklineWidget-BHV5aN9E.js";
@@ -19,7 +19,7 @@ import { t as UdpFormsBuilderPage_exports } from "../../../UdpFormsBuilderPage-P
19
19
  import { t as UdpImportFromFileMappingPage_exports } from "../../../UdpImportFromFileMappingPage-DxGrLgP4.js";
20
20
  import { t as UdpAuditEvents_exports } from "../../../UdpAuditEvents-SVdK01j4.js";
21
21
  import { t as UdpTransactionTypesPage_exports } from "../../../UdpTransactionTypesPage-BD8K_tZp.js";
22
- import { t as UdpTransactionsPage_exports } from "../../../UdpTransactionsPage-D3LYIRnP.js";
22
+ import { t as UdpTransactionsPage_exports } from "../../../UdpTransactionsPage-BpHCN2VF.js";
23
23
 
24
24
  //#region src/udp/pages/UdpPages/index.ts
25
25
  const UdpPages = {
@@ -1,3 +1,3 @@
1
- import { n as UdpTransactionsPage_default } from "../../../UdpTransactionsPage-D3LYIRnP.js";
1
+ import { n as UdpTransactionsPage_default } from "../../../UdpTransactionsPage-BpHCN2VF.js";
2
2
 
3
3
  export { UdpTransactionsPage_default as default };
@@ -1,7 +1,7 @@
1
1
  import { n as WorkflowTreeMenuItem, t as WorkflowTreeMenu } from "../WorkflowTreeMenu-BfKb88w4.js";
2
2
  import { t as WorkflowTaskFlow } from "../WorkflowTaskFlow-Cah1eKe3.js";
3
3
  import { n as WorkflowUiInterruptContent, t as WorkflowContent } from "../WorkflowContent-C_1mXaJA.js";
4
- import { t as WorkflowContainer } from "../WorkflowContainer-BouRffwp.js";
4
+ import { t as WorkflowContainer } from "../WorkflowContainer-Cs6LBgWw.js";
5
5
  import "./components/index.js";
6
6
  import "./menus/index.js";
7
7
 
package/export-map.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "generated": "2026-01-14T23:48:46.214Z",
2
+ "generated": "2026-01-15T00:30:31.782Z",
3
3
  "library": "udp-react-enterprise-component-library",
4
4
  "totalExports": 816,
5
5
  "description": "Map of exported items to their module paths for tree-shaking",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "udp-react-enterprise-component-library",
3
- "version": "25.18.3-beta.4",
3
+ "version": "25.18.3-beta.6",
4
4
  "description": "React-based UI component library implementing Fluent UI design for Univerus internal projects",
5
5
  "author": "Univerus",
6
6
  "license": "MIT",
@@ -1 +0,0 @@
1
- {"version":3,"file":"AppMenu-5JJDLddA.js","names":[],"sources":["../src/UI/navigation/menus/AppMenuItemComponent.jsx","../src/UI/navigation/menus/AppMenuItem.jsx","../src/UI/navigation/menus/AppMenu.jsx"],"sourcesContent":["import React, { forwardRef } from 'react'\nimport { ListItem } from '@material-ui/core'\nimport { NavLink } from 'react-router-dom'\n\nconst ListItemLinkComponent = forwardRef((props, ref) => (\n <NavLink exact {...props} innerRef={ref} />\n))\nListItemLinkComponent.displayName = 'ListItemLinkComponent'\n\nexport const AppMenuItemComponent = (props) => {\n const { link, params, isChild, ...other } = props\n\n // If link is not set return the ordinary ListItem\n if (!link || typeof link !== 'string') {\n return <ListItem button {...other} dense />\n }\n\n // Return a ListItem with a link component\n return (\n <ListItem\n id={'udpRecord-AppMenuItemComponent-'+params.label.replace(/\\s+/g, '')}\n udprecordid={'udpRecord-AppMenuItemComponent-'+params.label.replace(/\\s+/g, '')}\n button\n component={ListItemLinkComponent}\n to={{\n pathname: link,\n state: params\n }}\n {...other}\n onClick={undefined}\n dense\n />\n )\n}\n","import { ChevronDownIcon, ChevronUpIcon } from '@fluentui/react-icons';\nimport {\n Collapse,\n createStyles,\n List,\n ListItemIcon,\n ListItemText,\n makeStyles\n} from '@material-ui/core';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React, { useContext, useEffect, useState } from 'react';\nimport { useActions } from '../../../hooks/useActions';\nimport { FluentIcon } from '../../../utilities/iconLibrary/FluentIcon';\nimport { redirectToLinkOnClick } from '../../../utilities/menus/redirectToLink';\nimport { AppMenuItemComponent } from './AppMenuItemComponent';\nimport { apiMutate } from '../../../utilities/useAxiosMutate';\nimport { useTranslation } from 'react-i18next';\nimport { ConfigService } from '../../../configService';\n\n// React runtime PropTypes\nconst AppMenuItemPropTypes = {\n id: PropTypes.string,\n label: PropTypes.string.isRequired,\n link: PropTypes.string,\n icon: PropTypes.elementType,\n iconName: PropTypes.string,\n image: PropTypes.string,\n items: PropTypes.arrayOf(PropTypes.object),\n indent: PropTypes.string,\n redirectInfo: PropTypes.string,\n params: PropTypes.object,\n menuItemId: PropTypes.string,\n menuStructureId: PropTypes.number,\n parentId: PropTypes.number,\n productId: PropTypes.number,\n isActive: PropTypes.bool,\n roleIds: PropTypes.arrayOf(\n PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n ),\n getAccessToken: PropTypes.func,\n childrenIcons: PropTypes.bool,\n isChild: PropTypes.bool,\n childIndex: PropTypes.number,\n sidebarExpanded: PropTypes.bool,\n devicesHiddenOn: PropTypes.arrayOf(PropTypes.string),\n user: PropTypes.object,\n tenantSsoId: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\n\n\nconst useStyles = makeStyles((theme) =>\n createStyles({\n menuItem: {\n '&.active': {\n background: 'rgba(0, 0, 0, 0.08)',\n '& .MuiListItemIcon-root': { marginLeft: theme.spacing(2) }\n }\n },\n menuItemIcon: {\n minWidth: theme.spacing(5)\n },\n item: {\n width: 254,\n whiteSpace: 'normal',\n paddingLeft: (props) =>\n props?.isChild && props.sidebarExpanded\n ? `calc(16px + ${\n 16 * (props.childIndex !== undefined ? props.childIndex : 0)\n }px)`\n : null\n },\n indent: {},\n icon: {\n width: theme.spacing(3),\n height: theme.spacing(3),\n color: theme.palette.secondary.dark\n },\n expand: {\n // marginRight: theme.spacing(1),\n visibility: (props) => (props.sidebarExpanded ? 'visible' : 'hidden')\n },\n images: {\n width: theme.spacing(3.5),\n height: theme.spacing(3.5)\n }\n })\n);\n\nexport const AppMenuItem = (props) => {\n const {\n childrenIcons = true,\n isChild = false,\n childIndex = 0,\n label,\n link,\n icon,\n image,\n getAccessToken,\n indent,\n items = [],\n redirectInfo,\n sidebarExpanded,\n user,\n params,\n tenantSsoId,\n ...other\n } = props;\n const classes = useStyles(props);\n const isExpandable = items?.length > 0;\n const [open, setOpen] = useState(false);\n const { triggerMultipleActions } = useActions();\n const { t } = useTranslation();\n\n const handleClick = async () => {\n let url = redirectInfo;\n if (url && tenantSsoId) {\n const response = await apiMutate(\n ConfigService.securityV1ApiUrl,\n `sso/${tenantSsoId}`,\n { method: 'get' }\n );\n if (!response) return;\n url = `${url}${response.data.urlParams}`;\n }\n if (url) {\n redirectToLinkOnClick(url, getAccessToken, user);\n }\n\n if (params?.Action?.length) {\n triggerMultipleActions(params.Action);\n }\n\n setOpen(!open);\n };\n\n const MenuItemRoot = (\n <AppMenuItemComponent\n className={clsx(indent ? classes.menuItem : classes.indent, classes.item)}\n link={items.length ? '' : link}\n onClick={handleClick}\n aria-expanded={isExpandable ? open : null}\n params={{ ...other, label, params }}\n isChild={isChild}\n >\n {/* Display an icon if any */}\n {(!!icon || !!image) && ((isChild && childrenIcons) || !isChild) && (\n <ListItemIcon className={classes.menuItemIcon}>\n {icon ? (\n <div className={classes.icon}>\n <FluentIcon component={icon} />\n </div>\n ) : (\n <img src={image} alt={label} className={classes.images} />\n )}\n </ListItemIcon>\n )}\n <ListItemText primary={t(label)} inset={!icon && !image} />\n {/* Display the expand menu if the item has children */}\n {isExpandable &&\n (open ? (\n <div className={classes.expand}>\n <FluentIcon\n size={'small'}\n component={ChevronUpIcon}\n id={`udpRecord-AppMenuItem-FluentIcon-Up-${label}`}\n udprecordid={`udpRecord-AppMenuItem-FluentIcon-Up-${label}`}\n />\n </div>\n ) : (\n <div className={classes.expand}>\n <FluentIcon\n size={'small'}\n component={ChevronDownIcon}\n id={`udpRecord-AppMenuItem-FluentIcon-Down-${label}`}\n udprecordid={`udpRecord-AppMenuItem-FluentIcon-Down-${label}`}\n />\n </div>\n ))}\n </AppMenuItemComponent>\n );\n\n const MenuItemChildren = isExpandable ? (\n <Collapse in={open} timeout='auto' unmountOnExit>\n {/* <Divider aria-hidden={true} /> */}\n <List>\n {items.map((item, index) => (\n <AppMenuItem\n {...item}\n childrenIcons={childrenIcons}\n isChild\n key={index}\n childIndex={childIndex + 1}\n sidebarExpanded={sidebarExpanded}\n user={user}\n />\n ))}\n </List>\n </Collapse>\n ) : null;\n\n return (\n <li>\n {MenuItemRoot}\n {MenuItemChildren}\n </li>\n );\n};\n\nAppMenuItem.propTypes = AppMenuItemPropTypes;\n","import React from 'react';\nimport { List } from '@material-ui/core';\nimport { AppMenuItem } from './AppMenuItem';\n\nexport const AppMenu = ({\n childrenIcons,\n menuItems,\n sidebarExpanded,\n user\n}) => {\n return (\n <nav aria-label='Site Navigation'>\n <List>\n {menuItems.map((item, index) => {\n return (\n <AppMenuItem\n key={index}\n childrenIcons={childrenIcons}\n sidebarExpanded={sidebarExpanded}\n user={user}\n {...item}\n />\n );\n })}\n </List>\n </nav>\n );\n};\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"BaseTreeMenu-CHRy-g7V.js","names":["useStyles","other","tree","expanded"],"sources":["../src/treeMenu/BaseTreeMenuItem.jsx","../src/treeMenu/BaseTreeMenu.jsx"],"sourcesContent":["import React, { useCallback } from 'react';\nimport {\n makeStyles,\n lighten,\n Typography,\n CircularProgress,\n darken,\n useTheme,\n Tooltip\n} from '@material-ui/core';\nimport TreeItem from '@material-ui/lab/TreeItem';\nimport { getIconFromName } from '../utilities/tree/TreeUtilities';\nimport clsx from 'clsx';\nimport { UnityFluentIcon } from '../utilities/iconLibrary/UnityFluentIcon';\nimport { getUnityIconFromName } from '../utilities/iconLibrary/UnityIconLibrary';\nimport { useDrag, useDrop } from 'react-dnd';\nimport {\n NodeActionTriggerEnums,\n TreeViewModeEnums\n} from '../enums/unitySystemEnums.ts';\nimport { AggregateChip } from '../UI/utilityDisplay/AggregateChip';\nimport { StatusChip } from '../UI/dataDisplay/status/StatusChip';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n '&.Mui-selected > .MuiTreeItem-content': {\n backgroundColor:\n theme?.getThemeData()?.mode === 'dark'\n ? theme.palette.grey[700]\n : theme.palette.grey[300],\n borderRight: `4px solid ${theme.palette.primary.main}`\n },\n '&.Mui-selected > .MuiTreeItem-content .MuiTreeItem-label': {\n backgroundColor: 'transparent',\n paddingLeft: 0\n },\n '&.Mui-selected > .MuiTreeItem-content > .MuiCollapse-wrapperInner': {\n backgroundColor:\n theme?.getThemeData()?.mode !== 'dark' && theme.palette.grey[50]\n },\n '& .MuiTreeItem-content .MuiTreeItem-iconContainer': {\n display: (props) => (props.sidebarExpanded ? 'flex' : 'none')\n }\n },\n content: {\n backgroundColor: (props) =>\n theme?.getThemeData()?.mode !== 'dark' &&\n props.conditionalIconName &&\n props.conditionalIconColor\n ? lighten(props.conditionalIconColor, 0.92)\n : ''\n },\n labelRoot: {\n display: 'flex',\n alignItems: 'center',\n marginLeft: (props) => (props.sidebarExpanded ? 0 : theme.spacing(1.5)),\n width: '100%'\n },\n labelContainer: {\n display: (props) => (!props.sidebarExpanded ? 'none' : ''),\n width: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact\n ? `calc(100% - ${theme.spacing(6.25)}px)`\n : `calc(100% - ${theme.spacing(7.75)}px)`\n },\n conditionalIconContainer: {\n display: 'inline-flex'\n },\n labelText: {\n fontSize: '0.75rem',\n fontWeight: 600,\n lineHeight: '1rem',\n letterSpacing: 0.1\n },\n captionText: {\n marginLeft: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact ? theme.spacing(1) : '',\n fontSize: '0.65rem',\n fontWeight: 400,\n lineHeight: 1,\n letterSpacing: 0.4\n },\n labelOverflow: {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n group: {\n width: '100%',\n '& .MuiTreeItem-group': {\n marginLeft: 0\n },\n '& .MuiTreeItem-content': {\n paddingLeft: (props) =>\n props.sidebarExpanded ? (props.depth || 1) * theme.spacing(1) : 0,\n borderRight: (props) =>\n props.showRightBorderColor\n ? `4px solid ${theme.palette.primary.main}`\n : '',\n borderBottom: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact\n ? `1px solid ${theme.palette.grey[200]}`\n : ''\n },\n '& .MuiTreeItem-content .MuiTreeItem-label': {\n paddingLeft: 0,\n width: (props) =>\n props.sidebarExpanded && `calc(100% - ${theme.spacing(2.5)}px)`\n },\n '& .MuiTreeItem-content .MuiTreeItem-iconContainer span': {\n display: (props) => (props.hideExpansion ? 'none' : '')\n },\n '& .MuiCollapse-wrapperInner': {\n backgroundColor: (props) =>\n theme?.getThemeData()?.mode !== 'dark' && props.isSelectedNode\n ? theme.palette.grey[50]\n : ''\n }\n },\n iconContainer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 50,\n marginTop: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact\n ? theme.spacing(0.25)\n : theme.spacing(0.5),\n marginBottom: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact\n ? theme.spacing(0.25)\n : theme.spacing(0.5),\n marginRight: theme.spacing(1),\n width: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact\n ? theme.spacing(3)\n : theme.spacing(4),\n height: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact\n ? theme.spacing(3)\n : theme.spacing(4),\n border: (props) =>\n props.iconColor\n ? `1px solid ${darken(props.iconColor, 0.1)}`\n : `1px solid ${theme.palette.secondary.main}`,\n backgroundColor: '#ffffff'\n }\n}));\n\nexport const BaseTreeMenuItem = (props) => {\n const {\n parentId,\n nodeId,\n iconName,\n iconType,\n conditionalIconName,\n conditionalIconType,\n conditionalIconColor,\n label,\n iconColor,\n onNodeSelect,\n isSelectedNode,\n subLabel,\n sidebarExpanded,\n isLastNode,\n loading,\n node,\n onDropNode,\n treeViewMode,\n menuIndex,\n aggregateThresholdId,\n ...other\n } = props;\n const classes = useStyles(props);\n const theme = useTheme();\n\n const [{ isDragging }, dragRef] = useDrag({\n type: 'BaseTreeMenuItem',\n item: { ...node, sourceNodeMenuIndex: menuIndex },\n collect: (monitor) => ({\n isDragging: monitor.isDragging()\n })\n });\n\n const handleOnDrop = useCallback(\n (sourceNode, monitor) => {\n if (!monitor.didDrop()) {\n if (onDropNode) {\n const { sourceNodeMenuIndex, ...other } = sourceNode;\n onDropNode({ ...other }, node, sourceNodeMenuIndex, menuIndex);\n }\n }\n },\n [onDropNode, node, menuIndex]\n );\n\n const [{ canDrop, isOver }, dropRef] = useDrop(\n () => ({\n accept: ['BaseTreeMenuItem'],\n drop: (sourceNode, monitor) => {\n // condition to only handle first drop\n handleOnDrop(sourceNode, monitor);\n },\n canDrop: (sourceNode) => checkCanDrop(sourceNode),\n collect: (monitor) => ({\n isOver: monitor.isOver(),\n canDrop: !!monitor.canDrop()\n })\n }),\n [handleOnDrop]\n );\n\n const checkCanDrop = useCallback(\n (sourceNode) => {\n if (sourceNode) {\n const onDropActions = node?.properties?.nodeActions?.filter(\n (na) => na?.triggerType === NodeActionTriggerEnums.On_Node_Drop\n );\n if (!onDropActions) {\n return false;\n }\n const nodeDragEntities = onDropActions?.map(\n (action) => action?.dragEntityName\n );\n return nodeDragEntities.includes(\n sourceNode?.properties?.catalogReturnObject\n );\n }\n },\n [node]\n );\n\n const handleOnLabelClick = useCallback(\n (e) => {\n e.preventDefault();\n onNodeSelect(e, nodeId);\n },\n [onNodeSelect, nodeId]\n );\n\n return (\n <TreeItem\n className={classes.group}\n key={nodeId}\n nodeId={nodeId}\n label={\n <div ref={dropRef}>\n <Tooltip title={sidebarExpanded ? '' : label}>\n <div\n ref={(node?.properties?.isDraggable && dragRef) || null}\n style={{ opacity: isDragging ? 0.5 : 1 }}\n >\n {loading ? (\n <CircularProgress size={12} />\n ) : (\n <div\n id={'udpRecord-BaseTreeMenuItem-'+label.replace(/\\s+/g, '')}\n udprecordid={'udpRecord-BaseTreeMenuItem-'+label.replace(/\\s+/g, '')}\n className={classes.labelRoot}\n style={{\n fontWeight: isSelectedNode ? 'bold' : ''\n }}\n >\n {iconName && (\n <div className={classes.iconContainer}>\n <UnityFluentIcon\n size={\n treeViewMode === TreeViewModeEnums.Compact\n ? 'small'\n : 'medium'\n }\n color={iconColor}\n type={iconType}\n icon={\n iconType === 'unity'\n ? getUnityIconFromName(iconName)\n : getIconFromName(iconName)\n }\n style={{\n color: iconColor\n ? darken(iconColor, 0.1)\n : theme.palette.secondary.main\n }}\n />\n </div>\n )}\n <div className={classes.labelContainer}>\n <Typography\n variant='subtitle2'\n className={clsx(classes.labelText, classes.labelOverflow)}\n >\n {label}\n {subLabel &&\n treeViewMode === TreeViewModeEnums.Compact && (\n <Typography\n variant='caption'\n className={clsx(\n classes.captionText,\n classes.labelOverflow\n )}\n >\n {subLabel}\n </Typography>\n )}\n </Typography>\n {subLabel && treeViewMode === TreeViewModeEnums.Classic && (\n <div className={classes.labelOverflow}>\n <Typography\n variant='caption'\n className={clsx(classes.captionText)}\n >\n {subLabel}\n </Typography>\n </div>\n )}\n </div>\n {node?.properties?.itemCount !== undefined &&\n node?.properties?.itemCount !== null &&\n sidebarExpanded && (\n <StatusChip\n label={String(node.properties.itemCount)}\n useSmallChip={true}\n />\n )}\n <AggregateChip aggregateThresholdId={aggregateThresholdId} />\n {conditionalIconName && sidebarExpanded && (\n <div className={classes.conditionalIconContainer}>\n <UnityFluentIcon\n size={\n treeViewMode === TreeViewModeEnums.Compact\n ? 'small'\n : 'medium'\n }\n color={conditionalIconColor}\n type={conditionalIconType}\n icon={\n conditionalIconType === 'unity'\n ? getUnityIconFromName(conditionalIconName)\n : getIconFromName(conditionalIconName)\n }\n style={{\n color: conditionalIconColor\n }}\n />\n </div>\n )}\n </div>\n )}\n </div>\n </Tooltip>\n </div>\n }\n onLabelClick={handleOnLabelClick}\n classes={{ root: classes.root, content: classes.content }}\n {...other}\n />\n );\n};\n","import React, { useCallback, useState, useEffect, useRef } from 'react';\nimport {\n makeStyles,\n useTheme,\n lighten,\n CircularProgress,\n Typography\n} from '@material-ui/core';\nimport TreeView from '@material-ui/lab/TreeView';\nimport { BaseTreeMenuItem } from './BaseTreeMenuItem';\nimport {\n searchTree,\n findAllParentIds,\n getNodeIdForRightBorder\n} from '../utilities/tree/TreeUtilities';\nimport { FluentIcon } from '../utilities/iconLibrary/FluentIcon';\nimport { CaretUpSolid8Icon, CaretDownSolid8Icon } from '@fluentui/react-icons';\nimport { cloneDeep } from 'lodash';\nimport { TreeViewModeEnums } from '../enums/unitySystemEnums.ts';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n marginBottom: theme.spacing(1.75),\n borderTop: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact\n ? `1px solid ${theme.palette.grey[200]}`\n : ''\n },\n noChildrenContainer: {\n borderBottom: (props) =>\n props.treeViewMode === TreeViewModeEnums.Compact\n ? `1px solid ${theme.palette.grey[200]}`\n : ''\n }\n}));\n\nexport const BaseTreeMenu = (props) => {\n const {\n menuItems,\n onSelectNode,\n onDropNode,\n menuIndex,\n selectedNodeId,\n selectedNodeParentId,\n sidebarExpanded,\n treeViewMode,\n childrenKey = 'children'\n } = props;\n const [expanded, setExpanded] = useState(null);\n const [isCurrentActiveTree, setIsCurrentActiveTree] = useState(false);\n const [selectedNodeIsHidden, setSelectedNodeIsHidden] = useState(false);\n const [tree, setTree] = useState(menuItems);\n const theme = useTheme();\n const classes = useStyles(props);\n const firstRender = useRef(true);\n\n const handleSelectedNode = useCallback(\n (e, value) => {\n const selectedNode = searchTree(tree, value);\n if (onSelectNode) {\n onSelectNode(selectedNode, menuIndex);\n setSelectedNodeIsHidden(false);\n }\n },\n [tree, menuIndex, onSelectNode]\n );\n\n const renderTree = useCallback(\n (node, depth = 1) => {\n let label = node.properties?.nodeLabel || node.properties?.name;\n let subLabel = node.properties?.nodeSubLabel;\n let iconName = node.properties?.defaultIcon?.name;\n let iconType = node.properties?.defaultIcon?.type;\n let conditionalIconName = node.properties?.conditionalIconName || '';\n let conditionalIconType = node.properties?.conditionalIconName\n ? node.properties.conditionalIconType\n : '';\n let conditionalIconColor = node.properties?.conditionalIconName\n ? node.properties?.conditionalIconColor\n : '';\n let nodeId = node.id;\n let iconColor = node.properties?.conditionalIconName\n ? node.properties?.conditionalIconColor\n : node.properties?.defaultIcon?.color?.hex;\n let aggregateThresholdId = node.properties?.aggregateThresholdId || '';\n\n if (node.isGroupNode) {\n label = node.properties?.label;\n subLabel = node.properties?.subLabel;\n iconName = node.properties?.icon?.name;\n iconType = node.properties?.icon?.type;\n iconColor = node.properties?.icon?.color?.hex;\n }\n\n return (\n <BaseTreeMenuItem\n key={nodeId}\n nodeId={nodeId}\n label={label}\n subLabel={subLabel}\n iconName={iconName}\n iconType={iconType}\n conditionalIconName={conditionalIconName}\n conditionalIconType={conditionalIconType}\n conditionalIconColor={conditionalIconColor}\n parentId={node.parentId}\n iconColor={iconColor}\n onNodeSelect={handleSelectedNode}\n selectedNodeId={selectedNodeId}\n isSelectedNode={selectedNodeId === node.id}\n showRightBorderColor={\n selectedNodeIsHidden &&\n isCurrentActiveTree &&\n getNodeIdForRightBorder(expanded, tree, selectedNodeParentId) ===\n node.id\n }\n isCurrentActiveTree={isCurrentActiveTree}\n sidebarExpanded={sidebarExpanded}\n depth={depth}\n hideExpansion={!!!node[childrenKey]?.length}\n node={node}\n onDropNode={onDropNode}\n treeViewMode={treeViewMode}\n menuIndex={menuIndex}\n aggregateThresholdId={aggregateThresholdId}\n >\n {node.properties?.lazyLoad &&\n !!!node[childrenKey]?.length &&\n !node.completedLoadingChildren && (\n <CircularProgress\n size={12}\n style={{ marginLeft: (depth || 1) * theme.spacing(1) }}\n />\n )}\n {node.properties?.lazyLoad &&\n !!!node[childrenKey]?.length &&\n node.completedLoadingChildren &&\n sidebarExpanded &&\n !node.errorRetrievingChildren && (\n <div className={classes.noChildrenContainer}>\n <Typography\n variant='caption'\n style={{\n marginLeft: (depth || 1) * theme.spacing(3),\n fontWeight: 400\n }}\n >\n No Children\n </Typography>\n </div>\n )}\n {node.properties?.lazyLoad &&\n node.completedLoadingChildren &&\n sidebarExpanded &&\n node.errorRetrievingChildren && (\n <div className={classes.noChildrenContainer}>\n <Typography\n variant='caption'\n style={{\n marginLeft: (depth || 1) * theme.spacing(3),\n fontWeight: 400\n }}\n >\n {`Error Retrieving ${\n !!node[childrenKey]?.length ? `Additional ` : ''\n }Children`}\n </Typography>\n </div>\n )}\n {Array.isArray(node[childrenKey])\n ? node[childrenKey].map((n, i) => renderTree(n, depth + 1))\n : null}\n </BaseTreeMenuItem>\n );\n },\n [\n handleSelectedNode,\n selectedNodeId,\n selectedNodeIsHidden,\n isCurrentActiveTree,\n sidebarExpanded,\n expanded,\n tree,\n selectedNodeParentId,\n theme,\n classes,\n onDropNode,\n treeViewMode,\n menuIndex,\n childrenKey\n ]\n );\n\n const handleNodeExpansion = useCallback(\n async (evt, nodeIds) => {\n const treeCopy = cloneDeep(tree);\n setExpanded(nodeIds);\n\n const parentNode = searchTree(treeCopy, selectedNodeParentId);\n const initialAllParentNodeIds = selectedNodeParentId\n ? [selectedNodeParentId]\n : [];\n const allParentNodeIds = findAllParentIds(\n treeCopy,\n parentNode,\n initialAllParentNodeIds\n );\n const selectedNodeShown = allParentNodeIds.every((id) =>\n nodeIds.includes(id)\n );\n if (\n isCurrentActiveTree &&\n allParentNodeIds.length &&\n !selectedNodeShown\n ) {\n setSelectedNodeIsHidden(true);\n } else {\n setSelectedNodeIsHidden(false);\n }\n },\n [isCurrentActiveTree, tree, selectedNodeParentId]\n );\n\n const getExpandedRecursively = useCallback(\n (tree) => {\n if (!tree) return [];\n return tree.reduce((expandedIds, item) => {\n if (item?.isExpanded) {\n expandedIds.push(item.id);\n }\n if (item && item[childrenKey]?.length) {\n expandedIds = expandedIds.concat(\n getExpandedRecursively(item[childrenKey])\n );\n }\n return expandedIds;\n }, []);\n },\n [childrenKey]\n );\n\n useEffect(() => {\n setTree(menuItems);\n }, [menuItems]);\n\n useEffect(() => {\n if (!tree) return;\n if (firstRender.current) {\n let expanded = [];\n if (tree?.isExpanded) {\n expanded.push(tree.id);\n }\n expanded = expanded.concat(getExpandedRecursively(tree[childrenKey]));\n setExpanded(expanded);\n firstRender.current = false;\n }\n // Do not reset expanded on subsequent updates\n }, [getExpandedRecursively, tree, childrenKey]);\n\n useEffect(() => {\n if (!!searchTree(tree, selectedNodeId)) {\n setIsCurrentActiveTree(true);\n } else {\n setIsCurrentActiveTree(false);\n }\n }, [tree, selectedNodeId]);\n\n const treeSelectedId =\n isCurrentActiveTree && selectedNodeId != null\n ? String(selectedNodeId)\n : null;\n\n if (!expanded) {\n return null;\n }\n\n return (\n <TreeView\n key={tree}\n className={classes.root}\n defaultCollapseIcon={\n <FluentIcon\n size='small'\n component={CaretUpSolid8Icon}\n style={{\n color: lighten(theme.palette.primary.main, 0.5),\n width: theme.spacing(1.5),\n height: theme.spacing(1.5)\n }}\n />\n }\n expanded={expanded || []}\n onNodeToggle={handleNodeExpansion}\n defaultExpandIcon={\n <FluentIcon\n size='small'\n component={CaretDownSolid8Icon}\n style={{\n color: lighten(theme.palette.primary.main, 0.5),\n width: theme.spacing(1.5),\n height: theme.spacing(1.5)\n }}\n />\n }\n selected={treeSelectedId}\n >\n {tree && renderTree(tree)}\n </TreeView>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;AAuBA,MAAMA,cAAY,YAAY,WAAW;CACvC,MAAM;EACJ,yCAAyC;GACvC,iBACE,OAAO,cAAc,EAAE,SAAS,SAC5B,MAAM,QAAQ,KAAK,OACnB,MAAM,QAAQ,KAAK;GACzB,aAAa,aAAa,MAAM,QAAQ,QAAQ;GACjD;EACD,4DAA4D;GAC1D,iBAAiB;GACjB,aAAa;GACd;EACD,qEAAqE,EACnE,iBACE,OAAO,cAAc,EAAE,SAAS,UAAU,MAAM,QAAQ,KAAK,KAChE;EACD,qDAAqD,EACnD,UAAU,UAAW,MAAM,kBAAkB,SAAS,QACvD;EACF;CACD,SAAS,EACP,kBAAkB,UAChB,OAAO,cAAc,EAAE,SAAS,UAChC,MAAM,uBACN,MAAM,uBACF,QAAQ,MAAM,sBAAsB,IAAK,GACzC,IACP;CACD,WAAW;EACT,SAAS;EACT,YAAY;EACZ,aAAa,UAAW,MAAM,kBAAkB,IAAI,MAAM,QAAQ,IAAI;EACtE,OAAO;EACR;CACD,gBAAgB;EACd,UAAU,UAAW,CAAC,MAAM,kBAAkB,SAAS;EACvD,QAAQ,UACN,MAAM,iBAAiB,kBAAkB,UACrC,eAAe,MAAM,QAAQ,KAAK,CAAC,OACnC,eAAe,MAAM,QAAQ,KAAK,CAAC;EAC1C;CACD,0BAA0B,EACxB,SAAS,eACV;CACD,WAAW;EACT,UAAU;EACV,YAAY;EACZ,YAAY;EACZ,eAAe;EAChB;CACD,aAAa;EACX,aAAa,UACX,MAAM,iBAAiB,kBAAkB,UAAU,MAAM,QAAQ,EAAE,GAAG;EACxE,UAAU;EACV,YAAY;EACZ,YAAY;EACZ,eAAe;EAChB;CACD,eAAe;EACb,YAAY;EACZ,UAAU;EACV,cAAc;EACf;CACD,OAAO;EACL,OAAO;EACP,wBAAwB,EACtB,YAAY,GACb;EACD,0BAA0B;GACxB,cAAc,UACZ,MAAM,mBAAmB,MAAM,SAAS,KAAK,MAAM,QAAQ,EAAE,GAAG;GAClE,cAAc,UACZ,MAAM,uBACF,aAAa,MAAM,QAAQ,QAAQ,SACnC;GACN,eAAe,UACb,MAAM,iBAAiB,kBAAkB,UACrC,aAAa,MAAM,QAAQ,KAAK,SAChC;GACP;EACD,6CAA6C;GAC3C,aAAa;GACb,QAAQ,UACN,MAAM,mBAAmB,eAAe,MAAM,QAAQ,IAAI,CAAC;GAC9D;EACD,0DAA0D,EACxD,UAAU,UAAW,MAAM,gBAAgB,SAAS,IACrD;EACD,+BAA+B,EAC7B,kBAAkB,UAChB,OAAO,cAAc,EAAE,SAAS,UAAU,MAAM,iBAC5C,MAAM,QAAQ,KAAK,MACnB,IACP;EACF;CACD,eAAe;EACb,SAAS;EACT,YAAY;EACZ,gBAAgB;EAChB,cAAc;EACd,YAAY,UACV,MAAM,iBAAiB,kBAAkB,UACrC,MAAM,QAAQ,IAAK,GACnB,MAAM,QAAQ,GAAI;EACxB,eAAe,UACb,MAAM,iBAAiB,kBAAkB,UACrC,MAAM,QAAQ,IAAK,GACnB,MAAM,QAAQ,GAAI;EACxB,aAAa,MAAM,QAAQ,EAAE;EAC7B,QAAQ,UACN,MAAM,iBAAiB,kBAAkB,UACrC,MAAM,QAAQ,EAAE,GAChB,MAAM,QAAQ,EAAE;EACtB,SAAS,UACP,MAAM,iBAAiB,kBAAkB,UACrC,MAAM,QAAQ,EAAE,GAChB,MAAM,QAAQ,EAAE;EACtB,SAAS,UACP,MAAM,YACF,aAAa,OAAO,MAAM,WAAW,GAAI,KACzC,aAAa,MAAM,QAAQ,UAAU;EAC3C,iBAAiB;EAClB;CACF,EAAE;AAEH,MAAa,oBAAoB,UAAU;CACzC,MAAM,EACJ,UACA,QACA,UACA,UACA,qBACA,qBACA,sBACA,OACA,WACA,cACA,gBACA,UACA,iBACA,YACA,SACA,MACA,YACA,cACA,WACA,sBACA,GAAG,UACD;CACJ,MAAM,UAAUA,YAAU,MAAM;CAChC,MAAM,QAAQ,UAAU;CAExB,MAAM,CAAC,EAAE,cAAc,WAAW,QAAQ;EACxC,MAAM;EACN,MAAM;GAAE,GAAG;GAAM,qBAAqB;GAAW;EACjD,UAAU,aAAa,EACrB,YAAY,QAAQ,YAAY,EACjC;EACF,CAAC;CAEF,MAAM,eAAe,aAClB,YAAY,YAAY;AACvB,MAAI,CAAC,QAAQ,SAAS,EACpB;OAAI,YAAY;IACd,MAAM,EAAE,qBAAqB,GAAGC,YAAU;AAC1C,eAAW,EAAE,GAAGA,SAAO,EAAE,MAAM,qBAAqB,UAAU;;;IAIpE;EAAC;EAAY;EAAM;EAAU,CAC9B;CAED,MAAM,CAAC,EAAE,SAAS,UAAU,WAAW,eAC9B;EACL,QAAQ,CAAC,mBAAmB;EAC5B,OAAO,YAAY,YAAY;AAE7B,gBAAa,YAAY,QAAQ;;EAEnC,UAAU,eAAe,aAAa,WAAW;EACjD,UAAU,aAAa;GACrB,QAAQ,QAAQ,QAAQ;GACxB,SAAS,CAAC,CAAC,QAAQ,SAAS;GAC7B;EACF,GACD,CAAC,aAAa,CACf;CAED,MAAM,eAAe,aAClB,eAAe;AACd,MAAI,YAAY;GACd,MAAM,gBAAgB,MAAM,YAAY,aAAa,QAClD,OAAO,IAAI,gBAAgB,uBAAuB,aACpD;AACD,OAAI,CAAC,cACH,QAAO;AAKT,WAHyB,eAAe,KACrC,WAAW,QAAQ,eACrB,EACuB,SACtB,YAAY,YAAY,oBACzB;;IAGL,CAAC,KAAK,CACP;CAED,MAAM,qBAAqB,aACxB,MAAM;AACL,IAAE,gBAAgB;AAClB,eAAa,GAAG,OAAO;IAEzB,CAAC,cAAc,OAAO,CACvB;AAED,QACE,oCAAC;EACC,WAAW,QAAQ;EACnB,KAAK;EACG;EACR,OACE,oCAAC,SAAI,KAAK,WACR,oCAAC,WAAQ,OAAO,kBAAkB,KAAK,SACrC,oCAAC;GACC,KAAM,MAAM,YAAY,eAAe,WAAY;GACnD,OAAO,EAAE,SAAS,aAAa,KAAM,GAAG;KAEvC,UACC,oCAAC,oBAAiB,MAAM,KAAM,GAE9B,oCAAC;GACC,IAAI,gCAA8B,MAAM,QAAQ,QAAQ,GAAG;GAC3D,aAAa,gCAA8B,MAAM,QAAQ,QAAQ,GAAG;GACpE,WAAW,QAAQ;GACnB,OAAO,EACL,YAAY,iBAAiB,SAAS,IACvC;KAEA,YACC,oCAAC,SAAI,WAAW,QAAQ,iBACtB,oCAAC;GACC,MACE,iBAAiB,kBAAkB,UAC/B,UACA;GAEN,OAAO;GACP,MAAM;GACN,MACE,aAAa,UACT,qBAAqB,SAAS,GAC9B,gBAAgB,SAAS;GAE/B,OAAO,EACL,OAAO,YACH,OAAO,WAAW,GAAI,GACtB,MAAM,QAAQ,UAAU,MAC7B;IACD,CACE,EAER,oCAAC,SAAI,WAAW,QAAQ,kBACtB,oCAAC;GACC,SAAQ;GACR,WAAW,KAAK,QAAQ,WAAW,QAAQ,cAAc;KAExD,OACA,YACC,iBAAiB,kBAAkB,WACjC,oCAAC;GACC,SAAQ;GACR,WAAW,KACT,QAAQ,aACR,QAAQ,cACT;KAEA,SACU,CAEN,EACZ,YAAY,iBAAiB,kBAAkB,WAC9C,oCAAC,SAAI,WAAW,QAAQ,iBACtB,oCAAC;GACC,SAAQ;GACR,WAAW,KAAK,QAAQ,YAAY;KAEnC,SACU,CACT,CAEJ,EACL,MAAM,YAAY,cAAc,UAC/B,MAAM,YAAY,cAAc,QAChC,mBACE,oCAAC;GACC,OAAO,OAAO,KAAK,WAAW,UAAU;GACxC,cAAc;IACd,EAEN,oCAAC,iBAAoC,uBAAwB,EAC5D,uBAAuB,mBACtB,oCAAC,SAAI,WAAW,QAAQ,4BACtB,oCAAC;GACC,MACE,iBAAiB,kBAAkB,UAC/B,UACA;GAEN,OAAO;GACP,MAAM;GACN,MACE,wBAAwB,UACpB,qBAAqB,oBAAoB,GACzC,gBAAgB,oBAAoB;GAE1C,OAAO,EACL,OAAO,sBACR;IACD,CACE,CAEJ,CAEJ,CACE,CACN;EAER,cAAc;EACd,SAAS;GAAE,MAAM,QAAQ;GAAM,SAAS,QAAQ;GAAS;EACzD,GAAI;GACJ;;;;;AC/UN,MAAM,YAAY,YAAY,WAAW;CACvC,MAAM;EACJ,cAAc,MAAM,QAAQ,KAAK;EACjC,YAAY,UACV,MAAM,iBAAiB,kBAAkB,UACrC,aAAa,MAAM,QAAQ,KAAK,SAChC;EACP;CACD,qBAAqB,EACnB,eAAe,UACb,MAAM,iBAAiB,kBAAkB,UACrC,aAAa,MAAM,QAAQ,KAAK,SAChC,IACP;CACF,EAAE;AAEH,MAAa,gBAAgB,UAAU;CACrC,MAAM,EACJ,WACA,cACA,YACA,WACA,gBACA,sBACA,iBACA,cACA,cAAc,eACZ;CACJ,MAAM,CAAC,UAAU,eAAe,SAAS,KAAK;CAC9C,MAAM,CAAC,qBAAqB,0BAA0B,SAAS,MAAM;CACrE,MAAM,CAAC,sBAAsB,2BAA2B,SAAS,MAAM;CACvE,MAAM,CAAC,MAAM,WAAW,SAAS,UAAU;CAC3C,MAAM,QAAQ,UAAU;CACxB,MAAM,UAAU,UAAU,MAAM;CAChC,MAAM,cAAc,OAAO,KAAK;CAEhC,MAAM,qBAAqB,aACxB,GAAG,UAAU;EACZ,MAAM,eAAe,WAAW,MAAM,MAAM;AAC5C,MAAI,cAAc;AAChB,gBAAa,cAAc,UAAU;AACrC,2BAAwB,MAAM;;IAGlC;EAAC;EAAM;EAAW;EAAa,CAChC;CAED,MAAM,aAAa,aAChB,MAAM,QAAQ,MAAM;EACnB,IAAI,QAAQ,KAAK,YAAY,aAAa,KAAK,YAAY;EAC3D,IAAI,WAAW,KAAK,YAAY;EAChC,IAAI,WAAW,KAAK,YAAY,aAAa;EAC7C,IAAI,WAAW,KAAK,YAAY,aAAa;EAC7C,IAAI,sBAAsB,KAAK,YAAY,uBAAuB;EAClE,IAAI,sBAAsB,KAAK,YAAY,sBACvC,KAAK,WAAW,sBAChB;EACJ,IAAI,uBAAuB,KAAK,YAAY,sBACxC,KAAK,YAAY,uBACjB;EACJ,IAAI,SAAS,KAAK;EAClB,IAAI,YAAY,KAAK,YAAY,sBAC7B,KAAK,YAAY,uBACjB,KAAK,YAAY,aAAa,OAAO;EACzC,IAAI,uBAAuB,KAAK,YAAY,wBAAwB;AAEpE,MAAI,KAAK,aAAa;AACpB,WAAQ,KAAK,YAAY;AACzB,cAAW,KAAK,YAAY;AAC5B,cAAW,KAAK,YAAY,MAAM;AAClC,cAAW,KAAK,YAAY,MAAM;AAClC,eAAY,KAAK,YAAY,MAAM,OAAO;;AAG5C,SACE,oCAAC;GACC,KAAK;GACG;GACD;GACG;GACA;GACA;GACW;GACA;GACC;GACtB,UAAU,KAAK;GACJ;GACX,cAAc;GACE;GAChB,gBAAgB,mBAAmB,KAAK;GACxC,sBACE,wBACA,uBACA,wBAAwB,UAAU,MAAM,qBAAqB,KAC3D,KAAK;GAEY;GACJ;GACV;GACP,eAAe,CAAC,CAAC,CAAC,KAAK,cAAc;GAC/B;GACM;GACE;GACH;GACW;KAErB,KAAK,YAAY,YAChB,CAAC,CAAC,CAAC,KAAK,cAAc,UACtB,CAAC,KAAK,4BACJ,oCAAC;GACC,MAAM;GACN,OAAO,EAAE,aAAa,SAAS,KAAK,MAAM,QAAQ,EAAE,EAAE;IACtD,EAEL,KAAK,YAAY,YAChB,CAAC,CAAC,CAAC,KAAK,cAAc,UACtB,KAAK,4BACL,mBACA,CAAC,KAAK,2BACJ,oCAAC,SAAI,WAAW,QAAQ,uBACtB,oCAAC;GACC,SAAQ;GACR,OAAO;IACL,aAAa,SAAS,KAAK,MAAM,QAAQ,EAAE;IAC3C,YAAY;IACb;KACF,cAEY,CACT,EAET,KAAK,YAAY,YAChB,KAAK,4BACL,mBACA,KAAK,2BACH,oCAAC,SAAI,WAAW,QAAQ,uBACtB,oCAAC;GACC,SAAQ;GACR,OAAO;IACL,aAAa,SAAS,KAAK,MAAM,QAAQ,EAAE;IAC3C,YAAY;IACb;KAEA,oBACC,CAAC,CAAC,KAAK,cAAc,SAAS,gBAAgB,GAC/C,UACU,CACT,EAET,MAAM,QAAQ,KAAK,aAAa,GAC7B,KAAK,aAAa,KAAK,GAAG,MAAM,WAAW,GAAG,QAAQ,EAAE,CAAC,GACzD,KACa;IAGvB;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CACF;CAED,MAAM,sBAAsB,YAC1B,OAAO,KAAK,YAAY;EACtB,MAAM,WAAW,UAAU,KAAK;AAChC,cAAY,QAAQ;EAMpB,MAAM,mBAAmB,iBACvB,UALiB,WAAW,UAAU,qBAAqB,EAC7B,uBAC5B,CAAC,qBAAqB,GACtB,EAAE,CAKL;EACD,MAAM,oBAAoB,iBAAiB,OAAO,OAChD,QAAQ,SAAS,GAAG,CACrB;AACD,MACE,uBACA,iBAAiB,UACjB,CAAC,kBAED,yBAAwB,KAAK;MAE7B,yBAAwB,MAAM;IAGlC;EAAC;EAAqB;EAAM;EAAqB,CAClD;CAED,MAAM,yBAAyB,aAC5B,WAAS;AACR,MAAI,CAACC,OAAM,QAAO,EAAE;AACpB,SAAOA,OAAK,QAAQ,aAAa,SAAS;AACxC,OAAI,MAAM,WACR,aAAY,KAAK,KAAK,GAAG;AAE3B,OAAI,QAAQ,KAAK,cAAc,OAC7B,eAAc,YAAY,OACxB,uBAAuB,KAAK,aAAa,CAC1C;AAEH,UAAO;KACN,EAAE,CAAC;IAER,CAAC,YAAY,CACd;AAED,iBAAgB;AACd,UAAQ,UAAU;IACjB,CAAC,UAAU,CAAC;AAEf,iBAAgB;AACd,MAAI,CAAC,KAAM;AACX,MAAI,YAAY,SAAS;GACvB,IAAIC,aAAW,EAAE;AACjB,OAAI,MAAM,WACR,YAAS,KAAK,KAAK,GAAG;AAExB,gBAAWA,WAAS,OAAO,uBAAuB,KAAK,aAAa,CAAC;AACrE,eAAYA,WAAS;AACrB,eAAY,UAAU;;IAGvB;EAAC;EAAwB;EAAM;EAAY,CAAC;AAE/C,iBAAgB;AACd,MAAI,CAAC,CAAC,WAAW,MAAM,eAAe,CACpC,wBAAuB,KAAK;MAE5B,wBAAuB,MAAM;IAE9B,CAAC,MAAM,eAAe,CAAC;CAE1B,MAAM,iBACJ,uBAAuB,kBAAkB,OACrC,OAAO,eAAe,GACtB;AAEN,KAAI,CAAC,SACH,QAAO;AAGT,QACE,oCAAC;EACC,KAAK;EACL,WAAW,QAAQ;EACnB,qBACE,oCAAC;GACC,MAAK;GACL,WAAW;GACX,OAAO;IACL,OAAO,QAAQ,MAAM,QAAQ,QAAQ,MAAM,GAAI;IAC/C,OAAO,MAAM,QAAQ,IAAI;IACzB,QAAQ,MAAM,QAAQ,IAAI;IAC3B;IACD;EAEJ,UAAU,YAAY,EAAE;EACxB,cAAc;EACd,mBACE,oCAAC;GACC,MAAK;GACL,WAAW;GACX,OAAO;IACL,OAAO,QAAQ,MAAM,QAAQ,QAAQ,MAAM,GAAI;IAC/C,OAAO,MAAM,QAAQ,IAAI;IACzB,QAAQ,MAAM,QAAQ,IAAI;IAC3B;IACD;EAEJ,UAAU;IAET,QAAQ,WAAW,KAAK,CAChB"}
@@ -1,3 +0,0 @@
1
- import { t as Inquiry } from "./Inquiry-CsHgJgaV.js";
2
-
3
- export { Inquiry };
@@ -1 +0,0 @@
1
- {"version":3,"file":"MenuPage-DiNO7jTV.js","names":[],"sources":["../src/menuPage/MenuPage.jsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, 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/useBuildEnvironment';\nimport { useSetLocationState } from '../hooks/useSetLocationState';\nimport { useTranslation } from 'react-i18next';\nimport { ConfigService } from '../configService';\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\n// Define a stable constant for empty headers to prevent useEffect loops\nconst EMPTY_HEADERS = {};\n\n// Helper to find a node deep in the tree (Moved outside to ensure stability)\nconst findNodeById = (nodes, id) => {\n if (!nodes || !id) return null;\n for (const node of nodes) {\n if (String(node.id) === String(id)) return node;\n if (node.children) {\n const found = findNodeById(node.children, id);\n if (found) return found;\n }\n }\n return null;\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\n const {\n innerMenuOverride,\n mainContent,\n menuTitle,\n allowMissingPageParam = false,\n searchParamsTransformer\n } = props;\n\n // --- STATE ---\n const [sidebarExpanded, setSidebarExpanded] = useState(true);\n const [hasUnsavedChanges, setHasUnsavedChanges] = useState(false);\n const { setSubHeaderActionHasChildren, setNavigationExpanded } = useShellStore();\n\n // --- DATA FETCHING ---\n const innerMenuId = location.pathname.replace('/menupage/', '');\n\n const [{ data: fetchedInnerMenu, loading: menuLoading }] = useAxiosGet(\n ConfigService.tenantV1ApiUrl,\n `menus/${innerMenuId}`,\n EMPTY_HEADERS,\n !innerMenuId,\n false\n );\n\n const innerMenu = innerMenuOverride ?? fetchedInnerMenu;\n\n // --- MEMOIZED DATA ---\n const menuItemsList = useMemo(() => {\n if (!innerMenu) return [];\n\n return innerMenu.menuItemInstanceStructureViews?.reduce((acc, menuInstance) => {\n const updatedMenu = transformMenuPageTree(menuInstance);\n if (updatedMenu) acc.push(updatedMenu);\n return acc;\n }, []) ?? [];\n }, [innerMenu]);\n\n // --- CORE REFACTOR: DERIVE SELECTED NODE ---\n const pageId = new URLSearchParams(location.search).get('page');\n\n const selectedNode = useMemo(() => {\n if (!menuItemsList.length) return null;\n\n // 1. Try to find the node requested in URL\n const found = findNodeById(menuItemsList, pageId);\n if (found) return found;\n\n // 2. Default to first item\n // Even if allowMissingPageParam is true, we still want to RETURN the node for rendering,\n // we just don't want the Redirector useEffect to force it into the URL.\n return menuItemsList[0];\n }, [menuItemsList, pageId]);\n\n // Fetch Page Data based on the derived node\n const [{ data: pageData, loading: pageLoading }] = useAxiosGet(\n ConfigService.tenantV1ApiUrl,\n `page/${selectedNode?.properties?.page?.id}`,\n EMPTY_HEADERS,\n !selectedNode?.properties?.page?.id,\n false\n );\n\n // --- ACTIONS ---\n\n const buildSearchString = useCallback((params, node, menuIndex) => {\n if (typeof searchParamsTransformer === 'function') {\n const result = searchParamsTransformer({\n searchParams: params,\n node,\n menuIndex,\n location\n });\n if (result === null) return '';\n if (result instanceof URLSearchParams) return result.toString();\n if (typeof result === 'string') return result;\n if (result !== undefined) return String(result);\n }\n return params.toString();\n }, [location, searchParamsTransformer]);\n\n const handleSelectedNode = useCallback((node, menuIndex) => {\n // 1. Check if we are \"selecting\" the current node to clear query params if needed\n if (allowMissingPageParam) {\n const firstNode = menuItemsList?.[0];\n if (firstNode && String(node?.id) === String(firstNode.id)) {\n if (location.search) {\n history.replace({ pathname: location.pathname, search: '' });\n }\n setHasUnsavedChanges(false);\n return;\n }\n }\n\n // 2. Build URL\n const searchParams = new URLSearchParams(location.search);\n searchParams.set('page', node.id);\n const searchString = buildSearchString(searchParams, node, menuIndex);\n\n // 3. Navigate (The URL change will trigger the re-render & selectedNode update)\n history.push({\n pathname: location.pathname,\n search: searchString\n });\n\n // Note: We don't set 'selectedNode' manually anymore. It is derived.\n }, [history, location, allowMissingPageParam, menuItemsList, buildSearchString]);\n\n const handleSidebarExpandClick = useCallback(() => {\n setSidebarExpanded((expanded) => !expanded);\n }, []);\n\n const handleDropNode = useCallback(() => {\n // TODO: Implement if we need to for next Phase\n }, []);\n\n // --- EFFECTS ---\n\n // 1. URL SYNCHRONIZATION (The \"Redirector\")\n // Ensures URL matches the selected node (e.g. on initial load or default selection)\n useEffect(() => {\n if (selectedNode && !allowMissingPageParam) {\n const currentUrlId = new URLSearchParams(location.search).get('page');\n\n if (String(selectedNode.id) !== String(currentUrlId)) {\n const newParams = new URLSearchParams(location.search);\n newParams.set('page', selectedNode.id);\n\n history.replace({\n pathname: location.pathname,\n search: newParams.toString()\n });\n }\n }\n }, [selectedNode?.id, location.search, history, allowMissingPageParam]);\n\n // 2. UI CLEANUP (The \"Reactor\")\n // Runs only when the ACTUAL selected ID changes to reset UI state\n useEffect(() => {\n if (selectedNode?.id) {\n setNavigationExpanded(false);\n setHasUnsavedChanges(false);\n setSubHeaderActionHasChildren(false);\n }\n }, [selectedNode?.id, setNavigationExpanded, setSubHeaderActionHasChildren]);\n\n // 3. BREADCRUMB / LABEL SYNC\n useEffect(() => {\n if (innerMenu && location.state?.label !== t(innerMenu?.name)) {\n setLocationState({ label: t(innerMenu?.name) });\n }\n }, [setLocationState, t, innerMenu, location.state?.label]);\n\n\n // --- RENDER ---\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 && !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: 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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"}
@@ -1,3 +0,0 @@
1
- import { t as MenuPage_default } from "./MenuPage-DiNO7jTV.js";
2
-
3
- export { MenuPage_default as default };