@erpsquad/common 1.10.17 → 1.10.19
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/chunks/{android-12-switch-Nw977vtV.esm.js → android-12-switch-BJGIDwYR.esm.js} +131 -80
- package/dist/chunks/android-12-switch-BJGIDwYR.esm.js.map +1 -0
- package/dist/chunks/{android-12-switch-DQG8As1Y.js → android-12-switch-PEYCUiaq.js} +131 -80
- package/dist/chunks/android-12-switch-PEYCUiaq.js.map +1 -0
- package/dist/chunks/{appbar-CGe_OPDv.js → appbar-rUKxg-G7.js} +3 -2
- package/dist/chunks/{appbar-CGe_OPDv.js.map → appbar-rUKxg-G7.js.map} +1 -1
- package/dist/chunks/{appbar-KrkQiVAV.esm.js → appbar-zELMJiqH.esm.js} +3 -2
- package/dist/chunks/{appbar-KrkQiVAV.esm.js.map → appbar-zELMJiqH.esm.js.map} +1 -1
- package/dist/chunks/{default-data-pmy2guR7.js → default-data-COIp_txP.js} +4 -4
- package/dist/chunks/{default-data-pmy2guR7.js.map → default-data-COIp_txP.js.map} +1 -1
- package/dist/chunks/{default-data-Dt8HLhhG.esm.js → default-data-Ceg98EuN.esm.js} +4 -4
- package/dist/chunks/{default-data-Dt8HLhhG.esm.js.map → default-data-Ceg98EuN.esm.js.map} +1 -1
- package/dist/chunks/{form-builder-deconversion-DLGJdpXM.esm.js → form-builder-deconversion-B4OuGvBB.esm.js} +6 -2
- package/dist/chunks/form-builder-deconversion-B4OuGvBB.esm.js.map +1 -0
- package/dist/chunks/{form-builder-deconversion-D5-FPTEJ.js → form-builder-deconversion-BcmOEnG9.js} +6 -2
- package/dist/chunks/form-builder-deconversion-BcmOEnG9.js.map +1 -0
- package/dist/chunks/{fullScreen-8kPj1_fu.esm.js → fullScreen-BZgvFEKI.esm.js} +2 -2
- package/dist/chunks/{fullScreen-8kPj1_fu.esm.js.map → fullScreen-BZgvFEKI.esm.js.map} +1 -1
- package/dist/chunks/{fullScreen-DZWgEHUi.js → fullScreen-CSJaBvxv.js} +2 -2
- package/dist/chunks/{fullScreen-DZWgEHUi.js.map → fullScreen-CSJaBvxv.js.map} +1 -1
- package/dist/chunks/{sidebar-BeSjxulx.esm.js → sidebar-BXrUlb1O.esm.js} +2 -2
- package/dist/chunks/{sidebar-BeSjxulx.esm.js.map → sidebar-BXrUlb1O.esm.js.map} +1 -1
- package/dist/chunks/{sidebar-DKHIqaS0.js → sidebar-BbJUAEIV.js} +2 -2
- package/dist/chunks/{sidebar-DKHIqaS0.js.map → sidebar-BbJUAEIV.js.map} +1 -1
- package/dist/chunks/{sidebarScreen-Ca2YjEI4.js → sidebarScreen-DnI42_mr.js} +3 -3
- package/dist/chunks/{sidebarScreen-Ca2YjEI4.js.map → sidebarScreen-DnI42_mr.js.map} +1 -1
- package/dist/chunks/{sidebarScreen-DQWQqmvK.esm.js → sidebarScreen-NlMW1w_l.esm.js} +3 -3
- package/dist/chunks/{sidebarScreen-DQWQqmvK.esm.js.map → sidebarScreen-NlMW1w_l.esm.js.map} +1 -1
- package/dist/chunks/{uom-field-wrapper-DjrmGUaV.js → uom-field-wrapper-BsTblyVT.js} +91 -15
- package/dist/chunks/uom-field-wrapper-BsTblyVT.js.map +1 -0
- package/dist/chunks/{uom-field-wrapper-Db0m4mhG.esm.js → uom-field-wrapper-D0YgJsP5.esm.js} +91 -15
- package/dist/chunks/uom-field-wrapper-D0YgJsP5.esm.js.map +1 -0
- package/dist/components/department-add-modal.d.ts +8 -1
- package/dist/components/designation-add-modal.d.ts +9 -1
- package/dist/components/form-control/form-builder/form-builder-element/dynamic-select.d.ts +1 -0
- package/dist/components/index.esm.js +5 -5
- package/dist/components/index.js +5 -5
- package/dist/components/team-add-modal.d.ts +7 -1
- package/dist/hooks/useSetDefaultConfig.d.ts +2 -1
- package/dist/index.esm.js +8 -8
- package/dist/index.js +8 -8
- package/dist/layout/index.esm.js +2 -2
- package/dist/layout/index.js +2 -2
- package/dist/src/components/department-add-modal.d.ts +8 -1
- package/dist/src/components/designation-add-modal.d.ts +9 -1
- package/dist/src/components/form-control/form-builder/form-builder-element/dynamic-select.d.ts +1 -0
- package/dist/src/components/team-add-modal.d.ts +7 -1
- package/dist/src/hooks/useSetDefaultConfig.d.ts +2 -1
- package/dist/utils/index.esm.js +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/views/index.esm.js +5 -5
- package/dist/views/index.js +4 -4
- package/package.json +1 -1
- package/dist/chunks/android-12-switch-DQG8As1Y.js.map +0 -1
- package/dist/chunks/android-12-switch-Nw977vtV.esm.js.map +0 -1
- package/dist/chunks/form-builder-deconversion-D5-FPTEJ.js.map +0 -1
- package/dist/chunks/form-builder-deconversion-DLGJdpXM.esm.js.map +0 -1
- package/dist/chunks/uom-field-wrapper-Db0m4mhG.esm.js.map +0 -1
- package/dist/chunks/uom-field-wrapper-DjrmGUaV.js.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
const jsxRuntime = require("./jsx-runtime-B6vEU3CM.js");
|
|
3
3
|
const React = require("react");
|
|
4
|
-
const appbar = require("./appbar-
|
|
5
|
-
const sidebar = require("./sidebar-
|
|
4
|
+
const appbar = require("./appbar-rUKxg-G7.js");
|
|
5
|
+
const sidebar = require("./sidebar-BbJUAEIV.js");
|
|
6
6
|
const mui_constants = require("./mui.constants-CJEIUmWO.js");
|
|
7
7
|
const useLangauge = require("./useLangauge-CEhShUKV.js");
|
|
8
8
|
const common = require("./common-BFmedrzX.js");
|
|
@@ -197,4 +197,4 @@ const SidebarLayout = (props) => {
|
|
|
197
197
|
);
|
|
198
198
|
};
|
|
199
199
|
exports.SidebarLayout = SidebarLayout;
|
|
200
|
-
//# sourceMappingURL=sidebarScreen-
|
|
200
|
+
//# sourceMappingURL=sidebarScreen-DnI42_mr.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sidebarScreen-Ca2YjEI4.js","sources":["../../src/layout/sidebarScreen/sidebarScreen.tsx"],"sourcesContent":["import { useEffect, useState, useCallback, useMemo } from 'react';\r\n\r\nimport { useTheme } from '@mui/material/styles';\r\nimport Box from '@mui/material/Box';\r\n\r\nimport AppBar from '../../components/appbar/appbar';\r\nimport SideBar from '../../components/sidebar/sidebar';\r\nimport ActivityArea from '../../components/activityArea/activityArea';\r\nimport ChatBot from '../../components/chat-bot/chat-bot';\r\n\r\nimport drawerWidth from '../../constants/mui.constants';\r\n// const drawerWidth = 240;\r\nimport { useLanguage } from '../../hooks/useLangauge';\r\nimport { getToken } from '@/utils';\r\nimport { getV1Settings } from '../../api-client/api.manufacturing/api';\r\nimport { useLocation } from 'react-router-dom';\r\n\r\n// Local storage key for drawer state\r\nconst DRAWER_STATE_KEY = '_is_drawer_open';\r\n\r\n// Interface for better type safety\r\nexport interface ISidebarLayoutProps {\r\n\tmenu: any[];\r\n\tchildren: React.ReactNode;\r\n\tdashboardPath?: string;\r\n}\r\n\r\nexport const SidebarLayout = (props: ISidebarLayoutProps) => {\r\n\tconst theme = useTheme();\r\n\tconst { currentLanguage } = useLanguage();\r\n\tconst isRtl = useMemo(\r\n\t\t() => currentLanguage?.direction === 'rtl',\r\n\t\t[currentLanguage]\r\n\t);\r\n\t// Enhanced state management\r\n\tconst [forcedOpen, setForcedOpen] = useState(true);\r\n\tconst [hoverOpen, setHoverOpen] = useState(false);\r\n\tconst [isInitialized, setIsInitialized] = useState(false);\r\n\tconst location = useLocation();\r\n\tconst curPathName = useMemo(() => location.pathname, [location.pathname])\r\n\r\n\t// Memoized computed state for actual drawer open status\r\n\tconst isDrawerOpen = forcedOpen || (!forcedOpen && hoverOpen);\r\n\r\n\t// Enhanced drawer control functions with better state management\r\n\tconst handleDrawerOpen = useCallback(() => {\r\n\t\tsetForcedOpen(true);\r\n\t\tsetHoverOpen(false); // Clear hover state when forcing open\r\n\t\ttry {\r\n\t\t\twindow.localStorage.setItem(DRAWER_STATE_KEY, 'true');\r\n\t\t} catch (error) {\r\n\t\t\tconsole.warn('Failed to save drawer state to localStorage:', error);\r\n\t\t}\r\n\t}, []);\r\n\r\n\tconst handleDrawerClose = useCallback(() => {\r\n\t\tsetForcedOpen(false);\r\n\t\twindow.localStorage.setItem('_is_drawer_open', 'false');\r\n\t}, []);\r\n\r\n\tconst [wipSettingsData, setWipSettingsData] = useState<any>(null);\r\n\r\n\tconst getSettings = useCallback(async () => {\r\n\t\t// getToken returns { \"x-token\": string; \"x-timezone\": number }, but API expects string type for \"x-timezone\"\r\n\t\tconst tokenData = getToken();\r\n\t\tconst apiParams = {\r\n\t\t\t'x-token': tokenData['x-token'],\r\n\t\t\t'x-timezone': String(tokenData['x-timezone'])\r\n\t\t};\r\n\t\tconst response = await getV1Settings(apiParams);\r\n\t\t// The \"data\" property may not exist on GetV1SettingsResponses, so check existence safely\r\n\t\tconst data = (response && (response as any)?.data?.settings?.[0]) || null;\r\n\t\tsetWipSettingsData(data);\r\n\t\tlocalStorage.setItem('wip_settings_data', JSON.stringify(data));\r\n\t}, []);\r\n\tuseEffect(() => {\r\n\t\tif(curPathName?.includes('manufacturing')) {\r\n\t\t\tgetSettings();\r\n\t\t}\r\n\t}, [getSettings, curPathName]);\r\n\r\n\tconst [manufacturingSubmenu, setManufacturingSubmenu] = useState<any>(\r\n\t\tprops.menu\r\n\t);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (wipSettingsData && Array.isArray(props?.menu)) {\r\n\t\t\tconsole.log('wipSettingsData: ', wipSettingsData);\r\n\t\t\tconst _new = props.menu.filter((item) => {\r\n\t\t\t\tif (!wipSettingsData?.enable_production_planning) {\r\n\t\t\t\t\treturn item.label !== 'Plans';\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn item;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tsetManufacturingSubmenu(_new);\r\n\t\t}\r\n\t}, [wipSettingsData, props.menu]);\r\n\t// const module_type = '';\r\n\r\n\tconst handleMouseEnter = () => {\r\n\t\tif (!forcedOpen) {\r\n\t\t\tsetOpen(true);\r\n\t\t\twindow.localStorage.setItem(DRAWER_STATE_KEY, 'true');\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleMouseLeave = useCallback(() => {\r\n\t\tif (!forcedOpen && isInitialized) {\r\n\t\t\tsetHoverOpen(false);\r\n\t\t\twindow.localStorage.setItem(DRAWER_STATE_KEY, 'false');\r\n\t\t}\r\n\t}, [forcedOpen, isInitialized]);\r\n\r\n\t// Toggle function for programmatic control\r\n\tconst toggleDrawer = useCallback(() => {\r\n\t\tif (forcedOpen) {\r\n\t\t\thandleDrawerClose();\r\n\t\t} else {\r\n\t\t\thandleDrawerOpen();\r\n\t\t}\r\n\t}, [forcedOpen, handleDrawerClose, handleDrawerOpen]);\r\n\r\n\t// Enhanced initialization with error handling\r\n\tuseEffect(() => {\r\n\t\tconst initializeDrawerState = () => {\r\n\t\t\ttry {\r\n\t\t\t\tif (typeof window !== 'undefined' && window.localStorage) {\r\n\t\t\t\t\tconst savedState = window.localStorage.getItem(DRAWER_STATE_KEY);\r\n\t\t\t\t\tconst shouldBeOpen = savedState === 'true';\r\n\r\n\t\t\t\t\tsetForcedOpen(shouldBeOpen);\r\n\t\t\t\t\tsetHoverOpen(false); // Ensure hover state is reset\r\n\t\t\t\t\tsetIsInitialized(true);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Fallback for environments without localStorage\r\n\t\t\t\t\tsetForcedOpen(true);\r\n\t\t\t\t\tsetIsInitialized(true);\r\n\t\t\t\t}\r\n\t\t\t} catch (error) {\r\n\t\t\t\tconsole.warn('Failed to read drawer state from localStorage:', error);\r\n\t\t\t\t// Fallback to default state\r\n\t\t\t\tsetForcedOpen(true);\r\n\t\t\t\tsetIsInitialized(true);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tinitializeDrawerState();\r\n\t}, []);\r\n\r\n\t// Handle window focus to sync state across tabs\r\n\tuseEffect(() => {\r\n\t\tconst handleWindowFocus = () => {\r\n\t\t\ttry {\r\n\t\t\t\tif (typeof window !== 'undefined' && window.localStorage) {\r\n\t\t\t\t\tconst savedState = window.localStorage.getItem(DRAWER_STATE_KEY);\r\n\t\t\t\t\tconst shouldBeOpen = savedState === 'true';\r\n\r\n\t\t\t\t\tif (shouldBeOpen !== forcedOpen) {\r\n\t\t\t\t\t\tsetForcedOpen(shouldBeOpen);\r\n\t\t\t\t\t\tsetHoverOpen(false);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} catch (error) {\r\n\t\t\t\tconsole.warn('Failed to sync drawer state on window focus:', error);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\twindow.addEventListener('focus', handleWindowFocus);\r\n\r\n\t\treturn () => {\r\n\t\t\twindow.removeEventListener('focus', handleWindowFocus);\r\n\t\t};\r\n\t}, [forcedOpen]);\r\n\r\n\t// Prevent rendering until initialization is complete\r\n\tif (!isInitialized) {\r\n\t\treturn (\r\n\t\t\t<Box\r\n\t\t\t\tsx={{\r\n\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\tminHeight: '100vh',\r\n\t\t\t\t\talignItems: 'center',\r\n\t\t\t\t\tjustifyContent: 'center'\r\n\t\t\t\t}}>\r\n\t\t\t\t{/* Optional loading indicator */}\r\n\t\t\t\t<Box>Loading...</Box>\r\n\t\t\t</Box>\r\n\t\t);\r\n\t}\r\n\r\n\treturn (\r\n\t\t<Box\r\n\t\t\tsx={{\r\n\t\t\t\tdisplay: 'flex',\r\n\t\t\t\tminHeight: '100vh',\r\n\t\t\t\tdirection: isRtl ? 'rtl' : 'ltr'\r\n\t\t\t}}>\r\n\t\t\t<AppBar\r\n\t\t\t\topen={forcedOpen}\r\n\t\t\t\thandleDrawerOpen={handleDrawerOpen}\r\n\t\t\t\thandleDrawerClose={handleDrawerClose}\r\n\t\t\t\ttoggleDrawer={toggleDrawer}\r\n\t\t\t\twidth={drawerWidth}\r\n\t\t\t\tforcedOpen={forcedOpen}\r\n\t\t\t\thoverOpen={hoverOpen}\r\n\t\t\t/>\r\n\r\n\t\t\t<SideBar\r\n\t\t\t\topen={forcedOpen}\r\n\t\t\t\tforcedOpen={forcedOpen}\r\n\t\t\t\thoverOpen={hoverOpen}\r\n\t\t\t\thandleDrawerClose={handleDrawerClose}\r\n\t\t\t\thandleDrawerOpen={handleDrawerOpen}\r\n\t\t\t\ttoggleDrawer={toggleDrawer}\r\n\t\t\t\twidth={drawerWidth}\r\n\t\t\t\ttheme={theme}\r\n\t\t\t\tmenu={manufacturingSubmenu}\r\n\t\t\t\thandleMouseEnter={handleMouseEnter}\r\n\t\t\t\thandleMouseLeave={handleMouseLeave}\r\n\t\t\t\tisInitialized={isInitialized}\r\n\t\t\t\tdashboardPath={props.dashboardPath}\r\n\t\t\t/>\r\n\r\n\t\t\t<ActivityArea\r\n\t\t\t\tisDrawerOpen={isDrawerOpen}\r\n\t\t\t\tdrawerWidth={drawerWidth}\r\n\t\t\t\tforcedOpen={forcedOpen}>\r\n\t\t\t\t{props.children}\r\n\t\t\t</ActivityArea>\r\n\t\t\t<ChatBot />\r\n\t\t</Box>\r\n\t);\r\n};\r\n\r\nexport default SidebarLayout;\r\n"],"names":["useTheme","useLanguage","useMemo","useState","useLocation","useCallback","getToken","getV1Settings","useEffect","jsx","Box","jsxs","AppBar","drawerWidth","SideBar","ActivityArea","ChatBot"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sidebarScreen-DnI42_mr.js","sources":["../../src/layout/sidebarScreen/sidebarScreen.tsx"],"sourcesContent":["import { useEffect, useState, useCallback, useMemo } from 'react';\r\n\r\nimport { useTheme } from '@mui/material/styles';\r\nimport Box from '@mui/material/Box';\r\n\r\nimport AppBar from '../../components/appbar/appbar';\r\nimport SideBar from '../../components/sidebar/sidebar';\r\nimport ActivityArea from '../../components/activityArea/activityArea';\r\nimport ChatBot from '../../components/chat-bot/chat-bot';\r\n\r\nimport drawerWidth from '../../constants/mui.constants';\r\n// const drawerWidth = 240;\r\nimport { useLanguage } from '../../hooks/useLangauge';\r\nimport { getToken } from '@/utils';\r\nimport { getV1Settings } from '../../api-client/api.manufacturing/api';\r\nimport { useLocation } from 'react-router-dom';\r\n\r\n// Local storage key for drawer state\r\nconst DRAWER_STATE_KEY = '_is_drawer_open';\r\n\r\n// Interface for better type safety\r\nexport interface ISidebarLayoutProps {\r\n\tmenu: any[];\r\n\tchildren: React.ReactNode;\r\n\tdashboardPath?: string;\r\n}\r\n\r\nexport const SidebarLayout = (props: ISidebarLayoutProps) => {\r\n\tconst theme = useTheme();\r\n\tconst { currentLanguage } = useLanguage();\r\n\tconst isRtl = useMemo(\r\n\t\t() => currentLanguage?.direction === 'rtl',\r\n\t\t[currentLanguage]\r\n\t);\r\n\t// Enhanced state management\r\n\tconst [forcedOpen, setForcedOpen] = useState(true);\r\n\tconst [hoverOpen, setHoverOpen] = useState(false);\r\n\tconst [isInitialized, setIsInitialized] = useState(false);\r\n\tconst location = useLocation();\r\n\tconst curPathName = useMemo(() => location.pathname, [location.pathname])\r\n\r\n\t// Memoized computed state for actual drawer open status\r\n\tconst isDrawerOpen = forcedOpen || (!forcedOpen && hoverOpen);\r\n\r\n\t// Enhanced drawer control functions with better state management\r\n\tconst handleDrawerOpen = useCallback(() => {\r\n\t\tsetForcedOpen(true);\r\n\t\tsetHoverOpen(false); // Clear hover state when forcing open\r\n\t\ttry {\r\n\t\t\twindow.localStorage.setItem(DRAWER_STATE_KEY, 'true');\r\n\t\t} catch (error) {\r\n\t\t\tconsole.warn('Failed to save drawer state to localStorage:', error);\r\n\t\t}\r\n\t}, []);\r\n\r\n\tconst handleDrawerClose = useCallback(() => {\r\n\t\tsetForcedOpen(false);\r\n\t\twindow.localStorage.setItem('_is_drawer_open', 'false');\r\n\t}, []);\r\n\r\n\tconst [wipSettingsData, setWipSettingsData] = useState<any>(null);\r\n\r\n\tconst getSettings = useCallback(async () => {\r\n\t\t// getToken returns { \"x-token\": string; \"x-timezone\": number }, but API expects string type for \"x-timezone\"\r\n\t\tconst tokenData = getToken();\r\n\t\tconst apiParams = {\r\n\t\t\t'x-token': tokenData['x-token'],\r\n\t\t\t'x-timezone': String(tokenData['x-timezone'])\r\n\t\t};\r\n\t\tconst response = await getV1Settings(apiParams);\r\n\t\t// The \"data\" property may not exist on GetV1SettingsResponses, so check existence safely\r\n\t\tconst data = (response && (response as any)?.data?.settings?.[0]) || null;\r\n\t\tsetWipSettingsData(data);\r\n\t\tlocalStorage.setItem('wip_settings_data', JSON.stringify(data));\r\n\t}, []);\r\n\tuseEffect(() => {\r\n\t\tif(curPathName?.includes('manufacturing')) {\r\n\t\t\tgetSettings();\r\n\t\t}\r\n\t}, [getSettings, curPathName]);\r\n\r\n\tconst [manufacturingSubmenu, setManufacturingSubmenu] = useState<any>(\r\n\t\tprops.menu\r\n\t);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (wipSettingsData && Array.isArray(props?.menu)) {\r\n\t\t\tconsole.log('wipSettingsData: ', wipSettingsData);\r\n\t\t\tconst _new = props.menu.filter((item) => {\r\n\t\t\t\tif (!wipSettingsData?.enable_production_planning) {\r\n\t\t\t\t\treturn item.label !== 'Plans';\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn item;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tsetManufacturingSubmenu(_new);\r\n\t\t}\r\n\t}, [wipSettingsData, props.menu]);\r\n\t// const module_type = '';\r\n\r\n\tconst handleMouseEnter = () => {\r\n\t\tif (!forcedOpen) {\r\n\t\t\tsetOpen(true);\r\n\t\t\twindow.localStorage.setItem(DRAWER_STATE_KEY, 'true');\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleMouseLeave = useCallback(() => {\r\n\t\tif (!forcedOpen && isInitialized) {\r\n\t\t\tsetHoverOpen(false);\r\n\t\t\twindow.localStorage.setItem(DRAWER_STATE_KEY, 'false');\r\n\t\t}\r\n\t}, [forcedOpen, isInitialized]);\r\n\r\n\t// Toggle function for programmatic control\r\n\tconst toggleDrawer = useCallback(() => {\r\n\t\tif (forcedOpen) {\r\n\t\t\thandleDrawerClose();\r\n\t\t} else {\r\n\t\t\thandleDrawerOpen();\r\n\t\t}\r\n\t}, [forcedOpen, handleDrawerClose, handleDrawerOpen]);\r\n\r\n\t// Enhanced initialization with error handling\r\n\tuseEffect(() => {\r\n\t\tconst initializeDrawerState = () => {\r\n\t\t\ttry {\r\n\t\t\t\tif (typeof window !== 'undefined' && window.localStorage) {\r\n\t\t\t\t\tconst savedState = window.localStorage.getItem(DRAWER_STATE_KEY);\r\n\t\t\t\t\tconst shouldBeOpen = savedState === 'true';\r\n\r\n\t\t\t\t\tsetForcedOpen(shouldBeOpen);\r\n\t\t\t\t\tsetHoverOpen(false); // Ensure hover state is reset\r\n\t\t\t\t\tsetIsInitialized(true);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Fallback for environments without localStorage\r\n\t\t\t\t\tsetForcedOpen(true);\r\n\t\t\t\t\tsetIsInitialized(true);\r\n\t\t\t\t}\r\n\t\t\t} catch (error) {\r\n\t\t\t\tconsole.warn('Failed to read drawer state from localStorage:', error);\r\n\t\t\t\t// Fallback to default state\r\n\t\t\t\tsetForcedOpen(true);\r\n\t\t\t\tsetIsInitialized(true);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tinitializeDrawerState();\r\n\t}, []);\r\n\r\n\t// Handle window focus to sync state across tabs\r\n\tuseEffect(() => {\r\n\t\tconst handleWindowFocus = () => {\r\n\t\t\ttry {\r\n\t\t\t\tif (typeof window !== 'undefined' && window.localStorage) {\r\n\t\t\t\t\tconst savedState = window.localStorage.getItem(DRAWER_STATE_KEY);\r\n\t\t\t\t\tconst shouldBeOpen = savedState === 'true';\r\n\r\n\t\t\t\t\tif (shouldBeOpen !== forcedOpen) {\r\n\t\t\t\t\t\tsetForcedOpen(shouldBeOpen);\r\n\t\t\t\t\t\tsetHoverOpen(false);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} catch (error) {\r\n\t\t\t\tconsole.warn('Failed to sync drawer state on window focus:', error);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\twindow.addEventListener('focus', handleWindowFocus);\r\n\r\n\t\treturn () => {\r\n\t\t\twindow.removeEventListener('focus', handleWindowFocus);\r\n\t\t};\r\n\t}, [forcedOpen]);\r\n\r\n\t// Prevent rendering until initialization is complete\r\n\tif (!isInitialized) {\r\n\t\treturn (\r\n\t\t\t<Box\r\n\t\t\t\tsx={{\r\n\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\tminHeight: '100vh',\r\n\t\t\t\t\talignItems: 'center',\r\n\t\t\t\t\tjustifyContent: 'center'\r\n\t\t\t\t}}>\r\n\t\t\t\t{/* Optional loading indicator */}\r\n\t\t\t\t<Box>Loading...</Box>\r\n\t\t\t</Box>\r\n\t\t);\r\n\t}\r\n\r\n\treturn (\r\n\t\t<Box\r\n\t\t\tsx={{\r\n\t\t\t\tdisplay: 'flex',\r\n\t\t\t\tminHeight: '100vh',\r\n\t\t\t\tdirection: isRtl ? 'rtl' : 'ltr'\r\n\t\t\t}}>\r\n\t\t\t<AppBar\r\n\t\t\t\topen={forcedOpen}\r\n\t\t\t\thandleDrawerOpen={handleDrawerOpen}\r\n\t\t\t\thandleDrawerClose={handleDrawerClose}\r\n\t\t\t\ttoggleDrawer={toggleDrawer}\r\n\t\t\t\twidth={drawerWidth}\r\n\t\t\t\tforcedOpen={forcedOpen}\r\n\t\t\t\thoverOpen={hoverOpen}\r\n\t\t\t/>\r\n\r\n\t\t\t<SideBar\r\n\t\t\t\topen={forcedOpen}\r\n\t\t\t\tforcedOpen={forcedOpen}\r\n\t\t\t\thoverOpen={hoverOpen}\r\n\t\t\t\thandleDrawerClose={handleDrawerClose}\r\n\t\t\t\thandleDrawerOpen={handleDrawerOpen}\r\n\t\t\t\ttoggleDrawer={toggleDrawer}\r\n\t\t\t\twidth={drawerWidth}\r\n\t\t\t\ttheme={theme}\r\n\t\t\t\tmenu={manufacturingSubmenu}\r\n\t\t\t\thandleMouseEnter={handleMouseEnter}\r\n\t\t\t\thandleMouseLeave={handleMouseLeave}\r\n\t\t\t\tisInitialized={isInitialized}\r\n\t\t\t\tdashboardPath={props.dashboardPath}\r\n\t\t\t/>\r\n\r\n\t\t\t<ActivityArea\r\n\t\t\t\tisDrawerOpen={isDrawerOpen}\r\n\t\t\t\tdrawerWidth={drawerWidth}\r\n\t\t\t\tforcedOpen={forcedOpen}>\r\n\t\t\t\t{props.children}\r\n\t\t\t</ActivityArea>\r\n\t\t\t<ChatBot />\r\n\t\t</Box>\r\n\t);\r\n};\r\n\r\nexport default SidebarLayout;\r\n"],"names":["useTheme","useLanguage","useMemo","useState","useLocation","useCallback","getToken","getV1Settings","useEffect","jsx","Box","jsxs","AppBar","drawerWidth","SideBar","ActivityArea","ChatBot"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { j as jsxRuntimeExports } from "./jsx-runtime-ClFauRgV.esm.js";
|
|
2
2
|
import { useMemo, useState, useCallback, useEffect } from "react";
|
|
3
|
-
import { u as useTheme, g as Box, a as AppBarWrapper, A as ActivityArea, C as ChatBot } from "./appbar-
|
|
4
|
-
import { S as Sidebar } from "./sidebar-
|
|
3
|
+
import { u as useTheme, g as Box, a as AppBarWrapper, A as ActivityArea, C as ChatBot } from "./appbar-zELMJiqH.esm.js";
|
|
4
|
+
import { S as Sidebar } from "./sidebar-BXrUlb1O.esm.js";
|
|
5
5
|
import { d as drawerWidth } from "./mui.constants-BFBzxaiA.esm.js";
|
|
6
6
|
import { u as useLanguage } from "./useLangauge-DBLsTxEG.esm.js";
|
|
7
7
|
import { ar as getToken } from "./common-Cv12BqWf.esm.js";
|
|
@@ -198,4 +198,4 @@ const SidebarLayout = (props) => {
|
|
|
198
198
|
export {
|
|
199
199
|
SidebarLayout as S
|
|
200
200
|
};
|
|
201
|
-
//# sourceMappingURL=sidebarScreen-
|
|
201
|
+
//# sourceMappingURL=sidebarScreen-NlMW1w_l.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sidebarScreen-DQWQqmvK.esm.js","sources":["../../src/layout/sidebarScreen/sidebarScreen.tsx"],"sourcesContent":["import { useEffect, useState, useCallback, useMemo } from 'react';\r\n\r\nimport { useTheme } from '@mui/material/styles';\r\nimport Box from '@mui/material/Box';\r\n\r\nimport AppBar from '../../components/appbar/appbar';\r\nimport SideBar from '../../components/sidebar/sidebar';\r\nimport ActivityArea from '../../components/activityArea/activityArea';\r\nimport ChatBot from '../../components/chat-bot/chat-bot';\r\n\r\nimport drawerWidth from '../../constants/mui.constants';\r\n// const drawerWidth = 240;\r\nimport { useLanguage } from '../../hooks/useLangauge';\r\nimport { getToken } from '@/utils';\r\nimport { getV1Settings } from '../../api-client/api.manufacturing/api';\r\nimport { useLocation } from 'react-router-dom';\r\n\r\n// Local storage key for drawer state\r\nconst DRAWER_STATE_KEY = '_is_drawer_open';\r\n\r\n// Interface for better type safety\r\nexport interface ISidebarLayoutProps {\r\n\tmenu: any[];\r\n\tchildren: React.ReactNode;\r\n\tdashboardPath?: string;\r\n}\r\n\r\nexport const SidebarLayout = (props: ISidebarLayoutProps) => {\r\n\tconst theme = useTheme();\r\n\tconst { currentLanguage } = useLanguage();\r\n\tconst isRtl = useMemo(\r\n\t\t() => currentLanguage?.direction === 'rtl',\r\n\t\t[currentLanguage]\r\n\t);\r\n\t// Enhanced state management\r\n\tconst [forcedOpen, setForcedOpen] = useState(true);\r\n\tconst [hoverOpen, setHoverOpen] = useState(false);\r\n\tconst [isInitialized, setIsInitialized] = useState(false);\r\n\tconst location = useLocation();\r\n\tconst curPathName = useMemo(() => location.pathname, [location.pathname])\r\n\r\n\t// Memoized computed state for actual drawer open status\r\n\tconst isDrawerOpen = forcedOpen || (!forcedOpen && hoverOpen);\r\n\r\n\t// Enhanced drawer control functions with better state management\r\n\tconst handleDrawerOpen = useCallback(() => {\r\n\t\tsetForcedOpen(true);\r\n\t\tsetHoverOpen(false); // Clear hover state when forcing open\r\n\t\ttry {\r\n\t\t\twindow.localStorage.setItem(DRAWER_STATE_KEY, 'true');\r\n\t\t} catch (error) {\r\n\t\t\tconsole.warn('Failed to save drawer state to localStorage:', error);\r\n\t\t}\r\n\t}, []);\r\n\r\n\tconst handleDrawerClose = useCallback(() => {\r\n\t\tsetForcedOpen(false);\r\n\t\twindow.localStorage.setItem('_is_drawer_open', 'false');\r\n\t}, []);\r\n\r\n\tconst [wipSettingsData, setWipSettingsData] = useState<any>(null);\r\n\r\n\tconst getSettings = useCallback(async () => {\r\n\t\t// getToken returns { \"x-token\": string; \"x-timezone\": number }, but API expects string type for \"x-timezone\"\r\n\t\tconst tokenData = getToken();\r\n\t\tconst apiParams = {\r\n\t\t\t'x-token': tokenData['x-token'],\r\n\t\t\t'x-timezone': String(tokenData['x-timezone'])\r\n\t\t};\r\n\t\tconst response = await getV1Settings(apiParams);\r\n\t\t// The \"data\" property may not exist on GetV1SettingsResponses, so check existence safely\r\n\t\tconst data = (response && (response as any)?.data?.settings?.[0]) || null;\r\n\t\tsetWipSettingsData(data);\r\n\t\tlocalStorage.setItem('wip_settings_data', JSON.stringify(data));\r\n\t}, []);\r\n\tuseEffect(() => {\r\n\t\tif(curPathName?.includes('manufacturing')) {\r\n\t\t\tgetSettings();\r\n\t\t}\r\n\t}, [getSettings, curPathName]);\r\n\r\n\tconst [manufacturingSubmenu, setManufacturingSubmenu] = useState<any>(\r\n\t\tprops.menu\r\n\t);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (wipSettingsData && Array.isArray(props?.menu)) {\r\n\t\t\tconsole.log('wipSettingsData: ', wipSettingsData);\r\n\t\t\tconst _new = props.menu.filter((item) => {\r\n\t\t\t\tif (!wipSettingsData?.enable_production_planning) {\r\n\t\t\t\t\treturn item.label !== 'Plans';\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn item;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tsetManufacturingSubmenu(_new);\r\n\t\t}\r\n\t}, [wipSettingsData, props.menu]);\r\n\t// const module_type = '';\r\n\r\n\tconst handleMouseEnter = () => {\r\n\t\tif (!forcedOpen) {\r\n\t\t\tsetOpen(true);\r\n\t\t\twindow.localStorage.setItem(DRAWER_STATE_KEY, 'true');\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleMouseLeave = useCallback(() => {\r\n\t\tif (!forcedOpen && isInitialized) {\r\n\t\t\tsetHoverOpen(false);\r\n\t\t\twindow.localStorage.setItem(DRAWER_STATE_KEY, 'false');\r\n\t\t}\r\n\t}, [forcedOpen, isInitialized]);\r\n\r\n\t// Toggle function for programmatic control\r\n\tconst toggleDrawer = useCallback(() => {\r\n\t\tif (forcedOpen) {\r\n\t\t\thandleDrawerClose();\r\n\t\t} else {\r\n\t\t\thandleDrawerOpen();\r\n\t\t}\r\n\t}, [forcedOpen, handleDrawerClose, handleDrawerOpen]);\r\n\r\n\t// Enhanced initialization with error handling\r\n\tuseEffect(() => {\r\n\t\tconst initializeDrawerState = () => {\r\n\t\t\ttry {\r\n\t\t\t\tif (typeof window !== 'undefined' && window.localStorage) {\r\n\t\t\t\t\tconst savedState = window.localStorage.getItem(DRAWER_STATE_KEY);\r\n\t\t\t\t\tconst shouldBeOpen = savedState === 'true';\r\n\r\n\t\t\t\t\tsetForcedOpen(shouldBeOpen);\r\n\t\t\t\t\tsetHoverOpen(false); // Ensure hover state is reset\r\n\t\t\t\t\tsetIsInitialized(true);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Fallback for environments without localStorage\r\n\t\t\t\t\tsetForcedOpen(true);\r\n\t\t\t\t\tsetIsInitialized(true);\r\n\t\t\t\t}\r\n\t\t\t} catch (error) {\r\n\t\t\t\tconsole.warn('Failed to read drawer state from localStorage:', error);\r\n\t\t\t\t// Fallback to default state\r\n\t\t\t\tsetForcedOpen(true);\r\n\t\t\t\tsetIsInitialized(true);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tinitializeDrawerState();\r\n\t}, []);\r\n\r\n\t// Handle window focus to sync state across tabs\r\n\tuseEffect(() => {\r\n\t\tconst handleWindowFocus = () => {\r\n\t\t\ttry {\r\n\t\t\t\tif (typeof window !== 'undefined' && window.localStorage) {\r\n\t\t\t\t\tconst savedState = window.localStorage.getItem(DRAWER_STATE_KEY);\r\n\t\t\t\t\tconst shouldBeOpen = savedState === 'true';\r\n\r\n\t\t\t\t\tif (shouldBeOpen !== forcedOpen) {\r\n\t\t\t\t\t\tsetForcedOpen(shouldBeOpen);\r\n\t\t\t\t\t\tsetHoverOpen(false);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} catch (error) {\r\n\t\t\t\tconsole.warn('Failed to sync drawer state on window focus:', error);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\twindow.addEventListener('focus', handleWindowFocus);\r\n\r\n\t\treturn () => {\r\n\t\t\twindow.removeEventListener('focus', handleWindowFocus);\r\n\t\t};\r\n\t}, [forcedOpen]);\r\n\r\n\t// Prevent rendering until initialization is complete\r\n\tif (!isInitialized) {\r\n\t\treturn (\r\n\t\t\t<Box\r\n\t\t\t\tsx={{\r\n\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\tminHeight: '100vh',\r\n\t\t\t\t\talignItems: 'center',\r\n\t\t\t\t\tjustifyContent: 'center'\r\n\t\t\t\t}}>\r\n\t\t\t\t{/* Optional loading indicator */}\r\n\t\t\t\t<Box>Loading...</Box>\r\n\t\t\t</Box>\r\n\t\t);\r\n\t}\r\n\r\n\treturn (\r\n\t\t<Box\r\n\t\t\tsx={{\r\n\t\t\t\tdisplay: 'flex',\r\n\t\t\t\tminHeight: '100vh',\r\n\t\t\t\tdirection: isRtl ? 'rtl' : 'ltr'\r\n\t\t\t}}>\r\n\t\t\t<AppBar\r\n\t\t\t\topen={forcedOpen}\r\n\t\t\t\thandleDrawerOpen={handleDrawerOpen}\r\n\t\t\t\thandleDrawerClose={handleDrawerClose}\r\n\t\t\t\ttoggleDrawer={toggleDrawer}\r\n\t\t\t\twidth={drawerWidth}\r\n\t\t\t\tforcedOpen={forcedOpen}\r\n\t\t\t\thoverOpen={hoverOpen}\r\n\t\t\t/>\r\n\r\n\t\t\t<SideBar\r\n\t\t\t\topen={forcedOpen}\r\n\t\t\t\tforcedOpen={forcedOpen}\r\n\t\t\t\thoverOpen={hoverOpen}\r\n\t\t\t\thandleDrawerClose={handleDrawerClose}\r\n\t\t\t\thandleDrawerOpen={handleDrawerOpen}\r\n\t\t\t\ttoggleDrawer={toggleDrawer}\r\n\t\t\t\twidth={drawerWidth}\r\n\t\t\t\ttheme={theme}\r\n\t\t\t\tmenu={manufacturingSubmenu}\r\n\t\t\t\thandleMouseEnter={handleMouseEnter}\r\n\t\t\t\thandleMouseLeave={handleMouseLeave}\r\n\t\t\t\tisInitialized={isInitialized}\r\n\t\t\t\tdashboardPath={props.dashboardPath}\r\n\t\t\t/>\r\n\r\n\t\t\t<ActivityArea\r\n\t\t\t\tisDrawerOpen={isDrawerOpen}\r\n\t\t\t\tdrawerWidth={drawerWidth}\r\n\t\t\t\tforcedOpen={forcedOpen}>\r\n\t\t\t\t{props.children}\r\n\t\t\t</ActivityArea>\r\n\t\t\t<ChatBot />\r\n\t\t</Box>\r\n\t);\r\n};\r\n\r\nexport default SidebarLayout;\r\n"],"names":["jsx","jsxs","AppBar","SideBar"],"mappings":";;;;;;;;;AAkBA,MAAM,mBAAmB;AASlB,MAAM,gBAAgB,CAAC,UAA+B;AAC5D,QAAM,QAAQ,SAAA;AACd,QAAM,EAAE,gBAAA,IAAoB,YAAA;AAC5B,QAAM,QAAQ;AAAA,IACb,OAAM,mDAAiB,eAAc;AAAA,IACrC,CAAC,eAAe;AAAA,EAAA;AAGjB,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,IAAI;AACjD,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAChD,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAS,KAAK;AACxD,QAAM,WAAW,YAAA;AACjB,QAAM,cAAc,QAAQ,MAAM,SAAS,UAAU,CAAC,SAAS,QAAQ,CAAC;AAGxE,QAAM,eAAe,cAAe,CAAC,cAAc;AAGnD,QAAM,mBAAmB,YAAY,MAAM;AAC1C,kBAAc,IAAI;AAClB,iBAAa,KAAK;AAClB,QAAI;AACH,aAAO,aAAa,QAAQ,kBAAkB,MAAM;AAAA,IACrD,SAAS,OAAO;AACf,cAAQ,KAAK,gDAAgD,KAAK;AAAA,IACnE;AAAA,EACD,GAAG,CAAA,CAAE;AAEL,QAAM,oBAAoB,YAAY,MAAM;AAC3C,kBAAc,KAAK;AACnB,WAAO,aAAa,QAAQ,mBAAmB,OAAO;AAAA,EACvD,GAAG,CAAA,CAAE;AAEL,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAc,IAAI;AAEhE,QAAM,cAAc,YAAY,YAAY;;AAE3C,UAAM,YAAY,SAAA;AAClB,UAAM,YAAY;AAAA,MACjB,WAAW,UAAU,SAAS;AAAA,MAC9B,cAAc,OAAO,UAAU,YAAY,CAAC;AAAA,IAAA;AAE7C,UAAM,WAAW,MAAM,cAAc,SAAS;AAE9C,UAAM,OAAQ,cAAa,gDAAkB,SAAlB,mBAAwB,aAAxB,mBAAmC,OAAO;AACrE,uBAAmB,IAAI;AACvB,iBAAa,QAAQ,qBAAqB,KAAK,UAAU,IAAI,CAAC;AAAA,EAC/D,GAAG,CAAA,CAAE;AACL,YAAU,MAAM;AACf,QAAG,2CAAa,SAAS,kBAAkB;AAC1C,kBAAA;AAAA,IACD;AAAA,EACD,GAAG,CAAC,aAAa,WAAW,CAAC;AAE7B,QAAM,CAAC,sBAAsB,uBAAuB,IAAI;AAAA,IACvD,MAAM;AAAA,EAAA;AAGP,YAAU,MAAM;AACf,QAAI,mBAAmB,MAAM,QAAQ,+BAAO,IAAI,GAAG;AAClD,cAAQ,IAAI,qBAAqB,eAAe;AAChD,YAAM,OAAO,MAAM,KAAK,OAAO,CAAC,SAAS;AACxC,YAAI,EAAC,mDAAiB,6BAA4B;AACjD,iBAAO,KAAK,UAAU;AAAA,QACvB,OAAO;AACN,iBAAO;AAAA,QACR;AAAA,MACD,CAAC;AACD,8BAAwB,IAAI;AAAA,IAC7B;AAAA,EACD,GAAG,CAAC,iBAAiB,MAAM,IAAI,CAAC;AAGhC,QAAM,mBAAmB,MAAM;AAC9B,QAAI,CAAC,YAAY;AAChB,cAAQ,IAAI;AACZ,aAAO,aAAa,QAAQ,kBAAkB,MAAM;AAAA,IACrD;AAAA,EACD;AAEA,QAAM,mBAAmB,YAAY,MAAM;AAC1C,QAAI,CAAC,cAAc,eAAe;AACjC,mBAAa,KAAK;AAClB,aAAO,aAAa,QAAQ,kBAAkB,OAAO;AAAA,IACtD;AAAA,EACD,GAAG,CAAC,YAAY,aAAa,CAAC;AAG9B,QAAM,eAAe,YAAY,MAAM;AACtC,QAAI,YAAY;AACf,wBAAA;AAAA,IACD,OAAO;AACN,uBAAA;AAAA,IACD;AAAA,EACD,GAAG,CAAC,YAAY,mBAAmB,gBAAgB,CAAC;AAGpD,YAAU,MAAM;AACf,UAAM,wBAAwB,MAAM;AACnC,UAAI;AACH,YAAI,OAAO,WAAW,eAAe,OAAO,cAAc;AACzD,gBAAM,aAAa,OAAO,aAAa,QAAQ,gBAAgB;AAC/D,gBAAM,eAAe,eAAe;AAEpC,wBAAc,YAAY;AAC1B,uBAAa,KAAK;AAClB,2BAAiB,IAAI;AAAA,QACtB,OAAO;AAEN,wBAAc,IAAI;AAClB,2BAAiB,IAAI;AAAA,QACtB;AAAA,MACD,SAAS,OAAO;AACf,gBAAQ,KAAK,kDAAkD,KAAK;AAEpE,sBAAc,IAAI;AAClB,yBAAiB,IAAI;AAAA,MACtB;AAAA,IACD;AAEA,0BAAA;AAAA,EACD,GAAG,CAAA,CAAE;AAGL,YAAU,MAAM;AACf,UAAM,oBAAoB,MAAM;AAC/B,UAAI;AACH,YAAI,OAAO,WAAW,eAAe,OAAO,cAAc;AACzD,gBAAM,aAAa,OAAO,aAAa,QAAQ,gBAAgB;AAC/D,gBAAM,eAAe,eAAe;AAEpC,cAAI,iBAAiB,YAAY;AAChC,0BAAc,YAAY;AAC1B,yBAAa,KAAK;AAAA,UACnB;AAAA,QACD;AAAA,MACD,SAAS,OAAO;AACf,gBAAQ,KAAK,gDAAgD,KAAK;AAAA,MACnE;AAAA,IACD;AAEA,WAAO,iBAAiB,SAAS,iBAAiB;AAElD,WAAO,MAAM;AACZ,aAAO,oBAAoB,SAAS,iBAAiB;AAAA,IACtD;AAAA,EACD,GAAG,CAAC,UAAU,CAAC;AAGf,MAAI,CAAC,eAAe;AACnB,WACCA,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACA,IAAI;AAAA,UACH,SAAS;AAAA,UACT,WAAW;AAAA,UACX,YAAY;AAAA,UACZ,gBAAgB;AAAA,QAAA;AAAA,QAGjB,UAAAA,kCAAAA,IAAC,OAAI,UAAA,aAAA,CAAU;AAAA,MAAA;AAAA,IAAA;AAAA,EAGlB;AAEA,SACCC,kCAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACA,IAAI;AAAA,QACH,SAAS;AAAA,QACT,WAAW;AAAA,QACX,WAAW,QAAQ,QAAQ;AAAA,MAAA;AAAA,MAE5B,UAAA;AAAA,QAAAD,kCAAAA;AAAAA,UAACE;AAAAA,UAAA;AAAA,YACA,MAAM;AAAA,YACN;AAAA,YACA;AAAA,YACA;AAAA,YACA,OAAO;AAAA,YACP;AAAA,YACA;AAAA,UAAA;AAAA,QAAA;AAAA,QAGDF,kCAAAA;AAAAA,UAACG;AAAAA,UAAA;AAAA,YACA,MAAM;AAAA,YACN;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,OAAO;AAAA,YACP;AAAA,YACA,MAAM;AAAA,YACN;AAAA,YACA;AAAA,YACA;AAAA,YACA,eAAe,MAAM;AAAA,UAAA;AAAA,QAAA;AAAA,QAGtBH,kCAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACC,UAAA,MAAM;AAAA,UAAA;AAAA,QAAA;AAAA,8CAEP,SAAA,CAAA,CAAQ;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGZ;"}
|
|
1
|
+
{"version":3,"file":"sidebarScreen-NlMW1w_l.esm.js","sources":["../../src/layout/sidebarScreen/sidebarScreen.tsx"],"sourcesContent":["import { useEffect, useState, useCallback, useMemo } from 'react';\r\n\r\nimport { useTheme } from '@mui/material/styles';\r\nimport Box from '@mui/material/Box';\r\n\r\nimport AppBar from '../../components/appbar/appbar';\r\nimport SideBar from '../../components/sidebar/sidebar';\r\nimport ActivityArea from '../../components/activityArea/activityArea';\r\nimport ChatBot from '../../components/chat-bot/chat-bot';\r\n\r\nimport drawerWidth from '../../constants/mui.constants';\r\n// const drawerWidth = 240;\r\nimport { useLanguage } from '../../hooks/useLangauge';\r\nimport { getToken } from '@/utils';\r\nimport { getV1Settings } from '../../api-client/api.manufacturing/api';\r\nimport { useLocation } from 'react-router-dom';\r\n\r\n// Local storage key for drawer state\r\nconst DRAWER_STATE_KEY = '_is_drawer_open';\r\n\r\n// Interface for better type safety\r\nexport interface ISidebarLayoutProps {\r\n\tmenu: any[];\r\n\tchildren: React.ReactNode;\r\n\tdashboardPath?: string;\r\n}\r\n\r\nexport const SidebarLayout = (props: ISidebarLayoutProps) => {\r\n\tconst theme = useTheme();\r\n\tconst { currentLanguage } = useLanguage();\r\n\tconst isRtl = useMemo(\r\n\t\t() => currentLanguage?.direction === 'rtl',\r\n\t\t[currentLanguage]\r\n\t);\r\n\t// Enhanced state management\r\n\tconst [forcedOpen, setForcedOpen] = useState(true);\r\n\tconst [hoverOpen, setHoverOpen] = useState(false);\r\n\tconst [isInitialized, setIsInitialized] = useState(false);\r\n\tconst location = useLocation();\r\n\tconst curPathName = useMemo(() => location.pathname, [location.pathname])\r\n\r\n\t// Memoized computed state for actual drawer open status\r\n\tconst isDrawerOpen = forcedOpen || (!forcedOpen && hoverOpen);\r\n\r\n\t// Enhanced drawer control functions with better state management\r\n\tconst handleDrawerOpen = useCallback(() => {\r\n\t\tsetForcedOpen(true);\r\n\t\tsetHoverOpen(false); // Clear hover state when forcing open\r\n\t\ttry {\r\n\t\t\twindow.localStorage.setItem(DRAWER_STATE_KEY, 'true');\r\n\t\t} catch (error) {\r\n\t\t\tconsole.warn('Failed to save drawer state to localStorage:', error);\r\n\t\t}\r\n\t}, []);\r\n\r\n\tconst handleDrawerClose = useCallback(() => {\r\n\t\tsetForcedOpen(false);\r\n\t\twindow.localStorage.setItem('_is_drawer_open', 'false');\r\n\t}, []);\r\n\r\n\tconst [wipSettingsData, setWipSettingsData] = useState<any>(null);\r\n\r\n\tconst getSettings = useCallback(async () => {\r\n\t\t// getToken returns { \"x-token\": string; \"x-timezone\": number }, but API expects string type for \"x-timezone\"\r\n\t\tconst tokenData = getToken();\r\n\t\tconst apiParams = {\r\n\t\t\t'x-token': tokenData['x-token'],\r\n\t\t\t'x-timezone': String(tokenData['x-timezone'])\r\n\t\t};\r\n\t\tconst response = await getV1Settings(apiParams);\r\n\t\t// The \"data\" property may not exist on GetV1SettingsResponses, so check existence safely\r\n\t\tconst data = (response && (response as any)?.data?.settings?.[0]) || null;\r\n\t\tsetWipSettingsData(data);\r\n\t\tlocalStorage.setItem('wip_settings_data', JSON.stringify(data));\r\n\t}, []);\r\n\tuseEffect(() => {\r\n\t\tif(curPathName?.includes('manufacturing')) {\r\n\t\t\tgetSettings();\r\n\t\t}\r\n\t}, [getSettings, curPathName]);\r\n\r\n\tconst [manufacturingSubmenu, setManufacturingSubmenu] = useState<any>(\r\n\t\tprops.menu\r\n\t);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (wipSettingsData && Array.isArray(props?.menu)) {\r\n\t\t\tconsole.log('wipSettingsData: ', wipSettingsData);\r\n\t\t\tconst _new = props.menu.filter((item) => {\r\n\t\t\t\tif (!wipSettingsData?.enable_production_planning) {\r\n\t\t\t\t\treturn item.label !== 'Plans';\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn item;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tsetManufacturingSubmenu(_new);\r\n\t\t}\r\n\t}, [wipSettingsData, props.menu]);\r\n\t// const module_type = '';\r\n\r\n\tconst handleMouseEnter = () => {\r\n\t\tif (!forcedOpen) {\r\n\t\t\tsetOpen(true);\r\n\t\t\twindow.localStorage.setItem(DRAWER_STATE_KEY, 'true');\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleMouseLeave = useCallback(() => {\r\n\t\tif (!forcedOpen && isInitialized) {\r\n\t\t\tsetHoverOpen(false);\r\n\t\t\twindow.localStorage.setItem(DRAWER_STATE_KEY, 'false');\r\n\t\t}\r\n\t}, [forcedOpen, isInitialized]);\r\n\r\n\t// Toggle function for programmatic control\r\n\tconst toggleDrawer = useCallback(() => {\r\n\t\tif (forcedOpen) {\r\n\t\t\thandleDrawerClose();\r\n\t\t} else {\r\n\t\t\thandleDrawerOpen();\r\n\t\t}\r\n\t}, [forcedOpen, handleDrawerClose, handleDrawerOpen]);\r\n\r\n\t// Enhanced initialization with error handling\r\n\tuseEffect(() => {\r\n\t\tconst initializeDrawerState = () => {\r\n\t\t\ttry {\r\n\t\t\t\tif (typeof window !== 'undefined' && window.localStorage) {\r\n\t\t\t\t\tconst savedState = window.localStorage.getItem(DRAWER_STATE_KEY);\r\n\t\t\t\t\tconst shouldBeOpen = savedState === 'true';\r\n\r\n\t\t\t\t\tsetForcedOpen(shouldBeOpen);\r\n\t\t\t\t\tsetHoverOpen(false); // Ensure hover state is reset\r\n\t\t\t\t\tsetIsInitialized(true);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Fallback for environments without localStorage\r\n\t\t\t\t\tsetForcedOpen(true);\r\n\t\t\t\t\tsetIsInitialized(true);\r\n\t\t\t\t}\r\n\t\t\t} catch (error) {\r\n\t\t\t\tconsole.warn('Failed to read drawer state from localStorage:', error);\r\n\t\t\t\t// Fallback to default state\r\n\t\t\t\tsetForcedOpen(true);\r\n\t\t\t\tsetIsInitialized(true);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tinitializeDrawerState();\r\n\t}, []);\r\n\r\n\t// Handle window focus to sync state across tabs\r\n\tuseEffect(() => {\r\n\t\tconst handleWindowFocus = () => {\r\n\t\t\ttry {\r\n\t\t\t\tif (typeof window !== 'undefined' && window.localStorage) {\r\n\t\t\t\t\tconst savedState = window.localStorage.getItem(DRAWER_STATE_KEY);\r\n\t\t\t\t\tconst shouldBeOpen = savedState === 'true';\r\n\r\n\t\t\t\t\tif (shouldBeOpen !== forcedOpen) {\r\n\t\t\t\t\t\tsetForcedOpen(shouldBeOpen);\r\n\t\t\t\t\t\tsetHoverOpen(false);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} catch (error) {\r\n\t\t\t\tconsole.warn('Failed to sync drawer state on window focus:', error);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\twindow.addEventListener('focus', handleWindowFocus);\r\n\r\n\t\treturn () => {\r\n\t\t\twindow.removeEventListener('focus', handleWindowFocus);\r\n\t\t};\r\n\t}, [forcedOpen]);\r\n\r\n\t// Prevent rendering until initialization is complete\r\n\tif (!isInitialized) {\r\n\t\treturn (\r\n\t\t\t<Box\r\n\t\t\t\tsx={{\r\n\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\tminHeight: '100vh',\r\n\t\t\t\t\talignItems: 'center',\r\n\t\t\t\t\tjustifyContent: 'center'\r\n\t\t\t\t}}>\r\n\t\t\t\t{/* Optional loading indicator */}\r\n\t\t\t\t<Box>Loading...</Box>\r\n\t\t\t</Box>\r\n\t\t);\r\n\t}\r\n\r\n\treturn (\r\n\t\t<Box\r\n\t\t\tsx={{\r\n\t\t\t\tdisplay: 'flex',\r\n\t\t\t\tminHeight: '100vh',\r\n\t\t\t\tdirection: isRtl ? 'rtl' : 'ltr'\r\n\t\t\t}}>\r\n\t\t\t<AppBar\r\n\t\t\t\topen={forcedOpen}\r\n\t\t\t\thandleDrawerOpen={handleDrawerOpen}\r\n\t\t\t\thandleDrawerClose={handleDrawerClose}\r\n\t\t\t\ttoggleDrawer={toggleDrawer}\r\n\t\t\t\twidth={drawerWidth}\r\n\t\t\t\tforcedOpen={forcedOpen}\r\n\t\t\t\thoverOpen={hoverOpen}\r\n\t\t\t/>\r\n\r\n\t\t\t<SideBar\r\n\t\t\t\topen={forcedOpen}\r\n\t\t\t\tforcedOpen={forcedOpen}\r\n\t\t\t\thoverOpen={hoverOpen}\r\n\t\t\t\thandleDrawerClose={handleDrawerClose}\r\n\t\t\t\thandleDrawerOpen={handleDrawerOpen}\r\n\t\t\t\ttoggleDrawer={toggleDrawer}\r\n\t\t\t\twidth={drawerWidth}\r\n\t\t\t\ttheme={theme}\r\n\t\t\t\tmenu={manufacturingSubmenu}\r\n\t\t\t\thandleMouseEnter={handleMouseEnter}\r\n\t\t\t\thandleMouseLeave={handleMouseLeave}\r\n\t\t\t\tisInitialized={isInitialized}\r\n\t\t\t\tdashboardPath={props.dashboardPath}\r\n\t\t\t/>\r\n\r\n\t\t\t<ActivityArea\r\n\t\t\t\tisDrawerOpen={isDrawerOpen}\r\n\t\t\t\tdrawerWidth={drawerWidth}\r\n\t\t\t\tforcedOpen={forcedOpen}>\r\n\t\t\t\t{props.children}\r\n\t\t\t</ActivityArea>\r\n\t\t\t<ChatBot />\r\n\t\t</Box>\r\n\t);\r\n};\r\n\r\nexport default SidebarLayout;\r\n"],"names":["jsx","jsxs","AppBar","SideBar"],"mappings":"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"}
|
|
@@ -3,8 +3,8 @@ const jsxRuntime = require("./jsx-runtime-B6vEU3CM.js");
|
|
|
3
3
|
const reactHookForm = require("react-hook-form");
|
|
4
4
|
const identifier = require("./identifier-B8P9ZGxG.js");
|
|
5
5
|
const useAuth = require("./useAuth-C0YAAvbk.js");
|
|
6
|
-
const android12Switch = require("./android-12-switch-
|
|
7
|
-
const appbar = require("./appbar-
|
|
6
|
+
const android12Switch = require("./android-12-switch-PEYCUiaq.js");
|
|
7
|
+
const appbar = require("./appbar-rUKxg-G7.js");
|
|
8
8
|
const React = require("react");
|
|
9
9
|
const DatePicker = require("react-datepicker");
|
|
10
10
|
;/* empty css */
|
|
@@ -22,7 +22,7 @@ const d3 = require("d3");
|
|
|
22
22
|
const marked = require("marked");
|
|
23
23
|
const api = require("./api-DCobO3lc.js");
|
|
24
24
|
const Yup = require("yup");
|
|
25
|
-
const formBuilderDeconversion = require("./form-builder-deconversion-
|
|
25
|
+
const formBuilderDeconversion = require("./form-builder-deconversion-BcmOEnG9.js");
|
|
26
26
|
const trash = require("./trash-CUP1jXNo.js");
|
|
27
27
|
const notistack = require("notistack");
|
|
28
28
|
const reactRedux = require("react-redux");
|
|
@@ -47,7 +47,7 @@ const actionBar = require("./action-bar-DMv6sqDP.js");
|
|
|
47
47
|
const DataEditor = require("@glideapps/glide-data-grid");
|
|
48
48
|
const glideDataGridCells = require("@glideapps/glide-data-grid-cells");
|
|
49
49
|
const ReactDOM = require("react-dom");
|
|
50
|
-
const sidebar = require("./sidebar-
|
|
50
|
+
const sidebar = require("./sidebar-BbJUAEIV.js");
|
|
51
51
|
const materialReactTable = require("material-react-table");
|
|
52
52
|
const _$1 = require("lodash");
|
|
53
53
|
const useAccountSetting = require("./useAccountSetting-zW9NjEgH.js");
|
|
@@ -7550,6 +7550,7 @@ const InlineEditFields = ({
|
|
|
7550
7550
|
await validationSchema2.validateAt(
|
|
7551
7551
|
column.id,
|
|
7552
7552
|
{
|
|
7553
|
+
// ...row._valuesCache,
|
|
7553
7554
|
[column.id]: value
|
|
7554
7555
|
},
|
|
7555
7556
|
{
|
|
@@ -7680,7 +7681,8 @@ const InlineEditFields = ({
|
|
|
7680
7681
|
isInternal: (fieldProperties == null ? void 0 : fieldProperties.isInternal) || !(fieldProperties == null ? void 0 : fieldProperties.apiType),
|
|
7681
7682
|
multiple: fieldProperties == null ? void 0 : fieldProperties.is_multiple,
|
|
7682
7683
|
value: (fieldProperties == null ? void 0 : fieldProperties.is_multiple) ? Array.isArray(inputValue == null ? void 0 : inputValue[column.id]) ? inputValue == null ? void 0 : inputValue[column.id] : [] : inputValue == null ? void 0 : inputValue[column.id],
|
|
7683
|
-
getSelectedData: (row2) => getSelectedData(fieldProperties == null ? void 0 : fieldProperties.field_name, row2)
|
|
7684
|
+
getSelectedData: (row2) => getSelectedData(fieldProperties == null ? void 0 : fieldProperties.field_name, row2),
|
|
7685
|
+
disabled: fieldDisbled
|
|
7684
7686
|
}
|
|
7685
7687
|
),
|
|
7686
7688
|
(errors == null ? void 0 : errors[column.id]) && /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(useAuth.Typography, { color: "theme.error.600", type: "s5", children: errors == null ? void 0 : errors[column.id] })
|
|
@@ -7698,7 +7700,7 @@ const InlineEditFields = ({
|
|
|
7698
7700
|
helperText: errors == null ? void 0 : errors[column.id],
|
|
7699
7701
|
format: fieldProperties == null ? void 0 : fieldProperties.dateFormat,
|
|
7700
7702
|
placeholder: (fieldProperties == null ? void 0 : fieldProperties.placeholder) || (fieldProperties == null ? void 0 : fieldProperties.dateFormat),
|
|
7701
|
-
value: dayjs(row._valuesCache[column.id]).isValid() ? dayjs(row._valuesCache[column.id]) :
|
|
7703
|
+
value: row._valuesCache[column.id] && dayjs(row._valuesCache[column.id]).isValid() ? dayjs(row._valuesCache[column.id]) : null,
|
|
7702
7704
|
disabled: fieldDisbled,
|
|
7703
7705
|
minDate: fieldProperties == null ? void 0 : fieldProperties.min_date,
|
|
7704
7706
|
maxDate: fieldProperties == null ? void 0 : fieldProperties.max_date
|
|
@@ -7959,6 +7961,21 @@ const MaterialEditableTable = React.memo(({
|
|
|
7959
7961
|
/^(https?:\/\/)?((([a-zA-Z0-9_-]+\.)+[a-zA-Z]{2,})|localhost)(:\d{2,5})?(\/[a-zA-Z0-9#_-]+\/?)*(\?[a-zA-Z0-9&=_-]+)?(#\S+)?$/,
|
|
7960
7962
|
{ excludeEmptyString: true, message: "Please enter valid URL." }
|
|
7961
7963
|
);
|
|
7964
|
+
case "date":
|
|
7965
|
+
case "date_time":
|
|
7966
|
+
case "time":
|
|
7967
|
+
return Yup__namespace.date().nullable().transform((value, originalValue) => {
|
|
7968
|
+
if (originalValue === "" || originalValue === null || originalValue === void 0) {
|
|
7969
|
+
return null;
|
|
7970
|
+
}
|
|
7971
|
+
if (originalValue && typeof originalValue === "object" && "toDate" in originalValue) {
|
|
7972
|
+
return originalValue.toDate();
|
|
7973
|
+
}
|
|
7974
|
+
return value;
|
|
7975
|
+
}).typeError("Valid date is required");
|
|
7976
|
+
case "file":
|
|
7977
|
+
case "image":
|
|
7978
|
+
return Yup__namespace.mixed().nullable();
|
|
7962
7979
|
default:
|
|
7963
7980
|
return Yup__namespace.string();
|
|
7964
7981
|
}
|
|
@@ -8114,6 +8131,23 @@ const MaterialEditableTable = React.memo(({
|
|
|
8114
8131
|
validation.testFn
|
|
8115
8132
|
);
|
|
8116
8133
|
break;
|
|
8134
|
+
case "validate":
|
|
8135
|
+
if (typeof validation.callback === "function") {
|
|
8136
|
+
vld = vld.test(
|
|
8137
|
+
validation.name || "custom-validate",
|
|
8138
|
+
validation.msg_en || "Validation failed",
|
|
8139
|
+
function(value) {
|
|
8140
|
+
var _a2;
|
|
8141
|
+
const rowObj = ((_a2 = this.options.context) == null ? void 0 : _a2.row) || {
|
|
8142
|
+
original: this.parent,
|
|
8143
|
+
origin: this.parent,
|
|
8144
|
+
_valuesCache: this.parent
|
|
8145
|
+
};
|
|
8146
|
+
return validation.callback(value, this.parent, rowObj);
|
|
8147
|
+
}
|
|
8148
|
+
);
|
|
8149
|
+
}
|
|
8150
|
+
break;
|
|
8117
8151
|
case "when":
|
|
8118
8152
|
return vld.when(validation.relation, {
|
|
8119
8153
|
is: (val) => typeof validation.is === "function" ? validation.is(val) : Array.isArray(validation.values) ? validation.values.includes(val) : val === validation.values,
|
|
@@ -8287,7 +8321,7 @@ const MaterialEditableTable = React.memo(({
|
|
|
8287
8321
|
const setLoadingState = isEditMode ? setIsEditingRow : setIsCreatingRow;
|
|
8288
8322
|
const rowId = row2.id;
|
|
8289
8323
|
try {
|
|
8290
|
-
await validationSchema2.validate(values, { abortEarly: false });
|
|
8324
|
+
await validationSchema2.validate(values, { abortEarly: false, context: { row: row2 } });
|
|
8291
8325
|
setValidationErrors((prev) => {
|
|
8292
8326
|
const next = { ...prev };
|
|
8293
8327
|
delete next[rowId];
|
|
@@ -8324,16 +8358,58 @@ const MaterialEditableTable = React.memo(({
|
|
|
8324
8358
|
},
|
|
8325
8359
|
[validationSchema2, onEditRow, onCreateRow, formtValues]
|
|
8326
8360
|
);
|
|
8327
|
-
const validate = React.useCallback(async (values) => {
|
|
8361
|
+
const validate = React.useCallback(async (values, row2) => {
|
|
8328
8362
|
try {
|
|
8329
|
-
await validationSchema2.validate(values, { abortEarly: false });
|
|
8363
|
+
await validationSchema2.validate(values, { abortEarly: false, context: { row: row2 } });
|
|
8330
8364
|
setValidationErrors({});
|
|
8331
8365
|
return true;
|
|
8332
8366
|
} catch (err) {
|
|
8333
8367
|
return false;
|
|
8334
8368
|
}
|
|
8335
8369
|
}, [validationSchema2]);
|
|
8370
|
+
React.useCallback(
|
|
8371
|
+
async (columnId, value, rowId, rowValues) => {
|
|
8372
|
+
if (!validationSchema2 || typeof validationSchema2.validateAt !== "function" || !validationSchema2.fields || !validationSchema2.fields[columnId]) return;
|
|
8373
|
+
try {
|
|
8374
|
+
await validationSchema2.validateAt(
|
|
8375
|
+
columnId,
|
|
8376
|
+
{
|
|
8377
|
+
...rowValues,
|
|
8378
|
+
[columnId]: value
|
|
8379
|
+
},
|
|
8380
|
+
{
|
|
8381
|
+
abortEarly: false
|
|
8382
|
+
}
|
|
8383
|
+
);
|
|
8384
|
+
setValidationErrors((prev) => {
|
|
8385
|
+
const next = { ...prev };
|
|
8386
|
+
if (next[rowId]) {
|
|
8387
|
+
const rowErrs = { ...next[rowId] };
|
|
8388
|
+
delete rowErrs[columnId];
|
|
8389
|
+
next[rowId] = rowErrs;
|
|
8390
|
+
}
|
|
8391
|
+
return next;
|
|
8392
|
+
});
|
|
8393
|
+
} catch (err) {
|
|
8394
|
+
if (err instanceof Yup__namespace.ValidationError) {
|
|
8395
|
+
const fieldErrors = err.inner.reduce((acc, { path: path2, message }) => {
|
|
8396
|
+
if (path2) acc[path2] = message;
|
|
8397
|
+
return acc;
|
|
8398
|
+
}, {});
|
|
8399
|
+
setValidationErrors((prev) => ({
|
|
8400
|
+
...prev,
|
|
8401
|
+
[rowId]: {
|
|
8402
|
+
...prev[rowId] ?? {},
|
|
8403
|
+
...fieldErrors
|
|
8404
|
+
}
|
|
8405
|
+
}));
|
|
8406
|
+
}
|
|
8407
|
+
}
|
|
8408
|
+
},
|
|
8409
|
+
[validationSchema2]
|
|
8410
|
+
);
|
|
8336
8411
|
const valuesRef = React.useRef({});
|
|
8412
|
+
console.log("🚀 ~ valuesRef:", valuesRef);
|
|
8337
8413
|
const syncFieldValue = React.useCallback(
|
|
8338
8414
|
(rowId, columnId, value) => {
|
|
8339
8415
|
valuesRef.current[rowId] = {
|
|
@@ -8363,7 +8439,7 @@ const MaterialEditableTable = React.memo(({
|
|
|
8363
8439
|
const creatingRow = table2.getState().creatingRow;
|
|
8364
8440
|
if (!editingRow) return;
|
|
8365
8441
|
const values = getRowValues(editingRow);
|
|
8366
|
-
const isValid = await validate(values);
|
|
8442
|
+
const isValid = await validate(values, editingRow);
|
|
8367
8443
|
if (!isValid) {
|
|
8368
8444
|
await handleSaveRow({ row: editingRow, values, table: table2 }, "edit");
|
|
8369
8445
|
return;
|
|
@@ -8387,7 +8463,7 @@ const MaterialEditableTable = React.memo(({
|
|
|
8387
8463
|
if (values == null ? void 0 : values["mrt-row-actions"]) {
|
|
8388
8464
|
delete values["mrt-row-actions"];
|
|
8389
8465
|
}
|
|
8390
|
-
const isValid = await validate(values);
|
|
8466
|
+
const isValid = await validate(values, creatingRow);
|
|
8391
8467
|
await handleSaveRow({ row: creatingRow, values, table: table2 }, "create");
|
|
8392
8468
|
if (!isValid) return;
|
|
8393
8469
|
if (isValid) {
|
|
@@ -8754,14 +8830,14 @@ const MaterialEditableTable = React.memo(({
|
|
|
8754
8830
|
let saveSucceeded = false;
|
|
8755
8831
|
if (currentCreatingRow) {
|
|
8756
8832
|
const values = getRowValues(currentCreatingRow);
|
|
8757
|
-
const isValid = await validate(values);
|
|
8833
|
+
const isValid = await validate(values, currentCreatingRow);
|
|
8758
8834
|
if (!isValid) return;
|
|
8759
8835
|
await handleSaveRow({ row: currentCreatingRow, values, table: table2 }, "create");
|
|
8760
8836
|
clearRow("mrt-row-create");
|
|
8761
8837
|
saveSucceeded = true;
|
|
8762
8838
|
} else if (currentEditingRow) {
|
|
8763
8839
|
const values = getRowValues(currentEditingRow);
|
|
8764
|
-
const isValid = await validate(values);
|
|
8840
|
+
const isValid = await validate(values, currentEditingRow);
|
|
8765
8841
|
if (!isValid) return;
|
|
8766
8842
|
await handleSaveRow({ row: currentEditingRow, values, table: table2 }, "edit");
|
|
8767
8843
|
clearRow(currentEditingRow.id);
|
|
@@ -8789,8 +8865,8 @@ const MaterialEditableTable = React.memo(({
|
|
|
8789
8865
|
} else {
|
|
8790
8866
|
const editingRow = table2.getState().editingRow;
|
|
8791
8867
|
if (editingRow) {
|
|
8792
|
-
handleSaveRow({ row: editingRow, values: editingRow.original, table: table2 }, "edit");
|
|
8793
8868
|
clearRow(editingRow.id);
|
|
8869
|
+
table2.setEditingRow(null);
|
|
8794
8870
|
}
|
|
8795
8871
|
}
|
|
8796
8872
|
setDisableNextEdit(false);
|
|
@@ -16213,4 +16289,4 @@ exports.dynamicFields = dynamicFields;
|
|
|
16213
16289
|
exports.fields = fields;
|
|
16214
16290
|
exports.useDynamicLayout = useDynamicLayout;
|
|
16215
16291
|
exports.validator = validator;
|
|
16216
|
-
//# sourceMappingURL=uom-field-wrapper-
|
|
16292
|
+
//# sourceMappingURL=uom-field-wrapper-BsTblyVT.js.map
|