udp-react-enterprise-component-library 26.2.1-beta.2 → 26.2.1-beta.4
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/.tsbuildinfo +1 -1
- package/dist/UI/dataDisplay/FluentDataTable/FluentCell/index.d.ts.map +1 -1
- package/dist/UI/dataDisplay/FluentDataTable/FluentCell/index.js +7 -7
- package/dist/UI/dataDisplay/FluentDataTable/FluentCell/index.js.map +1 -1
- package/dist/UI/dataDisplay/FluentDataTable/FluentCell/index.mjs +2 -2
- package/dist/UI/dataDisplay/FluentDataTable/FluentCell/index.mjs.map +1 -1
- package/dist/UI/forms/PaymentReversalForm.js +4 -4
- package/dist/UI/forms/PaymentReversalForm.js.map +1 -1
- package/dist/UI/forms/PaymentReversalForm.mjs +4 -4
- package/dist/UI/forms/PaymentReversalForm.mjs.map +1 -1
- package/dist/UI/utilityDisplay/utilityHeader/PrimaryActionHeader.d.ts.map +1 -1
- package/dist/UI/utilityDisplay/utilityHeader/PrimaryActionHeader.js +68 -67
- package/dist/UI/utilityDisplay/utilityHeader/PrimaryActionHeader.js.map +1 -1
- package/dist/UI/utilityDisplay/utilityHeader/PrimaryActionHeader.mjs +4 -4
- package/dist/UI/utilityDisplay/utilityHeader/PrimaryActionHeader.mjs.map +1 -1
- package/dist/UI/widgets/ItemsWidgetCard.d.ts.map +1 -1
- package/dist/UI/widgets/ItemsWidgetCard.js +21 -21
- package/dist/UI/widgets/ItemsWidgetCard.js.map +1 -1
- package/dist/UI/widgets/ItemsWidgetCard.mjs +2 -2
- package/dist/UI/widgets/ItemsWidgetCard.mjs.map +1 -1
- package/dist/actions/ActionWrapper.d.ts.map +1 -1
- package/dist/actions/ActionWrapper.js +33 -41
- package/dist/actions/ActionWrapper.js.map +1 -1
- package/dist/actions/ActionWrapper.mjs +80 -117
- package/dist/actions/ActionWrapper.mjs.map +1 -1
- package/dist/dataBrowser/DataBrowserContainer.d.ts.map +1 -1
- package/dist/dataBrowser/DataBrowserContainer.js +35 -36
- package/dist/dataBrowser/DataBrowserContainer.js.map +1 -1
- package/dist/dataBrowser/DataBrowserContainer.mjs +2 -2
- package/dist/dataBrowser/DataBrowserContainer.mjs.map +1 -1
- package/dist/hooks/crudForeignKeyData.d.ts +11 -0
- package/dist/hooks/crudForeignKeyData.d.ts.map +1 -0
- package/dist/hooks/crudForeignKeyData.js +63 -0
- package/dist/hooks/crudForeignKeyData.js.map +1 -0
- package/dist/hooks/crudForeignKeyData.mjs +68 -0
- package/dist/hooks/crudForeignKeyData.mjs.map +1 -0
- package/dist/index.mjs +4 -4
- package/dist/inquiry/InquiryContainer.mjs +1 -1
- package/dist/maintenanceEngine/tableBrowser/TableColumnDefs.d.ts +1 -1
- package/dist/maintenanceEngine/tableBrowser/TableColumnDefs.d.ts.map +1 -1
- package/dist/maintenanceEngine/virtualBrowser/VirtualBrowser.d.ts.map +1 -1
- package/dist/maintenanceEngine/virtualBrowser/VirtualBrowser.js +21 -34
- package/dist/maintenanceEngine/virtualBrowser/VirtualBrowser.js.map +1 -1
- package/dist/maintenanceEngine/virtualBrowser/VirtualBrowser.mjs +2 -2
- package/dist/maintenanceEngine/virtualBrowser/VirtualBrowser.mjs.map +1 -1
- package/dist/shell/Shell.d.ts.map +1 -1
- package/dist/shell/Shell.js +32 -49
- package/dist/shell/Shell.js.map +1 -1
- package/dist/shell/Shell.mjs +9 -10
- package/dist/shell/Shell.mjs.map +1 -1
- package/dist/udp/fileImportMapping/FileImportConfigCard.mjs +1 -1
- package/dist/udp/fileImportMapping/FileImportMappingWizard.mjs +1 -1
- package/dist/udp/lookups/LookupCreationSheet.mjs +1 -1
- package/dist/udp/pages/UdpLookupManagementPage/UdpLookupManagementPage.mjs +1 -1
- package/dist/utilities/auth/UserErrorModal.d.ts +12 -0
- package/dist/utilities/auth/UserErrorModal.d.ts.map +1 -0
- package/dist/utilities/auth/UserErrorModal.js +16 -0
- package/dist/utilities/auth/UserErrorModal.js.map +1 -0
- package/dist/utilities/auth/UserErrorModal.mjs +50 -0
- package/dist/utilities/auth/UserErrorModal.mjs.map +1 -0
- package/dist/utilities/auth/UserProvider.d.ts.map +1 -1
- package/dist/utilities/auth/UserProvider.js +8 -8
- package/dist/utilities/auth/UserProvider.js.map +1 -1
- package/dist/utilities/auth/UserProvider.mjs +29 -49
- package/dist/utilities/auth/UserProvider.mjs.map +1 -1
- package/dist/utilities/tenant/TenantAccessDialog.mjs +1 -1
- package/dist/utilities/tenant/TenantProvider.d.ts.map +1 -1
- package/dist/utilities/tenant/TenantProvider.js +17 -13
- package/dist/utilities/tenant/TenantProvider.js.map +1 -1
- package/dist/utilities/tenant/TenantProvider.mjs +7 -7
- package/dist/utilities/tenant/TenantProvider.mjs.map +1 -1
- package/package.json +11 -3
package/dist/shell/Shell.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Shell.mjs","names":["React","useState","useEffect","useMemo","useCallback","Suspense","makeStyles","Drawer","useMediaQuery","useTheme","NavigationSidebar","SiteHeader","UtilityBar","useTranslation","FUIAppSwitcher","getMenuItemsRecursively","findHomeRouteSlug","clsx","UtilitySideBar","PropTypes","useUser","ActionProvider","PageActionWrapper","useInquiryStore","useWidgetRegistry","useBuildEnvironment","APP_RIBBON_SPACE","ChatBotProvider","UserProfileMenuWrapper","useMenuContext","Switch","UdpRoutes","useRouteRegistry","useShellVisibility","PageLoading","ErrorBoundary","MenuTypeEnums","Left_Menu","Application_Menu","Builders_Menu","Favorites_Menu","useStyles","theme","html","minHeight","display","flexDirection","flex","root","gridTemplateAreas","map","line","join","gridTemplateColumns","gridTemplateRows","header","gridArea","sidebar","content","position","zIndex","height","appRibbonSpace","overflowY","paper","width","breakpoints","up","props","drawerWidth","name","Shell","buildEnv","classes","ribbonSpace","children","userAvatar","appContent","leftMenu","appSelectorMenus","siteName","className","navRoot","hideToggle","useMockData","mockMenus","user","passedInUser","unityUrl","expander","sidebarTitle","navMenuHoverOn","secondExtended","toggleOne","toggleTwo","closePrimary","closeSecondary","panelExpanded","panelExpandedSecondary","setPanelExpanded","setPanelExpandedSecondary","breadCrumbAltLabelList","currentLocation","utilitySidebarResizable","utilitySidebarToggleOverride","onUtilitySidebarToggleExpandClick","hideLayout","getAccessToken","switcherData","selectedItem","switcherWidth","languages","projectSwitcherColor","widgets","getWidget","getWidgetProp","isValidWidget","isValidWidgetProp","appSwitcherHeader","hamburgerMenuAccessRole","hideLanguageSwitcher","subheader","hideHelpCenter","leftMenuLoading","contextUser","routeConfig","state","routeMap","currentPath","isPublicRoute","isPublic","appSwitcherMobile","setAppSwitcherMobile","appSwitcherDesktop","setAppSwitcherDesktop","i18n","inquiryTitle","title","menuContext","resolvedLeftMenu","homeRoute","length","resolvedAppSelectorMenus","providedLanguages","resolvedLanguages","Array","isArray","effectiveShellHidden","hasUser","Boolean","id","getMenuItems","menuTypeId","menus","menusToFilter","foundMenus","filter","menu","active","reduce","menuItemInstanceStructureViews","menuItems","mobile","handleAppSwitcher","type","bool","builderMenu","favoriteMenu","appMenu","hideAppMenu","roleNames","includes","changeLanguage","propTypes","array","string","number","oneOfType","arrayOf","node","isRequired","element","object","func","currentTenant"],"sources":["../../src/shell/Shell.jsx"],"sourcesContent":["import React, {\n useState,\n useEffect,\n useMemo,\n useCallback,\n Suspense\n} from 'react';\nimport { makeStyles, Drawer, useMediaQuery, useTheme } from '@material-ui/core';\nimport NavigationSidebar from './ui/NavigationSidebar';\nimport SiteHeader from './ui/SiteHeader';\nimport { UtilityBar } from '../UI/utilityDisplay/UtilityBar';\nimport { useTranslation } from 'react-i18next';\nimport FUIAppSwitcher from './ui/appSwitcher/FUIAppSwitcher';\nimport { getMenuItemsRecursively, findHomeRouteSlug } from '../utilities/menus/menuUtilities';\nimport clsx from 'clsx';\nimport { UtilitySideBar } from '../UI/utilityDisplay/UtilitySideBar';\nimport PropTypes from 'prop-types';\nimport { useUser } from '../utilities/auth/useUser';\nimport { ActionProvider } from '../utilities/provider/ActionProvider';\nimport { PageActionWrapper } from '../actions/PageActionWrapper';\nimport { useInquiryStore } from '../stores/inquiryStore';\nimport { useWidgetRegistry } from './useWidgetRegistry';\n\nimport {\n useBuildEnvironment,\n APP_RIBBON_SPACE\n} from './ui/useBuildEnvironment';\nimport { ChatBotProvider } from '../utilities/chatBot/ChatBotProvider';\nimport { UserProfileMenuWrapper } from '../shell/ui/profile';\nimport { useMenuContext } from '../utilities/menus/MenuProvider';\n//import { usePreloadPages } from '../hooks/usePreloadPages';\nimport { Switch } from 'react-router-dom';\nimport { UdpRoutes } from '../routes/UdpRoutes';\nimport { useRouteRegistry } from '../routes/routeRegistryStore';\nimport { useShellVisibility } from './useShellVisibility';\nimport { PageLoading } from '../UI';\nimport ErrorBoundary from '../errorBoundary/ErrorBoundary';\n// load the page container module so its loaded when we need it\nvoid import('../page/PageContainer');\nconst MenuTypeEnums = {\n Left_Menu: 1,\n Application_Menu: 2,\n Builders_Menu: 3,\n Favorites_Menu: 4\n};\n\nconst useStyles = makeStyles(\n (theme) => ({\n '@global': {\n html: {\n minHeight: '100%'\n },\n 'html, body, #root': {\n display: 'flex',\n flexDirection: 'column'\n },\n 'body, #root': {\n flex: 1\n }\n },\n root: {\n flex: 1,\n minHeight: '100vh',\n display: 'grid',\n gridTemplateAreas: ['sidebar header', 'sidebar content']\n .map((line) => `\"${line}\"`)\n .join(' '),\n gridTemplateColumns: 'auto 1fr',\n gridTemplateRows: 'auto 1fr'\n },\n header: {\n gridArea: 'header'\n },\n sidebar: {\n gridArea: 'sidebar'\n },\n content: {\n gridArea: 'content',\n display: 'flex',\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n height: ({ appRibbonSpace }) => `calc(100vh - ${56 + appRibbonSpace}px)`,\n overflowY: 'auto'\n },\n paper: {\n width: '100%',\n [theme.breakpoints.up('sm')]: {\n width: (props) => props.drawerWidth || 520\n }\n }\n }),\n { name: 'Layout' }\n);\n\n/**\n * Core site layout common to all pages\n */\nexport const Shell = (props) => {\n const buildEnv = useBuildEnvironment();\n const classes = useStyles({\n ...props,\n ribbonSpace: buildEnv ? APP_RIBBON_SPACE : 0\n });\n const {\n children,\n userAvatar = <UserProfileMenuWrapper />,\n appContent,\n leftMenu,\n appSelectorMenus,\n siteName,\n className,\n navRoot,\n hideToggle,\n useMockData,\n mockMenus,\n user: passedInUser,\n unityUrl,\n expander,\n sidebarTitle,\n navMenuHoverOn = false,\n secondExtended,\n toggleOne,\n toggleTwo,\n closePrimary,\n closeSecondary,\n panelExpanded,\n panelExpandedSecondary,\n setPanelExpanded = false,\n setPanelExpandedSecondary = false,\n breadCrumbAltLabelList = [],\n currentLocation,\n utilitySidebarResizable,\n utilitySidebarToggleOverride,\n onUtilitySidebarToggleExpandClick,\n hideLayout = false,\n getAccessToken,\n switcherData,\n selectedItem,\n switcherWidth,\n languages,\n projectSwitcherColor,\n widgets,\n /** @deprecated Use `widgets` prop instead */\n getWidget: getWidgetProp,\n /** @deprecated Use `widgets` prop instead */\n isValidWidget: isValidWidgetProp,\n appSwitcherHeader,\n hamburgerMenuAccessRole,\n hideLanguageSwitcher = false,\n subheader,\n hideHelpCenter = false,\n leftMenuLoading = false\n } = props;\n const contextUser = useUser();\n const user = passedInUser ?? contextUser;\n useWidgetRegistry({ widgets, getWidget: getWidgetProp, isValidWidget: isValidWidgetProp });\n const routeConfig = useRouteRegistry(\n (state) => state.routeMap[state.currentPath]\n );\n const isPublicRoute = routeConfig?.isPublic !== false;\n const [appSwitcherMobile, setAppSwitcherMobile] = useState(false);\n const [appSwitcherDesktop, setAppSwitcherDesktop] = useState(false);\n const { i18n } = useTranslation();\n const inquiryTitle = useInquiryStore((state) => state.title);\n\n //usePreloadPages();\n\n const menuContext = useMenuContext?.();\n const resolvedLeftMenu = useMemo(\n () => (leftMenuLoading ? [] : leftMenu ?? menuContext?.leftMenu),\n [leftMenuLoading, leftMenu, menuContext]\n );\n const homeRoute = useMemo(\n () => (leftMenu?.length ? findHomeRouteSlug(leftMenu) : menuContext?.homeRoute),\n [leftMenu, menuContext]\n );\n const resolvedAppSelectorMenus =\n appSelectorMenus ?? menuContext?.appSelectorMenus;\n const providedLanguages = languages ?? menuContext?.languages;\n const resolvedLanguages = Array.isArray(providedLanguages)\n ? providedLanguages\n : [];\n const effectiveShellHidden = useShellVisibility({\n hideLayout,\n isPublicRoute,\n hasUser: Boolean(user?.id)\n });\n\n const getMenuItems = useCallback(\n (menuTypeId, menus) => {\n if (!menus && !useMockData) {\n return [];\n }\n const menusToFilter = useMockData ? mockMenus : menus;\n\n const foundMenus = menusToFilter.filter(\n (menu) => menu.menuTypeId === menuTypeId && menu.active\n );\n\n if (foundMenus) {\n return foundMenus.reduce((menuItemInstanceStructureViews, menu) => {\n return [\n ...menuItemInstanceStructureViews,\n ...menu.menuItemInstanceStructureViews\n ];\n }, []);\n } else {\n return [];\n }\n },\n [useMockData, mockMenus]\n );\n\n const menus = useMemo(() => {\n const menuItems = getMenuItems(1, resolvedLeftMenu);\n return getMenuItemsRecursively(menuItems, true, user);\n }, [getMenuItems, user, resolvedLeftMenu]);\n\n const theme = useTheme();\n const mobile = useMediaQuery(theme.breakpoints.up('sm'));\n\n const handleAppSwitcher = (type, bool) => {\n if (type === 'mobile') {\n setAppSwitcherMobile(bool);\n } else {\n setAppSwitcherDesktop(bool);\n }\n };\n\n const builderMenu = useMemo(() => {\n const menuItems = getMenuItems(\n MenuTypeEnums.Builders_Menu,\n resolvedAppSelectorMenus\n );\n return getMenuItemsRecursively(menuItems, true, user, getAccessToken);\n }, [getMenuItems, user, resolvedAppSelectorMenus, getAccessToken]);\n\n const favoriteMenu = useMemo(() => {\n const menuItems = getMenuItems(\n MenuTypeEnums.Favorites_Menu,\n resolvedAppSelectorMenus\n );\n return getMenuItemsRecursively(menuItems, true, user, getAccessToken);\n }, [getMenuItems, user, resolvedAppSelectorMenus, getAccessToken]);\n\n const appMenu = useMemo(() => {\n const menuItems = getMenuItems(\n MenuTypeEnums.Application_Menu,\n resolvedAppSelectorMenus\n );\n return getMenuItemsRecursively(menuItems, true, user, getAccessToken);\n }, [getMenuItems, user, resolvedAppSelectorMenus, getAccessToken]);\n\n const hideAppMenu = useMemo(\n () =>\n !resolvedAppSelectorMenus ||\n (hamburgerMenuAccessRole &&\n !user?.roleNames.includes(hamburgerMenuAccessRole)),\n [user, resolvedAppSelectorMenus, hamburgerMenuAccessRole]\n );\n\n useEffect(() => {\n i18n.changeLanguage('en-US');\n }, [i18n]);\n\n return (\n <ChatBotProvider>\n <ActionProvider>\n <div className={classes.root}>\n {!effectiveShellHidden && (\n <SiteHeader\n className={classes.header}\n siteName={siteName}\n appContent={appContent}\n userAvatar={userAvatar}\n breadCrumbRoot={navRoot}\n setAppSwitcherOpen={(type, bool) => handleAppSwitcher(type, bool)}\n breadCrumbAltLabelList={breadCrumbAltLabelList}\n currentLocation={currentLocation}\n switcherData={switcherData}\n selectedItem={selectedItem}\n switcherWidth={switcherWidth}\n hideAppLaunch={hideAppMenu}\n languages={resolvedLanguages}\n hideLanguageSwitcher={hideLanguageSwitcher}\n backgroundColor={projectSwitcherColor}\n hideHelpCenter={hideHelpCenter}\n />\n )}\n\n <div style={{ display: 'flex' }} className={classes.sidebar}>\n {!effectiveShellHidden && mobile && (\n <NavigationSidebar\n className={classes.sidebar}\n data={menus}\n navMenuHoverOn={navMenuHoverOn}\n user={user}\n useGlobalState={true}\n leftMenuLoading={leftMenuLoading || menuContext?.leftMenuLoading}\n />\n )}\n {expander && (\n <div>\n <UtilitySideBar\n title={inquiryTitle || sidebarTitle}\n resizable={utilitySidebarResizable}\n utilitySidebarToggleOverride={utilitySidebarToggleOverride}\n onUtilitySidebarToggleExpandClick={\n onUtilitySidebarToggleExpandClick\n }\n sidebarHidden={effectiveShellHidden}\n {...props}\n />\n </div>\n )}\n </div>\n\n <div className={classes.content}>\n {!effectiveShellHidden && subheader}\n <UtilityBar\n className={clsx(className)}\n gutters={false}\n hideToggle={hideToggle}\n expander={expander}\n secondExtended={secondExtended}\n toggleOne={toggleOne}\n toggleTwo={toggleTwo}\n closePrimary={closePrimary}\n closeSecondary={closeSecondary}\n expanded={panelExpanded}\n expandedSecondary={panelExpandedSecondary}\n setExpanded={setPanelExpanded}\n setExpandedSecondary={setPanelExpandedSecondary}\n />\n\n <ErrorBoundary>\n <PageActionWrapper>\n <Suspense fallback={<PageLoading />}>\n <Switch>\n {children}\n <UdpRoutes homeRoute={homeRoute} />\n </Switch>\n </Suspense>\n </PageActionWrapper>\n </ErrorBoundary>\n </div>\n <Drawer\n variant='temporary'\n anchor='left'\n open={appSwitcherDesktop}\n classes={\n !mobile\n ? {}\n : !resolvedAppSelectorMenus\n ? {}\n : { paper: classes.paper }\n }\n onClose={() => handleAppSwitcher('desktop', false)}\n >\n {mobile && resolvedAppSelectorMenus && (\n <FUIAppSwitcher\n onClose={() => handleAppSwitcher('desktop', false)}\n favoriteMenu={favoriteMenu}\n builderMenu={builderMenu}\n appMenu={appMenu}\n unityUrl={unityUrl}\n user={user}\n header={\n appSwitcherHeader && typeof appSwitcherHeader === 'function'\n ? appSwitcherHeader(() => {\n handleAppSwitcher('desktop', false);\n })\n : appSwitcherHeader\n }\n />\n )}\n {(!mobile || (mobile && !resolvedAppSelectorMenus)) && (\n <NavigationSidebar\n toggle={false}\n className={classes.sidebar}\n data={menus}\n navMenuHoverOn={navMenuHoverOn}\n user={user}\n useGlobalState={true}\n leftMenuLoading={leftMenuLoading || menuContext?.leftMenuLoading}\n />\n )}\n </Drawer>\n\n <Drawer\n variant='temporary'\n anchor='right'\n open={appSwitcherMobile}\n classes={{ paper: classes.paper }}\n onClose={() => handleAppSwitcher('mobile', false)}\n >\n <FUIAppSwitcher\n onClose={() => handleAppSwitcher('mobile', false)}\n favoriteMenu={favoriteMenu}\n builderMenu={builderMenu}\n appMenu={appMenu}\n unityUrl={unityUrl}\n user={user}\n header={\n appSwitcherHeader && typeof appSwitcherHeader === 'function'\n ? appSwitcherHeader(() => {\n handleAppSwitcher('mobile', false);\n })\n : appSwitcherHeader\n }\n />\n </Drawer>\n </div>\n </ActionProvider>\n </ChatBotProvider>\n );\n};\n\nShell.propTypes = {\n /**\n * The newest propTypes have been added but older ones are missing @todo: add missing propTypes for Shell.\n */\n\n /**\n * The array used to map for label and functions to list items.\n */\n switcherData: PropTypes.array,\n /**\n * The active label displayed.\n */\n selectedItem: PropTypes.string,\n /**\n * Provides a method set the selector width. Default is 100.\n */\n switcherWidth: PropTypes.number,\n /**\n * Children nodes\n */\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]).isRequired,\n\n /**\n * Name of site\n */\n siteName: PropTypes.string,\n\n /**\n * Component to render for the user Avatar\n */\n userAvatar: PropTypes.element,\n\n appContent: PropTypes.element,\n\n leftMenu: PropTypes.array,\n\n appSelectorMenus: PropTypes.array,\n\n className: PropTypes.object,\n\n navRoot: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node\n ]),\n\n /**\n * Should the shell use mock data\n */\n useMockData: PropTypes.bool,\n\n mockMenus: PropTypes.array,\n\n unityUrl: PropTypes.string,\n\n expander: PropTypes.bool,\n\n sidebarTitle: PropTypes.string,\n\n navMenuHoverOn: PropTypes.bool,\n\n toggleOne: PropTypes.bool,\n\n toggleTwo: PropTypes.bool,\n\n closePrimary: PropTypes.bool,\n\n closeSecondary: PropTypes.bool,\n\n panelExpanded: PropTypes.bool,\n\n panelExpandedSecondary: PropTypes.bool,\n\n setPanelExpanded: PropTypes.func,\n\n setPanelExpandedSecondary: PropTypes.func,\n\n breadCrumbAltLabelList: PropTypes.array,\n\n currentLocation: PropTypes.object,\n\n utilitySidebarResizable: PropTypes.bool,\n\n utilitySidebarToggleOverride: PropTypes.bool,\n\n onUtilitySidebarToggleExpandClick: PropTypes.func,\n\n hideLayout: PropTypes.bool,\n\n languages: PropTypes.arrayOf(PropTypes.object),\n\n /**\n * Passes the background color on the project switcher (default: theme secondary)\n */\n projectSwitcherColor: PropTypes.string,\n /**\n * Map of widget identifiers to React.lazy components.\n * Internally merged with UdpPagesLazy. Preferred over getWidget/isValidWidget.\n */\n widgets: PropTypes.object,\n /** @deprecated Use `widgets` prop instead */\n getWidget: PropTypes.func,\n /** @deprecated Use `widgets` prop instead */\n isValidWidget: PropTypes.func,\n currentTenant: PropTypes.object,\n hamburgerMenuAccessRole: PropTypes.string\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Shell.mjs","names":["React","lazy","useState","useEffect","useMemo","useCallback","Suspense","makeStyles","Drawer","useMediaQuery","useTheme","NavigationSidebar","SiteHeader","UtilityBar","useTranslation","getMenuItemsRecursively","findHomeRouteSlug","clsx","PropTypes","useUser","ActionProvider","PageActionWrapper","useInquiryStore","useWidgetRegistry","useBuildEnvironment","APP_RIBBON_SPACE","ChatBotProvider","UserProfileMenuWrapper","useMenuContext","Switch","UdpRoutes","useRouteRegistry","useShellVisibility","PageLoading","ErrorBoundary","FUIAppSwitcher","UtilitySideBar","then","m","default","MenuTypeEnums","Left_Menu","Application_Menu","Builders_Menu","Favorites_Menu","useStyles","theme","html","minHeight","display","flexDirection","flex","root","gridTemplateAreas","map","line","join","gridTemplateColumns","gridTemplateRows","header","gridArea","sidebar","content","position","zIndex","height","appRibbonSpace","overflowY","paper","width","breakpoints","up","props","drawerWidth","name","Shell","buildEnv","classes","ribbonSpace","children","userAvatar","appContent","leftMenu","appSelectorMenus","siteName","className","navRoot","hideToggle","useMockData","mockMenus","user","passedInUser","unityUrl","expander","sidebarTitle","navMenuHoverOn","secondExtended","toggleOne","toggleTwo","closePrimary","closeSecondary","panelExpanded","panelExpandedSecondary","setPanelExpanded","setPanelExpandedSecondary","breadCrumbAltLabelList","currentLocation","utilitySidebarResizable","utilitySidebarToggleOverride","onUtilitySidebarToggleExpandClick","hideLayout","getAccessToken","switcherData","selectedItem","switcherWidth","languages","projectSwitcherColor","widgets","getWidget","getWidgetProp","isValidWidget","isValidWidgetProp","appSwitcherHeader","hamburgerMenuAccessRole","hideLanguageSwitcher","subheader","hideHelpCenter","leftMenuLoading","contextUser","routeConfig","state","routeMap","currentPath","isPublicRoute","isPublic","appSwitcherMobile","setAppSwitcherMobile","appSwitcherDesktop","setAppSwitcherDesktop","i18n","inquiryTitle","title","menuContext","resolvedLeftMenu","homeRoute","length","resolvedAppSelectorMenus","providedLanguages","resolvedLanguages","Array","isArray","effectiveShellHidden","hasUser","Boolean","id","getMenuItems","menuTypeId","menus","menusToFilter","foundMenus","filter","menu","active","reduce","menuItemInstanceStructureViews","menuItems","mobile","handleAppSwitcher","type","bool","builderMenu","favoriteMenu","appMenu","hideAppMenu","roleNames","includes","changeLanguage","propTypes","array","string","number","oneOfType","arrayOf","node","isRequired","element","object","func","currentTenant"],"sources":["../../src/shell/Shell.jsx"],"sourcesContent":["import React, { lazy, useState, useEffect, useMemo, useCallback, Suspense } from 'react';\nimport { makeStyles, Drawer, useMediaQuery, useTheme } from '@material-ui/core';\nimport NavigationSidebar from './ui/NavigationSidebar';\nimport SiteHeader from './ui/SiteHeader';\nimport { UtilityBar } from '../UI/utilityDisplay/UtilityBar';\nimport { useTranslation } from 'react-i18next';\nimport { getMenuItemsRecursively, findHomeRouteSlug } from '../utilities/menus/menuUtilities';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { useUser } from '../utilities/auth/useUser';\nimport { ActionProvider } from '../utilities/provider/ActionProvider';\nimport { PageActionWrapper } from '../actions/PageActionWrapper';\nimport { useInquiryStore } from '../stores/inquiryStore';\nimport { useWidgetRegistry } from './useWidgetRegistry';\n\nimport { useBuildEnvironment, APP_RIBBON_SPACE } from './ui/useBuildEnvironment';\nimport { ChatBotProvider } from '../utilities/chatBot/ChatBotProvider';\nimport { UserProfileMenuWrapper } from '../shell/ui/profile';\nimport { useMenuContext } from '../utilities/menus/MenuProvider';\n//import { usePreloadPages } from '../hooks/usePreloadPages';\nimport { Switch } from 'react-router-dom';\nimport { UdpRoutes } from '../routes/UdpRoutes';\nimport { useRouteRegistry } from '../routes/routeRegistryStore';\nimport { useShellVisibility } from './useShellVisibility';\nimport { PageLoading } from '../UI';\nimport ErrorBoundary from '../errorBoundary/ErrorBoundary';\n\n// Lazy-load components that only render in response to user interaction or\n// optional props, so they don't get pulled into the Shell entry chunk.\nconst FUIAppSwitcher = lazy(() => import('./ui/appSwitcher/FUIAppSwitcher'));\nconst UtilitySideBar = lazy(() =>\n import('../UI/utilityDisplay/UtilitySideBar').then((m) => ({\n default: m.UtilitySideBar,\n })),\n);\nconst MenuTypeEnums = {\n Left_Menu: 1,\n Application_Menu: 2,\n Builders_Menu: 3,\n Favorites_Menu: 4,\n};\n\nconst useStyles = makeStyles(\n (theme) => ({\n '@global': {\n html: {\n minHeight: '100%',\n },\n 'html, body, #root': {\n display: 'flex',\n flexDirection: 'column',\n },\n 'body, #root': {\n flex: 1,\n },\n },\n root: {\n flex: 1,\n minHeight: '100vh',\n display: 'grid',\n gridTemplateAreas: ['sidebar header', 'sidebar content'].map((line) => `\"${line}\"`).join(' '),\n gridTemplateColumns: 'auto 1fr',\n gridTemplateRows: 'auto 1fr',\n },\n header: {\n gridArea: 'header',\n },\n sidebar: {\n gridArea: 'sidebar',\n },\n content: {\n gridArea: 'content',\n display: 'flex',\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n height: ({ appRibbonSpace }) => `calc(100vh - ${56 + appRibbonSpace}px)`,\n overflowY: 'auto',\n },\n paper: {\n width: '100%',\n [theme.breakpoints.up('sm')]: {\n width: (props) => props.drawerWidth || 520,\n },\n },\n }),\n { name: 'Layout' }\n);\n\n/**\n * Core site layout common to all pages\n */\nexport const Shell = (props) => {\n const buildEnv = useBuildEnvironment();\n const classes = useStyles({\n ...props,\n ribbonSpace: buildEnv ? APP_RIBBON_SPACE : 0,\n });\n const {\n children,\n userAvatar = <UserProfileMenuWrapper />,\n appContent,\n leftMenu,\n appSelectorMenus,\n siteName,\n className,\n navRoot,\n hideToggle,\n useMockData,\n mockMenus,\n user: passedInUser,\n unityUrl,\n expander,\n sidebarTitle,\n navMenuHoverOn = false,\n secondExtended,\n toggleOne,\n toggleTwo,\n closePrimary,\n closeSecondary,\n panelExpanded,\n panelExpandedSecondary,\n setPanelExpanded = false,\n setPanelExpandedSecondary = false,\n breadCrumbAltLabelList = [],\n currentLocation,\n utilitySidebarResizable,\n utilitySidebarToggleOverride,\n onUtilitySidebarToggleExpandClick,\n hideLayout = false,\n getAccessToken,\n switcherData,\n selectedItem,\n switcherWidth,\n languages,\n projectSwitcherColor,\n widgets,\n /** @deprecated Use `widgets` prop instead */\n getWidget: getWidgetProp,\n /** @deprecated Use `widgets` prop instead */\n isValidWidget: isValidWidgetProp,\n appSwitcherHeader,\n hamburgerMenuAccessRole,\n hideLanguageSwitcher = false,\n subheader,\n hideHelpCenter = false,\n leftMenuLoading = false,\n } = props;\n const contextUser = useUser();\n const user = passedInUser ?? contextUser;\n useWidgetRegistry({ widgets, getWidget: getWidgetProp, isValidWidget: isValidWidgetProp });\n const routeConfig = useRouteRegistry((state) => state.routeMap[state.currentPath]);\n const isPublicRoute = routeConfig?.isPublic !== false;\n const [appSwitcherMobile, setAppSwitcherMobile] = useState(false);\n const [appSwitcherDesktop, setAppSwitcherDesktop] = useState(false);\n const { i18n } = useTranslation();\n const inquiryTitle = useInquiryStore((state) => state.title);\n\n //usePreloadPages();\n\n const menuContext = useMenuContext?.();\n const resolvedLeftMenu = useMemo(\n () => (leftMenuLoading ? [] : (leftMenu ?? menuContext?.leftMenu)),\n [leftMenuLoading, leftMenu, menuContext]\n );\n const homeRoute = useMemo(\n () => (leftMenu?.length ? findHomeRouteSlug(leftMenu) : menuContext?.homeRoute),\n [leftMenu, menuContext]\n );\n const resolvedAppSelectorMenus = appSelectorMenus ?? menuContext?.appSelectorMenus;\n const providedLanguages = languages ?? menuContext?.languages;\n const resolvedLanguages = Array.isArray(providedLanguages) ? providedLanguages : [];\n const effectiveShellHidden = useShellVisibility({\n hideLayout,\n isPublicRoute,\n hasUser: Boolean(user?.id),\n });\n\n const getMenuItems = useCallback(\n (menuTypeId, menus) => {\n if (!menus && !useMockData) {\n return [];\n }\n const menusToFilter = useMockData ? mockMenus : menus;\n\n const foundMenus = menusToFilter.filter(\n (menu) => menu.menuTypeId === menuTypeId && menu.active\n );\n\n if (foundMenus) {\n return foundMenus.reduce((menuItemInstanceStructureViews, menu) => {\n return [...menuItemInstanceStructureViews, ...menu.menuItemInstanceStructureViews];\n }, []);\n } else {\n return [];\n }\n },\n [useMockData, mockMenus]\n );\n\n const menus = useMemo(() => {\n const menuItems = getMenuItems(1, resolvedLeftMenu);\n return getMenuItemsRecursively(menuItems, true, user);\n }, [getMenuItems, user, resolvedLeftMenu]);\n\n const theme = useTheme();\n const mobile = useMediaQuery(theme.breakpoints.up('sm'));\n\n const handleAppSwitcher = (type, bool) => {\n if (type === 'mobile') {\n setAppSwitcherMobile(bool);\n } else {\n setAppSwitcherDesktop(bool);\n }\n };\n\n const builderMenu = useMemo(() => {\n const menuItems = getMenuItems(MenuTypeEnums.Builders_Menu, resolvedAppSelectorMenus);\n return getMenuItemsRecursively(menuItems, true, user, getAccessToken);\n }, [getMenuItems, user, resolvedAppSelectorMenus, getAccessToken]);\n\n const favoriteMenu = useMemo(() => {\n const menuItems = getMenuItems(MenuTypeEnums.Favorites_Menu, resolvedAppSelectorMenus);\n return getMenuItemsRecursively(menuItems, true, user, getAccessToken);\n }, [getMenuItems, user, resolvedAppSelectorMenus, getAccessToken]);\n\n const appMenu = useMemo(() => {\n const menuItems = getMenuItems(MenuTypeEnums.Application_Menu, resolvedAppSelectorMenus);\n return getMenuItemsRecursively(menuItems, true, user, getAccessToken);\n }, [getMenuItems, user, resolvedAppSelectorMenus, getAccessToken]);\n\n const hideAppMenu = useMemo(\n () =>\n !resolvedAppSelectorMenus ||\n (hamburgerMenuAccessRole && !user?.roleNames.includes(hamburgerMenuAccessRole)),\n [user, resolvedAppSelectorMenus, hamburgerMenuAccessRole]\n );\n\n useEffect(() => {\n i18n.changeLanguage('en-US');\n }, [i18n]);\n\n return (\n <ChatBotProvider>\n <ActionProvider>\n <div className={classes.root}>\n {!effectiveShellHidden && (\n <SiteHeader\n className={classes.header}\n siteName={siteName}\n appContent={appContent}\n userAvatar={userAvatar}\n breadCrumbRoot={navRoot}\n setAppSwitcherOpen={(type, bool) => handleAppSwitcher(type, bool)}\n breadCrumbAltLabelList={breadCrumbAltLabelList}\n currentLocation={currentLocation}\n switcherData={switcherData}\n selectedItem={selectedItem}\n switcherWidth={switcherWidth}\n hideAppLaunch={hideAppMenu}\n languages={resolvedLanguages}\n hideLanguageSwitcher={hideLanguageSwitcher}\n backgroundColor={projectSwitcherColor}\n hideHelpCenter={hideHelpCenter}\n />\n )}\n\n <div style={{ display: 'flex' }} className={classes.sidebar}>\n {!effectiveShellHidden && mobile && (\n <NavigationSidebar\n className={classes.sidebar}\n data={menus}\n navMenuHoverOn={navMenuHoverOn}\n user={user}\n useGlobalState={true}\n leftMenuLoading={leftMenuLoading || menuContext?.leftMenuLoading}\n />\n )}\n {expander && (\n <div>\n <Suspense fallback={null}>\n <UtilitySideBar\n title={inquiryTitle || sidebarTitle}\n resizable={utilitySidebarResizable}\n utilitySidebarToggleOverride={utilitySidebarToggleOverride}\n onUtilitySidebarToggleExpandClick={onUtilitySidebarToggleExpandClick}\n sidebarHidden={effectiveShellHidden}\n {...props}\n />\n </Suspense>\n </div>\n )}\n </div>\n\n <div className={classes.content}>\n {!effectiveShellHidden && subheader}\n <UtilityBar\n className={clsx(className)}\n gutters={false}\n hideToggle={hideToggle}\n expander={expander}\n secondExtended={secondExtended}\n toggleOne={toggleOne}\n toggleTwo={toggleTwo}\n closePrimary={closePrimary}\n closeSecondary={closeSecondary}\n expanded={panelExpanded}\n expandedSecondary={panelExpandedSecondary}\n setExpanded={setPanelExpanded}\n setExpandedSecondary={setPanelExpandedSecondary}\n />\n\n <ErrorBoundary>\n <PageActionWrapper>\n <Suspense fallback={<PageLoading />}>\n <Switch>\n {children}\n <UdpRoutes homeRoute={homeRoute} />\n </Switch>\n </Suspense>\n </PageActionWrapper>\n </ErrorBoundary>\n </div>\n <Drawer\n variant=\"temporary\"\n anchor=\"left\"\n open={appSwitcherDesktop}\n classes={!mobile ? {} : !resolvedAppSelectorMenus ? {} : { paper: classes.paper }}\n onClose={() => handleAppSwitcher('desktop', false)}\n >\n {mobile && resolvedAppSelectorMenus && (\n <Suspense fallback={null}>\n <FUIAppSwitcher\n onClose={() => handleAppSwitcher('desktop', false)}\n favoriteMenu={favoriteMenu}\n builderMenu={builderMenu}\n appMenu={appMenu}\n unityUrl={unityUrl}\n user={user}\n header={\n appSwitcherHeader && typeof appSwitcherHeader === 'function'\n ? appSwitcherHeader(() => {\n handleAppSwitcher('desktop', false);\n })\n : appSwitcherHeader\n }\n />\n </Suspense>\n )}\n {(!mobile || (mobile && !resolvedAppSelectorMenus)) && (\n <NavigationSidebar\n toggle={false}\n className={classes.sidebar}\n data={menus}\n navMenuHoverOn={navMenuHoverOn}\n user={user}\n useGlobalState={true}\n leftMenuLoading={leftMenuLoading || menuContext?.leftMenuLoading}\n />\n )}\n </Drawer>\n\n <Drawer\n variant=\"temporary\"\n anchor=\"right\"\n open={appSwitcherMobile}\n classes={{ paper: classes.paper }}\n onClose={() => handleAppSwitcher('mobile', false)}\n >\n <Suspense fallback={null}>\n <FUIAppSwitcher\n onClose={() => handleAppSwitcher('mobile', false)}\n favoriteMenu={favoriteMenu}\n builderMenu={builderMenu}\n appMenu={appMenu}\n unityUrl={unityUrl}\n user={user}\n header={\n appSwitcherHeader && typeof appSwitcherHeader === 'function'\n ? appSwitcherHeader(() => {\n handleAppSwitcher('mobile', false);\n })\n : appSwitcherHeader\n }\n />\n </Suspense>\n </Drawer>\n </div>\n </ActionProvider>\n </ChatBotProvider>\n );\n};\n\nShell.propTypes = {\n /**\n * The newest propTypes have been added but older ones are missing @todo: add missing propTypes for Shell.\n */\n\n /**\n * The array used to map for label and functions to list items.\n */\n switcherData: PropTypes.array,\n /**\n * The active label displayed.\n */\n selectedItem: PropTypes.string,\n /**\n * Provides a method set the selector width. Default is 100.\n */\n switcherWidth: PropTypes.number,\n /**\n * Children nodes\n */\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n\n /**\n * Name of site\n */\n siteName: PropTypes.string,\n\n /**\n * Component to render for the user Avatar\n */\n userAvatar: PropTypes.element,\n\n appContent: PropTypes.element,\n\n leftMenu: PropTypes.array,\n\n appSelectorMenus: PropTypes.array,\n\n className: PropTypes.object,\n\n navRoot: PropTypes.oneOfType([PropTypes.string, PropTypes.element, PropTypes.node]),\n\n /**\n * Should the shell use mock data\n */\n useMockData: PropTypes.bool,\n\n mockMenus: PropTypes.array,\n\n unityUrl: PropTypes.string,\n\n expander: PropTypes.bool,\n\n sidebarTitle: PropTypes.string,\n\n navMenuHoverOn: PropTypes.bool,\n\n toggleOne: PropTypes.bool,\n\n toggleTwo: PropTypes.bool,\n\n closePrimary: PropTypes.bool,\n\n closeSecondary: PropTypes.bool,\n\n panelExpanded: PropTypes.bool,\n\n panelExpandedSecondary: PropTypes.bool,\n\n setPanelExpanded: PropTypes.func,\n\n setPanelExpandedSecondary: PropTypes.func,\n\n breadCrumbAltLabelList: PropTypes.array,\n\n currentLocation: PropTypes.object,\n\n utilitySidebarResizable: PropTypes.bool,\n\n utilitySidebarToggleOverride: PropTypes.bool,\n\n onUtilitySidebarToggleExpandClick: PropTypes.func,\n\n hideLayout: PropTypes.bool,\n\n languages: PropTypes.arrayOf(PropTypes.object),\n\n /**\n * Passes the background color on the project switcher (default: theme secondary)\n */\n projectSwitcherColor: PropTypes.string,\n /**\n * Map of widget identifiers to React.lazy components.\n * Internally merged with UdpPagesLazy. Preferred over getWidget/isValidWidget.\n */\n widgets: PropTypes.object,\n /** @deprecated Use `widgets` prop instead */\n getWidget: PropTypes.func,\n /** @deprecated Use `widgets` prop instead */\n isValidWidget: PropTypes.func,\n currentTenant: PropTypes.object,\n hamburgerMenuAccessRole: PropTypes.string,\n};\n"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { UdpText } from "../../UI/fluent-web-components/UdpText.mjs";
|
|
2
1
|
import { UdpDetailListItem } from "../../UI/dataDisplay/UdpDetailListItem.mjs";
|
|
3
2
|
import { UdpCard } from "../../UI/fluent-web-components/UdpCard.mjs";
|
|
4
3
|
import { UdpDivider } from "../../UI/fluent-web-components/UdpDivider.mjs";
|
|
5
4
|
import { UdpIcon } from "../../UI/fluent-web-components/UdpIcon.mjs";
|
|
5
|
+
import { UdpText } from "../../UI/fluent-web-components/UdpText.mjs";
|
|
6
6
|
import React, { useMemo, useState } from "react";
|
|
7
7
|
//#region src/udp/fileImportMapping/FileImportConfigCard.jsx
|
|
8
8
|
const FileImportConfigCard = (props) => {
|
|
@@ -10,13 +10,13 @@ import { usePromotedMethodEntity } from "../../hooks/usePromotedMethodEntity.mjs
|
|
|
10
10
|
import { executeQueryAdHoc } from "../utilities/methodUtils.mjs";
|
|
11
11
|
import { UdpButton } from "../../UI/fluent-web-components/UdpButton.mjs";
|
|
12
12
|
import { UdpAutocomplete } from "../../UI/fluent-web-components/UdpAutocomplete.mjs";
|
|
13
|
-
import { UdpText } from "../../UI/fluent-web-components/UdpText.mjs";
|
|
14
13
|
import { UdpCard } from "../../UI/fluent-web-components/UdpCard.mjs";
|
|
15
14
|
import { UdpFileInput } from "../../UI/fluent-web-components/UdpFileInput.mjs";
|
|
16
15
|
import { AmbientStepper } from "../../UI/inputs/menus/AmbientStepper/AmbientStepper.mjs";
|
|
17
16
|
import { UdpDivider } from "../../UI/fluent-web-components/UdpDivider.mjs";
|
|
18
17
|
import { UdpDropdown } from "../../UI/fluent-web-components/UdpDropdown.mjs";
|
|
19
18
|
import { UdpIcon } from "../../UI/fluent-web-components/UdpIcon.mjs";
|
|
19
|
+
import { UdpText } from "../../UI/fluent-web-components/UdpText.mjs";
|
|
20
20
|
import { UdpTextInput } from "../../UI/fluent-web-components/UdpTextInput.mjs";
|
|
21
21
|
import { handleExcelFileUpload, handleJsonFileUpload, handleTextFileUpload } from "./fileUtils.mjs";
|
|
22
22
|
import { FileImportConfigCard } from "./FileImportConfigCard.mjs";
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { UdpButton } from "../../UI/fluent-web-components/UdpButton.mjs";
|
|
2
|
-
import { UdpText } from "../../UI/fluent-web-components/UdpText.mjs";
|
|
3
2
|
import { UdpCard } from "../../UI/fluent-web-components/UdpCard.mjs";
|
|
4
3
|
import { UdpDrawer } from "../../UI/fluent-web-components/UdpDrawer.mjs";
|
|
5
4
|
import { UdpBadge } from "../../UI/fluent-web-components/UdpBadge.mjs";
|
|
@@ -7,6 +6,7 @@ import { UdpDropdown } from "../../UI/fluent-web-components/UdpDropdown.mjs";
|
|
|
7
6
|
import { UdpFlexbox } from "../../UI/fluent-web-components/UdpFlexbox.mjs";
|
|
8
7
|
import { UdpIconButton } from "../../UI/fluent-web-components/UdpIconButton.mjs";
|
|
9
8
|
import { UdpMessageBar } from "../../UI/fluent-web-components/UdpMessageBar.mjs";
|
|
9
|
+
import { UdpText } from "../../UI/fluent-web-components/UdpText.mjs";
|
|
10
10
|
import { UdpTextInput } from "../../UI/fluent-web-components/UdpTextInput.mjs";
|
|
11
11
|
import React, { useCallback, useEffect, useMemo, useState } from "react";
|
|
12
12
|
import { LookupColumnTypeId, LookupTypeId, isCatalogModelObject } from "udp-stencil-component-library";
|
|
@@ -4,8 +4,8 @@ import { useAxiosGet } from "../../../utilities/useAxiosGet.mjs";
|
|
|
4
4
|
import { useApiCatalog } from "../../../hooks/useApiCatalog.mjs";
|
|
5
5
|
import { UdpButton } from "../../../UI/fluent-web-components/UdpButton.mjs";
|
|
6
6
|
import { UdpDialog } from "../../../UI/fluent-web-components/UdpDialog.mjs";
|
|
7
|
-
import { UdpText } from "../../../UI/fluent-web-components/UdpText.mjs";
|
|
8
7
|
import { ClientSideUdpGrid } from "../../../UI/templates/newGrid/ClientSideUdpGrid.mjs";
|
|
8
|
+
import { UdpText } from "../../../UI/fluent-web-components/UdpText.mjs";
|
|
9
9
|
import { useLookups } from "../../lookups/useLookups.mjs";
|
|
10
10
|
import LookupCreationSheet from "../../lookups/LookupCreationSheet.mjs";
|
|
11
11
|
import React, { useCallback, useMemo, useState } from "react";
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Error modal shown when fetching the authed user fails. Extracted into its
|
|
4
|
+
* own module so the stencil-based UdpDialog/UdpText/UdpButton — which pull in
|
|
5
|
+
* the full stencil web-component graph (~574 KB udp-fluent-icon, etc.) — only
|
|
6
|
+
* load when this rare error path renders, not on every initial app load.
|
|
7
|
+
*/
|
|
8
|
+
declare const UserErrorModal: ({ errorMessage }: {
|
|
9
|
+
errorMessage: any;
|
|
10
|
+
}) => React.JSX.Element;
|
|
11
|
+
export default UserErrorModal;
|
|
12
|
+
//# sourceMappingURL=UserErrorModal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserErrorModal.d.ts","sourceRoot":"","sources":["../../../src/utilities/auth/UserErrorModal.jsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B;;;;;GAKG;AACH,QAAA,MAAM,cAAc;;uBAenB,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { UdpDialog } from '../../UI/fluent-web-components/UdpDialog';
|
|
3
|
+
import { UdpText } from '../../UI/fluent-web-components/UdpText';
|
|
4
|
+
import { UdpButton } from '../../UI/fluent-web-components/UdpButton';
|
|
5
|
+
import { getSignInAuthProvider } from './signInAuthProvider';
|
|
6
|
+
/**
|
|
7
|
+
* Error modal shown when fetching the authed user fails. Extracted into its
|
|
8
|
+
* own module so the stencil-based UdpDialog/UdpText/UdpButton — which pull in
|
|
9
|
+
* the full stencil web-component graph (~574 KB udp-fluent-icon, etc.) — only
|
|
10
|
+
* load when this rare error path renders, not on every initial app load.
|
|
11
|
+
*/
|
|
12
|
+
const UserErrorModal = ({ errorMessage }) => (React.createElement(UdpDialog, { open: true, showHeaderCloseButton: false }, React.createElement(UdpText, { variant: "subtitle2" }, errorMessage ? errorMessage : 'An unexpected error has ocurred.'), React.createElement(UdpButton, { slot: "action", appearance: "primary", onClick: () => {
|
|
13
|
+
getSignInAuthProvider().logoutRedirect();
|
|
14
|
+
} }, "Logou")));
|
|
15
|
+
export default UserErrorModal;
|
|
16
|
+
//# sourceMappingURL=UserErrorModal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserErrorModal.js","sourceRoot":"","sources":["../../../src/utilities/auth/UserErrorModal.jsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D;;;;;GAKG;AACH,MAAM,cAAc,GAAG,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAC3C,oBAAC,SAAS,IAAC,IAAI,QAAC,qBAAqB,EAAE,KAAK,IAC1C,oBAAC,OAAO,IAAC,OAAO,EAAC,WAAW,IACzB,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,kCAAkC,CACzD,EACV,oBAAC,SAAS,IACR,IAAI,EAAC,QAAQ,EACb,UAAU,EAAC,SAAS,EACpB,OAAO,EAAE,GAAG,EAAE,CAAC;QACb,qBAAqB,EAAE,CAAC,cAAc,EAAE,CAAC;IAAA,CAC1C,YAGS,CACF,CACb,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { getSignInAuthProvider } from "./signInAuthProvider.mjs";
|
|
2
|
+
import { UdpButton } from "../../UI/fluent-web-components/UdpButton.mjs";
|
|
3
|
+
import { UdpDialog } from "../../UI/fluent-web-components/UdpDialog.mjs";
|
|
4
|
+
import { UdpText } from "../../UI/fluent-web-components/UdpText.mjs";
|
|
5
|
+
import { c } from "react-compiler-runtime";
|
|
6
|
+
import React from "react";
|
|
7
|
+
//#region src/utilities/auth/UserErrorModal.jsx
|
|
8
|
+
/**
|
|
9
|
+
* Error modal shown when fetching the authed user fails. Extracted into its
|
|
10
|
+
* own module so the stencil-based UdpDialog/UdpText/UdpButton — which pull in
|
|
11
|
+
* the full stencil web-component graph (~574 KB udp-fluent-icon, etc.) — only
|
|
12
|
+
* load when this rare error path renders, not on every initial app load.
|
|
13
|
+
*/
|
|
14
|
+
const UserErrorModal = (t0) => {
|
|
15
|
+
const $ = c(5);
|
|
16
|
+
const { errorMessage } = t0;
|
|
17
|
+
const t1 = errorMessage ? errorMessage : "An unexpected error has ocurred.";
|
|
18
|
+
let t2;
|
|
19
|
+
if ($[0] !== t1) {
|
|
20
|
+
t2 = /* @__PURE__ */ React.createElement(UdpText, { variant: "subtitle2" }, t1);
|
|
21
|
+
$[0] = t1;
|
|
22
|
+
$[1] = t2;
|
|
23
|
+
} else t2 = $[1];
|
|
24
|
+
let t3;
|
|
25
|
+
if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
26
|
+
t3 = /* @__PURE__ */ React.createElement(UdpButton, {
|
|
27
|
+
slot: "action",
|
|
28
|
+
appearance: "primary",
|
|
29
|
+
onClick: _temp
|
|
30
|
+
}, "Logout");
|
|
31
|
+
$[2] = t3;
|
|
32
|
+
} else t3 = $[2];
|
|
33
|
+
let t4;
|
|
34
|
+
if ($[3] !== t2) {
|
|
35
|
+
t4 = /* @__PURE__ */ React.createElement(UdpDialog, {
|
|
36
|
+
open: true,
|
|
37
|
+
showHeaderCloseButton: false
|
|
38
|
+
}, t2, t3);
|
|
39
|
+
$[3] = t2;
|
|
40
|
+
$[4] = t4;
|
|
41
|
+
} else t4 = $[4];
|
|
42
|
+
return t4;
|
|
43
|
+
};
|
|
44
|
+
function _temp() {
|
|
45
|
+
getSignInAuthProvider().logoutRedirect();
|
|
46
|
+
}
|
|
47
|
+
//#endregion
|
|
48
|
+
export { UserErrorModal as default };
|
|
49
|
+
|
|
50
|
+
//# sourceMappingURL=UserErrorModal.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserErrorModal.mjs","names":["React","UdpDialog","UdpText","UdpButton","getSignInAuthProvider","UserErrorModal","t0","$","_c","errorMessage","t1","t2","t3","Symbol","for","_temp","t4","logoutRedirect"],"sources":["../../../src/utilities/auth/UserErrorModal.jsx"],"sourcesContent":["import React from 'react';\nimport { UdpDialog } from '../../UI/fluent-web-components/UdpDialog';\nimport { UdpText } from '../../UI/fluent-web-components/UdpText';\nimport { UdpButton } from '../../UI/fluent-web-components/UdpButton';\nimport { getSignInAuthProvider } from './signInAuthProvider';\n\n/**\n * Error modal shown when fetching the authed user fails. Extracted into its\n * own module so the stencil-based UdpDialog/UdpText/UdpButton — which pull in\n * the full stencil web-component graph (~574 KB udp-fluent-icon, etc.) — only\n * load when this rare error path renders, not on every initial app load.\n */\nconst UserErrorModal = ({ errorMessage }) => (\n <UdpDialog open showHeaderCloseButton={false}>\n <UdpText variant=\"subtitle2\">\n {errorMessage ? errorMessage : 'An unexpected error has ocurred.'}\n </UdpText>\n <UdpButton\n slot=\"action\"\n appearance=\"primary\"\n onClick={() => {\n getSignInAuthProvider().logoutRedirect();\n }}\n >\n Logout\n </UdpButton>\n </UdpDialog>\n);\n\nexport default UserErrorModal;\n"],"mappings":";;;;;;;;;;;;;AAYA,MAAMK,kBAAiBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAC,iBAAAH;CAGjB,MAAAI,KAAAD,eAAAA,eAAA;CAAgE,IAAAE;AAAA,KAAAJ,EAAA,OAAAG,IAAA;AADnEC,OAAA,sBAAA,cAAC,SAAD,EAAiB,SAAA,aAEP,EADPD,GACO;AAAAH,IAAA,KAAAG;AAAAH,IAAA,KAAAI;OAAAA,MAAAJ,EAAA;CAAA,IAAAK;AAAA,KAAAL,EAAA,OAAAM,OAAAC,IAAA,4BAAA,EAAA;AACVF,OAAA,sBAAA,cAAC,WAAD;GACO,MAAA;GACM,YAAA;GACF,SAAAG;GAKC,EAFX,SAEW;AAAAR,IAAA,KAAAK;OAAAA,MAAAL,EAAA;CAAA,IAAAS;AAAA,KAAAT,EAAA,OAAAI,IAAA;AAZdK,OAAA,sBAAA,cAAC,WAAD;GAAW,MAAA;GAA4B,uBAAA;GAa3B,EAZVL,IAGAC,GASU;AAAAL,IAAA,KAAAI;AAAAJ,IAAA,KAAAS;OAAAA,MAAAT,EAAA;AAAA,QAbZS;;AADqB,SAAAD,QAAA;AASfX,wBAAuB,CAAAa,gBAAiB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserProvider.d.ts","sourceRoot":"","sources":["../../../src/utilities/auth/UserProvider.jsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"UserProvider.d.ts","sourceRoot":"","sources":["../../../src/utilities/auth/UserProvider.jsx"],"names":[],"mappings":"AAAA,OAAO,KAAoE,MAAM,OAAO,CAAC;AAkBzF,QAAA,MAAM,YAAY,mCA+EjB,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useCallback, useEffect, useState, useMemo } from 'react';
|
|
1
|
+
import React, { lazy, Suspense, useCallback, useEffect, useState, useMemo } from 'react';
|
|
2
2
|
import { keepPreviousData } from '@tanstack/react-query';
|
|
3
3
|
import { UserContext, UserDispatchContext } from './internal';
|
|
4
4
|
import { User } from './user';
|
|
@@ -9,9 +9,11 @@ import { useApiQuery } from '../useApiQuery';
|
|
|
9
9
|
import { TenantProvider } from '../tenant/TenantProvider';
|
|
10
10
|
import { ConfigService } from '../../configService';
|
|
11
11
|
import { getSignInAuthProvider } from './signInAuthProvider';
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
// Lazy-load the error modal — it only renders when the user-info API call
|
|
13
|
+
// fails, which is rare. Statically importing UdpDialog/UdpText/UdpButton drags
|
|
14
|
+
// the entire stencil web-component graph (incl. ~574 KB udp-fluent-icon) into
|
|
15
|
+
// the entry chunk for every user.
|
|
16
|
+
const UserErrorModal = lazy(() => import('./UserErrorModal'));
|
|
15
17
|
const UserProvider = (props) => {
|
|
16
18
|
const { children, isWhiteListed, doNotWaitForTenant = false, unityTenantId } = props;
|
|
17
19
|
const activeAccount = useAccount();
|
|
@@ -28,7 +30,7 @@ const UserProvider = (props) => {
|
|
|
28
30
|
const unityUserUrl = activeTenantId
|
|
29
31
|
? `user/unityuser?tenantId=${encodeURIComponent(activeTenantId)}`
|
|
30
32
|
: 'user/unityuser';
|
|
31
|
-
const { data: userInfo, error: userError, isLoading: userInfoLoading } = useApiQuery(ConfigService.securityV2ApiUrl, unityUserUrl, {}, {
|
|
33
|
+
const { data: userInfo, error: userError, isLoading: userInfoLoading, } = useApiQuery(ConfigService.securityV2ApiUrl, unityUserUrl, {}, {
|
|
32
34
|
enabled: !!activeAccount,
|
|
33
35
|
staleTime: 0,
|
|
34
36
|
placeholderData: keepPreviousData,
|
|
@@ -55,9 +57,7 @@ const UserProvider = (props) => {
|
|
|
55
57
|
const loadingValue = Boolean(activeAccount) && !user && !userError && userInfoLoading;
|
|
56
58
|
const shouldBlockForUser = loadingValue && !isWhiteListed;
|
|
57
59
|
if (isErrorModalOpen) {
|
|
58
|
-
return (React.createElement(
|
|
59
|
-
getSignInAuthProvider().logoutRedirect();
|
|
60
|
-
} }, "Logou")));
|
|
60
|
+
return (React.createElement(Suspense, { fallback: React.createElement(LoadingIndicator, null) }, React.createElement(UserErrorModal, { errorMessage: errorMessage })));
|
|
61
61
|
}
|
|
62
62
|
if (!doNotWaitForTenant && shouldBlockForUser) {
|
|
63
63
|
return React.createElement(LoadingIndicator, null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserProvider.js","sourceRoot":"","sources":["../../../src/utilities/auth/UserProvider.jsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"UserProvider.js","sourceRoot":"","sources":["../../../src/utilities/auth/UserProvider.jsx"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +1,18 @@
|
|
|
1
1
|
import { ConfigService } from "../../configService/index.mjs";
|
|
2
|
-
import { getSignInAuthProvider } from "./signInAuthProvider.mjs";
|
|
3
2
|
import { UserContext, UserDispatchContext } from "./internal.mjs";
|
|
4
3
|
import { getStoredTenant, storeTenant } from "../storage/UnitySessionStorage.mjs";
|
|
5
4
|
import { useApiQuery } from "../useApiQuery.mjs";
|
|
6
|
-
import { UdpButton } from "../../UI/fluent-web-components/UdpButton.mjs";
|
|
7
5
|
import { LoadingIndicator } from "../../UI/loading/LoadingIndicator/LoadingIndicator.mjs";
|
|
8
|
-
import { UdpDialog } from "../../UI/fluent-web-components/UdpDialog.mjs";
|
|
9
6
|
import { TenantProvider } from "../tenant/TenantProvider.mjs";
|
|
10
7
|
import { User } from "./user.mjs";
|
|
11
|
-
import { UdpText } from "../../UI/fluent-web-components/UdpText.mjs";
|
|
12
8
|
import { c } from "react-compiler-runtime";
|
|
13
|
-
import React, { useEffect, useState } from "react";
|
|
9
|
+
import React, { Suspense, lazy, useEffect, useState } from "react";
|
|
14
10
|
import { keepPreviousData } from "@tanstack/react-query";
|
|
15
11
|
import { useAccount } from "@azure/msal-react";
|
|
16
12
|
//#region src/utilities/auth/UserProvider.jsx
|
|
13
|
+
const UserErrorModal = lazy(() => import("./UserErrorModal.mjs"));
|
|
17
14
|
const UserProvider = (props) => {
|
|
18
|
-
const $ = c(
|
|
15
|
+
const $ = c(22);
|
|
19
16
|
const { children, isWhiteListed, doNotWaitForTenant: t0, unityTenantId } = props;
|
|
20
17
|
const doNotWaitForTenant = t0 === void 0 ? false : t0;
|
|
21
18
|
const activeAccount = useAccount();
|
|
@@ -91,64 +88,47 @@ const UserProvider = (props) => {
|
|
|
91
88
|
const changeTenant = t8;
|
|
92
89
|
const shouldBlockForUser = Boolean(activeAccount) && !user && !userError && userInfoLoading && !isWhiteListed;
|
|
93
90
|
if (isErrorModalOpen) {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
t10 = /* @__PURE__ */ React.createElement(UdpText, { variant: "subtitle2" }, t9);
|
|
91
|
+
let t9;
|
|
92
|
+
if ($[12] === Symbol.for("react.memo_cache_sentinel")) {
|
|
93
|
+
t9 = /* @__PURE__ */ React.createElement(LoadingIndicator, null);
|
|
98
94
|
$[12] = t9;
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
}, "Logout");
|
|
108
|
-
$[14] = t11;
|
|
109
|
-
} else t11 = $[14];
|
|
110
|
-
let t12;
|
|
111
|
-
if ($[15] !== t10) {
|
|
112
|
-
t12 = /* @__PURE__ */ React.createElement(UdpDialog, {
|
|
113
|
-
open: true,
|
|
114
|
-
showHeaderCloseButton: false
|
|
115
|
-
}, t10, t11);
|
|
116
|
-
$[15] = t10;
|
|
117
|
-
$[16] = t12;
|
|
118
|
-
} else t12 = $[16];
|
|
119
|
-
return t12;
|
|
95
|
+
} else t9 = $[12];
|
|
96
|
+
let t10;
|
|
97
|
+
if ($[13] !== errorMessage) {
|
|
98
|
+
t10 = /* @__PURE__ */ React.createElement(Suspense, { fallback: t9 }, /* @__PURE__ */ React.createElement(UserErrorModal, { errorMessage }));
|
|
99
|
+
$[13] = errorMessage;
|
|
100
|
+
$[14] = t10;
|
|
101
|
+
} else t10 = $[14];
|
|
102
|
+
return t10;
|
|
120
103
|
}
|
|
121
104
|
if (!doNotWaitForTenant && shouldBlockForUser) {
|
|
122
105
|
let t9;
|
|
123
|
-
if ($[
|
|
106
|
+
if ($[15] === Symbol.for("react.memo_cache_sentinel")) {
|
|
124
107
|
t9 = /* @__PURE__ */ React.createElement(LoadingIndicator, null);
|
|
125
|
-
$[
|
|
126
|
-
} else t9 = $[
|
|
108
|
+
$[15] = t9;
|
|
109
|
+
} else t9 = $[15];
|
|
127
110
|
return t9;
|
|
128
111
|
}
|
|
129
112
|
let t9;
|
|
130
|
-
if ($[
|
|
113
|
+
if ($[16] === Symbol.for("react.memo_cache_sentinel")) {
|
|
131
114
|
t9 = { changeTenant };
|
|
132
|
-
$[
|
|
133
|
-
} else t9 = $[
|
|
115
|
+
$[16] = t9;
|
|
116
|
+
} else t9 = $[16];
|
|
134
117
|
let t10;
|
|
135
|
-
if ($[
|
|
118
|
+
if ($[17] !== children) {
|
|
136
119
|
t10 = /* @__PURE__ */ React.createElement(UserDispatchContext.Provider, { value: t9 }, /* @__PURE__ */ React.createElement(TenantProvider, null, children));
|
|
137
|
-
$[
|
|
138
|
-
$[
|
|
139
|
-
} else t10 = $[
|
|
120
|
+
$[17] = children;
|
|
121
|
+
$[18] = t10;
|
|
122
|
+
} else t10 = $[18];
|
|
140
123
|
let t11;
|
|
141
|
-
if ($[
|
|
124
|
+
if ($[19] !== t10 || $[20] !== user) {
|
|
142
125
|
t11 = /* @__PURE__ */ React.createElement(UserContext.Provider, { value: user }, t10);
|
|
143
|
-
$[
|
|
144
|
-
$[
|
|
145
|
-
$[
|
|
146
|
-
} else t11 = $[
|
|
126
|
+
$[19] = t10;
|
|
127
|
+
$[20] = user;
|
|
128
|
+
$[21] = t11;
|
|
129
|
+
} else t11 = $[21];
|
|
147
130
|
return t11;
|
|
148
131
|
};
|
|
149
|
-
function _temp() {
|
|
150
|
-
getSignInAuthProvider().logoutRedirect();
|
|
151
|
-
}
|
|
152
132
|
//#endregion
|
|
153
133
|
export { UserProvider as default };
|
|
154
134
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserProvider.mjs","names":["React","useCallback","useEffect","useState","useMemo","keepPreviousData","UserContext","UserDispatchContext","User","LoadingIndicator","useAccount","storeTenant","getStoredTenant","useApiQuery","TenantProvider","ConfigService","getSignInAuthProvider","
|
|
1
|
+
{"version":3,"file":"UserProvider.mjs","names":["React","lazy","Suspense","useCallback","useEffect","useState","useMemo","keepPreviousData","UserContext","UserDispatchContext","User","LoadingIndicator","useAccount","storeTenant","getStoredTenant","useApiQuery","TenantProvider","ConfigService","getSignInAuthProvider","UserErrorModal","UserProvider","props","$","_c","children","isWhiteListed","doNotWaitForTenant","t0","unityTenantId","undefined","activeAccount","t1","params","URLSearchParams","window","location","search","urlTenant","get","storedTenant","activeTenantId","setActiveTenantId","unityUserUrl","encodeURIComponent","t2","Symbol","for","t3","t4","enabled","staleTime","placeholderData","data","userInfo","error","userError","isLoading","userInfoLoading","securityV2ApiUrl","t5","user","isErrorModalOpen","Boolean","errorMessage","t6","t7","userId","sessionStorage","setItem","currentTenantId","t8","newTenantId","changeTenant","loadingValue","shouldBlockForUser","t9","t10","t11"],"sources":["../../../src/utilities/auth/UserProvider.jsx"],"sourcesContent":["import React, { lazy, Suspense, useCallback, useEffect, useState, useMemo } from 'react';\nimport { keepPreviousData } from '@tanstack/react-query';\nimport { UserContext, UserDispatchContext } from './internal';\nimport { User } from './user';\nimport { LoadingIndicator } from '../../UI/loading/LoadingIndicator';\nimport { useAccount } from '@azure/msal-react';\nimport { storeTenant, getStoredTenant } from '../storage/UnitySessionStorage';\nimport { useApiQuery } from '../useApiQuery';\nimport { TenantProvider } from '../tenant/TenantProvider';\nimport { ConfigService } from '../../configService';\nimport { getSignInAuthProvider } from './signInAuthProvider';\n\n// Lazy-load the error modal — it only renders when the user-info API call\n// fails, which is rare. Statically importing UdpDialog/UdpText/UdpButton drags\n// the entire stencil web-component graph (incl. ~574 KB udp-fluent-icon) into\n// the entry chunk for every user.\nconst UserErrorModal = lazy(() => import('./UserErrorModal'));\n\nconst UserProvider = (props) => {\n const { children, isWhiteListed, doNotWaitForTenant = false, unityTenantId } = props;\n\n const activeAccount = useAccount();\n\n const [activeTenantId, setActiveTenantId] = useState(() => {\n const params = new URLSearchParams(window.location.search);\n const urlTenant = params.get('tenantId');\n if (urlTenant) return urlTenant;\n\n const storedTenant = getStoredTenant();\n if (storedTenant) return storedTenant;\n\n return unityTenantId || null;\n });\n\n const unityUserUrl = activeTenantId\n ? `user/unityuser?tenantId=${encodeURIComponent(activeTenantId)}`\n : 'user/unityuser';\n\n const {\n data: userInfo,\n error: userError,\n isLoading: userInfoLoading,\n } = useApiQuery(\n ConfigService.securityV2ApiUrl,\n unityUserUrl,\n {},\n {\n enabled: !!activeAccount,\n staleTime: 0,\n placeholderData: keepPreviousData,\n }\n );\n\n const user = useMemo(() => (userInfo ? new User(userInfo) : null), [userInfo]);\n\n const isErrorModalOpen = Boolean(userError);\n const errorMessage = userError ? 'Unable to get user details. Please try again.' : '';\n\n useEffect(() => {\n if (user?.userId) sessionStorage.setItem('user-id', user.userId);\n\n if (user?.currentTenantId && !activeTenantId) {\n storeTenant(user.currentTenantId);\n setActiveTenantId(user.currentTenantId);\n }\n }, [user, activeTenantId]);\n\n const changeTenant = useCallback((newTenantId) => {\n if (!newTenantId) return;\n storeTenant(newTenantId);\n setActiveTenantId(newTenantId);\n }, []);\n\n // Only block on initial load — when switching tenants we keep the previous\n // user rendered (placeholderData) so children don't unmount and flash a loader.\n const loadingValue = Boolean(activeAccount) && !user && !userError && userInfoLoading;\n const shouldBlockForUser = loadingValue && !isWhiteListed;\n\n if (isErrorModalOpen) {\n return (\n <Suspense fallback={<LoadingIndicator />}>\n <UserErrorModal errorMessage={errorMessage} />\n </Suspense>\n );\n }\n\n if (!doNotWaitForTenant && shouldBlockForUser) {\n return <LoadingIndicator />;\n }\n\n return (\n <UserContext.Provider value={user}>\n <UserDispatchContext.Provider value={{ changeTenant }}>\n <TenantProvider>{children}</TenantProvider>\n </UserDispatchContext.Provider>\n </UserContext.Provider>\n );\n};\n\nexport default UserProvider;\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { UdpDialog } from "../../UI/fluent-web-components/UdpDialog.mjs";
|
|
2
1
|
import { UdpTenantSelect } from "./UdpTenantSelect.mjs";
|
|
2
|
+
import { UdpDialog } from "../../UI/fluent-web-components/UdpDialog.mjs";
|
|
3
3
|
import { c } from "react-compiler-runtime";
|
|
4
4
|
import React from "react";
|
|
5
5
|
//#region src/utilities/tenant/TenantAccessDialog.tsx
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TenantProvider.d.ts","sourceRoot":"","sources":["../../../src/utilities/tenant/TenantProvider.jsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"TenantProvider.d.ts","sourceRoot":"","sources":["../../../src/utilities/tenant/TenantProvider.jsx"],"names":[],"mappings":"AAAA,OAAO,KAAsE,MAAM,OAAO,CAAC;AA6D3F,eAAO,MAAM,cAAc;;uBAgH1B,CAAC"}
|