udp-react-enterprise-component-library 25.1.0-beta.2 → 25.1.0-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.
- package/dist/{AmbientGridTemplate-BLwgiqwK.js → AmbientGridTemplate-BqlMt5Su.js} +152 -137
- package/dist/AmbientGridTemplate-BqlMt5Su.js.map +1 -0
- package/dist/{EnvironmentRibbon-BMvQEZPZ.js → EnvironmentRibbon-DaDmKAPO.js} +2 -2
- package/dist/{EnvironmentRibbon-BMvQEZPZ.js.map → EnvironmentRibbon-DaDmKAPO.js.map} +1 -1
- package/dist/{MenuPage-DLsNc-P8.js → MenuPage-CO6_GWwB.js} +97 -27
- package/dist/MenuPage-CO6_GWwB.js.map +1 -0
- package/dist/{MyExportsPage-BYH2Wl9k.js → MyExportsPage-CX9tzqHk.js} +5 -5
- package/dist/{MyExportsPage-BYH2Wl9k.js.map → MyExportsPage-CX9tzqHk.js.map} +1 -1
- package/dist/MyExportsPage-CkzQ0MRq.js +8 -0
- package/dist/{PageContainer-B65gsUfF.js → PageContainer-k8KCfGsM.js} +2 -2
- package/dist/{PageContainer-B65gsUfF.js.map → PageContainer-k8KCfGsM.js.map} +1 -1
- package/dist/{SearchUtilities-dbXvMYoa.js → SearchUtilities-Bor3HbfB.js} +2 -2
- package/dist/{SearchUtilities-dbXvMYoa.js.map → SearchUtilities-Bor3HbfB.js.map} +1 -1
- package/dist/{SideSheet-CPHhyWLB.js → SideSheet-DUsxG1FN.js} +3 -3
- package/dist/{SideSheet-CPHhyWLB.js.map → SideSheet-DUsxG1FN.js.map} +1 -1
- package/dist/{UdpPublicForm-DFCL1GzD.js → UdpPublicForm-Caa1tH6z.js} +2 -2
- package/dist/{UdpPublicForm-DFCL1GzD.js.map → UdpPublicForm-Caa1tH6z.js.map} +1 -1
- package/dist/UdpPublicForm-Cvw5tOHe.js +4 -0
- package/dist/{UtilitySideBar-B4r2IAv5.js → UtilitySideBar-D4CXGtW2.js} +12 -9
- package/dist/UtilitySideBar-D4CXGtW2.js.map +1 -0
- package/dist/{VirtualBrowser-C_IJ0I6f.js → VirtualBrowser-BXL0hdy0.js} +7 -7
- package/dist/{VirtualBrowser-C_IJ0I6f.js.map → VirtualBrowser-BXL0hdy0.js.map} +1 -1
- package/dist/{WorkflowContainer-DKwRWi1i.js → WorkflowContainer-DrqzuQtU.js} +35 -7
- package/dist/WorkflowContainer-DrqzuQtU.js.map +1 -0
- package/dist/WorkflowContainer-Q8gtuaB7.js +9 -0
- package/dist/{apiHelpers-t3rfkjFZ.js → apiHelpers-DZots3og.js} +2 -2
- package/dist/apiHelpers-DZots3og.js.map +1 -0
- package/dist/index.js +2624 -2468
- package/dist/index.js.map +1 -1
- package/dist/{propertyTypeEnums-DTGsK5-s.js → propertyTypeEnums-Civy7RJv.js} +2 -2
- package/dist/{propertyTypeEnums-DTGsK5-s.js.map → propertyTypeEnums-Civy7RJv.js.map} +1 -1
- package/dist/types/AGLicense.d.ts +1 -1
- package/dist/types/UI/maps/UdpMap.d.ts +2 -0
- package/dist/types/UI/maps/UdpMapComponent.d.ts +2 -0
- package/dist/types/UI/utilityDisplay/ChipSection.d.ts +2 -1
- package/dist/types/UI/utilityDisplay/GridPrimaryBar.d.ts +2 -1
- package/dist/types/hooks/usePromotedMethodEntities.d.ts +6 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/stores/catalogStore.d.ts +2 -0
- package/dist/types/stores/inquiryStore.d.ts +3 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dist/types/utilities/catalog/CatalogUtilities.d.ts +1 -0
- package/dist/types/utilities/tree/TreeUtilities.d.ts +1 -1
- package/package.json +2 -2
- package/dist/AmbientGridTemplate-BLwgiqwK.js.map +0 -1
- package/dist/MenuPage-DLsNc-P8.js.map +0 -1
- package/dist/MyExportsPage-CVUIXWTf.js +0 -8
- package/dist/UdpPublicForm-BrVSSMCN.js +0 -4
- package/dist/UtilitySideBar-B4r2IAv5.js.map +0 -1
- package/dist/WorkflowContainer-8-mmebY0.js +0 -9
- package/dist/WorkflowContainer-DKwRWi1i.js.map +0 -1
- package/dist/apiHelpers-t3rfkjFZ.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EnvironmentRibbon-BMvQEZPZ.js","names":["useStyles","UserContext: React.Context<User | null>","UserDispatchContext: React.Context<Dispatch | null>","useStyles","props","useStyles","useStyles","useSetInitialShellVisibility: () => void","useStyles","colors","colors","useStyles","Typography","MuiTypography","useStyles","LayoutUnit: React.FC<any>","useStyles","enableAxiosInterceptors","useStyles","Typography"],"sources":["../src/UI/inputs/buttons/FluentButton.jsx","../src/utilities/axiosInterceptors.js","../src/utilities/auth/internal.ts","../src/utilities/auth/useUser.ts","../src/utilities/input/StringUtilities.js","../src/utilities/FluentIcon.jsx","../src/UI/inputs/buttons/FluentIconButton.jsx","../src/enums/unitySystemEnums.ts","../src/utilities/UnityIcon.jsx","../src/utilities/UnityFluentIcon.jsx","../src/stores/shellStore.ts","../src/UI/inputs/buttons/PrimaryActionButton.jsx","../src/utilities/style/colors.js","../src/utilities/style/colorConverter.js","../src/UI/dataDisplay/typography/Typography.jsx","../src/layout/LayoutUnit.tsx","../src/UI/dataDisplay/typography/StandardTitle.jsx","../src/utilities/useAxiosGet.js","../src/UI/widgets/utils/useId.js","../src/UI/dataDisplay/StatusChip.jsx","../src/udp/utilities/methodUtils.js","../src/utilities/tenant/tenantContext.ts","../src/utilities/tenant/useTenant.ts","../src/shell/ui/EnvironmentRibbon.tsx"],"sourcesContent":["import React from 'react';\nimport { makeStyles } from '@material-ui/core';\nimport { Button, CircularProgress } from '@material-ui/core';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n borderRadius: 2,\n height: (props) => (props.height ? props.height : 32),\n padding: '0 16px',\n minWidth: (props) => (props.minWidth ? props.minWidth : 80),\n border: (props) => `1px solid ${props.color}`\n },\n label: {\n textTransform: 'capitalize',\n fontSize: '0.875rem',\n fontWeight: 600\n }\n}));\n\nexport const FluentButton = (props) => {\n const classes = useStyles(props);\n const { children, id, udprecordid, minWidth, progress, disabled, ...otherProps } =\n props;\n return (\n <Button\n {...otherProps}\n disableElevation\n classes={{\n root: classes.root,\n label: classes.label\n }}\n margin='dense'\n id={id}\n udprecordid={udprecordid}\n minWidth={minWidth}\n disabled={disabled || progress}\n >\n {progress && (\n <CircularProgress\n id={id + '-ButtonProgress'}\n udprecordid={udprecordid + '-ButtonProgress'}\n size={18}\n color='primary'\n />\n )}\n {!progress && children}\n </Button>\n );\n};\n","import Axios from 'axios';\nimport { getAccessToken, getMergedConfig } from './apiHelpers';\nimport { whitelistedPaths } from './auth/whitelistedPaths';\n\nconst axiosInterceptors = () => {\n Axios.interceptors.request.use(\n async (config) => {\n // don't want to change the access token if it's already there, this rule is already applied in getMergedConfig\n // we don't want to call getAccessToken until it is actually need it because it might log the user out\n if (!whitelistedPaths.includes(window.location.pathname)) {\n let accessToken = '';\n if(!config?.headers?.Authorization){\n accessToken = await getAccessToken()\n }\n return getMergedConfig(accessToken, config);\n }\n return config;\n },\n (error) => Promise.reject(error)\n );\n\n Axios.interceptors.response.use(\n (response) => response,\n async (error) => {\n const config = error?.config;\n if (\n error?.response?.status === 401 &&\n !config?._retry &&\n !whitelistedPaths.includes(window.location.pathname)\n ) {\n config.headers.Authorization = `Bearer ${await getAccessToken()}`;\n config._retry = true;\n\n return Axios(config);\n }\n\n return Promise.reject(error);\n }\n );\n};\n\nexport default axiosInterceptors;\n","import { createContext } from 'react';\nimport { User } from './user';\n\nexport type UserAction = { type: 'SET_USER' };\nexport type AccessTokenAction = { type: 'SET_ACCESS_TOKEN' };\nexport type Dispatch = (action: UserAction | AccessTokenAction) => void;\nexport const UserContext: React.Context<User | null> = createContext<User | null>(null);\nexport const UserDispatchContext: React.Context<Dispatch | null> = createContext<Dispatch | null>(null);\n","import { useContext } from 'react';\nimport { UserContext } from './internal';\nimport { User } from './user';\n\n/**\n * Get the current User object (or null if not logged in)\n *\n * Does not redirect to login\n * @see {@link useAuthedUser}\n */\nexport function useUser(): User | null {\n return useContext(UserContext);\n}\n","export const removeWhiteSpace = (str) => {\n if (!str) {\n return '';\n }\n return str.replace(/\\s/g, '');\n};\n\nexport const camelToPascalCaseWithSpace = (str) => {\n const capitalizedStr = str.charAt(0).toUpperCase() + str.slice(1);\n return capitalizedStr.replace(/([a-z0-9])([A-Z])/g, '$1 $2');\n};\n\nexport const trimStringAfter = (str, character) => {\n const lastIndex = str.lastIndexOf(character);\n return str.substring(0, lastIndex === -1 ? str.length : lastIndex);\n};\n\nexport const toLowerFirstChar = (field) => {\n return field?.charAt(0)?.toLowerCase() + field?.slice(1);\n};\n\nexport const toUpperFirstChar = (field) => {\n return field?.charAt(0)?.toUpperCase() + field?.slice(1);\n};\n\nexport const toTitleCase = (str) => {\n const result = str\n .replace(/([A-Z][a-z]+)/g, ' $1')\n .replace(/([A-Z]+)\\b/g, ' $1')\n .replace(/_/g, ' ')\n .trim();\n return result.charAt(0).toUpperCase() + result.slice(1);\n};\n\nexport const pluralize = (str) => {\n const last = str.charAt(str.length - 1);\n if (last === 's') {\n return str;\n } else {\n return `${str}s`;\n }\n};\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core';\nimport clsx from 'clsx';\n\nconst useStyles = makeStyles(\n (props) => ({\n root: {\n display: 'inline-block',\n '& > svg': {\n display: 'inherit'\n }\n },\n default: {\n fontSize: 18,\n width: 18,\n height: 18\n },\n large: {\n fontSize: 24,\n width: 24,\n height: 24\n },\n medium: {\n fontSize: 16,\n width: 16,\n height: 16\n },\n small: {\n fontSize: 14,\n width: 14,\n height: 14\n },\n xs: {\n fontSize: 12,\n width: 12,\n height: 12\n },\n color: {\n color: (props) => props.color\n },\n customSize: {\n fontSize: (props) => props.size,\n width: (props) => props.size,\n height: (props) => props.size\n }\n }),\n { name: 'FluentIcon' }\n);\n\n/**\n * Wrapper for @fluentui/react-icons to provide it with required size\n */\nexport const FluentIcon = (props) => {\n const classes = useStyles(props);\n const {\n component: IconComponent,\n size = 'default',\n className,\n color,\n customSize = false,\n ...otherProps\n } = props;\n\n return (\n <IconComponent\n {...otherProps}\n className={clsx(\n classes.root,\n className,\n (customSize && typeof size === 'number' && classes['customSize']) ||\n classes[size],\n color && classes['color']\n )}\n />\n );\n};\n","import React from 'react'\nimport { makeStyles, IconButton } from '@material-ui/core'\nimport { FluentIcon } from '../../../utilities/FluentIcon'\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n borderRadius: (props) => (props.rounded ? 50 : 2),\n width: (props) => (props.rounded ? theme.spacing(4) : theme.spacing(1)),\n height: (props) => (props.rounded ? theme.spacing(4) : theme.spacing(1)),\n border: (props) => props.rounded && `1px solid ${theme.palette.divider}`,\n background: (props) => props.rounded && theme.palette.common.white\n }\n}))\n\nexport const FluentIconButton = (props) => {\n const classes = useStyles(props)\n const { icon, size = 'medium', id, udprecordid, ...otherProps } = props\n return (\n <IconButton\n {...otherProps}\n classes={{\n root: classes.root\n }}\n udprecordid={udprecordid}\n >\n <FluentIcon component={icon} size={size} id={id} />\n </IconButton>\n )\n}\n","export enum GridEnums {\n Ideas = 'f3c1bf72-15fd-4dcd-904c-b67850525cff',\n Tickets = '787a2afc-26df-440a-9040-9a3e5c5333d5',\n Users = '4ea9fe5d-0af3-4102-af95-4d4a5ca886e1',\n Tenants = 'b543fc1d-6f45-469e-87ae-2b18b8200955',\n Roles = '9af2eebb-7687-4b3c-91fa-607efb0a5fea',\n Inquiry = 'ac0b9a3a-d113-4590-93db-dea62bcb89a2',\n Groups = 'c599b6ff-fee3-4ade-bf78-16700fddb5b9'\n}\n\nexport enum GridStateTypeEnums {\n Column = 1,\n Pivot_Mode = 2,\n Column_Sort = 3,\n Column_Filter = 4,\n Column_Group = 5\n}\n\nexport enum MenuTypeEnums {\n Left_Menu = 1,\n Application_Menu = 2,\n Builders_Menu = 3,\n Favorites_Menu = 4\n}\n\nexport enum VerticalEnums {\n Engage = 1,\n Manage = 2,\n Build = 3,\n Play = 4\n}\n\nexport enum MenuItemEnums {\n Container = 'b36cec3c-fe05-47ed-a687-70be22b0e200',\n External_Link = '11758dfd-ac3a-4996-b86c-767947776ff8',\n Data_Browser = 'afc3833e-e288-4cf6-8155-a069ec4ddc5a',\n Report = '22763e92-2477-43c3-92db-124a84e5ff7f',\n Page = 'd506aeef-ba1b-49a8-9032-beba450b11bc',\n Page_Builder = '16df758b-c456-4c8c-8ca3-2ae167b3b078',\n Route = 'ec5f1c26-e7e1-4f19-8e6e-143308995a40',\n Tree_Builder = 'd4379c4f-6496-4caa-bc0d-5f297fea580f',\n Inquiry = 'b45f660f-a172-4444-8dd8-8f51d56e0725',\n Scheduler = '4007feb9-e50c-44f9-8502-a1f337d82bcf',\n Config = 'aeb48be9-09ea-49b3-9f21-486fe3545b2d',\n Action = 'a66e9458-2540-4166-9b26-1e9b44a2b080',\n Inner_Menu = 'c4f7b46c-00b8-428e-b982-1639c03fde20'\n}\n\nexport enum ADUserTypeEnums {\n Guest = 'Guest',\n Member = 'Member'\n}\n\nexport enum ProductEnums {\n Unity = 1\n}\n\nexport enum RoleTypeEnums {\n System = 1,\n Tenant = 2\n}\n\nexport enum LookupTypeEnums {\n No_Lookup = 'NO_LOOKUP',\n Api = 'API',\n Csv = 'CSV',\n Domain = 'DOMAIN',\n Lookup = 'LOOKUP'\n}\n\nexport enum SearchValueType {\n String = 'String',\n Int = 'Int',\n Long = 'Long',\n Double = 'Double',\n Boolean = 'Boolean',\n DateTime = 'DateTime'\n}\n\nexport enum SearchGroupingType {\n Distinct = 'DISTINCT',\n Aggregate = 'AGGREGATE'\n}\n\nexport enum SearchSortDirection {\n Asc = 'ASC',\n Desc = 'DESC'\n}\n\nexport enum RoleNameEnums {\n System_Administrator = 'System Administrator',\n Company_Administrator = 'Company Administrator',\n Developer = 'Developer'\n}\n\nexport enum ProductNameEnums {\n Asset_Management = 'Asset Management',\n Asset_Routing = 'Asset Routing',\n AVI = 'AVI',\n Cashiering = 'Cashiering',\n Citizen_Portal = 'Citizen Portal',\n Compliance = 'Compliance',\n Consumer_Engagement = 'Consumer Engagement',\n Consumer_Information = 'Consumer Information',\n Contact_Center = 'Contact Center',\n Course_Management = 'Course Management',\n Crew_Routing = 'Crew Routing',\n Dispatch = 'Dispatch',\n Dispatch_Admin = 'Dispatch Admin',\n Employee_Network = 'Employee Network',\n Energy_Management = 'Energy Management',\n Equipment_Inspection = 'Equipment Inspection',\n Facility_Management = 'Facility Management',\n Field_Mobility = 'Field Mobility',\n Fixed_Assets = 'Fixed Assets',\n Fleet_Management = 'Fleet Management',\n Health_And_Safety = 'Health & Safety',\n Instructor_Application = 'Instructor Application',\n MDM = 'MDM',\n Member_Management = 'Member Management',\n Page_Builder = 'Page Builder',\n Project_Management = 'Project Management',\n Rentals = 'Rentals',\n Unity = 'Unity',\n Work_Orders = 'Work Orders'\n}\n\nexport enum LogicalSearchOperatorEnums {\n And = 1,\n Or = 2\n}\n\nexport enum NodeActionTriggerEnums {\n On_Node_Drop = 1\n}\n\nexport enum NodeActionEnums {\n Load_Inquiry_Page = 1,\n Execute_Api = 2,\n Start_Workflow = 3,\n Create = 4,\n Update = 5,\n Delete = 6,\n Retrieve = 7,\n Open_Inquiry = 8,\n Open_Maintenance_Engine = 9,\n Redirect = 10,\n Open_External_Link = 11,\n Hide = 12,\n Disable = 13,\n Open_Page_Split_Screen = 14,\n Open_Shell_Split_Screen = 15,\n Open_Notes = 16,\n Open_Reminders = 17,\n Execute_Function = 18\n}\n\nexport enum TreeViewModeEnums {\n Classic = 1,\n Compact = 2\n}\n\nexport enum PanelPositionEnums {\n Site_Header = 1,\n Site_Header_Summary = 2,\n Speed_Dial = 3,\n Inquiry_Header = 4,\n Inquiry_Header_Summary = 5\n}\n\nexport enum CardinalityTypeEnums {\n One_To_One = 0,\n One_To_Many = 1,\n Many_To_Many = 2,\n Many_To_One = 3\n}\n\nexport enum SplitScreenTypeEnums {\n Entity = 1,\n Notes = 2,\n Page = 3,\n Reminders = 4\n}\n\nexport enum UdpEnums {\n Udp_Note_Type = 'UdpNoteType',\n Udp_Note_Template = 'UdpNoteTemplate',\n Udp_Note = 'UdpNote',\n Udp_Note_Filed_For = 'UdpNoteFiledFor',\n Udp_Shortcut_Content = 'UdpShortcutContent',\n Udp_Lookup = 'UdpLookup',\n Udp_Reminder_Type = 'UdpReminderType',\n Udp_Reminder_Template = 'UdpReminderTemplate',\n Udp_Reminder = 'UdpReminder',\n Udp_Reminder_Filed_For = 'UdpReminderFiledFor'\n}\n\nexport enum NodeGroupTypeEnums {\n Static = 'static',\n Dynamic = 'dynamic'\n}\n\nexport enum NodeGroupOutlierEnums {\n Hide = 'hide',\n Group = 'group',\n Individual = 'individual'\n}\n\nexport enum LookupTypeIdEnums {\n Api = 1,\n Csv = 2,\n Domain = 3,\n Lookup = 4\n}\n\nexport enum VisibilityTypeEnums {\n Private = 1,\n Public = 2\n}\n\nexport enum SeverityTypeEnums {\n Success = 'success',\n Error = 'error',\n Warning = 'warning',\n Info = 'info',\n Default = 'default'\n}\n\nexport enum UdpKeywordEnums {\n Udp_Tenant_Id = 'UDP_TENANT_ID',\n Udp_Product_Id = 'UDP_PRODUCT_ID',\n Udp_Language_Id = 'UDP_LANGUAGE_ID'\n}\n\nexport const enum JobStatusIdMapping {\n PENDING = 1,\n IN_PROGRESS = 2,\n COMPLETED = 3,\n FAILED = 4\n}\n\nexport const enum JobTypeIdMapping {\n IMPORT = 1,\n EXPORT = 2\n}\n\nexport enum UdpReminderFiledForType {\n User = 1,\n System = 2\n}\n\nexport enum DeviceTypeEnums {\n Desktop = 1,\n Tablet = 2,\n Mobile = 3\n}\n\nexport enum ContainerTypeEnums {\n Sidesheet = 1,\n SplitScreen = 2,\n Page = 3\n}\n\nexport enum TenantTypeEnums {\n Tenant = 1,\n Product = 2\n}\n\nexport enum EntityAttributeEnums {\n Is_Product_ShortcutContent = 'IsProductShortcutContent',\n Is_Product_Lookup = 'IsProductLookup',\n User_Defined = 'UserDefined',\n Domain_Name = 'DomainName'\n}\n\nexport enum RoleIdEnums {\n Unity_System_Administrator = '302dacf5-bf16-412d-bf66-519d4c3491c3'\n}\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core';\nimport clsx from 'clsx';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n fill: (props) => props.color || 'black'\n },\n showcase: {\n fontSize: 38,\n width: 38,\n height: 38\n },\n large: {\n fontSize: 20,\n width: 20,\n height: 20\n },\n default: {\n fontSize: 18,\n width: 18,\n height: 18\n },\n medium: {\n fontSize: 16,\n width: 16,\n height: 16\n },\n small: {\n fontSize: 14,\n width: 14,\n height: 14\n },\n xs: {\n fontSize: 12,\n width: 12,\n height: 12\n }\n}));\n\nexport const UnityIcon = (props) => {\n const { component, size = 'default', className, ...otherProps } = props;\n const classes = useStyles(props);\n\n return (\n <div\n {...otherProps}\n className={clsx(classes.root, className, classes[size])}\n >\n {component}\n </div>\n );\n};\n","import React from 'react';\nimport { UnityIcon } from './UnityIcon';\nimport { FluentIcon } from './FluentIcon';\n\nexport const UnityFluentIcon = (props) => {\n const { type, icon, color, ...other } = props;\n\n if (!icon) {\n return null;\n }\n\n return type === 'unity' ? (\n <UnityIcon component={icon} color={color} {...other} />\n ) : (\n <FluentIcon component={icon} style={{ color: color || '' }} {...other} />\n );\n};\n","import { useEffect } from 'react';\nimport { create } from 'zustand';\nimport { devtools } from 'zustand/middleware';\nimport { ContainerTypeEnums } from '../enums/unitySystemEnums';\n\ninterface ShellState {\n subHeaderActionHasChildren: boolean | null | undefined;\n setSubHeaderActionHasChildren: (subHeaderActionHasChildren: boolean) => void;\n navigationExpanded: boolean | null | undefined;\n setNavigationExpanded: (navigationExpanded: boolean) => void;\n setIsValidWidget: (isValidWidget: (a: string) => boolean) => void;\n isValidWidget: (a: string) => boolean;\n setGetWidget: (getWidget: (a: string) => any) => void;\n getWidget: (a: string) => any;\n shellHidden: boolean | null | undefined;\n setShellHidden: (shellHidden: boolean) => void;\n currentContainerId: string | null | undefined;\n setCurrentContainerId: (containerId: string) => void;\n}\n\nexport const useShellStore = create<ShellState>()(\n devtools((set) => ({\n subHeaderActionHasChildren: false,\n setSubHeaderActionHasChildren: (subHeaderActionHasChildren) =>\n set((state) => ({\n subHeaderActionHasChildren: subHeaderActionHasChildren\n })),\n navigationExpanded: true,\n setNavigationExpanded: (navigationExpanded) =>\n set((state) => ({\n navigationExpanded: navigationExpanded\n })),\n isValidWidget: (a) => false,\n setIsValidWidget: (isValidWidget) =>\n set((state) => ({\n isValidWidget: isValidWidget\n })),\n getWidget: (a) => null,\n setGetWidget: (getWidget) =>\n set((state) => ({\n getWidget: getWidget\n })),\n shellHidden: false,\n setShellHidden: (shellHidden) =>\n set((state) => ({\n shellHidden: shellHidden\n })),\n currentContainerId: null,\n setCurrentContainerId: (currentContainerId) =>\n set((state) => ({ currentContainerId: currentContainerId }))\n }))\n);\n\nexport const useSetInitialShellVisibility: () => void = () => {\n const searchParams = new URLSearchParams(window.location.search);\n const withoutShell =\n searchParams.has('withoutShell') === true\n ? searchParams.get('withoutShell') === 'true'\n ? true\n : false\n : false;\n\n const setShellHidden = useShellStore((state) => state.setShellHidden);\n\n useEffect(() => {\n if (withoutShell) {\n setShellHidden(true);\n }\n }, [setShellHidden, withoutShell]);\n};\n","import React from 'react'\nimport { makeStyles, Button } from '@material-ui/core'\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n borderRadius: 0,\n padding: 'calc(.875rem - 3px) 23px calc(.875rem - 3px) 15px'\n },\n label: {\n textTransform: 'none'\n },\n endIcon: {\n display: 'flex',\n justifyContent: 'flex-end',\n marginLeft: theme.spacing(2)\n }\n}))\n\nexport const PrimaryActionButton = ({ children, icon, ...otherProps }) => {\n const classes = useStyles()\n\n return (\n <div>\n <Button\n {...otherProps}\n disableElevation\n classes={{\n root: classes.root,\n label: classes.label,\n endIcon: classes.endIcon\n }}\n variant='contained'\n color='secondary'\n endIcon={icon}\n >\n {children}\n </Button>\n </div>\n )\n}\nexport default PrimaryActionButton\n","export const colors = {\n systemIcon: {\n trigger: {\n main: '#FFCD27',\n hint: '#FDFAF0',\n hover: { outline: '#AF9027', background: '#FFFDEF' }\n },\n action: {\n main: '#1542FF',\n hint: '#F3F5FE',\n hover: { outline: '#40529D', background: '#ECEFFA' }\n },\n condition: {\n main: '#AE14FF',\n hint: '#F9EEFF',\n hover: { outline: '#844EA0', background: '#FAF2FE' }\n },\n sequence: {\n main: '#FD7F12',\n hint: '#FFF6EE',\n hover: { outline: '#A86123', background: '#FDF4EC' }\n }\n },\n unity: {\n success: {\n hint: '#F3FAF3'\n },\n warning: {\n hint: '#FFF6EA'\n },\n info: {\n hint: '#F3F9FE'\n },\n error: {\n hint: '#FDF7F6'\n }\n },\n categoryColors: {\n one: {\n hint: '#F8BBD0',\n main: '#F3FAF3'\n },\n two: {\n hint: '#FFF6EA',\n main: '#FFF6EA'\n },\n three: {\n hint: '#FFF6EA',\n main: '#FFF6EA'\n },\n four: {\n hint: '#F8BBD0',\n main: '#f3e0eb'\n },\n five: {\n hint: '#F8BBD0',\n main: 'rgb(194 223 218)'\n },\n six: {\n hint: '#F8BBD0',\n main: 'rgb(222 217 235)'\n }\n }\n};\n","import { colors } from './colors';\n\nexport const getEllipseColor = (theme, color, variant = 'main') => {\n if (!theme) {\n return '';\n }\n let ellipseColor = theme.palette.primary[variant];\n switch (color) {\n case 'action':\n ellipseColor = theme.palette.action?.[variant];\n break;\n case 'sequence':\n ellipseColor = theme.palette.sequence?.[variant];\n break;\n case 'trigger':\n ellipseColor = theme.palette.trigger?.[variant];\n break;\n case 'condition':\n ellipseColor = theme.palette.condition?.[variant];\n break;\n case 'primary':\n ellipseColor = theme.palette.primary[variant];\n break;\n case 'secondary':\n ellipseColor = theme.palette.secondary[variant];\n break;\n case 'info':\n ellipseColor = theme.palette.info[variant];\n break;\n case 'warning':\n ellipseColor = theme.palette.warning[variant];\n break;\n case 'error':\n ellipseColor = theme.palette.error[variant];\n break;\n case 'success':\n ellipseColor = theme.palette.success[variant];\n break;\n default:\n ellipseColor = theme.palette.secondary[variant];\n break;\n }\n return ellipseColor;\n};\n\nexport const getCustomHintColor = (color) => {\n // if (!theme) {\n // return '';\n // }\n let customHintColor = colors.unity.info.hint;\n switch (color) {\n // case 'primary':\n // customHintColor = theme.palette.primary.hint;\n // break;\n // case 'secondary':\n // customHintColor = theme.palette.secondary.hint;\n // break;\n case 'info':\n customHintColor = colors.unity.info.hint;\n break;\n case 'warning':\n customHintColor = colors.unity.warning.hint;\n break;\n case 'error':\n customHintColor = colors.unity.error.hint;\n break;\n case 'success':\n customHintColor = colors.unity.success.hint;\n break;\n default:\n customHintColor = colors.unity.info.hint;\n }\n\n return customHintColor;\n};\n\nexport const getCategoryColor = (color) => {\n // if (!theme) {\n // return '';\n // }\n let highlightColor = colors.unity.info.hint;\n switch (color) {\n case 'info':\n highlightColor = colors.unity.info.hint;\n break;\n case 'warning':\n highlightColor = colors.unity.warning.hint;\n break;\n case 'error':\n highlightColor = colors.unity.error.hint;\n break;\n case 'four':\n highlightColor = colors.categoryColors.four.main;\n break;\n case 'five':\n highlightColor = colors.categoryColors.five.main;\n break;\n case 'six':\n highlightColor = colors.categoryColors.six.main;\n break;\n default:\n highlightColor = colors.unity.info.hint;\n }\n\n return highlightColor;\n};\n","import React from 'react';\nimport { Typography as MuiTypography, makeStyles } from '@material-ui/core';\nimport clsx from 'clsx';\nimport { getEllipseColor } from '../../../utilities/style/colorConverter';\n\nconst useStyles = makeStyles((theme) => ({\n typography: {\n color: (props) => props?.color && getEllipseColor(theme, props?.color)\n }\n}));\nexport const Typography = (props) => {\n const {\n variant,\n align,\n children,\n className,\n noWrap = false,\n paragraph = false,\n color\n } = props;\n const classes = useStyles(props);\n\n return (\n <MuiTypography\n variant={variant}\n align={align}\n className={clsx({[classes.typography]: color}, className)}\n noWrap={noWrap}\n paragraph={paragraph}\n >\n {children}\n </MuiTypography>\n );\n};\n","import React from 'react'\nimport { makeStyles, Badge } from '@material-ui/core'\nimport clsx from 'clsx'\n\ntype LayoutUnitProps = {\n unit: 'nudge' | 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl',\n highlight: any\n}\n\nconst useStyles = makeStyles((theme) => ({\n highlight: {\n background: 'pink',\n opacity: (props:LayoutUnitProps) => (props.highlight ? 0.2 : 0)\n },\n nudge: {\n height: theme.spacing(1)\n },\n xxs: {\n height: theme.spacing(2)\n },\n xs: {\n height: theme.spacing(3)\n },\n sm: {\n height: theme.spacing(4)\n },\n md: {\n height: theme.spacing(5)\n },\n lg: {\n height: theme.spacing(8)\n },\n xl: {\n height: theme.spacing(12)\n },\n xxl: {\n height: theme.spacing(20)\n }\n}))\n\n\n\n\nexport const LayoutUnit: React.FC<any> = (props: LayoutUnitProps) => {\n const classes = useStyles(props)\n\n let spaceUnit\n const { unit, highlight } = props\n\n switch (unit) {\n case 'nudge':\n spaceUnit = (\n <div className={clsx(classes.nudge, classes.highlight)}>\n {highlight && <Badge color='secondary' badgeContent='Nudge' />}\n </div>\n )\n break\n case 'xxs':\n spaceUnit = (\n <div className={clsx(classes.xxs, classes.highlight)}>\n {highlight && <Badge color='secondary' badgeContent='XXS' />}\n </div>\n )\n break\n case 'xs':\n spaceUnit = (\n <div className={clsx(classes.xs, classes.highlight)}>\n {highlight && <Badge color='secondary' badgeContent='XS' />}\n </div>\n )\n break\n case 'sm':\n spaceUnit = (\n <div className={clsx(classes.sm, classes.highlight)}>\n {highlight && <Badge color='secondary' badgeContent='SM' />}\n </div>\n )\n break\n case 'md':\n spaceUnit = (\n <div className={clsx(classes.md, classes.highlight)}>\n {highlight && <Badge color='secondary' badgeContent='MD' />}\n </div>\n )\n break\n case 'lg':\n spaceUnit = (\n <div className={clsx(classes.lg, classes.highlight)}>\n {highlight && <Badge color='secondary' badgeContent='LG' />}\n </div>\n )\n break\n case 'xl':\n spaceUnit = (\n <div className={clsx(classes.xl, classes.highlight)}>\n {highlight && <Badge color='secondary' badgeContent='XL' />}\n </div>\n )\n break\n case 'xxl':\n spaceUnit = (\n <div className={clsx(classes.xxl, classes.highlight)}>\n {highlight && <Badge color='secondary' badgeContent='XXL' />}\n </div>\n )\n break\n default:\n }\n\n return spaceUnit\n}\n","import React from 'react'\nimport { makeStyles, Typography } from '@material-ui/core'\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n marginTop: props => props?.removeMarginTop ? 0 : theme.spacing(1),\n whiteSpace: 'nowrap',\n // overflow: 'hidden',\n textOverflow: 'ellipsis'\n }\n}))\n\nexport const StandardTitle = (props) => {\n const classes = useStyles(props)\n const { children, ...other } = props\n\n return (\n <Typography component='h2' variant='h6' className={classes.root} {...other}>\n {children}\n </Typography>\n )\n}\n","import { useEffect, useMemo } from 'react';\nimport useAxios from 'axios-hooks';\nimport { handleResponseErrors, getMergedConfig } from './apiHelpers';\nimport enableAxiosInterceptors from './axiosInterceptors';\nimport { useUser } from './auth/useUser';\nimport { getStoredTenant } from './storage/UnitySessionStorage';\n\nenableAxiosInterceptors();\n/**\n * A custom hook for making GET requests with query parameters.\n * @template T - The expected type of the response data.\n * @param {string} url - The URL for the request.\n * @param {object} [params] - Optional object for query parameters.\n * @param {import('axios').AxiosRequestConfig} [config] - Optional Axios request config.\n * @param {boolean} [isManual] - If true, the request is not made automatically.\n * @returns {import('axios-hooks').AxiosHooksResult<T>}\n */\nexport const useAxiosGetQuery = (url, params, config, isManual) => {\n const user = useUser();\n\n if (!user?.accessToken) {\n isManual = true;\n }\n const headers = useMemo(() => {\n const currentHeaders = config.headers ?? {}\n currentHeaders.currentTenantId ||= user?.currentTenantId ?? ''\n return currentHeaders\n }, [user, config])\n config.headers = headers\n\n const [{ data, loading, error }, refetch] = useAxios(\n { url, params, ...config },\n { manual: isManual }\n );\n useEffect(() => {\n handleResponseErrors(error);\n }, [error]);\n\n return [{ data, loading, error }, refetch];\n};\n/**\n * A custom hook for making GET requests with Axios.\n * @template T - The expected type of the response data.\n * @param {string} baseURL - The base URL for the request.\n * @param {string} url - The URL path for the request.\n * @param {import('axios').AxiosRequestConfig} [config={}] - Optional Axios request config.\n * @param {boolean} [isManual] - If true, the request is not made automatically.\n * @param {boolean} [useCache=true] - If true, caching is enabled.\n * @returns {import('axios-hooks').AxiosHooksResult<T>}\n */\nexport const useAxiosGet = (\n baseURL,\n url,\n config = {},\n isManual,\n useCache = true\n) => {\n const user = useUser();\n\n const headers = useMemo(() => {\n const currentHeaders = config.headers ?? {}\n currentHeaders.currentTenantId ||= user?.currentTenantId ?? ''\n return currentHeaders\n }, [user, config])\n config.headers = headers\n\n const fullURL = { url: `${baseURL}/${url}` };\n const [{ data, loading, error }, refetch] = useAxios(\n { ...fullURL, ...config },\n { manual: isManual, useCache: useCache }\n );\n\n useEffect(() => {\n handleResponseErrors(error);\n }, [error]);\n\n return [{ data, loading, error }, refetch];\n};\n","import warning from 'warning';\nimport useConstant from 'use-constant';\n\nlet idCounter = 0;\nfunction nextId() {\n idCounter += 1;\n warning(\n idCounter < 1e10,\n 'Id: you might have a memory leak.' +\n 'The idCounter is not supposed to grow that much.'\n );\n\n return idCounter;\n}\n\n/**\n * A simple hook that returns a unique page ID\n */\nexport default function useId(name, idFromProps) {\n const id = useConstant(nextId);\n\n if (idFromProps) {\n return idFromProps;\n }\n\n if (process.env.NODE_ENV === 'production') {\n return `uid${id}`;\n }\n\n return `${name || 'unnamed'}-${id}`;\n}\n","import React from 'react';\nimport { Chip, makeStyles } from '@material-ui/core';\nimport clsx from 'clsx';\n\nconst useStyles = makeStyles((theme) => ({\n smallChip: {\n height: theme.spacing(2.5),\n fontSize: '0.7rem',\n '& .MuiChip-label': {\n paddingLeft: theme.spacing(0.75),\n paddingRight: theme.spacing(0.75)\n }\n },\n actionable: {\n cursor: 'pointer'\n },\n success: {\n backgroundColor: theme.palette.success.main,\n color: '#FFF',\n '&.MuiChip-outlined': {\n color: theme.palette.success.main,\n borderColor: theme.palette.success.main,\n backgroundColor: 'transparent'\n }\n },\n warning: {\n backgroundColor: theme.palette.warning.main,\n color: '#FFF',\n '&.MuiChip-outlined': {\n color: theme.palette.warning.main,\n borderColor: theme.palette.warning.main,\n backgroundColor: 'transparent'\n }\n },\n error: {\n backgroundColor: theme.palette.error.main,\n color: '#FFF',\n '&.MuiChip-outlined': {\n color: theme.palette.error.main,\n borderColor: theme.palette.error.main,\n backgroundColor: 'transparent'\n }\n },\n info: {\n backgroundColor: theme.palette.info.main,\n color: theme.palette.getContrastText(theme.palette.info.main),\n '&.MuiChip-outlined': {\n color: theme.palette.info.main,\n borderColor: theme.palette.info.main,\n backgroundColor: 'transparent'\n }\n }\n}));\n\nexport const StatusChip = ({\n status,\n label,\n useSmallChip = false,\n isActionable = false,\n icon,\n variant = 'default',\n onClick,\n}) => {\n const classes = useStyles();\n\n const chipClass = clsx({\n [classes.smallChip]: useSmallChip,\n [classes.actionable]: isActionable,\n [classes.success]: status === 'success',\n [classes.warning]: status === 'warning',\n [classes.error]: status === 'error',\n [classes.info]: status === 'info'\n });\n\n return (\n <Chip\n className={chipClass}\n label={label}\n size='small'\n icon={icon || null}\n variant={variant}\n onClick={isActionable ? onClick : null}\n />\n );\n};\n","import { ConfigService, apiMutate} from 'udp-react-stencil-component-library';\n\nexport const getBaseMethod = (type, baseType, catalogPromotedEntities) => {\n if (!catalogPromotedEntities) {\n return null;\n }\n const entityMethod = catalogPromotedEntities.find((promotedEntity) => {\n const entityNameParts = promotedEntity.entityName.split('.');\n if (entityNameParts.length) {\n return entityNameParts[entityNameParts.length - 1] === type;\n }\n return false;\n });\n return entityMethod ? entityMethod[baseType] : null;\n};\n\nexport const executeQueryAdHoc = async (\n data,\n apiMethodId,\n urlQueryParams = ''\n) =>\n apiMutate(\n ConfigService.integrationV1ApiUrl,\n `apimethod/executeQueryAdHoc/${apiMethodId}${urlQueryParams}`,\n {\n method: 'post'\n },\n data\n );\n\nexport const executeQueryWithParameters = async (\n data,\n apiMethodId,\n urlQueryParams = ''\n) =>\n apiMutate(\n ConfigService.integrationV1ApiUrl,\n `apimethod/executeQueryWithParameters/${apiMethodId}${urlQueryParams}`,\n {\n method: 'post'\n },\n data\n );\n\nexport const executeQueryInstance = async (\n data,\n apiMethodInstanceId,\n urlQueryParams = ''\n) =>\n apiMutate(\n ConfigService.integrationV1ApiUrl,\n `apimethod/executeQueryInstance/${apiMethodInstanceId}${urlQueryParams}`,\n {\n method: 'post'\n },\n data\n );\n\nexport const executeQueryInstanceWithApiMethodInstance = async (\n data,\n urlQueryParams = ''\n) =>\n apiMutate(\n ConfigService.integrationV1ApiUrl,\n `apimethod/executeQueryInstance${urlQueryParams}`,\n {\n method: 'post'\n },\n data\n );\n","import { Tenant } from '../types'\nimport { createContext } from 'react';\n\n\nexport const TenantContext = createContext<{tenantsList: Tenant[], activeTenant: Tenant, refresh: () => void} | null>(null);\n","import { useContext } from \"react\";\nimport { TenantContext } from \"./tenantContext\";\nimport { Tenant } from \"../types\";\n\nexport const useTenant = (): {activeTenant: Tenant, tenantsList: Tenant[], refresh: () => void} | null => {\n return useContext(TenantContext);\n}\n","import React, { useMemo } from 'react';\nimport { useUser } from '../../utilities/auth/useUser';\n// @ts-ignore\nimport { makeStyles } from '@material-ui/core';\nimport { useTenant } from '../../utilities/tenant/useTenant';\nimport { Typography } from '../../UI/dataDisplay/typography/Typography';\nimport { ConfigService } from 'udp-react-stencil-component-library';\n\nexport const APP_RIBBON_SPACE = 25\n\nexport const useBuildEnvironment = (): string | undefined => {\n\tconst user = useUser()\n\n\tconst buildEnvironment = useMemo(() => {\n\n\t\tconst env = ConfigService.config.UNITY_ENVIRONMENT\n\n\t\tif(!['development', 'staging', 'production', 'build'].includes((env as string)?.toLowerCase()) || (env === 'production' && !user?.can?.CAN_VIEW_PROD_APP_RIBBON)) return undefined\n\n\t\treturn env?.toLowerCase();\n\n\n\t}, [user])\n\n\treturn buildEnvironment;\n};\n\nconst useStyles = makeStyles({\n root: {\n width: '100vw',\n height: APP_RIBBON_SPACE,\n backgroundColor: ({environment}: {environment: string | undefined}) => `var(--env-ribbon-${environment})`,\n color: '#ffffff', // Default white text\n display: 'flex',\n alignItems: 'center',\n position: 'relative',\n // Use CSS to handle staging text color\n '&.staging': {\n color: '#000000'\n }\n },\n\tcenterText: {\n position: 'absolute',\n left: '50%',\n transform: 'translateX(-50%)',\n fontWeight: 600\n\t},\n\trightText: {\n position: 'absolute',\n right: '10px',\n fontWeight: 500\n\t}\n});\n\nexport const EnvironmentRibbon = () => {\n\tconst tenantInfo = useTenant()\n\tconst buildEnvironment = useBuildEnvironment()\n\n const classes = useStyles({environment: buildEnvironment});\n if(!buildEnvironment) return null;\n\n return (\n <div\n className={`${classes.root} ${buildEnvironment === 'staging' ? 'staging' : ''}`}\n id='udp-environment-banner'\n >\n <Typography className={classes.centerText}>\n {buildEnvironment?.charAt(0).toUpperCase()+buildEnvironment?.slice(1) || ''}\n </Typography>\n\t\t\t<Typography className={classes.rightText}>\n {tenantInfo?.activeTenant?.tenantName}\n </Typography>\n </div>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EnvironmentRibbon-DaDmKAPO.js","names":["useStyles","UserContext: React.Context<User | null>","UserDispatchContext: React.Context<Dispatch | null>","useStyles","props","useStyles","useStyles","useSetInitialShellVisibility: () => void","useStyles","colors","colors","useStyles","Typography","MuiTypography","useStyles","LayoutUnit: React.FC<any>","useStyles","enableAxiosInterceptors","useStyles","Typography"],"sources":["../src/UI/inputs/buttons/FluentButton.jsx","../src/utilities/axiosInterceptors.js","../src/utilities/auth/internal.ts","../src/utilities/auth/useUser.ts","../src/utilities/input/StringUtilities.js","../src/utilities/FluentIcon.jsx","../src/UI/inputs/buttons/FluentIconButton.jsx","../src/enums/unitySystemEnums.ts","../src/utilities/UnityIcon.jsx","../src/utilities/UnityFluentIcon.jsx","../src/stores/shellStore.ts","../src/UI/inputs/buttons/PrimaryActionButton.jsx","../src/utilities/style/colors.js","../src/utilities/style/colorConverter.js","../src/UI/dataDisplay/typography/Typography.jsx","../src/layout/LayoutUnit.tsx","../src/UI/dataDisplay/typography/StandardTitle.jsx","../src/utilities/useAxiosGet.js","../src/UI/widgets/utils/useId.js","../src/UI/dataDisplay/StatusChip.jsx","../src/udp/utilities/methodUtils.js","../src/utilities/tenant/tenantContext.ts","../src/utilities/tenant/useTenant.ts","../src/shell/ui/EnvironmentRibbon.tsx"],"sourcesContent":["import React from 'react';\nimport { makeStyles } from '@material-ui/core';\nimport { Button, CircularProgress } from '@material-ui/core';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n borderRadius: 2,\n height: (props) => (props.height ? props.height : 32),\n padding: '0 16px',\n minWidth: (props) => (props.minWidth ? props.minWidth : 80),\n border: (props) => `1px solid ${props.color}`\n },\n label: {\n textTransform: 'capitalize',\n fontSize: '0.875rem',\n fontWeight: 600\n }\n}));\n\nexport const FluentButton = (props) => {\n const classes = useStyles(props);\n const { children, id, udprecordid, minWidth, progress, disabled, ...otherProps } =\n props;\n return (\n <Button\n {...otherProps}\n disableElevation\n classes={{\n root: classes.root,\n label: classes.label\n }}\n margin='dense'\n id={id}\n udprecordid={udprecordid}\n minWidth={minWidth}\n disabled={disabled || progress}\n >\n {progress && (\n <CircularProgress\n id={id + '-ButtonProgress'}\n udprecordid={udprecordid + '-ButtonProgress'}\n size={18}\n color='primary'\n />\n )}\n {!progress && children}\n </Button>\n );\n};\n","import Axios from 'axios';\nimport { getAccessToken, getMergedConfig } from './apiHelpers';\nimport { whitelistedPaths } from './auth/whitelistedPaths';\n\nconst axiosInterceptors = () => {\n Axios.interceptors.request.use(\n async (config) => {\n // don't want to change the access token if it's already there, this rule is already applied in getMergedConfig\n // we don't want to call getAccessToken until it is actually need it because it might log the user out\n if (!whitelistedPaths.includes(window.location.pathname)) {\n let accessToken = '';\n if(!config?.headers?.Authorization){\n accessToken = await getAccessToken()\n }\n return getMergedConfig(accessToken, config);\n }\n return config;\n },\n (error) => Promise.reject(error)\n );\n\n Axios.interceptors.response.use(\n (response) => response,\n async (error) => {\n const config = error?.config;\n if (\n error?.response?.status === 401 &&\n !config?._retry &&\n !whitelistedPaths.includes(window.location.pathname)\n ) {\n config.headers.Authorization = `Bearer ${await getAccessToken()}`;\n config._retry = true;\n\n return Axios(config);\n }\n\n return Promise.reject(error);\n }\n );\n};\n\nexport default axiosInterceptors;\n","import { createContext } from 'react';\nimport { User } from './user';\n\nexport type UserAction = { type: 'SET_USER' };\nexport type AccessTokenAction = { type: 'SET_ACCESS_TOKEN' };\nexport type Dispatch = (action: UserAction | AccessTokenAction) => void;\nexport const UserContext: React.Context<User | null> = createContext<User | null>(null);\nexport const UserDispatchContext: React.Context<Dispatch | null> = createContext<Dispatch | null>(null);\n","import { useContext } from 'react';\nimport { UserContext } from './internal';\nimport { User } from './user';\n\n/**\n * Get the current User object (or null if not logged in)\n *\n * Does not redirect to login\n * @see {@link useAuthedUser}\n */\nexport function useUser(): User | null {\n return useContext(UserContext);\n}\n","export const removeWhiteSpace = (str) => {\n if (!str) {\n return '';\n }\n return str.replace(/\\s/g, '');\n};\n\nexport const camelToPascalCaseWithSpace = (str) => {\n const capitalizedStr = str.charAt(0).toUpperCase() + str.slice(1);\n return capitalizedStr.replace(/([a-z0-9])([A-Z])/g, '$1 $2');\n};\n\nexport const trimStringAfter = (str, character) => {\n const lastIndex = str.lastIndexOf(character);\n return str.substring(0, lastIndex === -1 ? str.length : lastIndex);\n};\n\nexport const toLowerFirstChar = (field) => {\n return field?.charAt(0)?.toLowerCase() + field?.slice(1);\n};\n\nexport const toUpperFirstChar = (field) => {\n return field?.charAt(0)?.toUpperCase() + field?.slice(1);\n};\n\nexport const toTitleCase = (str) => {\n const result = str\n .replace(/([A-Z][a-z]+)/g, ' $1')\n .replace(/([A-Z]+)\\b/g, ' $1')\n .replace(/_/g, ' ')\n .trim();\n return result.charAt(0).toUpperCase() + result.slice(1);\n};\n\nexport const pluralize = (str) => {\n const last = str.charAt(str.length - 1);\n if (last === 's') {\n return str;\n } else {\n return `${str}s`;\n }\n};\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core';\nimport clsx from 'clsx';\n\nconst useStyles = makeStyles(\n (props) => ({\n root: {\n display: 'inline-block',\n '& > svg': {\n display: 'inherit'\n }\n },\n default: {\n fontSize: 18,\n width: 18,\n height: 18\n },\n large: {\n fontSize: 24,\n width: 24,\n height: 24\n },\n medium: {\n fontSize: 16,\n width: 16,\n height: 16\n },\n small: {\n fontSize: 14,\n width: 14,\n height: 14\n },\n xs: {\n fontSize: 12,\n width: 12,\n height: 12\n },\n color: {\n color: (props) => props.color\n },\n customSize: {\n fontSize: (props) => props.size,\n width: (props) => props.size,\n height: (props) => props.size\n }\n }),\n { name: 'FluentIcon' }\n);\n\n/**\n * Wrapper for @fluentui/react-icons to provide it with required size\n */\nexport const FluentIcon = (props) => {\n const classes = useStyles(props);\n const {\n component: IconComponent,\n size = 'default',\n className,\n color,\n customSize = false,\n ...otherProps\n } = props;\n\n return (\n <IconComponent\n {...otherProps}\n className={clsx(\n classes.root,\n className,\n (customSize && typeof size === 'number' && classes['customSize']) ||\n classes[size],\n color && classes['color']\n )}\n />\n );\n};\n","import React from 'react'\nimport { makeStyles, IconButton } from '@material-ui/core'\nimport { FluentIcon } from '../../../utilities/FluentIcon'\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n borderRadius: (props) => (props.rounded ? 50 : 2),\n width: (props) => (props.rounded ? theme.spacing(4) : theme.spacing(1)),\n height: (props) => (props.rounded ? theme.spacing(4) : theme.spacing(1)),\n border: (props) => props.rounded && `1px solid ${theme.palette.divider}`,\n background: (props) => props.rounded && theme.palette.common.white\n }\n}))\n\nexport const FluentIconButton = (props) => {\n const classes = useStyles(props)\n const { icon, size = 'medium', id, udprecordid, ...otherProps } = props\n return (\n <IconButton\n {...otherProps}\n classes={{\n root: classes.root\n }}\n udprecordid={udprecordid}\n >\n <FluentIcon component={icon} size={size} id={id} />\n </IconButton>\n )\n}\n","export enum GridEnums {\n Ideas = 'f3c1bf72-15fd-4dcd-904c-b67850525cff',\n Tickets = '787a2afc-26df-440a-9040-9a3e5c5333d5',\n Users = '4ea9fe5d-0af3-4102-af95-4d4a5ca886e1',\n Tenants = 'b543fc1d-6f45-469e-87ae-2b18b8200955',\n Roles = '9af2eebb-7687-4b3c-91fa-607efb0a5fea',\n Inquiry = 'ac0b9a3a-d113-4590-93db-dea62bcb89a2',\n Groups = 'c599b6ff-fee3-4ade-bf78-16700fddb5b9'\n}\n\nexport enum GridStateTypeEnums {\n Column = 1,\n Pivot_Mode = 2,\n Column_Sort = 3,\n Column_Filter = 4,\n Column_Group = 5\n}\n\nexport enum MenuTypeEnums {\n Left_Menu = 1,\n Application_Menu = 2,\n Builders_Menu = 3,\n Favorites_Menu = 4\n}\n\nexport enum VerticalEnums {\n Engage = 1,\n Manage = 2,\n Build = 3,\n Play = 4\n}\n\nexport enum MenuItemEnums {\n Container = 'b36cec3c-fe05-47ed-a687-70be22b0e200',\n External_Link = '11758dfd-ac3a-4996-b86c-767947776ff8',\n Data_Browser = 'afc3833e-e288-4cf6-8155-a069ec4ddc5a',\n Report = '22763e92-2477-43c3-92db-124a84e5ff7f',\n Page = 'd506aeef-ba1b-49a8-9032-beba450b11bc',\n Page_Builder = '16df758b-c456-4c8c-8ca3-2ae167b3b078',\n Route = 'ec5f1c26-e7e1-4f19-8e6e-143308995a40',\n Tree_Builder = 'd4379c4f-6496-4caa-bc0d-5f297fea580f',\n Inquiry = 'b45f660f-a172-4444-8dd8-8f51d56e0725',\n Scheduler = '4007feb9-e50c-44f9-8502-a1f337d82bcf',\n Config = 'aeb48be9-09ea-49b3-9f21-486fe3545b2d',\n Action = 'a66e9458-2540-4166-9b26-1e9b44a2b080',\n Inner_Menu = 'c4f7b46c-00b8-428e-b982-1639c03fde20'\n}\n\nexport enum ADUserTypeEnums {\n Guest = 'Guest',\n Member = 'Member'\n}\n\nexport enum ProductEnums {\n Unity = 1\n}\n\nexport enum RoleTypeEnums {\n System = 1,\n Tenant = 2\n}\n\nexport enum LookupTypeEnums {\n No_Lookup = 'NO_LOOKUP',\n Api = 'API',\n Csv = 'CSV',\n Domain = 'DOMAIN',\n Lookup = 'LOOKUP'\n}\n\nexport enum SearchValueType {\n String = 'String',\n Int = 'Int',\n Long = 'Long',\n Double = 'Double',\n Boolean = 'Boolean',\n DateTime = 'DateTime'\n}\n\nexport enum SearchGroupingType {\n Distinct = 'DISTINCT',\n Aggregate = 'AGGREGATE'\n}\n\nexport enum SearchSortDirection {\n Asc = 'ASC',\n Desc = 'DESC'\n}\n\nexport enum RoleNameEnums {\n System_Administrator = 'System Administrator',\n Company_Administrator = 'Company Administrator',\n Developer = 'Developer'\n}\n\nexport enum ProductNameEnums {\n Asset_Management = 'Asset Management',\n Asset_Routing = 'Asset Routing',\n AVI = 'AVI',\n Cashiering = 'Cashiering',\n Citizen_Portal = 'Citizen Portal',\n Compliance = 'Compliance',\n Consumer_Engagement = 'Consumer Engagement',\n Consumer_Information = 'Consumer Information',\n Contact_Center = 'Contact Center',\n Course_Management = 'Course Management',\n Crew_Routing = 'Crew Routing',\n Dispatch = 'Dispatch',\n Dispatch_Admin = 'Dispatch Admin',\n Employee_Network = 'Employee Network',\n Energy_Management = 'Energy Management',\n Equipment_Inspection = 'Equipment Inspection',\n Facility_Management = 'Facility Management',\n Field_Mobility = 'Field Mobility',\n Fixed_Assets = 'Fixed Assets',\n Fleet_Management = 'Fleet Management',\n Health_And_Safety = 'Health & Safety',\n Instructor_Application = 'Instructor Application',\n MDM = 'MDM',\n Member_Management = 'Member Management',\n Page_Builder = 'Page Builder',\n Project_Management = 'Project Management',\n Rentals = 'Rentals',\n Unity = 'Unity',\n Work_Orders = 'Work Orders'\n}\n\nexport enum LogicalSearchOperatorEnums {\n And = 1,\n Or = 2\n}\n\nexport enum NodeActionTriggerEnums {\n On_Node_Drop = 1\n}\n\nexport enum NodeActionEnums {\n Load_Inquiry_Page = 1,\n Execute_Api = 2,\n Start_Workflow = 3,\n Create = 4,\n Update = 5,\n Delete = 6,\n Retrieve = 7,\n Open_Inquiry = 8,\n Open_Maintenance_Engine = 9,\n Redirect = 10,\n Open_External_Link = 11,\n Hide = 12,\n Disable = 13,\n Open_Page_Split_Screen = 14,\n Open_Shell_Split_Screen = 15,\n Open_Notes = 16,\n Open_Reminders = 17,\n Execute_Function = 18\n}\n\nexport enum TreeViewModeEnums {\n Classic = 1,\n Compact = 2\n}\n\nexport enum PanelPositionEnums {\n Site_Header = 1,\n Site_Header_Summary = 2,\n Speed_Dial = 3,\n Inquiry_Header = 4,\n Inquiry_Header_Summary = 5\n}\n\nexport enum CardinalityTypeEnums {\n One_To_One = 0,\n One_To_Many = 1,\n Many_To_Many = 2,\n Many_To_One = 3\n}\n\nexport enum SplitScreenTypeEnums {\n Entity = 1,\n Notes = 2,\n Page = 3,\n Reminders = 4\n}\n\nexport enum UdpEnums {\n Udp_Note_Type = 'UdpNoteType',\n Udp_Note_Template = 'UdpNoteTemplate',\n Udp_Note = 'UdpNote',\n Udp_Note_Filed_For = 'UdpNoteFiledFor',\n Udp_Shortcut_Content = 'UdpShortcutContent',\n Udp_Lookup = 'UdpLookup',\n Udp_Reminder_Type = 'UdpReminderType',\n Udp_Reminder_Template = 'UdpReminderTemplate',\n Udp_Reminder = 'UdpReminder',\n Udp_Reminder_Filed_For = 'UdpReminderFiledFor'\n}\n\nexport enum NodeGroupTypeEnums {\n Static = 'static',\n Dynamic = 'dynamic'\n}\n\nexport enum NodeGroupOutlierEnums {\n Hide = 'hide',\n Group = 'group',\n Individual = 'individual'\n}\n\nexport enum LookupTypeIdEnums {\n Api = 1,\n Csv = 2,\n Domain = 3,\n Lookup = 4\n}\n\nexport enum VisibilityTypeEnums {\n Private = 1,\n Public = 2\n}\n\nexport enum SeverityTypeEnums {\n Success = 'success',\n Error = 'error',\n Warning = 'warning',\n Info = 'info',\n Default = 'default'\n}\n\nexport enum UdpKeywordEnums {\n Udp_Tenant_Id = 'UDP_TENANT_ID',\n Udp_Product_Id = 'UDP_PRODUCT_ID',\n Udp_Language_Id = 'UDP_LANGUAGE_ID'\n}\n\nexport const enum JobStatusIdMapping {\n PENDING = 1,\n IN_PROGRESS = 2,\n COMPLETED = 3,\n FAILED = 4\n}\n\nexport const enum JobTypeIdMapping {\n IMPORT = 1,\n EXPORT = 2\n}\n\nexport enum UdpReminderFiledForType {\n User = 1,\n System = 2\n}\n\nexport enum DeviceTypeEnums {\n Desktop = 1,\n Tablet = 2,\n Mobile = 3\n}\n\nexport enum ContainerTypeEnums {\n Sidesheet = 1,\n SplitScreen = 2,\n Page = 3\n}\n\nexport enum TenantTypeEnums {\n Tenant = 1,\n Product = 2\n}\n\nexport enum EntityAttributeEnums {\n Is_Product_ShortcutContent = 'IsProductShortcutContent',\n Is_Product_Lookup = 'IsProductLookup',\n User_Defined = 'UserDefined',\n Domain_Name = 'DomainName'\n}\n\nexport enum RoleIdEnums {\n Unity_System_Administrator = '302dacf5-bf16-412d-bf66-519d4c3491c3'\n}\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core';\nimport clsx from 'clsx';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n fill: (props) => props.color || 'black'\n },\n showcase: {\n fontSize: 38,\n width: 38,\n height: 38\n },\n large: {\n fontSize: 20,\n width: 20,\n height: 20\n },\n default: {\n fontSize: 18,\n width: 18,\n height: 18\n },\n medium: {\n fontSize: 16,\n width: 16,\n height: 16\n },\n small: {\n fontSize: 14,\n width: 14,\n height: 14\n },\n xs: {\n fontSize: 12,\n width: 12,\n height: 12\n }\n}));\n\nexport const UnityIcon = (props) => {\n const { component, size = 'default', className, ...otherProps } = props;\n const classes = useStyles(props);\n\n return (\n <div\n {...otherProps}\n className={clsx(classes.root, className, classes[size])}\n >\n {component}\n </div>\n );\n};\n","import React from 'react';\nimport { UnityIcon } from './UnityIcon';\nimport { FluentIcon } from './FluentIcon';\n\nexport const UnityFluentIcon = (props) => {\n const { type, icon, color, ...other } = props;\n\n if (!icon) {\n return null;\n }\n\n return type === 'unity' ? (\n <UnityIcon component={icon} color={color} {...other} />\n ) : (\n <FluentIcon component={icon} style={{ color: color || '' }} {...other} />\n );\n};\n","import { useEffect } from 'react';\nimport { create } from 'zustand';\nimport { devtools } from 'zustand/middleware';\nimport { ContainerTypeEnums } from '../enums/unitySystemEnums';\n\ninterface ShellState {\n subHeaderActionHasChildren: boolean | null | undefined;\n setSubHeaderActionHasChildren: (subHeaderActionHasChildren: boolean) => void;\n navigationExpanded: boolean | null | undefined;\n setNavigationExpanded: (navigationExpanded: boolean) => void;\n setIsValidWidget: (isValidWidget: (a: string) => boolean) => void;\n isValidWidget: (a: string) => boolean;\n setGetWidget: (getWidget: (a: string) => any) => void;\n getWidget: (a: string) => any;\n shellHidden: boolean | null | undefined;\n setShellHidden: (shellHidden: boolean) => void;\n currentContainerId: string | null | undefined;\n setCurrentContainerId: (containerId: string) => void;\n}\n\nexport const useShellStore = create<ShellState>()(\n devtools((set) => ({\n subHeaderActionHasChildren: false,\n setSubHeaderActionHasChildren: (subHeaderActionHasChildren) =>\n set((state) => ({\n subHeaderActionHasChildren: subHeaderActionHasChildren\n })),\n navigationExpanded: true,\n setNavigationExpanded: (navigationExpanded) =>\n set((state) => ({\n navigationExpanded: navigationExpanded\n })),\n isValidWidget: (a) => false,\n setIsValidWidget: (isValidWidget) =>\n set((state) => ({\n isValidWidget: isValidWidget\n })),\n getWidget: (a) => null,\n setGetWidget: (getWidget) =>\n set((state) => ({\n getWidget: getWidget\n })),\n shellHidden: false,\n setShellHidden: (shellHidden) =>\n set((state) => ({\n shellHidden: shellHidden\n })),\n currentContainerId: null,\n setCurrentContainerId: (currentContainerId) =>\n set((state) => ({ currentContainerId: currentContainerId }))\n }))\n);\n\nexport const useSetInitialShellVisibility: () => void = () => {\n const searchParams = new URLSearchParams(window.location.search);\n const withoutShell =\n searchParams.has('withoutShell') === true\n ? searchParams.get('withoutShell') === 'true'\n ? true\n : false\n : false;\n\n const setShellHidden = useShellStore((state) => state.setShellHidden);\n\n useEffect(() => {\n if (withoutShell) {\n setShellHidden(true);\n }\n }, [setShellHidden, withoutShell]);\n};\n","import React from 'react'\nimport { makeStyles, Button } from '@material-ui/core'\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n borderRadius: 0,\n padding: 'calc(.875rem - 3px) 23px calc(.875rem - 3px) 15px'\n },\n label: {\n textTransform: 'none'\n },\n endIcon: {\n display: 'flex',\n justifyContent: 'flex-end',\n marginLeft: theme.spacing(2)\n }\n}))\n\nexport const PrimaryActionButton = ({ children, icon, ...otherProps }) => {\n const classes = useStyles()\n\n return (\n <div>\n <Button\n {...otherProps}\n disableElevation\n classes={{\n root: classes.root,\n label: classes.label,\n endIcon: classes.endIcon\n }}\n variant='contained'\n color='secondary'\n endIcon={icon}\n >\n {children}\n </Button>\n </div>\n )\n}\nexport default PrimaryActionButton\n","export const colors = {\n systemIcon: {\n trigger: {\n main: '#FFCD27',\n hint: '#FDFAF0',\n hover: { outline: '#AF9027', background: '#FFFDEF' }\n },\n action: {\n main: '#1542FF',\n hint: '#F3F5FE',\n hover: { outline: '#40529D', background: '#ECEFFA' }\n },\n condition: {\n main: '#AE14FF',\n hint: '#F9EEFF',\n hover: { outline: '#844EA0', background: '#FAF2FE' }\n },\n sequence: {\n main: '#FD7F12',\n hint: '#FFF6EE',\n hover: { outline: '#A86123', background: '#FDF4EC' }\n }\n },\n unity: {\n success: {\n hint: '#F3FAF3'\n },\n warning: {\n hint: '#FFF6EA'\n },\n info: {\n hint: '#F3F9FE'\n },\n error: {\n hint: '#FDF7F6'\n }\n },\n categoryColors: {\n one: {\n hint: '#F8BBD0',\n main: '#F3FAF3'\n },\n two: {\n hint: '#FFF6EA',\n main: '#FFF6EA'\n },\n three: {\n hint: '#FFF6EA',\n main: '#FFF6EA'\n },\n four: {\n hint: '#F8BBD0',\n main: '#f3e0eb'\n },\n five: {\n hint: '#F8BBD0',\n main: 'rgb(194 223 218)'\n },\n six: {\n hint: '#F8BBD0',\n main: 'rgb(222 217 235)'\n }\n }\n};\n","import { colors } from './colors';\n\nexport const getEllipseColor = (theme, color, variant = 'main') => {\n if (!theme) {\n return '';\n }\n let ellipseColor = theme.palette.primary[variant];\n switch (color) {\n case 'action':\n ellipseColor = theme.palette.action?.[variant];\n break;\n case 'sequence':\n ellipseColor = theme.palette.sequence?.[variant];\n break;\n case 'trigger':\n ellipseColor = theme.palette.trigger?.[variant];\n break;\n case 'condition':\n ellipseColor = theme.palette.condition?.[variant];\n break;\n case 'primary':\n ellipseColor = theme.palette.primary[variant];\n break;\n case 'secondary':\n ellipseColor = theme.palette.secondary[variant];\n break;\n case 'info':\n ellipseColor = theme.palette.info[variant];\n break;\n case 'warning':\n ellipseColor = theme.palette.warning[variant];\n break;\n case 'error':\n ellipseColor = theme.palette.error[variant];\n break;\n case 'success':\n ellipseColor = theme.palette.success[variant];\n break;\n default:\n ellipseColor = theme.palette.secondary[variant];\n break;\n }\n return ellipseColor;\n};\n\nexport const getCustomHintColor = (color) => {\n // if (!theme) {\n // return '';\n // }\n let customHintColor = colors.unity.info.hint;\n switch (color) {\n // case 'primary':\n // customHintColor = theme.palette.primary.hint;\n // break;\n // case 'secondary':\n // customHintColor = theme.palette.secondary.hint;\n // break;\n case 'info':\n customHintColor = colors.unity.info.hint;\n break;\n case 'warning':\n customHintColor = colors.unity.warning.hint;\n break;\n case 'error':\n customHintColor = colors.unity.error.hint;\n break;\n case 'success':\n customHintColor = colors.unity.success.hint;\n break;\n default:\n customHintColor = colors.unity.info.hint;\n }\n\n return customHintColor;\n};\n\nexport const getCategoryColor = (color) => {\n // if (!theme) {\n // return '';\n // }\n let highlightColor = colors.unity.info.hint;\n switch (color) {\n case 'info':\n highlightColor = colors.unity.info.hint;\n break;\n case 'warning':\n highlightColor = colors.unity.warning.hint;\n break;\n case 'error':\n highlightColor = colors.unity.error.hint;\n break;\n case 'four':\n highlightColor = colors.categoryColors.four.main;\n break;\n case 'five':\n highlightColor = colors.categoryColors.five.main;\n break;\n case 'six':\n highlightColor = colors.categoryColors.six.main;\n break;\n default:\n highlightColor = colors.unity.info.hint;\n }\n\n return highlightColor;\n};\n","import React from 'react';\nimport { Typography as MuiTypography, makeStyles } from '@material-ui/core';\nimport clsx from 'clsx';\nimport { getEllipseColor } from '../../../utilities/style/colorConverter';\n\nconst useStyles = makeStyles((theme) => ({\n typography: {\n color: (props) => props?.color && getEllipseColor(theme, props?.color)\n }\n}));\nexport const Typography = (props) => {\n const {\n variant,\n align,\n children,\n className,\n noWrap = false,\n paragraph = false,\n color\n } = props;\n const classes = useStyles(props);\n\n return (\n <MuiTypography\n variant={variant}\n align={align}\n className={clsx({[classes.typography]: color}, className)}\n noWrap={noWrap}\n paragraph={paragraph}\n >\n {children}\n </MuiTypography>\n );\n};\n","import React from 'react'\nimport { makeStyles, Badge } from '@material-ui/core'\nimport clsx from 'clsx'\n\ntype LayoutUnitProps = {\n unit: 'nudge' | 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl',\n highlight: any\n}\n\nconst useStyles = makeStyles((theme) => ({\n highlight: {\n background: 'pink',\n opacity: (props:LayoutUnitProps) => (props.highlight ? 0.2 : 0)\n },\n nudge: {\n height: theme.spacing(1)\n },\n xxs: {\n height: theme.spacing(2)\n },\n xs: {\n height: theme.spacing(3)\n },\n sm: {\n height: theme.spacing(4)\n },\n md: {\n height: theme.spacing(5)\n },\n lg: {\n height: theme.spacing(8)\n },\n xl: {\n height: theme.spacing(12)\n },\n xxl: {\n height: theme.spacing(20)\n }\n}))\n\n\n\n\nexport const LayoutUnit: React.FC<any> = (props: LayoutUnitProps) => {\n const classes = useStyles(props)\n\n let spaceUnit\n const { unit, highlight } = props\n\n switch (unit) {\n case 'nudge':\n spaceUnit = (\n <div className={clsx(classes.nudge, classes.highlight)}>\n {highlight && <Badge color='secondary' badgeContent='Nudge' />}\n </div>\n )\n break\n case 'xxs':\n spaceUnit = (\n <div className={clsx(classes.xxs, classes.highlight)}>\n {highlight && <Badge color='secondary' badgeContent='XXS' />}\n </div>\n )\n break\n case 'xs':\n spaceUnit = (\n <div className={clsx(classes.xs, classes.highlight)}>\n {highlight && <Badge color='secondary' badgeContent='XS' />}\n </div>\n )\n break\n case 'sm':\n spaceUnit = (\n <div className={clsx(classes.sm, classes.highlight)}>\n {highlight && <Badge color='secondary' badgeContent='SM' />}\n </div>\n )\n break\n case 'md':\n spaceUnit = (\n <div className={clsx(classes.md, classes.highlight)}>\n {highlight && <Badge color='secondary' badgeContent='MD' />}\n </div>\n )\n break\n case 'lg':\n spaceUnit = (\n <div className={clsx(classes.lg, classes.highlight)}>\n {highlight && <Badge color='secondary' badgeContent='LG' />}\n </div>\n )\n break\n case 'xl':\n spaceUnit = (\n <div className={clsx(classes.xl, classes.highlight)}>\n {highlight && <Badge color='secondary' badgeContent='XL' />}\n </div>\n )\n break\n case 'xxl':\n spaceUnit = (\n <div className={clsx(classes.xxl, classes.highlight)}>\n {highlight && <Badge color='secondary' badgeContent='XXL' />}\n </div>\n )\n break\n default:\n }\n\n return spaceUnit\n}\n","import React from 'react'\nimport { makeStyles, Typography } from '@material-ui/core'\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n marginTop: props => props?.removeMarginTop ? 0 : theme.spacing(1),\n whiteSpace: 'nowrap',\n // overflow: 'hidden',\n textOverflow: 'ellipsis'\n }\n}))\n\nexport const StandardTitle = (props) => {\n const classes = useStyles(props)\n const { children, ...other } = props\n\n return (\n <Typography component='h2' variant='h6' className={classes.root} {...other}>\n {children}\n </Typography>\n )\n}\n","import { useEffect, useMemo } from 'react';\nimport useAxios from 'axios-hooks';\nimport { handleResponseErrors, getMergedConfig } from './apiHelpers';\nimport enableAxiosInterceptors from './axiosInterceptors';\nimport { useUser } from './auth/useUser';\nimport { getStoredTenant } from './storage/UnitySessionStorage';\n\nenableAxiosInterceptors();\n/**\n * A custom hook for making GET requests with query parameters.\n * @template T - The expected type of the response data.\n * @param {string} url - The URL for the request.\n * @param {object} [params] - Optional object for query parameters.\n * @param {import('axios').AxiosRequestConfig} [config] - Optional Axios request config.\n * @param {boolean} [isManual] - If true, the request is not made automatically.\n * @returns {import('axios-hooks').AxiosHooksResult<T>}\n */\nexport const useAxiosGetQuery = (url, params, config, isManual) => {\n const user = useUser();\n\n if (!user?.accessToken) {\n isManual = true;\n }\n const headers = useMemo(() => {\n const currentHeaders = config.headers ?? {}\n currentHeaders.currentTenantId ||= user?.currentTenantId ?? ''\n return currentHeaders\n }, [user, config])\n config.headers = headers\n\n const [{ data, loading, error }, refetch] = useAxios(\n { url, params, ...config },\n { manual: isManual }\n );\n useEffect(() => {\n handleResponseErrors(error);\n }, [error]);\n\n return [{ data, loading, error }, refetch];\n};\n/**\n * A custom hook for making GET requests with Axios.\n * @template T - The expected type of the response data.\n * @param {string} baseURL - The base URL for the request.\n * @param {string} url - The URL path for the request.\n * @param {import('axios').AxiosRequestConfig} [config={}] - Optional Axios request config.\n * @param {boolean} [isManual] - If true, the request is not made automatically.\n * @param {boolean} [useCache=true] - If true, caching is enabled.\n * @returns {import('axios-hooks').AxiosHooksResult<T>}\n */\nexport const useAxiosGet = (\n baseURL,\n url,\n config = {},\n isManual,\n useCache = true\n) => {\n const user = useUser();\n\n const headers = useMemo(() => {\n const currentHeaders = config.headers ?? {}\n currentHeaders.currentTenantId ||= user?.currentTenantId ?? ''\n return currentHeaders\n }, [user, config])\n config.headers = headers\n\n const fullURL = { url: `${baseURL}/${url}` };\n const [{ data, loading, error }, refetch] = useAxios(\n { ...fullURL, ...config },\n { manual: isManual, useCache: useCache }\n );\n\n useEffect(() => {\n handleResponseErrors(error);\n }, [error]);\n\n return [{ data, loading, error }, refetch];\n};\n","import warning from 'warning';\nimport useConstant from 'use-constant';\n\nlet idCounter = 0;\nfunction nextId() {\n idCounter += 1;\n warning(\n idCounter < 1e10,\n 'Id: you might have a memory leak.' +\n 'The idCounter is not supposed to grow that much.'\n );\n\n return idCounter;\n}\n\n/**\n * A simple hook that returns a unique page ID\n */\nexport default function useId(name, idFromProps) {\n const id = useConstant(nextId);\n\n if (idFromProps) {\n return idFromProps;\n }\n\n if (process.env.NODE_ENV === 'production') {\n return `uid${id}`;\n }\n\n return `${name || 'unnamed'}-${id}`;\n}\n","import React from 'react';\nimport { Chip, makeStyles } from '@material-ui/core';\nimport clsx from 'clsx';\n\nconst useStyles = makeStyles((theme) => ({\n smallChip: {\n height: theme.spacing(2.5),\n fontSize: '0.7rem',\n '& .MuiChip-label': {\n paddingLeft: theme.spacing(0.75),\n paddingRight: theme.spacing(0.75)\n }\n },\n actionable: {\n cursor: 'pointer'\n },\n success: {\n backgroundColor: theme.palette.success.main,\n color: '#FFF',\n '&.MuiChip-outlined': {\n color: theme.palette.success.main,\n borderColor: theme.palette.success.main,\n backgroundColor: 'transparent'\n }\n },\n warning: {\n backgroundColor: theme.palette.warning.main,\n color: '#FFF',\n '&.MuiChip-outlined': {\n color: theme.palette.warning.main,\n borderColor: theme.palette.warning.main,\n backgroundColor: 'transparent'\n }\n },\n error: {\n backgroundColor: theme.palette.error.main,\n color: '#FFF',\n '&.MuiChip-outlined': {\n color: theme.palette.error.main,\n borderColor: theme.palette.error.main,\n backgroundColor: 'transparent'\n }\n },\n info: {\n backgroundColor: theme.palette.info.main,\n color: theme.palette.getContrastText(theme.palette.info.main),\n '&.MuiChip-outlined': {\n color: theme.palette.info.main,\n borderColor: theme.palette.info.main,\n backgroundColor: 'transparent'\n }\n }\n}));\n\nexport const StatusChip = ({\n status,\n label,\n useSmallChip = false,\n isActionable = false,\n icon,\n variant = 'default',\n onClick,\n}) => {\n const classes = useStyles();\n\n const chipClass = clsx({\n [classes.smallChip]: useSmallChip,\n [classes.actionable]: isActionable,\n [classes.success]: status === 'success',\n [classes.warning]: status === 'warning',\n [classes.error]: status === 'error',\n [classes.info]: status === 'info'\n });\n\n return (\n <Chip\n className={chipClass}\n label={label}\n size='small'\n icon={icon || null}\n variant={variant}\n onClick={isActionable ? onClick : null}\n />\n );\n};\n","import { ConfigService, apiMutate} from 'udp-react-stencil-component-library';\n\nexport const getBaseMethod = (type, baseType, catalogPromotedEntities) => {\n if (!catalogPromotedEntities) {\n return null;\n }\n const entityMethod = catalogPromotedEntities.find((promotedEntity) => {\n const entityNameParts = promotedEntity.entityName.split('.');\n if (entityNameParts.length) {\n return entityNameParts[entityNameParts.length - 1] === type;\n }\n return false;\n });\n return entityMethod ? entityMethod[baseType] : null;\n};\n\nexport const executeQueryAdHoc = async (\n data,\n apiMethodId,\n urlQueryParams = ''\n) =>\n apiMutate(\n ConfigService.integrationV1ApiUrl,\n `apimethod/executeQueryAdHoc/${apiMethodId}${urlQueryParams}`,\n {\n method: 'post'\n },\n data\n );\n\nexport const executeQueryWithParameters = async (\n data,\n apiMethodId,\n urlQueryParams = ''\n) =>\n apiMutate(\n ConfigService.integrationV1ApiUrl,\n `apimethod/executeQueryWithParameters/${apiMethodId}${urlQueryParams}`,\n {\n method: 'post'\n },\n data\n );\n\nexport const executeQueryInstance = async (\n data,\n apiMethodInstanceId,\n urlQueryParams = ''\n) =>\n apiMutate(\n ConfigService.integrationV1ApiUrl,\n `apimethod/executeQueryInstance/${apiMethodInstanceId}${urlQueryParams}`,\n {\n method: 'post'\n },\n data\n );\n\nexport const executeQueryInstanceWithApiMethodInstance = async (\n data,\n urlQueryParams = ''\n) =>\n apiMutate(\n ConfigService.integrationV1ApiUrl,\n `apimethod/executeQueryInstance${urlQueryParams}`,\n {\n method: 'post'\n },\n data\n );\n","import { Tenant } from '../types'\nimport { createContext } from 'react';\n\n\nexport const TenantContext = createContext<{tenantsList: Tenant[], activeTenant: Tenant, refresh: () => void} | null>(null);\n","import { useContext } from \"react\";\nimport { TenantContext } from \"./tenantContext\";\nimport { Tenant } from \"../types\";\n\nexport const useTenant = (): {activeTenant: Tenant, tenantsList: Tenant[], refresh: () => void} | null => {\n return useContext(TenantContext);\n}\n","import React, { useMemo } from 'react';\nimport { useUser } from '../../utilities/auth/useUser';\n// @ts-ignore\nimport { makeStyles } from '@material-ui/core';\nimport { useTenant } from '../../utilities/tenant/useTenant';\nimport { Typography } from '../../UI/dataDisplay/typography/Typography';\nimport { ConfigService } from 'udp-react-stencil-component-library';\n\nexport const APP_RIBBON_SPACE = 25\n\nexport const useBuildEnvironment = (): string | undefined => {\n\tconst user = useUser()\n\n\tconst buildEnvironment = useMemo(() => {\n\n\t\tconst env = ConfigService.config.UNITY_ENVIRONMENT\n\n\t\tif(!['development', 'staging', 'production', 'build'].includes((env as string)?.toLowerCase()) || (env === 'production' && !user?.can?.CAN_VIEW_PROD_APP_RIBBON)) return undefined\n\n\t\treturn env?.toLowerCase();\n\n\n\t}, [user])\n\n\treturn buildEnvironment;\n};\n\nconst useStyles = makeStyles({\n root: {\n width: '100vw',\n height: APP_RIBBON_SPACE,\n backgroundColor: ({environment}: {environment: string | undefined}) => `var(--env-ribbon-${environment})`,\n color: '#ffffff', // Default white text\n display: 'flex',\n alignItems: 'center',\n position: 'relative',\n // Use CSS to handle staging text color\n '&.staging': {\n color: '#000000'\n }\n },\n\tcenterText: {\n position: 'absolute',\n left: '50%',\n transform: 'translateX(-50%)',\n fontWeight: 600\n\t},\n\trightText: {\n position: 'absolute',\n right: '10px',\n fontWeight: 500\n\t}\n});\n\nexport const EnvironmentRibbon = () => {\n\tconst tenantInfo = useTenant()\n\tconst buildEnvironment = useBuildEnvironment()\n\n const classes = useStyles({environment: buildEnvironment});\n if(!buildEnvironment) return null;\n\n return (\n <div\n className={`${classes.root} ${buildEnvironment === 'staging' ? 'staging' : ''}`}\n id='udp-environment-banner'\n >\n <Typography className={classes.centerText}>\n {buildEnvironment?.charAt(0).toUpperCase()+buildEnvironment?.slice(1) || ''}\n </Typography>\n\t\t\t<Typography className={classes.rightText}>\n {tenantInfo?.activeTenant?.tenantName}\n </Typography>\n </div>\n );\n};\n"],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { APP_RIBBON_SPACE, FluentIcon, NodeActionTriggerEnums, TreeViewModeEnums, UnityFluentIcon, useAxiosGet, useBuildEnvironment, useShellStore, useUser } from "./EnvironmentRibbon-
|
|
2
|
-
import "./apiHelpers-
|
|
3
|
-
import { AggregateChip, NodeLoader, UtilitySideBar, findAllParentIds, getIconFromName, getNodeIdForRightBorder, getUnityIconFromName, searchTree, transformMenuPageTree } from "./UtilitySideBar-
|
|
4
|
-
import "./SearchUtilities-
|
|
5
|
-
import { PageContainer, useSetLocationState } from "./PageContainer-
|
|
6
|
-
import React, { useCallback, useEffect, useState } from "react";
|
|
1
|
+
import { APP_RIBBON_SPACE, FluentIcon, NodeActionTriggerEnums, TreeViewModeEnums, UnityFluentIcon, useAxiosGet, useBuildEnvironment, useShellStore, useUser } from "./EnvironmentRibbon-DaDmKAPO.js";
|
|
2
|
+
import "./apiHelpers-DZots3og.js";
|
|
3
|
+
import { AggregateChip, NodeLoader, UtilitySideBar, findAllParentIds, getIconFromName, getNodeIdForRightBorder, getUnityIconFromName, searchTree, transformMenuPageTree } from "./UtilitySideBar-D4CXGtW2.js";
|
|
4
|
+
import "./SearchUtilities-Bor3HbfB.js";
|
|
5
|
+
import { PageContainer, useSetLocationState } from "./PageContainer-k8KCfGsM.js";
|
|
6
|
+
import React, { useCallback, useEffect, useRef, useState } from "react";
|
|
7
7
|
import { CircularProgress, Tooltip, Typography, darken, lighten, makeStyles, useTheme } from "@material-ui/core";
|
|
8
8
|
import { ConfigService } from "udp-react-stencil-component-library";
|
|
9
|
-
import { useLocation } from "react-router-dom";
|
|
9
|
+
import { Prompt, useHistory, useLocation } from "react-router-dom";
|
|
10
10
|
import clsx from "clsx";
|
|
11
11
|
import { CaretDownSolid8Icon, CaretUpSolid8Icon } from "@fluentui/react-icons";
|
|
12
12
|
import { cloneDeep } from "lodash";
|
|
@@ -196,6 +196,7 @@ const BaseTreeMenu = (props) => {
|
|
|
196
196
|
const [tree, setTree] = useState(menuItems);
|
|
197
197
|
const theme = useTheme();
|
|
198
198
|
const classes = useStyles$1(props);
|
|
199
|
+
const firstRender = useRef(true);
|
|
199
200
|
const handleSelectedNode = useCallback((e, value) => {
|
|
200
201
|
const selectedNode = searchTree(tree, value);
|
|
201
202
|
if (onSelectNode) {
|
|
@@ -309,10 +310,13 @@ const BaseTreeMenu = (props) => {
|
|
|
309
310
|
}, [menuItems]);
|
|
310
311
|
useEffect(() => {
|
|
311
312
|
if (!tree) return;
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
313
|
+
if (firstRender.current) {
|
|
314
|
+
let expanded$1 = [];
|
|
315
|
+
if (tree?.isExpanded) expanded$1.push(tree.id);
|
|
316
|
+
expanded$1 = expanded$1.concat(getExpandedRecursively(tree[childrenKey]));
|
|
317
|
+
setExpanded(expanded$1);
|
|
318
|
+
firstRender.current = false;
|
|
319
|
+
}
|
|
316
320
|
}, [
|
|
317
321
|
getExpandedRecursively,
|
|
318
322
|
tree,
|
|
@@ -397,6 +401,7 @@ const MenuPage = (props) => {
|
|
|
397
401
|
...props,
|
|
398
402
|
appRibbonSpace: buildEnv ? APP_RIBBON_SPACE : 0
|
|
399
403
|
});
|
|
404
|
+
const history = useHistory();
|
|
400
405
|
const location = useLocation();
|
|
401
406
|
const user = useUser();
|
|
402
407
|
const { t } = useTranslation();
|
|
@@ -404,35 +409,96 @@ const MenuPage = (props) => {
|
|
|
404
409
|
const [menuItemsList, setMenuItemsList] = useState([]);
|
|
405
410
|
const [selectedNode, setSelectedNode] = useState(null);
|
|
406
411
|
const [sidebarExpanded, setSidebarExpanded] = useState(true);
|
|
412
|
+
const [hasUnsavedChanges, setHasUnsavedChanges] = useState(false);
|
|
407
413
|
const innerMenuId = location.pathname.replace("/menupage/", "");
|
|
408
|
-
const
|
|
414
|
+
const prevInnerMenuId = useRef(innerMenuId);
|
|
415
|
+
const [{ data: innerMenu, loading: menuLoading }] = useAxiosGet(ConfigService.tenantV1ApiUrl, `menus/${innerMenuId}`, {}, !innerMenuId, false);
|
|
409
416
|
const { setSubHeaderActionHasChildren, setNavigationExpanded } = useShellStore();
|
|
410
|
-
const [{ data: pageData, loading: pageLoading, error: pageError }] = useAxiosGet(ConfigService.tenantV1ApiUrl, `page/${selectedNode?.properties?.page?.id}`, {},
|
|
417
|
+
const [{ data: pageData, loading: pageLoading, error: pageError }] = useAxiosGet(ConfigService.tenantV1ApiUrl, `page/${selectedNode?.properties?.page?.id}`, {}, !selectedNode?.properties?.page?.id, false);
|
|
411
418
|
const handleSelectedNode = useCallback((node, menuIndex) => {
|
|
419
|
+
const searchParams = new URLSearchParams(location.search);
|
|
420
|
+
searchParams.set("page", node.id);
|
|
421
|
+
history.push({
|
|
422
|
+
pathname: location.pathname,
|
|
423
|
+
search: searchParams.toString()
|
|
424
|
+
});
|
|
412
425
|
setSelectedNode(node);
|
|
413
|
-
|
|
426
|
+
setHasUnsavedChanges(false);
|
|
427
|
+
}, [history, location]);
|
|
414
428
|
const handleDropNode = useCallback((sourceNode, targetNode, sourceNodeMenuIndex, targetNodeMenuIndex) => {}, []);
|
|
415
429
|
const handleSidebarExpandClick = useCallback(() => {
|
|
416
430
|
setSidebarExpanded((expanded) => !expanded);
|
|
417
431
|
}, []);
|
|
432
|
+
const findNodeById = useCallback((node, id) => {
|
|
433
|
+
if (!node) return null;
|
|
434
|
+
if (node.id.toString() === id) return node;
|
|
435
|
+
if (node.children) for (const child of node.children) {
|
|
436
|
+
const found = findNodeById(child, id);
|
|
437
|
+
if (found) return found;
|
|
438
|
+
}
|
|
439
|
+
return null;
|
|
440
|
+
}, []);
|
|
441
|
+
useEffect(() => {
|
|
442
|
+
const searchParams = new URLSearchParams(location.search);
|
|
443
|
+
const pageId = searchParams.get("page");
|
|
444
|
+
if (pageId && menuItemsList.length > 0) {
|
|
445
|
+
let node = null;
|
|
446
|
+
for (const tree of menuItemsList) {
|
|
447
|
+
node = findNodeById(tree, pageId);
|
|
448
|
+
if (node) break;
|
|
449
|
+
}
|
|
450
|
+
if (node && node.id !== selectedNode?.id) {
|
|
451
|
+
setSelectedNode(node);
|
|
452
|
+
setHasUnsavedChanges(false);
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
}, [
|
|
456
|
+
location.search,
|
|
457
|
+
menuItemsList,
|
|
458
|
+
findNodeById,
|
|
459
|
+
selectedNode
|
|
460
|
+
]);
|
|
418
461
|
useEffect(() => {
|
|
462
|
+
prevInnerMenuId.current;
|
|
419
463
|
if (innerMenu) {
|
|
420
464
|
const list = [];
|
|
421
|
-
let nodeSelected = false;
|
|
422
465
|
innerMenu.menuItemInstanceStructureViews.forEach((menuInstance) => {
|
|
423
466
|
const updatedMenu = transformMenuPageTree(menuInstance);
|
|
424
|
-
if (updatedMenu)
|
|
425
|
-
list.push(updatedMenu);
|
|
426
|
-
if (!nodeSelected) {
|
|
427
|
-
setSelectedNode(updatedMenu);
|
|
428
|
-
nodeSelected = true;
|
|
429
|
-
setNavigationExpanded(false);
|
|
430
|
-
}
|
|
431
|
-
}
|
|
467
|
+
if (updatedMenu) list.push(updatedMenu);
|
|
432
468
|
});
|
|
433
469
|
setMenuItemsList(list);
|
|
470
|
+
const searchParams = new URLSearchParams(location.search);
|
|
471
|
+
const pageId = searchParams.get("page");
|
|
472
|
+
let nodeToSelect = null;
|
|
473
|
+
if (pageId && list.length > 0) for (const tree of list) {
|
|
474
|
+
nodeToSelect = findNodeById(tree, pageId);
|
|
475
|
+
if (nodeToSelect) break;
|
|
476
|
+
}
|
|
477
|
+
if (nodeToSelect) {
|
|
478
|
+
setSelectedNode(nodeToSelect);
|
|
479
|
+
setHasUnsavedChanges(false);
|
|
480
|
+
setNavigationExpanded(false);
|
|
481
|
+
} else if (list.length > 0) {
|
|
482
|
+
const firstNode = list[0];
|
|
483
|
+
searchParams.set("page", firstNode.id);
|
|
484
|
+
history.replace({
|
|
485
|
+
pathname: location.pathname,
|
|
486
|
+
search: searchParams.toString()
|
|
487
|
+
});
|
|
488
|
+
setSelectedNode(firstNode);
|
|
489
|
+
setHasUnsavedChanges(false);
|
|
490
|
+
setNavigationExpanded(false);
|
|
491
|
+
}
|
|
434
492
|
}
|
|
435
|
-
|
|
493
|
+
prevInnerMenuId.current = innerMenuId;
|
|
494
|
+
}, [
|
|
495
|
+
innerMenu,
|
|
496
|
+
setNavigationExpanded,
|
|
497
|
+
history,
|
|
498
|
+
location,
|
|
499
|
+
innerMenuId,
|
|
500
|
+
findNodeById
|
|
501
|
+
]);
|
|
436
502
|
useEffect(() => {
|
|
437
503
|
setSubHeaderActionHasChildren(false);
|
|
438
504
|
}, [setSubHeaderActionHasChildren]);
|
|
@@ -443,7 +509,10 @@ const MenuPage = (props) => {
|
|
|
443
509
|
t,
|
|
444
510
|
innerMenu
|
|
445
511
|
]);
|
|
446
|
-
return /* @__PURE__ */ React.createElement(DndProvider, { backend: HTML5Backend }, /* @__PURE__ */ React.createElement(
|
|
512
|
+
return /* @__PURE__ */ React.createElement(DndProvider, { backend: HTML5Backend }, /* @__PURE__ */ React.createElement(Prompt, {
|
|
513
|
+
when: hasUnsavedChanges,
|
|
514
|
+
message: "You have unsaved changes. Are you sure you want to leave this page?"
|
|
515
|
+
}), /* @__PURE__ */ React.createElement("div", { className: classes.root }, /* @__PURE__ */ React.createElement("div", { className: classes.sidebar }, /* @__PURE__ */ React.createElement(UtilitySideBar, {
|
|
447
516
|
title: innerMenu?.name,
|
|
448
517
|
isUsingChildren: true,
|
|
449
518
|
resizable: true,
|
|
@@ -478,7 +547,8 @@ const MenuPage = (props) => {
|
|
|
478
547
|
requiredFieldsMap: selectedNode?.properties?.page?.requiredFieldMapping,
|
|
479
548
|
udpTagId: selectedNode?.properties?.page?.udpTagId,
|
|
480
549
|
queryId: selectedNode?.properties?.page?.queryId,
|
|
481
|
-
inquiryTreeId: selectedNode?.properties?.page?.inquiryTreeId
|
|
550
|
+
inquiryTreeId: selectedNode?.properties?.page?.inquiryTreeId,
|
|
551
|
+
setHasUnsavedChanges
|
|
482
552
|
},
|
|
483
553
|
disableMargins: true,
|
|
484
554
|
fromMenu: true
|
|
@@ -487,4 +557,4 @@ const MenuPage = (props) => {
|
|
|
487
557
|
|
|
488
558
|
//#endregion
|
|
489
559
|
export { MenuPage };
|
|
490
|
-
//# sourceMappingURL=MenuPage-
|
|
560
|
+
//# sourceMappingURL=MenuPage-CO6_GWwB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MenuPage-CO6_GWwB.js","names":["useStyles","other","useStyles","tree","expanded"],"sources":["../src/treeMenu/BaseTreeMenuItem.jsx","../src/treeMenu/BaseTreeMenu.jsx","../src/menuPage/MenuPage.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/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';\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 <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/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 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={selectedNodeId}\n >\n {tree && renderTree(tree)}\n </TreeView>\n );\n};\n","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\nexport const 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 [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: innerMenu, loading: menuLoading }] = useAxiosGet(\n ConfigService.tenantV1ApiUrl,\n `menus/${innerMenuId}`,\n {},\n !innerMenuId,\n false\n );\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 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]\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 // No valid page param, select first node and update URL\n const firstNode = list[0];\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 prevInnerMenuId.current = innerMenuId;\n }, [\n innerMenu,\n setNavigationExpanded,\n history,\n location,\n innerMenuId,\n findNodeById\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}\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 {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 </div>\n </div>\n </DndProvider>\n );\n};\n"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { ActionsRenderer, AmbientGridTemplate, FilterOperators, FluentDialog, getSanitizedName, useAgGridApi } from "./AmbientGridTemplate-
|
|
2
|
-
import { FluentButton, FluentIcon, LayoutUnit, LogicalSearchOperatorEnums, SearchGroupingType, SearchSortDirection, StatusChip, executeQueryAdHoc, executeQueryWithParameters, useAxiosGet, useBuildEnvironment, useUser } from "./EnvironmentRibbon-
|
|
3
|
-
import { useHandleAxiosSnackbar } from "./apiHelpers-
|
|
4
|
-
import { getSearchObject } from "./SearchUtilities-
|
|
1
|
+
import { ActionsRenderer, AmbientGridTemplate, FilterOperators, FluentDialog, getSanitizedName, useAgGridApi } from "./AmbientGridTemplate-BqlMt5Su.js";
|
|
2
|
+
import { FluentButton, FluentIcon, LayoutUnit, LogicalSearchOperatorEnums, SearchGroupingType, SearchSortDirection, StatusChip, executeQueryAdHoc, executeQueryWithParameters, useAxiosGet, useBuildEnvironment, useUser } from "./EnvironmentRibbon-DaDmKAPO.js";
|
|
3
|
+
import { useHandleAxiosSnackbar } from "./apiHelpers-DZots3og.js";
|
|
4
|
+
import { getSearchObject } from "./SearchUtilities-Bor3HbfB.js";
|
|
5
5
|
import React, { useCallback, useEffect, useMemo, useState } from "react";
|
|
6
6
|
import { Box, Button, Popper, TextField, Typography, makeStyles } from "@material-ui/core";
|
|
7
7
|
import { ConfigService } from "udp-react-stencil-component-library";
|
|
@@ -675,4 +675,4 @@ const MyExportsPage = (props) => {
|
|
|
675
675
|
|
|
676
676
|
//#endregion
|
|
677
677
|
export { AmbientAlert, AmbientAutoComplete, EmptyStateDisplay, MyExportsPage, SearchServiceDatasource, StatusCellRenderer, TableColumnDefs, TableContainer$1 as TableContainer, defaultColumnActionsDef };
|
|
678
|
-
//# sourceMappingURL=MyExportsPage-
|
|
678
|
+
//# sourceMappingURL=MyExportsPage-CX9tzqHk.js.map
|