@erpsquad/common 1.11.1-deep-imports → 1.11.2-deep-imports
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/{FORMS-BbxCeuQt.js → FORMS-BvvLxTZ4.js} +2 -2
- package/dist/chunks/{FORMS-BbxCeuQt.js.map → FORMS-BvvLxTZ4.js.map} +1 -1
- package/dist/chunks/{FORMS-Bc_l4pmP.esm.js → FORMS-CTCStVJN.esm.js} +2 -2
- package/dist/chunks/{FORMS-Bc_l4pmP.esm.js.map → FORMS-CTCStVJN.esm.js.map} +1 -1
- package/dist/chunks/{FlexibleReduxExample-DPae9Asn.js → FlexibleReduxExample-2rKuFI8o.js} +2 -2
- package/dist/chunks/{FlexibleReduxExample-DPae9Asn.js.map → FlexibleReduxExample-2rKuFI8o.js.map} +1 -1
- package/dist/chunks/{FlexibleReduxExample-BDspk7BN.esm.js → FlexibleReduxExample-CDqcmsA4.esm.js} +2 -2
- package/dist/chunks/{FlexibleReduxExample-BDspk7BN.esm.js.map → FlexibleReduxExample-CDqcmsA4.esm.js.map} +1 -1
- package/dist/chunks/{appbar-C9FDyOFt.esm.js → appbar-BAZAd73h.esm.js} +2 -2
- package/dist/chunks/{appbar-C9FDyOFt.esm.js.map → appbar-BAZAd73h.esm.js.map} +1 -1
- package/dist/chunks/{appbar-E_3iGLbU.js → appbar-VQp_geDl.js} +2 -2
- package/dist/chunks/{appbar-E_3iGLbU.js.map → appbar-VQp_geDl.js.map} +1 -1
- package/dist/chunks/{dashboard-BCPSTmOU.esm.js → dashboard-KnePj9KD.esm.js} +3 -3
- package/dist/chunks/{dashboard-BCPSTmOU.esm.js.map → dashboard-KnePj9KD.esm.js.map} +1 -1
- package/dist/chunks/{dashboard-D9UFv3uZ.js → dashboard-e2lYhtve.js} +3 -3
- package/dist/chunks/{dashboard-D9UFv3uZ.js.map → dashboard-e2lYhtve.js.map} +1 -1
- package/dist/chunks/{fullScreen-ndgAnD-_.js → fullScreen-D84sOyGA.js} +2 -2
- package/dist/chunks/{fullScreen-ndgAnD-_.js.map → fullScreen-D84sOyGA.js.map} +1 -1
- package/dist/chunks/{fullScreen-D2d__qt4.esm.js → fullScreen-Dv3VVtOg.esm.js} +2 -2
- package/dist/chunks/{fullScreen-D2d__qt4.esm.js.map → fullScreen-Dv3VVtOg.esm.js.map} +1 -1
- package/dist/chunks/{header-AsFM1leF.js → header-CssVAc7L.js} +2 -2
- package/dist/chunks/{header-AsFM1leF.js.map → header-CssVAc7L.js.map} +1 -1
- package/dist/chunks/{header-IKZ2kjk3.esm.js → header-DKNOkwDc.esm.js} +2 -2
- package/dist/chunks/{header-IKZ2kjk3.esm.js.map → header-DKNOkwDc.esm.js.map} +1 -1
- package/dist/chunks/{header-enhanced-D6vaWhkL.js → header-enhanced-CTWeMXmz.js} +2 -2
- package/dist/chunks/{header-enhanced-D6vaWhkL.js.map → header-enhanced-CTWeMXmz.js.map} +1 -1
- package/dist/chunks/{header-enhanced-DR_8OaHy.esm.js → header-enhanced-DvQomhLR.esm.js} +2 -2
- package/dist/chunks/{header-enhanced-DR_8OaHy.esm.js.map → header-enhanced-DvQomhLR.esm.js.map} +1 -1
- package/dist/chunks/{index-CMZl1mVa.js → index-BBWIBqaP.js} +124 -137
- package/dist/chunks/{index-CMZl1mVa.js.map → index-BBWIBqaP.js.map} +1 -1
- package/dist/chunks/{index-DhSr7CVx.esm.js → index-BuPgYdiN.esm.js} +124 -137
- package/dist/chunks/{index-DhSr7CVx.esm.js.map → index-BuPgYdiN.esm.js.map} +1 -1
- package/dist/chunks/{metaComponent-kIui-Q7_.esm.js → metaComponent-B6kkj54U.esm.js} +2 -4
- package/dist/chunks/{metaComponent-kIui-Q7_.esm.js.map → metaComponent-B6kkj54U.esm.js.map} +1 -1
- package/dist/chunks/{metaComponent-DGfkxkR-.js → metaComponent-D9sAbeXz.js} +3 -5
- package/dist/chunks/{metaComponent-DGfkxkR-.js.map → metaComponent-D9sAbeXz.js.map} +1 -1
- package/dist/chunks/{modules-B7cfVqou.esm.js → modules-CgsS9dWK.esm.js} +13 -13
- package/dist/chunks/modules-CgsS9dWK.esm.js.map +1 -0
- package/dist/chunks/{modules-BGCJg-lo.js → modules-CxiCcj8n.js} +13 -13
- package/dist/chunks/modules-CxiCcj8n.js.map +1 -0
- package/dist/chunks/{sidebarScreen-DncgLDPV.esm.js → sidebarScreen-BcWviaOz.esm.js} +2 -2
- package/dist/chunks/{sidebarScreen-DncgLDPV.esm.js.map → sidebarScreen-BcWviaOz.esm.js.map} +1 -1
- package/dist/chunks/{sidebarScreen-fqQLVg_r.js → sidebarScreen-D8sStXT_.js} +2 -2
- package/dist/chunks/{sidebarScreen-fqQLVg_r.js.map → sidebarScreen-D8sStXT_.js.map} +1 -1
- package/dist/chunks/{text-area-COQsFuCG.js → text-area-B3nAZgFI.js} +2 -2
- package/dist/chunks/{text-area-COQsFuCG.js.map → text-area-B3nAZgFI.js.map} +1 -1
- package/dist/chunks/{text-area-BPTjoLV4.esm.js → text-area-xMWbJY0H.esm.js} +2 -2
- package/dist/chunks/{text-area-BPTjoLV4.esm.js.map → text-area-xMWbJY0H.esm.js.map} +1 -1
- package/dist/chunks/{use-translations-8BYoyZ1q.js → use-translations-C0inIl3N.js} +2 -2
- package/dist/chunks/{use-translations-8BYoyZ1q.js.map → use-translations-C0inIl3N.js.map} +1 -1
- package/dist/chunks/{use-translations-CEgXEizb.esm.js → use-translations-DM1EocaI.esm.js} +2 -2
- package/dist/chunks/{use-translations-CEgXEizb.esm.js.map → use-translations-DM1EocaI.esm.js.map} +1 -1
- package/dist/components/appbar/appbar/index.esm.js +1 -1
- package/dist/components/appbar/appbar/index.js +1 -1
- package/dist/components/appbar/index.esm.js +1 -1
- package/dist/components/appbar/index.js +1 -1
- package/dist/components/custom-forms/FORMS/index.esm.js +1 -1
- package/dist/components/custom-forms/FORMS/index.js +1 -1
- package/dist/components/examples/FlexibleReduxExample/index.esm.js +1 -1
- package/dist/components/examples/FlexibleReduxExample/index.js +1 -1
- package/dist/components/examples/index.esm.js +1 -1
- package/dist/components/examples/index.js +1 -1
- package/dist/components/header/header/index.esm.js +1 -1
- package/dist/components/header/header/index.js +1 -1
- package/dist/components/header/header-enhanced/index.esm.js +1 -1
- package/dist/components/header/header-enhanced/index.js +1 -1
- package/dist/components/header/index.esm.js +2 -2
- package/dist/components/header/index.js +2 -2
- package/dist/components/index.esm.js +4 -4
- package/dist/components/index.js +4 -4
- package/dist/components/text-area/index.esm.js +1 -1
- package/dist/components/text-area/index.js +1 -1
- package/dist/components/text-area/text-area/index.esm.js +1 -1
- package/dist/components/text-area/text-area/index.js +1 -1
- package/dist/constants/index.esm.js +1 -1
- package/dist/constants/index.js +1 -1
- package/dist/hooks/index.esm.js +1 -1
- package/dist/hooks/index.js +1 -1
- package/dist/hooks/use-translations/index.esm.js +1 -1
- package/dist/hooks/use-translations/index.js +1 -1
- package/dist/index.esm.js +9 -9
- package/dist/index.js +9 -9
- package/dist/layout/fullScreen/index.esm.js +1 -1
- package/dist/layout/fullScreen/index.js +1 -1
- package/dist/layout/index.esm.js +2 -2
- package/dist/layout/index.js +2 -2
- package/dist/layout/sidebarScreen/index.esm.js +1 -1
- package/dist/layout/sidebarScreen/index.js +1 -1
- package/dist/src/components/header/redux/actionCreator.d.ts +1 -1
- package/dist/src/components/header/redux/reducer.d.ts +13 -1
- package/dist/src/components/inventory-reports-title-bar/redux/actionCreator.d.ts +2 -2
- package/dist/src/components/inventory-reports-title-bar/redux/reducer.d.ts +1 -1
- package/dist/src/components/reports-title-bar/redux/actionCreator.d.ts +1 -1
- package/dist/src/components/reports-title-bar/redux/reducer.d.ts +1 -1
- package/dist/src/components/share-modal/redux/actionCreator.d.ts +2 -2
- package/dist/src/components/share-modal/redux/reducer.d.ts +7 -1
- package/dist/src/redux/actionCreator.d.ts +4 -4
- package/dist/src/redux/slices/headerSlice.d.ts +2 -2
- package/dist/src/redux/slices/inventoryReportsTitleBarSlice.d.ts +3 -3
- package/dist/src/redux/slices/reportsTitleBarSlice.d.ts +2 -2
- package/dist/src/redux/slices/shareSlice.d.ts +3 -3
- package/dist/src/views/afterAuth/dashboard/redux/actionCreator.d.ts +1 -1
- package/dist/src/views/afterAuth/dashboard/redux/reducer.d.ts +498 -1
- package/dist/src/views/afterAuth/page-view/redux/actionCreator.d.ts +1 -1
- package/dist/src/views/afterAuth/page-view/redux/reducer.d.ts +32 -1
- package/dist/src/views/form-builder/redux/actionCreator.d.ts +3 -3
- package/dist/utils/index.esm.js +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/utils/metaComponent/index.esm.js +1 -1
- package/dist/utils/metaComponent/index.js +1 -1
- package/dist/views/afterAuth/dashboard/index.esm.js +1 -1
- package/dist/views/afterAuth/dashboard/index.js +1 -1
- package/dist/views/afterAuth/index.esm.js +1 -1
- package/dist/views/afterAuth/index.js +1 -1
- package/dist/views/index.esm.js +1 -1
- package/dist/views/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunks/modules-B7cfVqou.esm.js.map +0 -1
- package/dist/chunks/modules-BGCJg-lo.js.map +0 -1
- package/dist/src/redux/store.d.ts +0 -33
|
@@ -11,7 +11,7 @@ const runtime = require("@erpsquad/common/runtime");
|
|
|
11
11
|
const footer = require("./footer-DnIO-vaU.js");
|
|
12
12
|
const material = require("@mui/material");
|
|
13
13
|
const gridView = require("./grid-view-C90ukHo3.js");
|
|
14
|
-
const useTranslations = require("./use-translations-
|
|
14
|
+
const useTranslations = require("./use-translations-C0inIl3N.js");
|
|
15
15
|
const reactI18next = require("react-i18next");
|
|
16
16
|
const useApi = require("./useApi-D0VEyAvR.js");
|
|
17
17
|
const api$1 = require("./api-D3c7E20L.js");
|
|
@@ -297,4 +297,4 @@ const Forms = ({ config }) => {
|
|
|
297
297
|
] });
|
|
298
298
|
};
|
|
299
299
|
exports.Forms = Forms;
|
|
300
|
-
//# sourceMappingURL=FORMS-
|
|
300
|
+
//# sourceMappingURL=FORMS-BvvLxTZ4.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FORMS-BbxCeuQt.js","sources":["../../src/components/custom-forms/FORMS.tsx"],"sourcesContent":["import { ActionBar } from '../action-bar';\nimport { MaterialTable } from '../material-table';\nimport { Typography } from '../typography';\nimport { viewTypes } from '../../constants';\nimport { MRT_ColumnOrderState, MRT_SortingState } from \"material-react-table\";\nimport { useState, useEffect, useMemo, useCallback } from \"react\";\nimport { useLocation, useNavigate } from \"react-router-dom\";\nimport \"./custom-forms.scss\";\nimport { useAuth } from '@erpsquad/common/runtime';\nimport { Footer } from '../footer/footer';\nimport { IPaginationModel } from '../../types';\nimport { Box } from \"@mui/material\";\nimport GridCard from \"./grid-view/grid-view.js\";\nimport { useAppTranslations } from \"../../hooks/use-translations\";\nimport { useTranslation } from 'react-i18next';\nimport useApi from '../../hooks/useApi';\nimport { getV1FormBuilder, setBaseUrl as setSystemBaseUrl } from '../../api-client/api.system-feature/api';\nimport { getToken } from '../../utils/common';\n\ninterface ActionData {\n label: string;\n position: number;\n}\n\ninterface ModuleConfig {\n filterName: string;\n redirectionPath: string;\n}\n\n\n\nconst INITIAL_ORDER = [\"name\", \"fields\", \"noOfCustomFields\", \"customFields\"];\nconst DEFAULT_ACTION_BAR_DATA = [{ label: 'Table', position: 0 }];\nconst CUSTOM_FIELD_DISPLAY_LIMIT = 5;\n\ninterface FormBuilderState {\n rows: any[];\n isLoading: boolean;\n paginationModel: {\n pageNo: number;\n limit: number;\n totalCount: number;\n };\n}\n\nconst Forms = ({ config }: { config?: any }) => {\n const { t } = useTranslation();\n useAppTranslations(); // Load translations for current module\n const navigate = useNavigate();\n const location = useLocation();\n const { user } = useAuth();\n console.log(\"user.........\", user)\n const { callApi } = useApi();\n\n const [formBuilder, setFormBuilder] = useState<FormBuilderState>({\n rows: [],\n isLoading: false,\n paginationModel: {\n pageNo: 1,\n limit: 10,\n totalCount: 0\n }\n });\n\n // Initialize state with proper defaults and memoization\n const [actionBarData, setActionBarData] = useState<ActionData[]>(() => {\n const formView = localStorage.getItem(\"form-view\");\n return formView ? JSON.parse(formView) : DEFAULT_ACTION_BAR_DATA;\n });\n\n const [search, setSearch] = useState<string>(\"\");\n const [actionBarActiveTab, setActionBarActiveTab] = useState<string>(() =>\n actionBarData?.[0]?.label || viewTypes.TABLE\n );\n const [columnOrder, setColumnOrder] = useState(INITIAL_ORDER);\n const [sorting, setSorting] = useState<MRT_SortingState>([]);\n\n // Memoized computed values to prevent unnecessary recalculations\n const currentModule = useMemo(() => location.pathname.split('/')[2], [location.pathname]);\n\n const modulesConfig = useMemo(() => ({\n ...config\n }), [config]);\n\n const moduleConfig = useMemo(() =>\n modulesConfig[currentModule] || { filterName: '', redirectionPath: '' },\n [currentModule, modulesConfig]\n );\n\n console.log(\"external moduleConfig..........\", moduleConfig)\n const navigationPath = useMemo(() =>\n `/dashboard/${currentModule}${moduleConfig.redirectionPath}`,\n [currentModule, moduleConfig.redirectionPath]\n );\n\n const filters = useMemo(() =>\n `(company_id.eq=${user?.company_id}&module.eq=${moduleConfig.filterName})`,\n [user?.company_id, moduleConfig.filterName]\n );\n\n const paginationData = useMemo(() => {\n const { pageNo, limit, totalCount } = formBuilder.paginationModel;\n const total = limit ? Math.ceil(totalCount / limit) : 0;\n const skip = limit * (pageNo - 1);\n return { total, skip, pageNo, limit };\n }, [formBuilder.paginationModel]);\n\n // Utility function moved outside render to prevent recreation\n const formatText = useCallback((key: string): string => {\n return key\n ? key\n .split(/[:_-]/)\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ')\n : key;\n }, []);\n\n // Memoized event handlers to prevent child re-renders\n const handleColumnOrdering = useCallback((colOrder: MRT_ColumnOrderState) => {\n setColumnOrder(colOrder.slice(1));\n }, []);\n\n const handlePaginationModel = useCallback((model: IPaginationModel) => {\n setFormBuilder(prev => ({\n ...prev,\n paginationModel: {\n ...model,\n totalCount: prev.paginationModel.totalCount\n }\n }));\n }, []);\n\n const handleSearch = useCallback((searchValue: string) => {\n setSearch(searchValue);\n }, []);\n\n const handleRowClick = useCallback((rowData: any) => {\n navigate(navigationPath, {\n state: rowData,\n });\n }, [navigate, navigationPath]);\n\n // Memoized columns definition to prevent recreation on each render\n const columns = useMemo(() => [\n {\n accessorKey: \"name\",\n header: \"Form Name\",\n visible: true,\n Cell: ({ row }: any) =>\n row?.original?.name ? (\n <div\n onClick={() => handleRowClick(row.original)}\n style={{ cursor: 'pointer' }}\n >\n {formatText(row.original.name)}\n </div>\n ) : (\n \"-\"\n ),\n },\n {\n accessorKey: \"fields.length\",\n header: \"No. of Fields\",\n visible: true,\n size: 150\n },\n {\n accessorKey: \"fields\",\n header: \"No. of custom fields\",\n visible: true,\n size: 80,\n Cell: ({ row }: any) =>\n row?.original?.fields ? (\n <div>\n {\n row.original.fields.filter(\n (field: { is_system_field: boolean }) => !field.is_system_field,\n ).length\n }\n </div>\n ) : (\n \"-\"\n ),\n },\n {\n accessorKey: \"fields\",\n header: \"Custom Fields\",\n visible: true,\n Cell: ({ row }: any) => {\n const fields = row?.original?.fields?.filter(\n (field: { is_system_field: boolean; label: string }) =>\n !field?.is_system_field && field?.label,\n ) || [];\n\n if (!fields.length) return '-';\n\n return (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5, flexWrap: 'wrap', p: 0.5 }}>\n {fields.slice(0, CUSTOM_FIELD_DISPLAY_LIMIT).map((item: any, index: number) => (\n <Typography\n key={`${item.label}-${index}`}\n type=\"s5\"\n weight=\"medium\"\n className=\"forms--CustomField\"\n >\n {item?.label?.includes(\".\") ? t(item.label) : item.label}\n </Typography>\n ))}\n {fields.length > CUSTOM_FIELD_DISPLAY_LIMIT && (\n <Typography\n type=\"s5\"\n weight=\"medium\"\n className=\"forms--CustomField\"\n >\n +{fields.length - CUSTOM_FIELD_DISPLAY_LIMIT} more\n </Typography>\n )}\n </Box>\n );\n }\n },\n ], [formatText, handleRowClick, t]);\n\n // Memoized footer pages to prevent recreation\n const footerPages = useMemo(() => [\n {\n name: 'Default',\n _id: 1,\n data: []\n }\n ], []);\n\n\n const fetchForms = useCallback(async () => {\n console.log(\"moduleConfig.............\", moduleConfig)\n if (!moduleConfig.filterName || !user?.company_id) return;\n\n const sort = sorting?.[0];\n const params = {\n skip: paginationData.skip,\n limit: paginationData.limit,\n search,\n filters,\n ...(sort && { order: `${sort.id}:${sort.desc ? -1 : 1}` }),\n ...getToken(),\n 'x-timezone': getToken()['x-timezone']?.toString() || ''\n };\n console.log(\"params..............\", params)\n\n setFormBuilder(prev => ({ ...prev, isLoading: true }));\n const response = await getV1FormBuilder({\n ...params,\n ...getToken\n })\n console.log(\"response........\", response)\n setFormBuilder({\n rows: response?.data?.form,\n isLoading: false,\n paginationModel: {\n ...formBuilder.paginationModel,\n ...response?.data?.pagination\n }\n });\n\n\n }, [filters,\n paginationData.skip,\n paginationData.limit,\n sorting,\n search,\n moduleConfig.filterName,\n user?.company_id,\n ])\n // Effect for fetching data - optimized with proper dependencies\n useEffect(() => {\n fetchForms()\n }, [\n fetchForms\n ]);\n\n // Effect for setting active tab - only run when actionBarData changes\n useEffect(() => {\n if (actionBarData?.length && actionBarData[0].label !== actionBarActiveTab) {\n setActionBarActiveTab(actionBarData[0].label);\n }\n }, [actionBarData]);\n\n // Effect for localStorage - debounced to prevent excessive writes\n useEffect(() => {\n if (actionBarData?.length) {\n const timeoutId = setTimeout(() => {\n localStorage.setItem(\"form-view\", JSON.stringify(actionBarData));\n }, 300);\n\n return () => clearTimeout(timeoutId);\n }\n }, [actionBarData]);\n\n return (\n <section className=\"forms\">\n <ActionBar\n title=\"Form\"\n button={false}\n data={actionBarData}\n setData={setActionBarData}\n active={actionBarActiveTab}\n setActive={(tab) => {\n setActionBarActiveTab(tab);\n }}\n handleSearch={handleSearch}\n showFilter={false}\n />\n\n {actionBarActiveTab === viewTypes.TABLE && (\n <MaterialTable\n enablePagination={false}\n columnOrder={[\"mrt-row-select\", ...columnOrder]}\n handleColumnOrdering={handleColumnOrdering}\n rows={formBuilder.rows}\n columns={columns}\n totalPages={1}\n paginationModel={{ pageNo: 1, limit: 10 }}\n enableEditing={false}\n states={{ sorting: sorting || [] }}\n onSortingChange={setSorting}\n disableDefaultActionColumn\n getSelectedData={() => { }}\n />\n )}\n\n {actionBarActiveTab === viewTypes.GRID && (\n <GridCard data={formBuilder.rows} config={config} />\n )}\n\n <Footer\n pages={footerPages}\n setPages={() => { }}\n currentPage={1}\n setCurrentPage={() => { }}\n total={paginationData.total}\n paginationModel={{\n pageNo: formBuilder.paginationModel.pageNo,\n limit: formBuilder.paginationModel.limit\n }}\n handlePaginationModel={handlePaginationModel}\n sharedPages={[]}\n resource=\"\"\n savePageConfiguration={() => { }}\n handlePageDelete={() => { }}\n enablePages={false}\n isPaginationDisplayed={true}\n />\n </section>\n );\n};\n\nexport default Forms;"],"names":["useTranslation","useAppTranslations","useNavigate","useLocation","useAuth","useApi","useState","viewTypes","useMemo","useCallback","jsx","jsxs","Box","Typography","_a","getToken","getV1FormBuilder","useEffect","ActionBar","MaterialTable","GridCard","Footer"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FORMS-BvvLxTZ4.js","sources":["../../src/components/custom-forms/FORMS.tsx"],"sourcesContent":["import { ActionBar } from '../action-bar';\nimport { MaterialTable } from '../material-table';\nimport { Typography } from '../typography';\nimport { viewTypes } from '../../constants';\nimport { MRT_ColumnOrderState, MRT_SortingState } from \"material-react-table\";\nimport { useState, useEffect, useMemo, useCallback } from \"react\";\nimport { useLocation, useNavigate } from \"react-router-dom\";\nimport \"./custom-forms.scss\";\nimport { useAuth } from '@erpsquad/common/runtime';\nimport { Footer } from '../footer/footer';\nimport { IPaginationModel } from '../../types';\nimport { Box } from \"@mui/material\";\nimport GridCard from \"./grid-view/grid-view.js\";\nimport { useAppTranslations } from \"../../hooks/use-translations\";\nimport { useTranslation } from 'react-i18next';\nimport useApi from '../../hooks/useApi';\nimport { getV1FormBuilder, setBaseUrl as setSystemBaseUrl } from '../../api-client/api.system-feature/api';\nimport { getToken } from '../../utils/common';\n\ninterface ActionData {\n label: string;\n position: number;\n}\n\ninterface ModuleConfig {\n filterName: string;\n redirectionPath: string;\n}\n\n\n\nconst INITIAL_ORDER = [\"name\", \"fields\", \"noOfCustomFields\", \"customFields\"];\nconst DEFAULT_ACTION_BAR_DATA = [{ label: 'Table', position: 0 }];\nconst CUSTOM_FIELD_DISPLAY_LIMIT = 5;\n\ninterface FormBuilderState {\n rows: any[];\n isLoading: boolean;\n paginationModel: {\n pageNo: number;\n limit: number;\n totalCount: number;\n };\n}\n\nconst Forms = ({ config }: { config?: any }) => {\n const { t } = useTranslation();\n useAppTranslations(); // Load translations for current module\n const navigate = useNavigate();\n const location = useLocation();\n const { user } = useAuth();\n console.log(\"user.........\", user)\n const { callApi } = useApi();\n\n const [formBuilder, setFormBuilder] = useState<FormBuilderState>({\n rows: [],\n isLoading: false,\n paginationModel: {\n pageNo: 1,\n limit: 10,\n totalCount: 0\n }\n });\n\n // Initialize state with proper defaults and memoization\n const [actionBarData, setActionBarData] = useState<ActionData[]>(() => {\n const formView = localStorage.getItem(\"form-view\");\n return formView ? JSON.parse(formView) : DEFAULT_ACTION_BAR_DATA;\n });\n\n const [search, setSearch] = useState<string>(\"\");\n const [actionBarActiveTab, setActionBarActiveTab] = useState<string>(() =>\n actionBarData?.[0]?.label || viewTypes.TABLE\n );\n const [columnOrder, setColumnOrder] = useState(INITIAL_ORDER);\n const [sorting, setSorting] = useState<MRT_SortingState>([]);\n\n // Memoized computed values to prevent unnecessary recalculations\n const currentModule = useMemo(() => location.pathname.split('/')[2], [location.pathname]);\n\n const modulesConfig = useMemo(() => ({\n ...config\n }), [config]);\n\n const moduleConfig = useMemo(() =>\n modulesConfig[currentModule] || { filterName: '', redirectionPath: '' },\n [currentModule, modulesConfig]\n );\n\n console.log(\"external moduleConfig..........\", moduleConfig)\n const navigationPath = useMemo(() =>\n `/dashboard/${currentModule}${moduleConfig.redirectionPath}`,\n [currentModule, moduleConfig.redirectionPath]\n );\n\n const filters = useMemo(() =>\n `(company_id.eq=${user?.company_id}&module.eq=${moduleConfig.filterName})`,\n [user?.company_id, moduleConfig.filterName]\n );\n\n const paginationData = useMemo(() => {\n const { pageNo, limit, totalCount } = formBuilder.paginationModel;\n const total = limit ? Math.ceil(totalCount / limit) : 0;\n const skip = limit * (pageNo - 1);\n return { total, skip, pageNo, limit };\n }, [formBuilder.paginationModel]);\n\n // Utility function moved outside render to prevent recreation\n const formatText = useCallback((key: string): string => {\n return key\n ? key\n .split(/[:_-]/)\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ')\n : key;\n }, []);\n\n // Memoized event handlers to prevent child re-renders\n const handleColumnOrdering = useCallback((colOrder: MRT_ColumnOrderState) => {\n setColumnOrder(colOrder.slice(1));\n }, []);\n\n const handlePaginationModel = useCallback((model: IPaginationModel) => {\n setFormBuilder(prev => ({\n ...prev,\n paginationModel: {\n ...model,\n totalCount: prev.paginationModel.totalCount\n }\n }));\n }, []);\n\n const handleSearch = useCallback((searchValue: string) => {\n setSearch(searchValue);\n }, []);\n\n const handleRowClick = useCallback((rowData: any) => {\n navigate(navigationPath, {\n state: rowData,\n });\n }, [navigate, navigationPath]);\n\n // Memoized columns definition to prevent recreation on each render\n const columns = useMemo(() => [\n {\n accessorKey: \"name\",\n header: \"Form Name\",\n visible: true,\n Cell: ({ row }: any) =>\n row?.original?.name ? (\n <div\n onClick={() => handleRowClick(row.original)}\n style={{ cursor: 'pointer' }}\n >\n {formatText(row.original.name)}\n </div>\n ) : (\n \"-\"\n ),\n },\n {\n accessorKey: \"fields.length\",\n header: \"No. of Fields\",\n visible: true,\n size: 150\n },\n {\n accessorKey: \"fields\",\n header: \"No. of custom fields\",\n visible: true,\n size: 80,\n Cell: ({ row }: any) =>\n row?.original?.fields ? (\n <div>\n {\n row.original.fields.filter(\n (field: { is_system_field: boolean }) => !field.is_system_field,\n ).length\n }\n </div>\n ) : (\n \"-\"\n ),\n },\n {\n accessorKey: \"fields\",\n header: \"Custom Fields\",\n visible: true,\n Cell: ({ row }: any) => {\n const fields = row?.original?.fields?.filter(\n (field: { is_system_field: boolean; label: string }) =>\n !field?.is_system_field && field?.label,\n ) || [];\n\n if (!fields.length) return '-';\n\n return (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5, flexWrap: 'wrap', p: 0.5 }}>\n {fields.slice(0, CUSTOM_FIELD_DISPLAY_LIMIT).map((item: any, index: number) => (\n <Typography\n key={`${item.label}-${index}`}\n type=\"s5\"\n weight=\"medium\"\n className=\"forms--CustomField\"\n >\n {item?.label?.includes(\".\") ? t(item.label) : item.label}\n </Typography>\n ))}\n {fields.length > CUSTOM_FIELD_DISPLAY_LIMIT && (\n <Typography\n type=\"s5\"\n weight=\"medium\"\n className=\"forms--CustomField\"\n >\n +{fields.length - CUSTOM_FIELD_DISPLAY_LIMIT} more\n </Typography>\n )}\n </Box>\n );\n }\n },\n ], [formatText, handleRowClick, t]);\n\n // Memoized footer pages to prevent recreation\n const footerPages = useMemo(() => [\n {\n name: 'Default',\n _id: 1,\n data: []\n }\n ], []);\n\n\n const fetchForms = useCallback(async () => {\n console.log(\"moduleConfig.............\", moduleConfig)\n if (!moduleConfig.filterName || !user?.company_id) return;\n\n const sort = sorting?.[0];\n const params = {\n skip: paginationData.skip,\n limit: paginationData.limit,\n search,\n filters,\n ...(sort && { order: `${sort.id}:${sort.desc ? -1 : 1}` }),\n ...getToken(),\n 'x-timezone': getToken()['x-timezone']?.toString() || ''\n };\n console.log(\"params..............\", params)\n\n setFormBuilder(prev => ({ ...prev, isLoading: true }));\n const response = await getV1FormBuilder({\n ...params,\n ...getToken\n })\n console.log(\"response........\", response)\n setFormBuilder({\n rows: response?.data?.form,\n isLoading: false,\n paginationModel: {\n ...formBuilder.paginationModel,\n ...response?.data?.pagination\n }\n });\n\n\n }, [filters,\n paginationData.skip,\n paginationData.limit,\n sorting,\n search,\n moduleConfig.filterName,\n user?.company_id,\n ])\n // Effect for fetching data - optimized with proper dependencies\n useEffect(() => {\n fetchForms()\n }, [\n fetchForms\n ]);\n\n // Effect for setting active tab - only run when actionBarData changes\n useEffect(() => {\n if (actionBarData?.length && actionBarData[0].label !== actionBarActiveTab) {\n setActionBarActiveTab(actionBarData[0].label);\n }\n }, [actionBarData]);\n\n // Effect for localStorage - debounced to prevent excessive writes\n useEffect(() => {\n if (actionBarData?.length) {\n const timeoutId = setTimeout(() => {\n localStorage.setItem(\"form-view\", JSON.stringify(actionBarData));\n }, 300);\n\n return () => clearTimeout(timeoutId);\n }\n }, [actionBarData]);\n\n return (\n <section className=\"forms\">\n <ActionBar\n title=\"Form\"\n button={false}\n data={actionBarData}\n setData={setActionBarData}\n active={actionBarActiveTab}\n setActive={(tab) => {\n setActionBarActiveTab(tab);\n }}\n handleSearch={handleSearch}\n showFilter={false}\n />\n\n {actionBarActiveTab === viewTypes.TABLE && (\n <MaterialTable\n enablePagination={false}\n columnOrder={[\"mrt-row-select\", ...columnOrder]}\n handleColumnOrdering={handleColumnOrdering}\n rows={formBuilder.rows}\n columns={columns}\n totalPages={1}\n paginationModel={{ pageNo: 1, limit: 10 }}\n enableEditing={false}\n states={{ sorting: sorting || [] }}\n onSortingChange={setSorting}\n disableDefaultActionColumn\n getSelectedData={() => { }}\n />\n )}\n\n {actionBarActiveTab === viewTypes.GRID && (\n <GridCard data={formBuilder.rows} config={config} />\n )}\n\n <Footer\n pages={footerPages}\n setPages={() => { }}\n currentPage={1}\n setCurrentPage={() => { }}\n total={paginationData.total}\n paginationModel={{\n pageNo: formBuilder.paginationModel.pageNo,\n limit: formBuilder.paginationModel.limit\n }}\n handlePaginationModel={handlePaginationModel}\n sharedPages={[]}\n resource=\"\"\n savePageConfiguration={() => { }}\n handlePageDelete={() => { }}\n enablePages={false}\n isPaginationDisplayed={true}\n />\n </section>\n );\n};\n\nexport default Forms;"],"names":["useTranslation","useAppTranslations","useNavigate","useLocation","useAuth","useApi","useState","viewTypes","useMemo","useCallback","jsx","jsxs","Box","Typography","_a","getToken","getV1FormBuilder","useEffect","ActionBar","MaterialTable","GridCard","Footer"],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ import { useAuth } from "@erpsquad/common/runtime";
|
|
|
10
10
|
import { F as Footer } from "./footer-CNvyE8xQ.esm.js";
|
|
11
11
|
import { Box } from "@mui/material";
|
|
12
12
|
import { G as GridCard } from "./grid-view-BKEPKlKk.esm.js";
|
|
13
|
-
import { u as useAppTranslations } from "./use-translations-
|
|
13
|
+
import { u as useAppTranslations } from "./use-translations-DM1EocaI.esm.js";
|
|
14
14
|
import { useTranslation } from "react-i18next";
|
|
15
15
|
import { u as useApi } from "./useApi-9KP8aPjh.esm.js";
|
|
16
16
|
import { q as getV1FormBuilder } from "./api-DBmWILBN.esm.js";
|
|
@@ -298,4 +298,4 @@ const Forms = ({ config }) => {
|
|
|
298
298
|
export {
|
|
299
299
|
Forms as F
|
|
300
300
|
};
|
|
301
|
-
//# sourceMappingURL=FORMS-
|
|
301
|
+
//# sourceMappingURL=FORMS-CTCStVJN.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FORMS-Bc_l4pmP.esm.js","sources":["../../src/components/custom-forms/FORMS.tsx"],"sourcesContent":["import { ActionBar } from '../action-bar';\nimport { MaterialTable } from '../material-table';\nimport { Typography } from '../typography';\nimport { viewTypes } from '../../constants';\nimport { MRT_ColumnOrderState, MRT_SortingState } from \"material-react-table\";\nimport { useState, useEffect, useMemo, useCallback } from \"react\";\nimport { useLocation, useNavigate } from \"react-router-dom\";\nimport \"./custom-forms.scss\";\nimport { useAuth } from '@erpsquad/common/runtime';\nimport { Footer } from '../footer/footer';\nimport { IPaginationModel } from '../../types';\nimport { Box } from \"@mui/material\";\nimport GridCard from \"./grid-view/grid-view.js\";\nimport { useAppTranslations } from \"../../hooks/use-translations\";\nimport { useTranslation } from 'react-i18next';\nimport useApi from '../../hooks/useApi';\nimport { getV1FormBuilder, setBaseUrl as setSystemBaseUrl } from '../../api-client/api.system-feature/api';\nimport { getToken } from '../../utils/common';\n\ninterface ActionData {\n label: string;\n position: number;\n}\n\ninterface ModuleConfig {\n filterName: string;\n redirectionPath: string;\n}\n\n\n\nconst INITIAL_ORDER = [\"name\", \"fields\", \"noOfCustomFields\", \"customFields\"];\nconst DEFAULT_ACTION_BAR_DATA = [{ label: 'Table', position: 0 }];\nconst CUSTOM_FIELD_DISPLAY_LIMIT = 5;\n\ninterface FormBuilderState {\n rows: any[];\n isLoading: boolean;\n paginationModel: {\n pageNo: number;\n limit: number;\n totalCount: number;\n };\n}\n\nconst Forms = ({ config }: { config?: any }) => {\n const { t } = useTranslation();\n useAppTranslations(); // Load translations for current module\n const navigate = useNavigate();\n const location = useLocation();\n const { user } = useAuth();\n console.log(\"user.........\", user)\n const { callApi } = useApi();\n\n const [formBuilder, setFormBuilder] = useState<FormBuilderState>({\n rows: [],\n isLoading: false,\n paginationModel: {\n pageNo: 1,\n limit: 10,\n totalCount: 0\n }\n });\n\n // Initialize state with proper defaults and memoization\n const [actionBarData, setActionBarData] = useState<ActionData[]>(() => {\n const formView = localStorage.getItem(\"form-view\");\n return formView ? JSON.parse(formView) : DEFAULT_ACTION_BAR_DATA;\n });\n\n const [search, setSearch] = useState<string>(\"\");\n const [actionBarActiveTab, setActionBarActiveTab] = useState<string>(() =>\n actionBarData?.[0]?.label || viewTypes.TABLE\n );\n const [columnOrder, setColumnOrder] = useState(INITIAL_ORDER);\n const [sorting, setSorting] = useState<MRT_SortingState>([]);\n\n // Memoized computed values to prevent unnecessary recalculations\n const currentModule = useMemo(() => location.pathname.split('/')[2], [location.pathname]);\n\n const modulesConfig = useMemo(() => ({\n ...config\n }), [config]);\n\n const moduleConfig = useMemo(() =>\n modulesConfig[currentModule] || { filterName: '', redirectionPath: '' },\n [currentModule, modulesConfig]\n );\n\n console.log(\"external moduleConfig..........\", moduleConfig)\n const navigationPath = useMemo(() =>\n `/dashboard/${currentModule}${moduleConfig.redirectionPath}`,\n [currentModule, moduleConfig.redirectionPath]\n );\n\n const filters = useMemo(() =>\n `(company_id.eq=${user?.company_id}&module.eq=${moduleConfig.filterName})`,\n [user?.company_id, moduleConfig.filterName]\n );\n\n const paginationData = useMemo(() => {\n const { pageNo, limit, totalCount } = formBuilder.paginationModel;\n const total = limit ? Math.ceil(totalCount / limit) : 0;\n const skip = limit * (pageNo - 1);\n return { total, skip, pageNo, limit };\n }, [formBuilder.paginationModel]);\n\n // Utility function moved outside render to prevent recreation\n const formatText = useCallback((key: string): string => {\n return key\n ? key\n .split(/[:_-]/)\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ')\n : key;\n }, []);\n\n // Memoized event handlers to prevent child re-renders\n const handleColumnOrdering = useCallback((colOrder: MRT_ColumnOrderState) => {\n setColumnOrder(colOrder.slice(1));\n }, []);\n\n const handlePaginationModel = useCallback((model: IPaginationModel) => {\n setFormBuilder(prev => ({\n ...prev,\n paginationModel: {\n ...model,\n totalCount: prev.paginationModel.totalCount\n }\n }));\n }, []);\n\n const handleSearch = useCallback((searchValue: string) => {\n setSearch(searchValue);\n }, []);\n\n const handleRowClick = useCallback((rowData: any) => {\n navigate(navigationPath, {\n state: rowData,\n });\n }, [navigate, navigationPath]);\n\n // Memoized columns definition to prevent recreation on each render\n const columns = useMemo(() => [\n {\n accessorKey: \"name\",\n header: \"Form Name\",\n visible: true,\n Cell: ({ row }: any) =>\n row?.original?.name ? (\n <div\n onClick={() => handleRowClick(row.original)}\n style={{ cursor: 'pointer' }}\n >\n {formatText(row.original.name)}\n </div>\n ) : (\n \"-\"\n ),\n },\n {\n accessorKey: \"fields.length\",\n header: \"No. of Fields\",\n visible: true,\n size: 150\n },\n {\n accessorKey: \"fields\",\n header: \"No. of custom fields\",\n visible: true,\n size: 80,\n Cell: ({ row }: any) =>\n row?.original?.fields ? (\n <div>\n {\n row.original.fields.filter(\n (field: { is_system_field: boolean }) => !field.is_system_field,\n ).length\n }\n </div>\n ) : (\n \"-\"\n ),\n },\n {\n accessorKey: \"fields\",\n header: \"Custom Fields\",\n visible: true,\n Cell: ({ row }: any) => {\n const fields = row?.original?.fields?.filter(\n (field: { is_system_field: boolean; label: string }) =>\n !field?.is_system_field && field?.label,\n ) || [];\n\n if (!fields.length) return '-';\n\n return (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5, flexWrap: 'wrap', p: 0.5 }}>\n {fields.slice(0, CUSTOM_FIELD_DISPLAY_LIMIT).map((item: any, index: number) => (\n <Typography\n key={`${item.label}-${index}`}\n type=\"s5\"\n weight=\"medium\"\n className=\"forms--CustomField\"\n >\n {item?.label?.includes(\".\") ? t(item.label) : item.label}\n </Typography>\n ))}\n {fields.length > CUSTOM_FIELD_DISPLAY_LIMIT && (\n <Typography\n type=\"s5\"\n weight=\"medium\"\n className=\"forms--CustomField\"\n >\n +{fields.length - CUSTOM_FIELD_DISPLAY_LIMIT} more\n </Typography>\n )}\n </Box>\n );\n }\n },\n ], [formatText, handleRowClick, t]);\n\n // Memoized footer pages to prevent recreation\n const footerPages = useMemo(() => [\n {\n name: 'Default',\n _id: 1,\n data: []\n }\n ], []);\n\n\n const fetchForms = useCallback(async () => {\n console.log(\"moduleConfig.............\", moduleConfig)\n if (!moduleConfig.filterName || !user?.company_id) return;\n\n const sort = sorting?.[0];\n const params = {\n skip: paginationData.skip,\n limit: paginationData.limit,\n search,\n filters,\n ...(sort && { order: `${sort.id}:${sort.desc ? -1 : 1}` }),\n ...getToken(),\n 'x-timezone': getToken()['x-timezone']?.toString() || ''\n };\n console.log(\"params..............\", params)\n\n setFormBuilder(prev => ({ ...prev, isLoading: true }));\n const response = await getV1FormBuilder({\n ...params,\n ...getToken\n })\n console.log(\"response........\", response)\n setFormBuilder({\n rows: response?.data?.form,\n isLoading: false,\n paginationModel: {\n ...formBuilder.paginationModel,\n ...response?.data?.pagination\n }\n });\n\n\n }, [filters,\n paginationData.skip,\n paginationData.limit,\n sorting,\n search,\n moduleConfig.filterName,\n user?.company_id,\n ])\n // Effect for fetching data - optimized with proper dependencies\n useEffect(() => {\n fetchForms()\n }, [\n fetchForms\n ]);\n\n // Effect for setting active tab - only run when actionBarData changes\n useEffect(() => {\n if (actionBarData?.length && actionBarData[0].label !== actionBarActiveTab) {\n setActionBarActiveTab(actionBarData[0].label);\n }\n }, [actionBarData]);\n\n // Effect for localStorage - debounced to prevent excessive writes\n useEffect(() => {\n if (actionBarData?.length) {\n const timeoutId = setTimeout(() => {\n localStorage.setItem(\"form-view\", JSON.stringify(actionBarData));\n }, 300);\n\n return () => clearTimeout(timeoutId);\n }\n }, [actionBarData]);\n\n return (\n <section className=\"forms\">\n <ActionBar\n title=\"Form\"\n button={false}\n data={actionBarData}\n setData={setActionBarData}\n active={actionBarActiveTab}\n setActive={(tab) => {\n setActionBarActiveTab(tab);\n }}\n handleSearch={handleSearch}\n showFilter={false}\n />\n\n {actionBarActiveTab === viewTypes.TABLE && (\n <MaterialTable\n enablePagination={false}\n columnOrder={[\"mrt-row-select\", ...columnOrder]}\n handleColumnOrdering={handleColumnOrdering}\n rows={formBuilder.rows}\n columns={columns}\n totalPages={1}\n paginationModel={{ pageNo: 1, limit: 10 }}\n enableEditing={false}\n states={{ sorting: sorting || [] }}\n onSortingChange={setSorting}\n disableDefaultActionColumn\n getSelectedData={() => { }}\n />\n )}\n\n {actionBarActiveTab === viewTypes.GRID && (\n <GridCard data={formBuilder.rows} config={config} />\n )}\n\n <Footer\n pages={footerPages}\n setPages={() => { }}\n currentPage={1}\n setCurrentPage={() => { }}\n total={paginationData.total}\n paginationModel={{\n pageNo: formBuilder.paginationModel.pageNo,\n limit: formBuilder.paginationModel.limit\n }}\n handlePaginationModel={handlePaginationModel}\n sharedPages={[]}\n resource=\"\"\n savePageConfiguration={() => { }}\n handlePageDelete={() => { }}\n enablePages={false}\n isPaginationDisplayed={true}\n />\n </section>\n );\n};\n\nexport default Forms;"],"names":["_a"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FORMS-CTCStVJN.esm.js","sources":["../../src/components/custom-forms/FORMS.tsx"],"sourcesContent":["import { ActionBar } from '../action-bar';\nimport { MaterialTable } from '../material-table';\nimport { Typography } from '../typography';\nimport { viewTypes } from '../../constants';\nimport { MRT_ColumnOrderState, MRT_SortingState } from \"material-react-table\";\nimport { useState, useEffect, useMemo, useCallback } from \"react\";\nimport { useLocation, useNavigate } from \"react-router-dom\";\nimport \"./custom-forms.scss\";\nimport { useAuth } from '@erpsquad/common/runtime';\nimport { Footer } from '../footer/footer';\nimport { IPaginationModel } from '../../types';\nimport { Box } from \"@mui/material\";\nimport GridCard from \"./grid-view/grid-view.js\";\nimport { useAppTranslations } from \"../../hooks/use-translations\";\nimport { useTranslation } from 'react-i18next';\nimport useApi from '../../hooks/useApi';\nimport { getV1FormBuilder, setBaseUrl as setSystemBaseUrl } from '../../api-client/api.system-feature/api';\nimport { getToken } from '../../utils/common';\n\ninterface ActionData {\n label: string;\n position: number;\n}\n\ninterface ModuleConfig {\n filterName: string;\n redirectionPath: string;\n}\n\n\n\nconst INITIAL_ORDER = [\"name\", \"fields\", \"noOfCustomFields\", \"customFields\"];\nconst DEFAULT_ACTION_BAR_DATA = [{ label: 'Table', position: 0 }];\nconst CUSTOM_FIELD_DISPLAY_LIMIT = 5;\n\ninterface FormBuilderState {\n rows: any[];\n isLoading: boolean;\n paginationModel: {\n pageNo: number;\n limit: number;\n totalCount: number;\n };\n}\n\nconst Forms = ({ config }: { config?: any }) => {\n const { t } = useTranslation();\n useAppTranslations(); // Load translations for current module\n const navigate = useNavigate();\n const location = useLocation();\n const { user } = useAuth();\n console.log(\"user.........\", user)\n const { callApi } = useApi();\n\n const [formBuilder, setFormBuilder] = useState<FormBuilderState>({\n rows: [],\n isLoading: false,\n paginationModel: {\n pageNo: 1,\n limit: 10,\n totalCount: 0\n }\n });\n\n // Initialize state with proper defaults and memoization\n const [actionBarData, setActionBarData] = useState<ActionData[]>(() => {\n const formView = localStorage.getItem(\"form-view\");\n return formView ? JSON.parse(formView) : DEFAULT_ACTION_BAR_DATA;\n });\n\n const [search, setSearch] = useState<string>(\"\");\n const [actionBarActiveTab, setActionBarActiveTab] = useState<string>(() =>\n actionBarData?.[0]?.label || viewTypes.TABLE\n );\n const [columnOrder, setColumnOrder] = useState(INITIAL_ORDER);\n const [sorting, setSorting] = useState<MRT_SortingState>([]);\n\n // Memoized computed values to prevent unnecessary recalculations\n const currentModule = useMemo(() => location.pathname.split('/')[2], [location.pathname]);\n\n const modulesConfig = useMemo(() => ({\n ...config\n }), [config]);\n\n const moduleConfig = useMemo(() =>\n modulesConfig[currentModule] || { filterName: '', redirectionPath: '' },\n [currentModule, modulesConfig]\n );\n\n console.log(\"external moduleConfig..........\", moduleConfig)\n const navigationPath = useMemo(() =>\n `/dashboard/${currentModule}${moduleConfig.redirectionPath}`,\n [currentModule, moduleConfig.redirectionPath]\n );\n\n const filters = useMemo(() =>\n `(company_id.eq=${user?.company_id}&module.eq=${moduleConfig.filterName})`,\n [user?.company_id, moduleConfig.filterName]\n );\n\n const paginationData = useMemo(() => {\n const { pageNo, limit, totalCount } = formBuilder.paginationModel;\n const total = limit ? Math.ceil(totalCount / limit) : 0;\n const skip = limit * (pageNo - 1);\n return { total, skip, pageNo, limit };\n }, [formBuilder.paginationModel]);\n\n // Utility function moved outside render to prevent recreation\n const formatText = useCallback((key: string): string => {\n return key\n ? key\n .split(/[:_-]/)\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ')\n : key;\n }, []);\n\n // Memoized event handlers to prevent child re-renders\n const handleColumnOrdering = useCallback((colOrder: MRT_ColumnOrderState) => {\n setColumnOrder(colOrder.slice(1));\n }, []);\n\n const handlePaginationModel = useCallback((model: IPaginationModel) => {\n setFormBuilder(prev => ({\n ...prev,\n paginationModel: {\n ...model,\n totalCount: prev.paginationModel.totalCount\n }\n }));\n }, []);\n\n const handleSearch = useCallback((searchValue: string) => {\n setSearch(searchValue);\n }, []);\n\n const handleRowClick = useCallback((rowData: any) => {\n navigate(navigationPath, {\n state: rowData,\n });\n }, [navigate, navigationPath]);\n\n // Memoized columns definition to prevent recreation on each render\n const columns = useMemo(() => [\n {\n accessorKey: \"name\",\n header: \"Form Name\",\n visible: true,\n Cell: ({ row }: any) =>\n row?.original?.name ? (\n <div\n onClick={() => handleRowClick(row.original)}\n style={{ cursor: 'pointer' }}\n >\n {formatText(row.original.name)}\n </div>\n ) : (\n \"-\"\n ),\n },\n {\n accessorKey: \"fields.length\",\n header: \"No. of Fields\",\n visible: true,\n size: 150\n },\n {\n accessorKey: \"fields\",\n header: \"No. of custom fields\",\n visible: true,\n size: 80,\n Cell: ({ row }: any) =>\n row?.original?.fields ? (\n <div>\n {\n row.original.fields.filter(\n (field: { is_system_field: boolean }) => !field.is_system_field,\n ).length\n }\n </div>\n ) : (\n \"-\"\n ),\n },\n {\n accessorKey: \"fields\",\n header: \"Custom Fields\",\n visible: true,\n Cell: ({ row }: any) => {\n const fields = row?.original?.fields?.filter(\n (field: { is_system_field: boolean; label: string }) =>\n !field?.is_system_field && field?.label,\n ) || [];\n\n if (!fields.length) return '-';\n\n return (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5, flexWrap: 'wrap', p: 0.5 }}>\n {fields.slice(0, CUSTOM_FIELD_DISPLAY_LIMIT).map((item: any, index: number) => (\n <Typography\n key={`${item.label}-${index}`}\n type=\"s5\"\n weight=\"medium\"\n className=\"forms--CustomField\"\n >\n {item?.label?.includes(\".\") ? t(item.label) : item.label}\n </Typography>\n ))}\n {fields.length > CUSTOM_FIELD_DISPLAY_LIMIT && (\n <Typography\n type=\"s5\"\n weight=\"medium\"\n className=\"forms--CustomField\"\n >\n +{fields.length - CUSTOM_FIELD_DISPLAY_LIMIT} more\n </Typography>\n )}\n </Box>\n );\n }\n },\n ], [formatText, handleRowClick, t]);\n\n // Memoized footer pages to prevent recreation\n const footerPages = useMemo(() => [\n {\n name: 'Default',\n _id: 1,\n data: []\n }\n ], []);\n\n\n const fetchForms = useCallback(async () => {\n console.log(\"moduleConfig.............\", moduleConfig)\n if (!moduleConfig.filterName || !user?.company_id) return;\n\n const sort = sorting?.[0];\n const params = {\n skip: paginationData.skip,\n limit: paginationData.limit,\n search,\n filters,\n ...(sort && { order: `${sort.id}:${sort.desc ? -1 : 1}` }),\n ...getToken(),\n 'x-timezone': getToken()['x-timezone']?.toString() || ''\n };\n console.log(\"params..............\", params)\n\n setFormBuilder(prev => ({ ...prev, isLoading: true }));\n const response = await getV1FormBuilder({\n ...params,\n ...getToken\n })\n console.log(\"response........\", response)\n setFormBuilder({\n rows: response?.data?.form,\n isLoading: false,\n paginationModel: {\n ...formBuilder.paginationModel,\n ...response?.data?.pagination\n }\n });\n\n\n }, [filters,\n paginationData.skip,\n paginationData.limit,\n sorting,\n search,\n moduleConfig.filterName,\n user?.company_id,\n ])\n // Effect for fetching data - optimized with proper dependencies\n useEffect(() => {\n fetchForms()\n }, [\n fetchForms\n ]);\n\n // Effect for setting active tab - only run when actionBarData changes\n useEffect(() => {\n if (actionBarData?.length && actionBarData[0].label !== actionBarActiveTab) {\n setActionBarActiveTab(actionBarData[0].label);\n }\n }, [actionBarData]);\n\n // Effect for localStorage - debounced to prevent excessive writes\n useEffect(() => {\n if (actionBarData?.length) {\n const timeoutId = setTimeout(() => {\n localStorage.setItem(\"form-view\", JSON.stringify(actionBarData));\n }, 300);\n\n return () => clearTimeout(timeoutId);\n }\n }, [actionBarData]);\n\n return (\n <section className=\"forms\">\n <ActionBar\n title=\"Form\"\n button={false}\n data={actionBarData}\n setData={setActionBarData}\n active={actionBarActiveTab}\n setActive={(tab) => {\n setActionBarActiveTab(tab);\n }}\n handleSearch={handleSearch}\n showFilter={false}\n />\n\n {actionBarActiveTab === viewTypes.TABLE && (\n <MaterialTable\n enablePagination={false}\n columnOrder={[\"mrt-row-select\", ...columnOrder]}\n handleColumnOrdering={handleColumnOrdering}\n rows={formBuilder.rows}\n columns={columns}\n totalPages={1}\n paginationModel={{ pageNo: 1, limit: 10 }}\n enableEditing={false}\n states={{ sorting: sorting || [] }}\n onSortingChange={setSorting}\n disableDefaultActionColumn\n getSelectedData={() => { }}\n />\n )}\n\n {actionBarActiveTab === viewTypes.GRID && (\n <GridCard data={formBuilder.rows} config={config} />\n )}\n\n <Footer\n pages={footerPages}\n setPages={() => { }}\n currentPage={1}\n setCurrentPage={() => { }}\n total={paginationData.total}\n paginationModel={{\n pageNo: formBuilder.paginationModel.pageNo,\n limit: formBuilder.paginationModel.limit\n }}\n handlePaginationModel={handlePaginationModel}\n sharedPages={[]}\n resource=\"\"\n savePageConfiguration={() => { }}\n handlePageDelete={() => { }}\n enablePages={false}\n isPaginationDisplayed={true}\n />\n </section>\n );\n};\n\nexport default Forms;"],"names":["_a"],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ const React = require("react");
|
|
|
4
4
|
const material = require("@mui/material");
|
|
5
5
|
const ERPUIProvider = require("./ERPUIProvider-DvW3nMzW.js");
|
|
6
6
|
const shareModalEnhanced = require("./share-modal-enhanced-D2dMDnYj.js");
|
|
7
|
-
const headerEnhanced = require("./header-enhanced-
|
|
7
|
+
const headerEnhanced = require("./header-enhanced-CTWeMXmz.js");
|
|
8
8
|
const FlexibleReduxExample = () => {
|
|
9
9
|
const [useRedux, setUseRedux] = React.useState(false);
|
|
10
10
|
const [showShareModal, setShowShareModal] = React.useState(false);
|
|
@@ -145,4 +145,4 @@ const FlexibleReduxExample = () => {
|
|
|
145
145
|
] }) });
|
|
146
146
|
};
|
|
147
147
|
exports.FlexibleReduxExample = FlexibleReduxExample;
|
|
148
|
-
//# sourceMappingURL=FlexibleReduxExample-
|
|
148
|
+
//# sourceMappingURL=FlexibleReduxExample-2rKuFI8o.js.map
|
package/dist/chunks/{FlexibleReduxExample-DPae9Asn.js.map → FlexibleReduxExample-2rKuFI8o.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FlexibleReduxExample-
|
|
1
|
+
{"version":3,"file":"FlexibleReduxExample-2rKuFI8o.js","sources":["../../src/components/examples/FlexibleReduxExample.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { Box, Button, Typography, Switch, FormControlLabel } from '@mui/material';\nimport { ERPUIProvider } from '../providers/ERPUIProvider';\nimport ShareModalEnhanced from '../share-modal/share-modal-enhanced';\nimport HeaderEnhanced from '../header/header-enhanced';\n\n/**\n * Example component demonstrating flexible Redux usage\n * This shows how components can work with or without Redux\n */\nconst FlexibleReduxExample: React.FC = () => {\n const [useRedux, setUseRedux] = useState(false);\n const [showShareModal, setShowShareModal] = useState(false);\n \n // Mock data for non-Redux usage\n const [users] = useState([\n { id: 1, first_name: 'John', last_name: 'Doe', label: 'John Doe', value: 1 },\n { id: 2, first_name: 'Jane', last_name: 'Smith', label: 'Jane Smith', value: 2 },\n ]);\n \n const [departments] = useState([\n { id: 1, name: 'Engineering', label: 'Engineering', value: 1 },\n { id: 2, name: 'Marketing', label: 'Marketing', value: 2 },\n ]);\n \n const [languages] = useState([\n { code: 'en', label: 'English', direction: 'ltr' },\n { code: 'es', label: 'Spanish', direction: 'ltr' },\n { code: 'ar', label: 'Arabic', direction: 'rtl' },\n ]);\n \n const [currentLanguage, setCurrentLanguage] = useState(languages[0]);\n const [loading, setLoading] = useState(false);\n\n // Mock API functions\n const fetchUsersAndDepartments = async () => {\n setLoading(true);\n // Simulate API call\n await new Promise(resolve => setTimeout(resolve, 1000));\n setLoading(false);\n };\n\n const handleLanguageChange = (languageCode: string) => {\n const language = languages.find(lang => lang.code === languageCode);\n if (language) {\n setCurrentLanguage(language);\n }\n };\n\n const handleShareSubmit = (data: any) => {\n setShowShareModal(false);\n };\n\n return (\n <ERPUIProvider useRedux={useRedux}>\n <Box sx={{ p: 3 }}>\n <Typography variant=\"h4\" gutterBottom>\n Flexible Redux Integration Example\n </Typography>\n \n <Typography variant=\"body1\" sx={{ mb: 2 }}>\n This example demonstrates how ERP UI Library components can work with or without Redux.\n Toggle the switch below to see the difference.\n </Typography>\n\n <FormControlLabel\n control={\n <Switch\n checked={useRedux}\n onChange={(e) => setUseRedux(e.target.checked)}\n />\n }\n label={`Use Redux: ${useRedux ? 'Enabled' : 'Disabled'}`}\n sx={{ mb: 3 }}\n />\n\n <Box sx={{ mb: 3 }}>\n <Typography variant=\"h6\" gutterBottom>\n Current Mode: {useRedux ? 'Redux-based' : 'Prop-based'}\n </Typography>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {useRedux \n ? 'Components are using Redux for state management'\n : 'Components are using props and local state for data'\n }\n </Typography>\n </Box>\n\n {/* Header Example */}\n <Box sx={{ border: 1, borderColor: 'grey.300', borderRadius: 1, p: 2, mb: 3 }}>\n <Typography variant=\"h6\" gutterBottom>\n Header Component\n </Typography>\n <HeaderEnhanced\n useRedux={useRedux}\n languages={useRedux ? undefined : languages}\n currentLanguage={useRedux ? undefined : currentLanguage}\n languagesLoading={useRedux ? undefined : loading}\n onLanguageChange={useRedux ? undefined : handleLanguageChange}\n onFetchLanguages={useRedux ? undefined : fetchUsersAndDepartments}\n />\n </Box>\n\n {/* Share Modal Example */}\n <Box sx={{ border: 1, borderColor: 'grey.300', borderRadius: 1, p: 2, mb: 3 }}>\n <Typography variant=\"h6\" gutterBottom>\n Share Modal Component\n </Typography>\n <Button\n variant=\"contained\"\n onClick={() => setShowShareModal(true)}\n sx={{ mb: 2 }}\n >\n Open Share Modal\n </Button>\n \n <ShareModalEnhanced\n open={showShareModal}\n onClose={() => setShowShareModal(false)}\n title=\"Share Document\"\n toggleSwitch={true}\n onSubmit={handleShareSubmit}\n useRedux={useRedux}\n users={useRedux ? undefined : users}\n departments={useRedux ? undefined : departments}\n loading={useRedux ? undefined : loading}\n onFetchUsersAndDepartments={useRedux ? undefined : fetchUsersAndDepartments}\n />\n </Box>\n\n {/* Code Example */}\n <Box sx={{ border: 1, borderColor: 'grey.300', borderRadius: 1, p: 2 }}>\n <Typography variant=\"h6\" gutterBottom>\n Code Example\n </Typography>\n <Box\n component=\"pre\"\n sx={{\n backgroundColor: 'grey.100',\n p: 2,\n borderRadius: 1,\n overflow: 'auto',\n fontSize: '0.875rem',\n }}\n >\n {useRedux ? `\n// Redux-based usage\n<ERPUIProvider useRedux={true} reduxStore={store} apiClient={apiClient}>\n <HeaderEnhanced useRedux={true} />\n <ShareModalEnhanced useRedux={true} />\n</ERPUIProvider>\n ` : `\n// Prop-based usage\n<ERPUIProvider useRedux={false}>\n <HeaderEnhanced\n useRedux={false}\n languages={languages}\n currentLanguage={currentLanguage}\n onLanguageChange={handleLanguageChange}\n />\n <ShareModalEnhanced\n useRedux={false}\n users={users}\n departments={departments}\n loading={loading}\n onFetchUsersAndDepartments={fetchUsersAndDepartments}\n />\n</ERPUIProvider>\n `}\n </Box>\n </Box>\n </Box>\n </ERPUIProvider>\n );\n};\n\nexport default FlexibleReduxExample;"],"names":["useState","jsx","ERPUIProvider","jsxs","Box","Typography","FormControlLabel","Switch","HeaderEnhanced","Button","ShareModalEnhanced"],"mappings":"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"}
|
package/dist/chunks/{FlexibleReduxExample-BDspk7BN.esm.js → FlexibleReduxExample-CDqcmsA4.esm.js}
RENAMED
|
@@ -3,7 +3,7 @@ import { useState } from "react";
|
|
|
3
3
|
import { Box, Typography, FormControlLabel, Switch, Button } from "@mui/material";
|
|
4
4
|
import { E as ERPUIProvider } from "./ERPUIProvider-DqKdePsJ.esm.js";
|
|
5
5
|
import { S as SharePopUpEnhanced } from "./share-modal-enhanced-B9RdKJpc.esm.js";
|
|
6
|
-
import { H as HeaderEnhanced } from "./header-enhanced-
|
|
6
|
+
import { H as HeaderEnhanced } from "./header-enhanced-DvQomhLR.esm.js";
|
|
7
7
|
const FlexibleReduxExample = () => {
|
|
8
8
|
const [useRedux, setUseRedux] = useState(false);
|
|
9
9
|
const [showShareModal, setShowShareModal] = useState(false);
|
|
@@ -146,4 +146,4 @@ const FlexibleReduxExample = () => {
|
|
|
146
146
|
export {
|
|
147
147
|
FlexibleReduxExample as F
|
|
148
148
|
};
|
|
149
|
-
//# sourceMappingURL=FlexibleReduxExample-
|
|
149
|
+
//# sourceMappingURL=FlexibleReduxExample-CDqcmsA4.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FlexibleReduxExample-
|
|
1
|
+
{"version":3,"file":"FlexibleReduxExample-CDqcmsA4.esm.js","sources":["../../src/components/examples/FlexibleReduxExample.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { Box, Button, Typography, Switch, FormControlLabel } from '@mui/material';\nimport { ERPUIProvider } from '../providers/ERPUIProvider';\nimport ShareModalEnhanced from '../share-modal/share-modal-enhanced';\nimport HeaderEnhanced from '../header/header-enhanced';\n\n/**\n * Example component demonstrating flexible Redux usage\n * This shows how components can work with or without Redux\n */\nconst FlexibleReduxExample: React.FC = () => {\n const [useRedux, setUseRedux] = useState(false);\n const [showShareModal, setShowShareModal] = useState(false);\n \n // Mock data for non-Redux usage\n const [users] = useState([\n { id: 1, first_name: 'John', last_name: 'Doe', label: 'John Doe', value: 1 },\n { id: 2, first_name: 'Jane', last_name: 'Smith', label: 'Jane Smith', value: 2 },\n ]);\n \n const [departments] = useState([\n { id: 1, name: 'Engineering', label: 'Engineering', value: 1 },\n { id: 2, name: 'Marketing', label: 'Marketing', value: 2 },\n ]);\n \n const [languages] = useState([\n { code: 'en', label: 'English', direction: 'ltr' },\n { code: 'es', label: 'Spanish', direction: 'ltr' },\n { code: 'ar', label: 'Arabic', direction: 'rtl' },\n ]);\n \n const [currentLanguage, setCurrentLanguage] = useState(languages[0]);\n const [loading, setLoading] = useState(false);\n\n // Mock API functions\n const fetchUsersAndDepartments = async () => {\n setLoading(true);\n // Simulate API call\n await new Promise(resolve => setTimeout(resolve, 1000));\n setLoading(false);\n };\n\n const handleLanguageChange = (languageCode: string) => {\n const language = languages.find(lang => lang.code === languageCode);\n if (language) {\n setCurrentLanguage(language);\n }\n };\n\n const handleShareSubmit = (data: any) => {\n setShowShareModal(false);\n };\n\n return (\n <ERPUIProvider useRedux={useRedux}>\n <Box sx={{ p: 3 }}>\n <Typography variant=\"h4\" gutterBottom>\n Flexible Redux Integration Example\n </Typography>\n \n <Typography variant=\"body1\" sx={{ mb: 2 }}>\n This example demonstrates how ERP UI Library components can work with or without Redux.\n Toggle the switch below to see the difference.\n </Typography>\n\n <FormControlLabel\n control={\n <Switch\n checked={useRedux}\n onChange={(e) => setUseRedux(e.target.checked)}\n />\n }\n label={`Use Redux: ${useRedux ? 'Enabled' : 'Disabled'}`}\n sx={{ mb: 3 }}\n />\n\n <Box sx={{ mb: 3 }}>\n <Typography variant=\"h6\" gutterBottom>\n Current Mode: {useRedux ? 'Redux-based' : 'Prop-based'}\n </Typography>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {useRedux \n ? 'Components are using Redux for state management'\n : 'Components are using props and local state for data'\n }\n </Typography>\n </Box>\n\n {/* Header Example */}\n <Box sx={{ border: 1, borderColor: 'grey.300', borderRadius: 1, p: 2, mb: 3 }}>\n <Typography variant=\"h6\" gutterBottom>\n Header Component\n </Typography>\n <HeaderEnhanced\n useRedux={useRedux}\n languages={useRedux ? undefined : languages}\n currentLanguage={useRedux ? undefined : currentLanguage}\n languagesLoading={useRedux ? undefined : loading}\n onLanguageChange={useRedux ? undefined : handleLanguageChange}\n onFetchLanguages={useRedux ? undefined : fetchUsersAndDepartments}\n />\n </Box>\n\n {/* Share Modal Example */}\n <Box sx={{ border: 1, borderColor: 'grey.300', borderRadius: 1, p: 2, mb: 3 }}>\n <Typography variant=\"h6\" gutterBottom>\n Share Modal Component\n </Typography>\n <Button\n variant=\"contained\"\n onClick={() => setShowShareModal(true)}\n sx={{ mb: 2 }}\n >\n Open Share Modal\n </Button>\n \n <ShareModalEnhanced\n open={showShareModal}\n onClose={() => setShowShareModal(false)}\n title=\"Share Document\"\n toggleSwitch={true}\n onSubmit={handleShareSubmit}\n useRedux={useRedux}\n users={useRedux ? undefined : users}\n departments={useRedux ? undefined : departments}\n loading={useRedux ? undefined : loading}\n onFetchUsersAndDepartments={useRedux ? undefined : fetchUsersAndDepartments}\n />\n </Box>\n\n {/* Code Example */}\n <Box sx={{ border: 1, borderColor: 'grey.300', borderRadius: 1, p: 2 }}>\n <Typography variant=\"h6\" gutterBottom>\n Code Example\n </Typography>\n <Box\n component=\"pre\"\n sx={{\n backgroundColor: 'grey.100',\n p: 2,\n borderRadius: 1,\n overflow: 'auto',\n fontSize: '0.875rem',\n }}\n >\n {useRedux ? `\n// Redux-based usage\n<ERPUIProvider useRedux={true} reduxStore={store} apiClient={apiClient}>\n <HeaderEnhanced useRedux={true} />\n <ShareModalEnhanced useRedux={true} />\n</ERPUIProvider>\n ` : `\n// Prop-based usage\n<ERPUIProvider useRedux={false}>\n <HeaderEnhanced\n useRedux={false}\n languages={languages}\n currentLanguage={currentLanguage}\n onLanguageChange={handleLanguageChange}\n />\n <ShareModalEnhanced\n useRedux={false}\n users={users}\n departments={departments}\n loading={loading}\n onFetchUsersAndDepartments={fetchUsersAndDepartments}\n />\n</ERPUIProvider>\n `}\n </Box>\n </Box>\n </Box>\n </ERPUIProvider>\n );\n};\n\nexport default FlexibleReduxExample;"],"names":["ShareModalEnhanced"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
2
|
import { Toolbar, styled, AppBar as AppBar$1 } from "@mui/material";
|
|
3
|
-
import { H as Header } from "./header-
|
|
3
|
+
import { H as Header } from "./header-DKNOkwDc.esm.js";
|
|
4
4
|
import "./appbar-l0sNRNKZ.esm.js";
|
|
5
5
|
let drawerWidth;
|
|
6
6
|
const closedSidebarWidth = (theme) => `calc(${theme.spacing(8)} + 1px)`;
|
|
@@ -54,4 +54,4 @@ const AppBarWrapper = (props) => {
|
|
|
54
54
|
export {
|
|
55
55
|
AppBarWrapper as A
|
|
56
56
|
};
|
|
57
|
-
//# sourceMappingURL=appbar-
|
|
57
|
+
//# sourceMappingURL=appbar-BAZAd73h.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appbar-
|
|
1
|
+
{"version":3,"file":"appbar-BAZAd73h.esm.js","sources":["../../src/components/appbar/appbar.tsx"],"sourcesContent":["import { styled } from \"@mui/material\";\nimport { AppBar as MuiAppBar, AppBarProps as MuiAppBarProps } from \"@mui/material\";\nimport { Toolbar } from \"@mui/material\";\n// import MenuIcon from \"@mui/icons-material/Menu\";\nimport { IconButton } from \"@mui/material\";\n\n// import { Box, FormControl, FormControlLabel, FormLabel, Radio, RadioGroup, ThemeProvider } from '@mui/material';\n\nimport Header from \"../header/header\";\n// import ThemeSelector from \"../../utils/themeSelector\";\n\nimport \"./appbar.scss\";\nimport images from \"../../assets/images\";\n// import { Box } from \"@mui/material\";\n\nlet drawerWidth: any;\n\ninterface AppBarProps extends MuiAppBarProps {\n open?: boolean;\n}\n\n// const getTheme = (selectedTheme: any) => {\n// switch (selectedTheme) {\n// case ThemeSelector.PRIMARY:\n// return themes.redStone;\n// case ThemeSelector.SECONDARY:\n// return themes.blueNavy;\n// case ThemeSelector.TERTIARY:\n// return themes.oliveGreen;\n// default:\n// return themes.redStone;\n// }\n// };\n\n// Width of the sidebar when collapsed — must match sidebar.tsx closedMixin\nconst closedSidebarWidth = (theme: any) => `calc(${theme.spacing(8)} + 1px)`;\n\nconst AppBar = styled(MuiAppBar, {\n shouldForwardProp: (prop) => prop !== \"open\",\n})<AppBarProps>(({ theme, open }) => {\n const isRtl = document.body.dir === \"rtl\";\n const collapsedW = closedSidebarWidth(theme);\n return {\n zIndex: theme.zIndex.drawer + 2,\n transition: theme.transitions.create([\"width\", \"margin\"], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n // Base: always offset by collapsed sidebar so the header never hides behind it\n marginLeft: isRtl ? 0 : collapsedW,\n marginRight: isRtl ? collapsedW : 0,\n width: `calc(100% - ${collapsedW})`,\n ...(open && {\n marginLeft: isRtl ? 0 : drawerWidth,\n marginRight: isRtl ? drawerWidth : 0,\n width: `calc(100% - ${drawerWidth}px)`,\n transition: theme.transitions.create([\"width\", \"margin\"], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen,\n }),\n }),\n boxShadow: \"none\",\n overflow: \"visible\",\n };\n});\n\nexport const AppBarWrapper = (props: any) => {\n drawerWidth = props.width;\n\n // const handleThemeChange = (e: any) => setSelectedTheme(e.target.value);\n\n return (\n <AppBar\n position=\"fixed\"\n open={props?.open}\n sx={(theme) => ({\n borderBottom: \"1px solid\",\n borderColor: theme.palette.theme?.secondary[200],\n backgroundColor: theme.palette.theme?.secondary[100],\n })}\n >\n {/* <FormControl>\n <FormLabel id=\"theme-radio-buttons-group-label\">Theme</FormLabel>\n <RadioGroup\n row\n value={selectedTheme}\n onChange={handleThemeChange}\n aria-labelledby=\"theme-radio-buttons-group-label\"\n name=\"row-radio-buttons-group\"\n >\n {Object.keys(ThemeSelector)?.map((variant: any, index: any) => (\n <FormControlLabel\n key={index}\n value={ThemeSelector[variant]}\n control={<Radio />}\n label={ThemeSelector[variant]}\n sx={{\n '.MuiFormControlLabel-label': {\n color: 'theme.text',\n },\n }}\n />\n ))}\n </RadioGroup>\n </FormControl> */}\n <Toolbar disableGutters sx={{ backgroundColor: 'grey.100', minHeight: '60px !important', p: 0 }}>\n <Header />\n </Toolbar>\n {/* <Header /> */}\n </AppBar>\n );\n};\n\nexport default AppBarWrapper;\n"],"names":["MuiAppBar"],"mappings":";;;;AAeA,IAAI;AAoBJ,MAAM,qBAAqB,CAAC,UAAe,QAAQ,MAAM,QAAQ,CAAC,CAAC;AAEnE,MAAM,SAAS,OAAOA,UAAW;AAAA,EAC/B,mBAAmB,CAAC,SAAS,SAAS;AACxC,CAAC,EAAe,CAAC,EAAE,OAAO,WAAW;AACnC,QAAM,QAAQ,SAAS,KAAK,QAAQ;AACpC,QAAM,aAAa,mBAAmB,KAAK;AAC3C,SAAO;AAAA,IACL,QAAQ,MAAM,OAAO,SAAS;AAAA,IAC9B,YAAY,MAAM,YAAY,OAAO,CAAC,SAAS,QAAQ,GAAG;AAAA,MACxD,QAAQ,MAAM,YAAY,OAAO;AAAA,MACjC,UAAU,MAAM,YAAY,SAAS;AAAA,IAAA,CACtC;AAAA;AAAA,IAED,YAAY,QAAQ,IAAI;AAAA,IACxB,aAAa,QAAQ,aAAa;AAAA,IAClC,OAAO,eAAe,UAAU;AAAA,IAChC,GAAI,QAAQ;AAAA,MACV,YAAY,QAAQ,IAAI;AAAA,MACxB,aAAa,QAAQ,cAAc;AAAA,MACnC,OAAO,eAAe,WAAW;AAAA,MACjC,YAAY,MAAM,YAAY,OAAO,CAAC,SAAS,QAAQ,GAAG;AAAA,QACxD,QAAQ,MAAM,YAAY,OAAO;AAAA,QACjC,UAAU,MAAM,YAAY,SAAS;AAAA,MAAA,CACtC;AAAA,IAAA;AAAA,IAEH,WAAW;AAAA,IACX,UAAU;AAAA,EAAA;AAEd,CAAC;AAEM,MAAM,gBAAgB,CAAC,UAAe;AAC3C,gBAAc,MAAM;AAIpB,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,UAAS;AAAA,MACT,MAAM,+BAAO;AAAA,MACb,IAAI,CAAC,UAAA;;AAAW;AAAA,UACd,cAAc;AAAA,UACd,cAAa,WAAM,QAAQ,UAAd,mBAAqB,UAAU;AAAA,UAC5C,kBAAiB,WAAM,QAAQ,UAAd,mBAAqB,UAAU;AAAA,QAAG;AAAA;AAAA,MA2BrD,UAAA,oBAAC,SAAA,EAAQ,gBAAc,MAAC,IAAI,EAAE,iBAAiB,YAAY,WAAW,mBAAmB,GAAG,EAAA,GAC1F,UAAA,oBAAC,UAAO,EAAA,CACV;AAAA,IAAA;AAAA,EAAA;AAIN;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
const jsxRuntime = require("react/jsx-runtime");
|
|
3
3
|
const material = require("@mui/material");
|
|
4
|
-
const header = require("./header-
|
|
4
|
+
const header = require("./header-CssVAc7L.js");
|
|
5
5
|
require("./appbar-Dyvby5gX.js");
|
|
6
6
|
let drawerWidth;
|
|
7
7
|
const closedSidebarWidth = (theme) => `calc(${theme.spacing(8)} + 1px)`;
|
|
@@ -53,4 +53,4 @@ const AppBarWrapper = (props) => {
|
|
|
53
53
|
);
|
|
54
54
|
};
|
|
55
55
|
exports.AppBarWrapper = AppBarWrapper;
|
|
56
|
-
//# sourceMappingURL=appbar-
|
|
56
|
+
//# sourceMappingURL=appbar-VQp_geDl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appbar-
|
|
1
|
+
{"version":3,"file":"appbar-VQp_geDl.js","sources":["../../src/components/appbar/appbar.tsx"],"sourcesContent":["import { styled } from \"@mui/material\";\nimport { AppBar as MuiAppBar, AppBarProps as MuiAppBarProps } from \"@mui/material\";\nimport { Toolbar } from \"@mui/material\";\n// import MenuIcon from \"@mui/icons-material/Menu\";\nimport { IconButton } from \"@mui/material\";\n\n// import { Box, FormControl, FormControlLabel, FormLabel, Radio, RadioGroup, ThemeProvider } from '@mui/material';\n\nimport Header from \"../header/header\";\n// import ThemeSelector from \"../../utils/themeSelector\";\n\nimport \"./appbar.scss\";\nimport images from \"../../assets/images\";\n// import { Box } from \"@mui/material\";\n\nlet drawerWidth: any;\n\ninterface AppBarProps extends MuiAppBarProps {\n open?: boolean;\n}\n\n// const getTheme = (selectedTheme: any) => {\n// switch (selectedTheme) {\n// case ThemeSelector.PRIMARY:\n// return themes.redStone;\n// case ThemeSelector.SECONDARY:\n// return themes.blueNavy;\n// case ThemeSelector.TERTIARY:\n// return themes.oliveGreen;\n// default:\n// return themes.redStone;\n// }\n// };\n\n// Width of the sidebar when collapsed — must match sidebar.tsx closedMixin\nconst closedSidebarWidth = (theme: any) => `calc(${theme.spacing(8)} + 1px)`;\n\nconst AppBar = styled(MuiAppBar, {\n shouldForwardProp: (prop) => prop !== \"open\",\n})<AppBarProps>(({ theme, open }) => {\n const isRtl = document.body.dir === \"rtl\";\n const collapsedW = closedSidebarWidth(theme);\n return {\n zIndex: theme.zIndex.drawer + 2,\n transition: theme.transitions.create([\"width\", \"margin\"], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n // Base: always offset by collapsed sidebar so the header never hides behind it\n marginLeft: isRtl ? 0 : collapsedW,\n marginRight: isRtl ? collapsedW : 0,\n width: `calc(100% - ${collapsedW})`,\n ...(open && {\n marginLeft: isRtl ? 0 : drawerWidth,\n marginRight: isRtl ? drawerWidth : 0,\n width: `calc(100% - ${drawerWidth}px)`,\n transition: theme.transitions.create([\"width\", \"margin\"], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen,\n }),\n }),\n boxShadow: \"none\",\n overflow: \"visible\",\n };\n});\n\nexport const AppBarWrapper = (props: any) => {\n drawerWidth = props.width;\n\n // const handleThemeChange = (e: any) => setSelectedTheme(e.target.value);\n\n return (\n <AppBar\n position=\"fixed\"\n open={props?.open}\n sx={(theme) => ({\n borderBottom: \"1px solid\",\n borderColor: theme.palette.theme?.secondary[200],\n backgroundColor: theme.palette.theme?.secondary[100],\n })}\n >\n {/* <FormControl>\n <FormLabel id=\"theme-radio-buttons-group-label\">Theme</FormLabel>\n <RadioGroup\n row\n value={selectedTheme}\n onChange={handleThemeChange}\n aria-labelledby=\"theme-radio-buttons-group-label\"\n name=\"row-radio-buttons-group\"\n >\n {Object.keys(ThemeSelector)?.map((variant: any, index: any) => (\n <FormControlLabel\n key={index}\n value={ThemeSelector[variant]}\n control={<Radio />}\n label={ThemeSelector[variant]}\n sx={{\n '.MuiFormControlLabel-label': {\n color: 'theme.text',\n },\n }}\n />\n ))}\n </RadioGroup>\n </FormControl> */}\n <Toolbar disableGutters sx={{ backgroundColor: 'grey.100', minHeight: '60px !important', p: 0 }}>\n <Header />\n </Toolbar>\n {/* <Header /> */}\n </AppBar>\n );\n};\n\nexport default AppBarWrapper;\n"],"names":["styled","MuiAppBar","jsx","Toolbar","Header"],"mappings":";;;;;AAeA,IAAI;AAoBJ,MAAM,qBAAqB,CAAC,UAAe,QAAQ,MAAM,QAAQ,CAAC,CAAC;AAEnE,MAAM,SAASA,SAAAA,OAAOC,iBAAW;AAAA,EAC/B,mBAAmB,CAAC,SAAS,SAAS;AACxC,CAAC,EAAe,CAAC,EAAE,OAAO,WAAW;AACnC,QAAM,QAAQ,SAAS,KAAK,QAAQ;AACpC,QAAM,aAAa,mBAAmB,KAAK;AAC3C,SAAO;AAAA,IACL,QAAQ,MAAM,OAAO,SAAS;AAAA,IAC9B,YAAY,MAAM,YAAY,OAAO,CAAC,SAAS,QAAQ,GAAG;AAAA,MACxD,QAAQ,MAAM,YAAY,OAAO;AAAA,MACjC,UAAU,MAAM,YAAY,SAAS;AAAA,IAAA,CACtC;AAAA;AAAA,IAED,YAAY,QAAQ,IAAI;AAAA,IACxB,aAAa,QAAQ,aAAa;AAAA,IAClC,OAAO,eAAe,UAAU;AAAA,IAChC,GAAI,QAAQ;AAAA,MACV,YAAY,QAAQ,IAAI;AAAA,MACxB,aAAa,QAAQ,cAAc;AAAA,MACnC,OAAO,eAAe,WAAW;AAAA,MACjC,YAAY,MAAM,YAAY,OAAO,CAAC,SAAS,QAAQ,GAAG;AAAA,QACxD,QAAQ,MAAM,YAAY,OAAO;AAAA,QACjC,UAAU,MAAM,YAAY,SAAS;AAAA,MAAA,CACtC;AAAA,IAAA;AAAA,IAEH,WAAW;AAAA,IACX,UAAU;AAAA,EAAA;AAEd,CAAC;AAEM,MAAM,gBAAgB,CAAC,UAAe;AAC3C,gBAAc,MAAM;AAIpB,SACEC,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,UAAS;AAAA,MACT,MAAM,+BAAO;AAAA,MACb,IAAI,CAAC,UAAA;;AAAW;AAAA,UACd,cAAc;AAAA,UACd,cAAa,WAAM,QAAQ,UAAd,mBAAqB,UAAU;AAAA,UAC5C,kBAAiB,WAAM,QAAQ,UAAd,mBAAqB,UAAU;AAAA,QAAG;AAAA;AAAA,MA2BrD,UAAAA,2BAAAA,IAACC,kBAAA,EAAQ,gBAAc,MAAC,IAAI,EAAE,iBAAiB,YAAY,WAAW,mBAAmB,GAAG,EAAA,GAC1F,UAAAD,+BAACE,OAAAA,UAAO,EAAA,CACV;AAAA,IAAA;AAAA,EAAA;AAIN;;"}
|
|
@@ -3,9 +3,9 @@ import { useTranslation } from "react-i18next";
|
|
|
3
3
|
import { Box, CssBaseline } from "@mui/material";
|
|
4
4
|
import { M as ModuleTile } from "./module-button-Dnal3NeP.esm.js";
|
|
5
5
|
import { T as Typography } from "./typography-CG_A0iOJ.esm.js";
|
|
6
|
-
import { F as FullscreenLayout } from "./fullScreen-
|
|
6
|
+
import { F as FullscreenLayout } from "./fullScreen-Dv3VVtOg.esm.js";
|
|
7
7
|
import { useState, useMemo, useEffect } from "react";
|
|
8
|
-
import { m as modules } from "./modules-
|
|
8
|
+
import { m as modules } from "./modules-CgsS9dWK.esm.js";
|
|
9
9
|
import images from "../images/index.esm.js";
|
|
10
10
|
/* empty css */
|
|
11
11
|
import { ab as getToken } from "./api-BRoV9xQq.esm.js";
|
|
@@ -72,4 +72,4 @@ const Dashboard = () => {
|
|
|
72
72
|
export {
|
|
73
73
|
Dashboard as D
|
|
74
74
|
};
|
|
75
|
-
//# sourceMappingURL=dashboard-
|
|
75
|
+
//# sourceMappingURL=dashboard-KnePj9KD.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard-
|
|
1
|
+
{"version":3,"file":"dashboard-KnePj9KD.esm.js","sources":["../../src/views/afterAuth/dashboard/dashboard.tsx"],"sourcesContent":["import { useTranslation } from \"react-i18next\";\nimport { CssBaseline } from \"@mui/material\";\nimport { Box } from \"@mui/material\";\nimport ModuleTile from \"../../../components/module-button/module-button\";\nimport Typography from \"../../../components/typography/typography\";\nimport FullScreenLayout from \"../../../layout/fullScreen/fullScreen\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport modules from \"../../../constants/modules\";\nimport images from \"../../../assets/images\";\nimport \"./dashboard.scss\";\nimport { getToken } from \"../../../utils/common\";\nimport { getV1RoleUserId } from \"../../../api-client/api.rbac/api\";\n\nexport const Dashboard = () => {\n const { t } = useTranslation();\n const [erp_modules, setModules] = useState<any | undefined>([]);\n\n const u_data = localStorage.getItem(\"_u_data\") || undefined;\n const userData = useMemo(() => (u_data ? JSON.parse(u_data) : \"\"), [u_data]);\n\n const access_modules = userData?.module_access && userData?.module_access?.length > 0 ? userData?.module_access : [{ \"module_name\": \"user\" }]\n const display_modules = erp_modules?.filter((item1: any) => access_modules?.some((item2: any) => item2.module_name == item1.beModuleName || item1.beModuleName === \"rbac\"));\n const rolePermission = localStorage.getItem(\"role-permission\") || undefined;\n\n const permissions = rolePermission && JSON.parse(rolePermission)?.modules ? JSON.parse(rolePermission).modules : [];\n let matchedModules = display_modules\n if (permissions.length) {\n matchedModules = display_modules.filter(module => permissions.includes(module.beModuleName));\n }\n\n useEffect(() => {\n setModules(modules(t));\n }, [t]);\n\n const getAndSetUserRoleAndPermissions = async (userId) => {\n const response = await getV1RoleUserId({\n\t\t\tid: userId,\n\t\t\t...getToken(),\n\t\t} as any);\n\t\tconst data = response?.data.role;\n localStorage.setItem('role-permission', JSON.stringify(data));\n }\n\n useEffect(() => {\n if (userData?.id) {\n getAndSetUserRoleAndPermissions(userData.id); }\n }, [userData?.id]);\n\n return (\n <Box>\n <CssBaseline />\n <FullScreenLayout>\n <Box className=\"dashboard-container\">\n <Box className=\"dashboard-heading\">\n <Typography type=\"h2\" className=\"dashboard-title\">\n {t(\"dashboard.title\")}\n </Typography>\n <Typography type=\"s3\" className=\"dashboard-subtitle\">\n {t(\"dashboard.subtitle\")}\n </Typography>\n </Box>\n <Box className=\"module-container\">\n {matchedModules?.map((module: any, index: number) => {\n return <ModuleTile module={module} key={index} />;\n })}\n {\n userData && userData?.role_name == \"Admin\" && \n <ModuleTile\n module={{\n label: \"Add New Module\",\n link: \"\",\n sidebar: images.addModule,\n icon: images.addModule,\n permission: \"\",\n bg: \"transparent\",\n }}\n key={0}\n />\n }\n \n </Box>\n </Box>\n </FullScreenLayout>\n </Box>\n );\n};\n\nexport default Dashboard;\n"],"names":["FullScreenLayout"],"mappings":";;;;;;;;;;;;AAaO,MAAM,YAAY,MAAM;;AAC7B,QAAM,EAAE,EAAA,IAAM,eAAA;AACd,QAAM,CAAC,aAAa,UAAU,IAAI,SAA0B,CAAA,CAAE;AAE9D,QAAM,SAAS,aAAa,QAAQ,SAAS,KAAK;AAClD,QAAM,WAAW,QAAQ,MAAO,SAAS,KAAK,MAAM,MAAM,IAAI,IAAK,CAAC,MAAM,CAAC;AAE3E,QAAM,kBAAiB,qCAAU,oBAAiB,0CAAU,kBAAV,mBAAyB,UAAS,IAAI,qCAAU,gBAAgB,CAAC,EAAE,eAAe,QAAQ;AAC5I,QAAM,kBAAkB,2CAAa,OAAO,CAAC,UAAe,iDAAgB,KAAK,CAAC,UAAe,MAAM,eAAe,MAAM,gBAAgB,MAAM,iBAAiB;AACnK,QAAM,iBAAiB,aAAa,QAAQ,iBAAiB,KAAK;AAElE,QAAM,cAAc,oBAAkB,UAAK,MAAM,cAAc,MAAzB,mBAA4B,WAAU,KAAK,MAAM,cAAc,EAAE,UAAU,CAAA;AACjH,MAAI,iBAAiB;AACrB,MAAI,YAAY,QAAQ;AACtB,qBAAiB,gBAAgB,OAAO,CAAA,WAAU,YAAY,SAAS,OAAO,YAAY,CAAC;AAAA,EAC7F;AAEA,YAAU,MAAM;AACd,eAAW,QAAQ,CAAC,CAAC;AAAA,EACvB,GAAG,CAAC,CAAC,CAAC;AAEN,QAAM,kCAAkC,OAAO,WAAW;AACxD,UAAM,WAAW,MAAM,gBAAgB;AAAA,MACxC,IAAI;AAAA,MACJ,GAAG,SAAA;AAAA,IAAS,CACL;AACR,UAAM,OAAO,qCAAU,KAAK;AAC1B,iBAAa,QAAQ,mBAAmB,KAAK,UAAU,IAAI,CAAC;AAAA,EAC9D;AAEA,YAAU,MAAM;AACd,QAAI,qCAAU,IAAI;AAChB,sCAAgC,SAAS,EAAE;AAAA,IAAM;AAAA,EACrD,GAAG,CAAC,qCAAU,EAAE,CAAC;AAEjB,8BACG,KAAA,EACC,UAAA;AAAA,IAAA,oBAAC,aAAA,EAAY;AAAA,IACb,oBAACA,kBAAA,EACC,UAAA,qBAAC,KAAA,EAAI,WAAU,uBACb,UAAA;AAAA,MAAA,qBAAC,KAAA,EAAI,WAAU,qBACb,UAAA;AAAA,QAAA,oBAAC,cAAW,MAAK,MAAK,WAAU,mBAC7B,UAAA,EAAE,iBAAiB,GACtB;AAAA,QACA,oBAAC,cAAW,MAAK,MAAK,WAAU,sBAC7B,UAAA,EAAE,oBAAoB,EAAA,CACzB;AAAA,MAAA,GACF;AAAA,MACA,qBAAC,KAAA,EAAI,WAAU,oBACZ,UAAA;AAAA,QAAA,iDAAgB,IAAI,CAAC,QAAa,UAAkB;AACnD,iBAAO,oBAAC,YAAA,EAAW,OAAA,GAAqB,KAAO;AAAA,QACjD;AAAA,QAEE,aAAY,qCAAU,cAAa,WACjC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,QAAQ;AAAA,cACN,OAAO;AAAA,cACP,MAAM;AAAA,cACN,SAAS,OAAO;AAAA,cAChB,MAAM,OAAO;AAAA,cACb,YAAY;AAAA,cACZ,IAAI;AAAA,YAAA;AAAA,UACN;AAAA,UACK;AAAA,QAAA;AAAA,MACP,EAAA,CAGN;AAAA,IAAA,EAAA,CACF,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;"}
|
|
@@ -4,9 +4,9 @@ const reactI18next = require("react-i18next");
|
|
|
4
4
|
const material = require("@mui/material");
|
|
5
5
|
const moduleButton = require("./module-button-C4inIFuC.js");
|
|
6
6
|
const typography = require("./typography-Bqfr1Ksf.js");
|
|
7
|
-
const fullScreen = require("./fullScreen-
|
|
7
|
+
const fullScreen = require("./fullScreen-D84sOyGA.js");
|
|
8
8
|
const React = require("react");
|
|
9
|
-
const modules = require("./modules-
|
|
9
|
+
const modules = require("./modules-CxiCcj8n.js");
|
|
10
10
|
const images = require("../images/index.js");
|
|
11
11
|
;/* empty css */
|
|
12
12
|
const api$1 = require("./api-Cre6p-zx.js");
|
|
@@ -71,4 +71,4 @@ const Dashboard = () => {
|
|
|
71
71
|
] });
|
|
72
72
|
};
|
|
73
73
|
exports.Dashboard = Dashboard;
|
|
74
|
-
//# sourceMappingURL=dashboard-
|
|
74
|
+
//# sourceMappingURL=dashboard-e2lYhtve.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard-
|
|
1
|
+
{"version":3,"file":"dashboard-e2lYhtve.js","sources":["../../src/views/afterAuth/dashboard/dashboard.tsx"],"sourcesContent":["import { useTranslation } from \"react-i18next\";\nimport { CssBaseline } from \"@mui/material\";\nimport { Box } from \"@mui/material\";\nimport ModuleTile from \"../../../components/module-button/module-button\";\nimport Typography from \"../../../components/typography/typography\";\nimport FullScreenLayout from \"../../../layout/fullScreen/fullScreen\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport modules from \"../../../constants/modules\";\nimport images from \"../../../assets/images\";\nimport \"./dashboard.scss\";\nimport { getToken } from \"../../../utils/common\";\nimport { getV1RoleUserId } from \"../../../api-client/api.rbac/api\";\n\nexport const Dashboard = () => {\n const { t } = useTranslation();\n const [erp_modules, setModules] = useState<any | undefined>([]);\n\n const u_data = localStorage.getItem(\"_u_data\") || undefined;\n const userData = useMemo(() => (u_data ? JSON.parse(u_data) : \"\"), [u_data]);\n\n const access_modules = userData?.module_access && userData?.module_access?.length > 0 ? userData?.module_access : [{ \"module_name\": \"user\" }]\n const display_modules = erp_modules?.filter((item1: any) => access_modules?.some((item2: any) => item2.module_name == item1.beModuleName || item1.beModuleName === \"rbac\"));\n const rolePermission = localStorage.getItem(\"role-permission\") || undefined;\n\n const permissions = rolePermission && JSON.parse(rolePermission)?.modules ? JSON.parse(rolePermission).modules : [];\n let matchedModules = display_modules\n if (permissions.length) {\n matchedModules = display_modules.filter(module => permissions.includes(module.beModuleName));\n }\n\n useEffect(() => {\n setModules(modules(t));\n }, [t]);\n\n const getAndSetUserRoleAndPermissions = async (userId) => {\n const response = await getV1RoleUserId({\n\t\t\tid: userId,\n\t\t\t...getToken(),\n\t\t} as any);\n\t\tconst data = response?.data.role;\n localStorage.setItem('role-permission', JSON.stringify(data));\n }\n\n useEffect(() => {\n if (userData?.id) {\n getAndSetUserRoleAndPermissions(userData.id); }\n }, [userData?.id]);\n\n return (\n <Box>\n <CssBaseline />\n <FullScreenLayout>\n <Box className=\"dashboard-container\">\n <Box className=\"dashboard-heading\">\n <Typography type=\"h2\" className=\"dashboard-title\">\n {t(\"dashboard.title\")}\n </Typography>\n <Typography type=\"s3\" className=\"dashboard-subtitle\">\n {t(\"dashboard.subtitle\")}\n </Typography>\n </Box>\n <Box className=\"module-container\">\n {matchedModules?.map((module: any, index: number) => {\n return <ModuleTile module={module} key={index} />;\n })}\n {\n userData && userData?.role_name == \"Admin\" && \n <ModuleTile\n module={{\n label: \"Add New Module\",\n link: \"\",\n sidebar: images.addModule,\n icon: images.addModule,\n permission: \"\",\n bg: \"transparent\",\n }}\n key={0}\n />\n }\n \n </Box>\n </Box>\n </FullScreenLayout>\n </Box>\n );\n};\n\nexport default Dashboard;\n"],"names":["useTranslation","useState","useMemo","module","useEffect","modules","getV1RoleUserId","getToken","Box","jsx","CssBaseline","FullScreenLayout","jsxs","Typography","ModuleTile","images"],"mappings":";;;;;;;;;;;;;AAaO,MAAM,YAAY,MAAM;;AAC7B,QAAM,EAAE,EAAA,IAAMA,4BAAA;AACd,QAAM,CAAC,aAAa,UAAU,IAAIC,MAAAA,SAA0B,CAAA,CAAE;AAE9D,QAAM,SAAS,aAAa,QAAQ,SAAS,KAAK;AAClD,QAAM,WAAWC,MAAAA,QAAQ,MAAO,SAAS,KAAK,MAAM,MAAM,IAAI,IAAK,CAAC,MAAM,CAAC;AAE3E,QAAM,kBAAiB,qCAAU,oBAAiB,0CAAU,kBAAV,mBAAyB,UAAS,IAAI,qCAAU,gBAAgB,CAAC,EAAE,eAAe,QAAQ;AAC5I,QAAM,kBAAkB,2CAAa,OAAO,CAAC,UAAe,iDAAgB,KAAK,CAAC,UAAe,MAAM,eAAe,MAAM,gBAAgB,MAAM,iBAAiB;AACnK,QAAM,iBAAiB,aAAa,QAAQ,iBAAiB,KAAK;AAElE,QAAM,cAAc,oBAAkB,UAAK,MAAM,cAAc,MAAzB,mBAA4B,WAAU,KAAK,MAAM,cAAc,EAAE,UAAU,CAAA;AACjH,MAAI,iBAAiB;AACrB,MAAI,YAAY,QAAQ;AACtB,qBAAiB,gBAAgB,OAAO,CAAAC,YAAU,YAAY,SAASA,QAAO,YAAY,CAAC;AAAA,EAC7F;AAEAC,QAAAA,UAAU,MAAM;AACd,eAAWC,QAAAA,QAAQ,CAAC,CAAC;AAAA,EACvB,GAAG,CAAC,CAAC,CAAC;AAEN,QAAM,kCAAkC,OAAO,WAAW;AACxD,UAAM,WAAW,MAAMC,oBAAgB;AAAA,MACxC,IAAI;AAAA,MACJ,GAAGC,MAAAA,SAAA;AAAA,IAAS,CACL;AACR,UAAM,OAAO,qCAAU,KAAK;AAC1B,iBAAa,QAAQ,mBAAmB,KAAK,UAAU,IAAI,CAAC;AAAA,EAC9D;AAEAH,QAAAA,UAAU,MAAM;AACd,QAAI,qCAAU,IAAI;AAChB,sCAAgC,SAAS,EAAE;AAAA,IAAM;AAAA,EACrD,GAAG,CAAC,qCAAU,EAAE,CAAC;AAEjB,yCACGI,cAAA,EACC,UAAA;AAAA,IAAAC,2BAAAA,IAACC,SAAAA,aAAA,EAAY;AAAA,IACbD,+BAACE,WAAAA,kBAAA,EACC,UAAAC,2BAAAA,KAACJ,SAAAA,KAAA,EAAI,WAAU,uBACb,UAAA;AAAA,MAAAI,2BAAAA,KAACJ,SAAAA,KAAA,EAAI,WAAU,qBACb,UAAA;AAAA,QAAAC,2BAAAA,IAACI,WAAAA,cAAW,MAAK,MAAK,WAAU,mBAC7B,UAAA,EAAE,iBAAiB,GACtB;AAAA,QACAJ,+BAACI,WAAAA,cAAW,MAAK,MAAK,WAAU,sBAC7B,UAAA,EAAE,oBAAoB,EAAA,CACzB;AAAA,MAAA,GACF;AAAA,MACAD,2BAAAA,KAACJ,SAAAA,KAAA,EAAI,WAAU,oBACZ,UAAA;AAAA,QAAA,iDAAgB,IAAI,CAACL,SAAa,UAAkB;AACnD,iBAAOM,2BAAAA,IAACK,aAAAA,YAAA,EAAW,QAAAX,QAAA,GAAqB,KAAO;AAAA,QACjD;AAAA,QAEE,aAAY,qCAAU,cAAa,WACjCM,2BAAAA;AAAAA,UAACK,aAAAA;AAAAA,UAAA;AAAA,YACC,QAAQ;AAAA,cACN,OAAO;AAAA,cACP,MAAM;AAAA,cACN,SAASC,OAAAA,QAAO;AAAA,cAChB,MAAMA,OAAAA,QAAO;AAAA,cACb,YAAY;AAAA,cACZ,IAAI;AAAA,YAAA;AAAA,UACN;AAAA,UACK;AAAA,QAAA;AAAA,MACP,EAAA,CAGN;AAAA,IAAA,EAAA,CACF,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
const jsxRuntime = require("react/jsx-runtime");
|
|
3
3
|
const material = require("@mui/material");
|
|
4
|
-
const appbar = require("./appbar-
|
|
4
|
+
const appbar = require("./appbar-VQp_geDl.js");
|
|
5
5
|
const activityArea = require("./activityArea-C9-Nfhjc.js");
|
|
6
6
|
const chatBot = require("./chat-bot-DuC1sizJ.js");
|
|
7
7
|
const mui_constants = require("./mui.constants-CJEIUmWO.js");
|
|
@@ -15,4 +15,4 @@ const FullscreenLayout = (props) => {
|
|
|
15
15
|
] });
|
|
16
16
|
};
|
|
17
17
|
exports.FullscreenLayout = FullscreenLayout;
|
|
18
|
-
//# sourceMappingURL=fullScreen-
|
|
18
|
+
//# sourceMappingURL=fullScreen-D84sOyGA.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fullScreen-
|
|
1
|
+
{"version":3,"file":"fullScreen-D84sOyGA.js","sources":["../../src/layout/fullScreen/fullScreen.tsx"],"sourcesContent":["import { CssBaseline } from '@mui/material';\nimport { Box } from '@mui/material';\n\nimport AppBar from '../../components/appbar/appbar';\nimport ActivityArea from '../../components/activityArea/activityArea';\nimport ChatBot from '../../components/chat-bot/chat-bot';\n\nimport drawerWidth from '../../constants/mui.constants';\n\nexport interface IFullscreenLayoutProps {\n children: React.ReactNode;\n}\n\nexport const FullscreenLayout = (props: IFullscreenLayoutProps) => {\n\tconst { children } = props;\n\treturn (\n\t\t<Box sx={{ display: 'flex' }}>\n\t\t\t<CssBaseline />\n\t\t\t<AppBar width={drawerWidth} />\n\t\t\t<ActivityArea>{children}</ActivityArea>\n\t\t\t<ChatBot />\n\t\t</Box>\n\t);\n};\n\nexport default FullscreenLayout;\n"],"names":["Box","jsx","CssBaseline","AppBar","drawerWidth","ActivityArea","ChatBot"],"mappings":";;;;;;;AAaO,MAAM,mBAAmB,CAAC,UAAkC;AAClE,QAAM,EAAE,aAAa;AACrB,yCACEA,SAAAA,KAAA,EAAI,IAAI,EAAE,SAAS,UACnB,UAAA;AAAA,IAAAC,2BAAAA,IAACC,SAAAA,aAAA,EAAY;AAAA,IACbD,2BAAAA,IAACE,OAAAA,eAAA,EAAO,OAAOC,cAAAA,YAAA,CAAa;AAAA,IAC5BH,+BAACI,aAAAA,gBAAc,UAAS;AAAA,mCACvBC,QAAAA,SAAA,CAAA,CAAQ;AAAA,EAAA,GACV;AAEF;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
2
|
import { Box, CssBaseline } from "@mui/material";
|
|
3
|
-
import { A as AppBarWrapper } from "./appbar-
|
|
3
|
+
import { A as AppBarWrapper } from "./appbar-BAZAd73h.esm.js";
|
|
4
4
|
import { A as ActivityArea } from "./activityArea-BSwK0nxT.esm.js";
|
|
5
5
|
import { C as ChatBot } from "./chat-bot-BRonnaK2.esm.js";
|
|
6
6
|
import { d as drawerWidth } from "./mui.constants-BFBzxaiA.esm.js";
|
|
@@ -16,4 +16,4 @@ const FullscreenLayout = (props) => {
|
|
|
16
16
|
export {
|
|
17
17
|
FullscreenLayout as F
|
|
18
18
|
};
|
|
19
|
-
//# sourceMappingURL=fullScreen-
|
|
19
|
+
//# sourceMappingURL=fullScreen-Dv3VVtOg.esm.js.map
|