@asaleh37/ui-base 1.2.1 → 1.2.3
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/.env +4 -0
- package/.env.development +1 -0
- package/.env.production +1 -0
- package/dist/index.d.ts +7 -37
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +5 -5
- package/dist/index.mjs.map +1 -1
- package/index.html +13 -0
- package/package.json +1 -1
- package/public/__logo.png +0 -0
- package/public/logo.png +0 -0
- package/public/vite.svg +1 -0
- package/rollup.config-1748377725725.cjs +16 -16
- package/src/assets/logo.png +0 -0
- package/src/components/App.tsx +39 -9
- package/src/components/BaseApp.tsx +37 -25
- package/src/components/admin/RoleAuthoritiesForm.tsx +65 -0
- package/src/components/admin/RoleGrid.tsx +67 -13
- package/src/components/common/Login.tsx +10 -3
- package/src/components/templates/TransferList.tsx +4 -7
- package/src/hooks/useApiActions.ts +1 -2
- package/src/layout/Layout.tsx +36 -29
- package/src/main.tsx +25 -0
- package/src/redux/features/CounterSlice.tsx +13 -0
- package/src/redux/features/common/AppInfoSlice.ts +1 -1
- package/src/redux/features/common/CommonStoreSlice.ts +19 -5
- package/src/redux/store.ts +25 -24
- package/src/util/constants.ts +5 -1
- package/vite.config.ts +10 -0
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/redux/features/common/AppLayoutSlice.ts","../src/redux/features/common/UserSessionSlice.ts","../src/redux/features/common/LoadingMaskSlice.ts","../src/redux/features/common/CommonStoreSlice.ts","../src/redux/features/common/AppInfoSlice.ts","../src/redux/store.ts","../node_modules/style-inject/dist/style-inject.es.js","../src/hooks/UseMobile.tsx","../src/hooks/useLoadingMask.tsx","../src/hooks/useAxios.tsx","../src/locales/english/index.ts","../src/locales/index.ts","../src/locales/arabic/index.ts","../src/locales/i18n.ts","../src/layout/TopBar.tsx","../src/layout/DrawerHeader.tsx","../node_modules/clsx/dist/clsx.mjs","../src/hooks/UseSession.tsx","../src/navigationItems/index.tsx","../src/navigationItems/Administration/index.tsx","../src/navigationItems/Administration/adminNavigationItems.tsx","../src/layout/NavigationTree.tsx","../src/layout/SideBar.tsx","../src/components/common/LayoutHandlers.tsx","../src/hooks/UseConfirmationWindow.tsx","../src/components/templates/DataEntryTemplates/TemplateDataGrid/TemplateGridMultiRecordAction.tsx","../src/util/constants.ts","../src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/Datefield.tsx","../src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/DatetimeField.tsx","../src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/ComboBox.tsx","../src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/CheckBox.tsx","../src/components/templates/DataEntryTemplates/TemplateDataGrid/DataGridColumnsUtil.tsx","../src/components/templates/DataEntryTemplates/DataEntryUtil.ts","../src/components/templates/DataEntryTemplates/TemplateDataGrid/TemplateGridTopBar.tsx","../src/util/AppUtils.ts","../src/components/templates/DataEntryTemplates/TemplateDataGrid/TemplateGridRecordAction.tsx","../node_modules/@mui/system/node_modules/@mui/utils/esm/formatMuiErrorMessage/formatMuiErrorMessage.js","../node_modules/prop-types/node_modules/react-is/index.js","../node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js","../node_modules/object-assign/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/lib/has.js","../node_modules/prop-types/checkPropTypes.js","../node_modules/prop-types/factoryWithTypeCheckers.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/react-is/cjs/react-is.production.js","../node_modules/react-is/cjs/react-is.development.js","../node_modules/react-is/index.js","../node_modules/@mui/system/node_modules/@mui/utils/esm/deepmerge/deepmerge.js","../node_modules/@mui/system/esm/createBreakpoints/createBreakpoints.js","../node_modules/@mui/system/esm/createTheme/shape.js","../node_modules/@mui/system/esm/responsivePropType/responsivePropType.js","../node_modules/@mui/system/esm/merge/merge.js","../node_modules/@mui/system/esm/breakpoints/breakpoints.js","../node_modules/@mui/system/esm/cssContainerQueries/cssContainerQueries.js","../node_modules/@mui/system/node_modules/@mui/utils/esm/capitalize/capitalize.js","../node_modules/@mui/system/esm/style/style.js","../node_modules/@mui/system/esm/spacing/spacing.js","../node_modules/@mui/system/esm/memoize/memoize.js","../node_modules/@mui/system/esm/compose/compose.js","../node_modules/@mui/system/esm/borders/borders.js","../node_modules/@mui/system/esm/cssGrid/cssGrid.js","../node_modules/@mui/system/esm/palette/palette.js","../node_modules/@mui/system/esm/sizing/sizing.js","../node_modules/@mui/system/esm/styleFunctionSx/defaultSxConfig.js","../node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js","../node_modules/@mui/system/esm/createTheme/applyStyles.js","../node_modules/@mui/system/esm/useThemeWithoutDefault/useThemeWithoutDefault.js","../node_modules/@mui/system/esm/useTheme/useTheme.js","../node_modules/@mui/system/esm/createTheme/createTheme.js","../node_modules/@mui/system/esm/createTheme/createSpacing.js","../node_modules/@mui/system/esm/styleFunctionSx/extendSxProp.js","../node_modules/@mui/system/node_modules/@mui/utils/esm/ClassNameGenerator/ClassNameGenerator.js","../node_modules/@mui/system/node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js","../node_modules/@mui/system/esm/Box/boxClasses.js","../node_modules/@mui/system/esm/Box/Box.js","../node_modules/@mui/system/esm/createBox/createBox.js","../node_modules/@mui/styled-engine/esm/index.js","../node_modules/@mui/system/node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js","../src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/TemplateTextField.tsx","../src/components/templates/DataEntryTemplates/TemplateDataForm/FormElementField.tsx","../src/components/templates/DataEntryTemplates/TemplateDataForm/FormAction.tsx","../src/components/templates/DataEntryTemplates/TemplateDataForm/FormElementGroup.tsx","../src/components/templates/DataEntryTemplates/TemplateDataForm/TemplateForm.tsx","../src/hooks/UseWindow.tsx","../src/components/templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid.tsx","../src/hooks/useApiActions.ts","../src/routes/index.ts","../src/components/common/Home.tsx","../src/routes/administration/index.ts","../src/routes/administration/adminRoutes.tsx","../src/components/admin/AttachmentGrid.tsx","../src/components/admin/AuthorityGrid.tsx","../src/components/admin/BluePrintGrid.tsx","../src/components/admin/BluePrintPageGrid.tsx","../src/components/admin/BluePrintPointGrid.tsx","../src/components/admin/DashboardGrid.tsx","../src/components/admin/DashboardWidgetGrid.tsx","../src/components/admin/DataQueryGrid.tsx","../src/components/admin/DataQueryParameterGrid.tsx","../src/components/admin/DatasourceConnectionGrid.tsx","../src/components/admin/EmployeeGrid.tsx","../src/components/admin/EntityParameterGrid.tsx","../src/components/admin/ExcelUploaderDetailGrid.tsx","../src/components/admin/ExcelUploaderHeaderGrid.tsx","../src/components/admin/LookupGrid.tsx","../src/components/admin/MailAttachmentGrid.tsx","../src/components/admin/MailBodyGrid.tsx","../src/components/admin/MailNotificationQueueGrid.tsx","../src/components/admin/MailRecipientGrid.tsx","../src/components/admin/MailTemplateGrid.tsx","../src/components/admin/NewTableGrid.tsx","../src/components/admin/NotificationGrid.tsx","../src/components/admin/NotificationQueueGrid.tsx","../src/components/admin/OrganizationGrid.tsx","../src/components/admin/OrganizationApplicationGrid.tsx","../src/components/admin/OrganizationRankGrid.tsx","../src/components/admin/OrganizationUnitGrid.tsx","../src/components/admin/OrganizationUserGrid.tsx","../src/components/admin/OrganizationUserRoleGrid.tsx","../src/components/admin/ReportGrid.tsx","../src/components/admin/ReportParameterGrid.tsx","../src/components/admin/RoleGrid.tsx","../src/components/admin/RoleAuthorityGrid.tsx","../src/components/admin/UserAccountGrid.tsx","../src/components/admin/UserRequestGrid.tsx","../src/components/admin/WidgetGrid.tsx","../src/components/admin/WorkflowDocumentGrid.tsx","../src/components/admin/WorkflowDocumentActionGrid.tsx","../src/components/admin/WorkflowDocumentActionHistoryGrid.tsx","../src/components/admin/WorkflowDocumentActionMailGrid.tsx","../src/components/admin/WorkflowDocumentMailLogGrid.tsx","../src/components/admin/WorkflowDocumentStatusGrid.tsx","../src/layout/MainContent.tsx","../src/layout/MobileDrawer.tsx","../src/components/common/LoadingMask.tsx","../src/components/common/Login.tsx","../src/layout/Layout.tsx","../src/components/App.tsx","../src/redux/features/administration/AdministrationStoresMetaData.ts","../src/components/BaseApp.tsx","../src/components/templates/TransferList.tsx","../src/components/templates/visuals/charts/TemplatePieChart.tsx","../src/components/templates/visuals/charts/TemplateBarChart.tsx","../src/components/templates/visuals/charts/TemplateLineChart.tsx","../src/components/templates/visuals/charts/TemplateGauge.tsx","../src/components/templates/visuals/charts/TemplateDataCard.tsx","../src/components/templates/visuals/charts/TemplateLineProgress.tsx","../src/components/templates/visuals/TemplateDashboard.tsx"],"sourcesContent":["import { createSlice } from \"@reduxjs/toolkit\";\r\n\r\nexport const DRAWER_WIDTH = 350;\r\n\r\ninterface AppLayoutState {\r\n sideBarOpened: boolean;\r\n themeMode: \"light\" | \"dark\" | string;\r\n appDirection: \"ltr\" | \"rtl\";\r\n}\r\n\r\nconst initialState: AppLayoutState = {\r\n sideBarOpened: false,\r\n themeMode: localStorage.getItem(\"themeMode\") || \"light\",\r\n appDirection: localStorage.getItem(\"language\") == \"ar\" ? \"rtl\" : \"ltr\",\r\n};\r\n\r\nconst AppLayoutSlice = createSlice({\r\n name: \"AppLayout\",\r\n initialState,\r\n reducers: {\r\n toggleSideBarState: (state) => {\r\n state.sideBarOpened = !state.sideBarOpened;\r\n },\r\n setSideBarState: (state, action) => {\r\n state.sideBarOpened = action.payload;\r\n },\r\n setThemeMode: (state, action) => {\r\n state.themeMode = action.payload;\r\n },\r\n setAppDirection: (state, action) => {\r\n state.appDirection = action.payload;\r\n },\r\n },\r\n});\r\n\r\nexport const AppLayoutActions = AppLayoutSlice.actions;\r\nexport default AppLayoutSlice.reducer;\r\n","import { createSlice } from \"@reduxjs/toolkit\";\r\n\r\nexport interface OrganizationProps {\r\n organizationCode?: string;\r\n organizationName?: string;\r\n}\r\nexport interface UserProfileProps {\r\n username?: string;\r\n currentOrganizationCode?: string;\r\n userOrganizations?: Array<OrganizationProps>;\r\n employeeNumber?: string;\r\n employeeName?: string;\r\n divisionCode?: string;\r\n divisionName?: string;\r\n departmentCode?: string;\r\n departmentName?: string;\r\n rankCode?: string;\r\n rankName?: string;\r\n sectionCode?: string;\r\n sectionName?: string;\r\n subsectionCode?: string;\r\n subsectionName?: string;\r\n extNumber?: string;\r\n mobileNumber?: string;\r\n email?: string;\r\n}\r\n\r\nexport interface UserSessionProps {\r\n value: {\r\n isAuthenticated: boolean | null;\r\n userProfile: UserProfileProps | null;\r\n authorities: Array<{ authority: string }>;\r\n };\r\n}\r\n\r\nconst initialState: UserSessionProps = {\r\n value: {\r\n isAuthenticated: null,\r\n authorities: [],\r\n userProfile: null,\r\n },\r\n};\r\n\r\nconst UserSessionSlice = createSlice({\r\n name: \"UserSession\",\r\n initialState,\r\n reducers: {\r\n setAuthenticated: (state, action) => {\r\n state.value = action.payload;\r\n },\r\n setUnAuthenticated: (state) => {\r\n state.value = {\r\n isAuthenticated: false,\r\n authorities: [],\r\n userProfile: null,\r\n };\r\n },\r\n },\r\n});\r\n\r\nexport const UserSessionActions = UserSessionSlice.actions;\r\nexport default UserSessionSlice.reducer;\r\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\n\r\ninterface LoadingMaskStateValue {\r\n value: { isOpened: boolean; message?: string | null };\r\n}\r\n\r\nconst initialState: LoadingMaskStateValue = {\r\n value: { isOpened: false, message: null },\r\n};\r\n\r\nconst loadingMaskSlice = createSlice({\r\n name: \"loadingMask\",\r\n initialState,\r\n reducers: {\r\n showLoadingMask: (\r\n state,\r\n action: PayloadAction<string | null | undefined>\r\n ) => {\r\n state.value.isOpened = true;\r\n state.value.message = action.payload;\r\n },\r\n hideLoadingMask: (state) => {\r\n state.value.isOpened = false;\r\n state.value.message = null;\r\n },\r\n },\r\n});\r\n\r\nexport const { showLoadingMask, hideLoadingMask } = loadingMaskSlice.actions;\r\nexport default loadingMaskSlice.reducer;\r\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\n\r\nexport interface CommonStoresInterface {\r\n [key: string]: StoreMetaData;\r\n}\r\n\r\ninterface setStoreDataProps {\r\n storeKey: string;\r\n data: Array<any>;\r\n}\r\n\r\nexport interface StoreMetaData {\r\n url: string;\r\n data: Array<any>;\r\n autoLoad: boolean;\r\n authority?: string;\r\n}\r\n\r\nexport const commonStoresInitialState: CommonStoresInterface = {};\r\n\r\nconst commonStoreSlice = createSlice({\r\n name: \"loadingMask\",\r\n initialState: commonStoresInitialState,\r\n reducers: {\r\n setStoreData(state, action: PayloadAction<setStoreDataProps>) {\r\n state[action.payload.storeKey].data = action.payload.data;\r\n },\r\n },\r\n});\r\n\r\nexport const { setStoreData } = commonStoreSlice.actions;\r\nexport default commonStoreSlice.reducer;\r\n","import { createSlice, Reducer } from \"@reduxjs/toolkit\";\r\nimport { SystemRoute } from \"../../../routes/types\";\r\nimport { ExtendedTreeItemProps } from \"../../../navigationItems\";\r\nimport { StoreMetaData } from \"./CommonStoreSlice\";\r\n\r\nexport type AppInfo = {\r\n documentTitle: string | null;\r\n apiBaseUrl: string | null;\r\n appName: string | null;\r\n appVersion: string | null;\r\n appLogo: any | null;\r\n businessRoutes: Array<SystemRoute>;\r\n businessNavigationItems: Array<ExtendedTreeItemProps>;\r\n businessReduxReducers: { [key: string]: Reducer<any> };\r\n businessCommonStoresMetaData: { [key: string]: StoreMetaData };\r\n muiPremiumKey: string;\r\n enableAdministrationModule: boolean;\r\n appTheme: {\r\n light: { primaryColor: string; secondaryColor: string };\r\n dark: { primaryColor: string; secondaryColor: string };\r\n };\r\n};\r\n\r\nexport type AppInfoProp = {\r\n value: AppInfo;\r\n};\r\n\r\nconst initialState: AppInfoProp = {\r\n value: {\r\n documentTitle: null,\r\n apiBaseUrl: null,\r\n appName: null,\r\n appVersion: null,\r\n appLogo: null,\r\n muiPremiumKey: null,\r\n enableAdministrationModule: false,\r\n businessRoutes: [],\r\n businessNavigationItems: [],\r\n businessReduxReducers: {},\r\n businessCommonStoresMetaData: {},\r\n appTheme: {\r\n light: { primaryColor: \"#37505C\", secondaryColor: \"#ff6d00\" },\r\n dark: { primaryColor: \"#ea690e\", secondaryColor: \"#74776B\" },\r\n },\r\n },\r\n};\r\n\r\nconst AppInfoSlice = createSlice({\r\n name: \"AppInfo\",\r\n initialState: initialState,\r\n reducers: {\r\n setAppInfo: (state, action) => {\r\n state.value = action.payload;\r\n },\r\n },\r\n});\r\n\r\nexport const AppInfoActions = AppInfoSlice.actions;\r\nexport default AppInfoSlice.reducer;\r\n","import { configureStore, Reducer } from \"@reduxjs/toolkit\";\r\nimport AppLayoutReducer from \"./features/common/AppLayoutSlice\";\r\nimport UserSessionReducer from \"./features/common/UserSessionSlice\";\r\nimport LoadingMaskReducer from \"./features/common/LoadingMaskSlice\";\r\nimport CommonStoreReducer from \"./features/common/CommonStoreSlice\";\r\nimport AppInfoReducer from \"./features/common/AppInfoSlice\";\r\n\r\nconst reducers = {\r\n AppLayout: AppLayoutReducer,\r\n UserSession: UserSessionReducer,\r\n loadingMask: LoadingMaskReducer,\r\n commonStores: CommonStoreReducer,\r\n AppInfo: AppInfoReducer,\r\n};\r\n\r\nexport function addReducer(key: string, reducer: Reducer<any>) {\r\n if (!reducers[key]) {\r\n reducers[key] = reducer;\r\n }\r\n}\r\n\r\nexport const store = configureStore({\r\n reducer: reducers,\r\n});\r\n\r\n// Infer the `RootState` and `AppDispatch` types from the store itself\r\nexport type RootState = ReturnType<typeof store.getState>;\r\nexport type AppDispatch = typeof store.dispatch;\r\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import { useEffect, useState } from \"react\";\r\n\r\nexport const useIsMobile = (breakpoint = 768) => {\r\n const [isMobile, setIsMobile] = useState(window.innerWidth < breakpoint);\r\n\r\n useEffect(() => {\r\n const handleResize = () => setIsMobile(window.innerWidth < breakpoint);\r\n window.addEventListener(\"resize\", handleResize);\r\n return () => window.removeEventListener(\"resize\", handleResize);\r\n }, [breakpoint]);\r\n\r\n return isMobile;\r\n};\r\n","import { useDispatch } from \"react-redux\";\r\nimport { hideLoadingMask, showLoadingMask } from \"../redux/features/common/LoadingMaskSlice\";\r\n\r\n\r\nconst useLoadingMask = () => {\r\n const dispatch = useDispatch();\r\n const show = (message?: string) => {\r\n dispatch(showLoadingMask(message));\r\n };\r\n const hide = () => {\r\n dispatch(hideLoadingMask());\r\n };\r\n return { show, hide };\r\n};\r\n\r\nexport default useLoadingMask;\r\n","import { toast } from \"react-toastify\";\r\nimport axios from \"axios\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { RootState } from \"../redux/store\";\r\nimport useLoadingMask from \"./useLoadingMask\";\r\n\r\nexport interface APIRequest {\r\n endPointURI: string;\r\n parameters?: any;\r\n data?: any;\r\n showMask?: Boolean;\r\n loadingMessage?: string;\r\n successCallBkFn?: Function;\r\n failureCallBkFn?: Function;\r\n}\r\n\r\nconst useAxios = () => {\r\n const mask = useLoadingMask();\r\n const apiBaseUrl = useSelector(\r\n (state: RootState) => state.AppInfo.value.apiBaseUrl\r\n );\r\n const axiosInstance = axios.create({\r\n baseURL: apiBaseUrl,\r\n timeout: 600000,\r\n withCredentials: true,\r\n });\r\n\r\n axiosInstance.defaults.withCredentials = true;\r\n axiosInstance.interceptors.response.use(\r\n (response: any) => {\r\n return response;\r\n },\r\n (error: any) => {\r\n if (\r\n error\r\n ? error.response\r\n ? error.response.status\r\n ? error.response.status === 401\r\n : false\r\n : false\r\n : false\r\n ) {\r\n toast.error(\"your session is now expired, you need to login again\", {\r\n autoClose: false,\r\n });\r\n } else if (\r\n error\r\n ? error.response\r\n ? error.response.status\r\n ? error.response.status === 403\r\n : false\r\n : false\r\n : false\r\n ) {\r\n toast.error(\"you aren't authorized to process this request\");\r\n } else if (\r\n error\r\n ? error.response\r\n ? error.response.status\r\n ? error.response.status === 500\r\n : false\r\n : false\r\n : false\r\n ) {\r\n toast.error(error.response.data);\r\n } else {\r\n toast.error(\r\n \"failed to communicate with the server ... try again later\"\r\n );\r\n }\r\n return \"ERROR\";\r\n }\r\n );\r\n const handleGetRequest = async (\r\n props: APIRequest = { endPointURI: \"\", parameters: {} }\r\n ) => {\r\n if (\r\n props.showMask !== undefined &&\r\n props.showMask != null &&\r\n props.showMask === true\r\n ) {\r\n mask.show(props.loadingMessage);\r\n }\r\n const response: any = await axiosInstance.get(props.endPointURI, {\r\n params: { ...props.parameters },\r\n withCredentials: true,\r\n // withCredentials: true,\r\n });\r\n if (\r\n props.showMask !== undefined &&\r\n props.showMask != null &&\r\n props.showMask === true\r\n ) {\r\n mask.hide();\r\n }\r\n if (response !== \"ERROR\") {\r\n if (\r\n props.successCallBkFn !== undefined &&\r\n props.successCallBkFn != null\r\n ) {\r\n props.successCallBkFn(response);\r\n }\r\n return response;\r\n } else {\r\n if (\r\n props.failureCallBkFn !== undefined &&\r\n props.failureCallBkFn != null\r\n ) {\r\n props.failureCallBkFn(response);\r\n }\r\n return \"ERROR\";\r\n }\r\n };\r\n\r\n const HandleDownloadHTTPPostPDF = async (\r\n props: APIRequest = { endPointURI: \"\", parameters: {}, data: {} }\r\n ) => {\r\n if (\r\n props.showMask !== undefined &&\r\n props.showMask != null &&\r\n props.showMask === true\r\n ) {\r\n mask.show(props.loadingMessage);\r\n }\r\n const response: any = await axiosInstance.post(\r\n props.endPointURI,\r\n props.data,\r\n {\r\n responseType: \"blob\",\r\n }\r\n );\r\n if (\r\n props.showMask !== undefined &&\r\n props.showMask != null &&\r\n props.showMask === true\r\n ) {\r\n mask.hide();\r\n }\r\n if (response !== \"ERROR\") {\r\n if (\r\n props.successCallBkFn !== undefined &&\r\n props.successCallBkFn != null\r\n ) {\r\n props.successCallBkFn(response);\r\n }\r\n return response;\r\n } else {\r\n if (\r\n props.failureCallBkFn !== undefined &&\r\n props.failureCallBkFn != null\r\n ) {\r\n props.failureCallBkFn(response);\r\n }\r\n return \"ERROR\";\r\n }\r\n // axiosInstance\r\n // .request({\r\n // url: props.endPointURI,\r\n // method: \"POST\",\r\n // data: props.data,\r\n // responseType: \"blob\",\r\n // })\r\n // .then((response) => {\r\n // const url = window.URL.createObjectURL(\r\n // new Blob([response.data], { type: \"application/pdf\" })\r\n // );\r\n // const link = document.createElement(\"a\");\r\n // link.href = url;\r\n // link.setAttribute(\"download\", \"example.pdf\"); // specify download filename\r\n // document.body.appendChild(link);\r\n // link.click();\r\n // link.remove();\r\n // })\r\n // .catch((error) => {\r\n // console.error(\"Download error:\", error);\r\n // })\r\n // .finally(() => {\r\n\r\n // });\r\n };\r\n const handlePostRequest = async (\r\n props: APIRequest = { endPointURI: \"\", parameters: {}, data: {} }\r\n ) => {\r\n if (\r\n props.showMask !== undefined &&\r\n props.showMask != null &&\r\n props.showMask === true\r\n ) {\r\n mask.show(props.loadingMessage);\r\n }\r\n let response: any = await axiosInstance.post(\r\n props.endPointURI,\r\n props.data,\r\n {\r\n params: props.parameters,\r\n }\r\n );\r\n if (\r\n props.showMask !== undefined &&\r\n props.showMask != null &&\r\n props.showMask === true\r\n ) {\r\n mask.hide();\r\n }\r\n if (response !== \"ERROR\") {\r\n if (\r\n props.successCallBkFn !== undefined &&\r\n props.successCallBkFn != null\r\n ) {\r\n props.successCallBkFn(response);\r\n }\r\n return response;\r\n } else {\r\n if (\r\n props.failureCallBkFn !== undefined &&\r\n props.failureCallBkFn != null\r\n ) {\r\n props.failureCallBkFn(response);\r\n }\r\n return \"ERROR\";\r\n }\r\n };\r\n const handleDeleteRequest = async (\r\n props: APIRequest = { endPointURI: \"\", parameters: {} }\r\n ) => {\r\n if (\r\n props.showMask !== undefined &&\r\n props.showMask != null &&\r\n props.showMask === true\r\n ) {\r\n mask.show(props.loadingMessage);\r\n }\r\n let response: any = await axiosInstance.delete(props.endPointURI, {\r\n params: {\r\n ...props.parameters,\r\n },\r\n });\r\n if (\r\n props.showMask !== undefined &&\r\n props.showMask != null &&\r\n props.showMask === true\r\n ) {\r\n mask.hide();\r\n }\r\n if (response !== \"ERROR\") {\r\n if (\r\n props.successCallBkFn !== undefined &&\r\n props.successCallBkFn != null\r\n ) {\r\n props.successCallBkFn(response);\r\n }\r\n return response;\r\n } else {\r\n if (\r\n props.failureCallBkFn !== undefined &&\r\n props.failureCallBkFn != null\r\n ) {\r\n props.failureCallBkFn(response);\r\n }\r\n return \"ERROR\";\r\n }\r\n };\r\n return {\r\n handleGetRequest,\r\n handlePostRequest,\r\n handleDeleteRequest,\r\n HandleDownloadHTTPPostPDF,\r\n };\r\n};\r\n\r\nexport default useAxios;\r\n","import common from \"./common.json\";\r\nimport AdminLocalsEn from \"./adminLocalsEn.json\";\r\nexport const ENGLISH_TRANS = {\r\n ...common,\r\n ...AdminLocalsEn,\r\n};\r\n","import { ARABIC_TRANS } from \"./arabic\";\r\nimport { ENGLISH_TRANS } from \"./english\";\r\n\r\nconst resources = {\r\n en: { translation: ENGLISH_TRANS },\r\n ar: { translation: ARABIC_TRANS },\r\n};\r\n\r\nexport default resources;\r\n","import common from \"./common.json\";\r\nimport adminLocalsAr from \"./adminLocalsAr.json\";\r\n\r\nexport const ARABIC_TRANS = {\r\n ...common,\r\n ...adminLocalsAr,\r\n};\r\n","import i18n from \"i18next\";\r\nimport { initReactI18next } from \"react-i18next\";\r\nimport resources from \".\";\r\ni18n.use(initReactI18next).init({\r\n resources: resources, // Where we're gonna put translations' files\r\n lng: localStorage.getItem(\"language\") || \"en\", // Set the initial language of the App\r\n fallbackLng: \"en\",\r\n});\r\n\r\nexport const changeLanguage = (lng: string) => {\r\n i18n.changeLanguage(lng);\r\n localStorage.setItem(\"language\", lng); // Persist user choice\r\n};\r\n\r\nexport default i18n;\r\n","import { Avatar, IconButton, styled, Typography } from \"@mui/material\";\r\nimport MuiAppBar, { AppBarProps as MuiAppBarProps } from \"@mui/material/AppBar\";\r\nimport Toolbar from \"@mui/material/Toolbar\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { RootState } from \"../redux/store\";\r\nimport { useIsMobile } from \"../hooks/UseMobile\";\r\nimport {\r\n AppLayoutActions,\r\n DRAWER_WIDTH,\r\n} from \"../redux/features/common/AppLayoutSlice\";\r\nimport useAxios from \"../hooks/useAxios\";\r\nimport { UserSessionActions } from \"../redux/features/common/UserSessionSlice\";\r\nimport i18n, { changeLanguage } from \"../locales/i18n\";\r\n\r\ninterface AppBarProps extends MuiAppBarProps {\r\n open?: boolean;\r\n}\r\n\r\nconst AppBar = styled(MuiAppBar, {\r\n shouldForwardProp: (prop) => prop !== \"open\",\r\n})<AppBarProps>(({ theme }) => {\r\n const AppLayout = useSelector((state: RootState) => state.AppLayout);\r\n const isMobile = useIsMobile();\r\n return {\r\n transition: theme.transitions.create([\"margin\", \"width\"], {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.leavingScreen,\r\n }),\r\n variants: [\r\n {\r\n props: ({ open }) => open,\r\n style: {\r\n width: !isMobile ? `calc(100% - ${DRAWER_WIDTH}px)` : undefined,\r\n marginLeft:\r\n !isMobile && AppLayout.appDirection === \"ltr\"\r\n ? `${DRAWER_WIDTH}px`\r\n : undefined,\r\n marginRight:\r\n !isMobile && AppLayout.appDirection === \"rtl\"\r\n ? `${DRAWER_WIDTH}px`\r\n : undefined,\r\n transition: theme.transitions.create([\"margin\", \"width\"], {\r\n easing: theme.transitions.easing.easeOut,\r\n duration: theme.transitions.duration.enteringScreen,\r\n }),\r\n },\r\n },\r\n ],\r\n };\r\n});\r\n\r\nconst TopBar: React.FC = () => {\r\n const AppInfo = useSelector((state: RootState) => state.AppInfo.value);\r\n const AppLayout = useSelector((state: RootState) => state.AppLayout);\r\n const UserSession = useSelector((state: RootState) => state.UserSession);\r\n const { handleGetRequest } = useAxios();\r\n const isMobile = useIsMobile();\r\n const dispatch = useDispatch();\r\n const handleLogout = async () => {\r\n try {\r\n await handleGetRequest({ endPointURI: \"api/auth/logout\" });\r\n } catch (error) {\r\n console.log(\"logout error\", error);\r\n }\r\n dispatch(UserSessionActions.setUnAuthenticated());\r\n };\r\n const toggleSideBar = () => {\r\n dispatch(AppLayoutActions.toggleSideBarState());\r\n };\r\n return (\r\n <AppBar position=\"fixed\" open={AppLayout.sideBarOpened}>\r\n <Toolbar>\r\n <IconButton\r\n color=\"inherit\"\r\n aria-label=\"open drawer\"\r\n onClick={toggleSideBar}\r\n edge=\"start\"\r\n sx={[\r\n {\r\n mr: AppLayout.appDirection === \"ltr\" ? 2 : undefined,\r\n ml: AppLayout.appDirection === \"rtl\" ? 2 : undefined,\r\n },\r\n AppLayout.sideBarOpened && { display: \"none\" },\r\n ]}\r\n >\r\n <FontAwesomeIcon icon=\"bars\" />\r\n </IconButton>\r\n <Avatar src={AppInfo.appLogo} sx={{ marginRight: 1, marginLeft: 1 }} />\r\n <Typography variant=\"h6\" noWrap component=\"div\" sx={{ flex: 1 }}>\r\n {isMobile ? \"\" : AppInfo.appName}\r\n </Typography>\r\n <IconButton\r\n color=\"inherit\"\r\n onClick={() => {\r\n dispatch(\r\n AppLayoutActions.setThemeMode(\r\n AppLayout.themeMode === \"light\" ? \"dark\" : \"light\"\r\n )\r\n );\r\n localStorage.setItem(\r\n \"themeMode\",\r\n AppLayout.themeMode === \"light\" ? \"dark\" : \"light\"\r\n );\r\n }}\r\n >\r\n {AppLayout.themeMode === \"light\" ? (\r\n <FontAwesomeIcon icon=\"moon\" />\r\n ) : (\r\n <FontAwesomeIcon icon={{ prefix: \"far\", iconName: \"sun\" }} />\r\n )}\r\n </IconButton>\r\n <IconButton\r\n color=\"inherit\"\r\n onClick={() => {\r\n let nextLanguage = i18n.language === \"ar\" ? \"en\" : \"ar\";\r\n changeLanguage(nextLanguage);\r\n dispatch(\r\n AppLayoutActions.setAppDirection(\r\n nextLanguage === \"ar\" ? \"rtl\" : \"ltr\"\r\n )\r\n );\r\n }}\r\n >\r\n <FontAwesomeIcon icon=\"language\" />\r\n </IconButton>\r\n <Avatar />\r\n <div style={{ marginLeft: 5, marginRight: 5 }}>\r\n {isMobile ? \"\" : UserSession.value?.userProfile?.username}\r\n </div>\r\n <IconButton color=\"inherit\" onClick={handleLogout}>\r\n <FontAwesomeIcon\r\n rotation={AppLayout.appDirection === \"rtl\" ? 180 : undefined}\r\n icon=\"arrow-right-from-bracket\"\r\n />\r\n </IconButton>\r\n </Toolbar>\r\n </AppBar>\r\n );\r\n};\r\n\r\nexport default TopBar;\r\n","import { styled } from \"@mui/material\";\r\n\r\nexport const DrawerHeader = styled(\"div\")(({ theme }) => ({\r\n display: \"flex\",\r\n alignItems: \"center\", \r\n // padding: theme.spacing(0, 1),\r\n // necessary for content to be below app bar\r\n ...theme.mixins.toolbar,\r\n justifyContent: \"flex-end\",\r\n}));\r\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import { useSelector } from \"react-redux\";\r\nimport { RootState } from \"../redux/store\";\r\n\r\n\r\nconst useSession = () => {\r\n const UserSession = useSelector((state: RootState) => state.UserSession);\r\n const isUserAuthorized = (authorityCode: string): boolean => {\r\n if (UserSession?.value?.authorities) {\r\n // if (UserSession.value.authorities.includes(\"DEVELOPMENT_ADMIN\")) {\r\n // return true;\r\n // }\r\n for (let grantedAuthority of UserSession.value.authorities) {\r\n if (\r\n grantedAuthority?.authority === \"DEVELOPMENT_ADMIN\" ||\r\n grantedAuthority?.authority === authorityCode\r\n ) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n };\r\n return { UserSession, isUserAuthorized };\r\n};\r\n\r\nexport default useSession;\r\n","import { TreeViewBaseItem } from \"@mui/x-tree-view/models\";\r\nimport { AdministrationItems } from \"./Administration\";\r\nimport { IconProp } from \"@fortawesome/fontawesome-svg-core\";\r\n\r\nexport type ExtendedTreeItemProps = {\r\n icon: IconProp;\r\n id: string;\r\n label: string;\r\n action?: \"NAVIGATION\";\r\n authority?: string;\r\n actionPayload?: {\r\n path?: string;\r\n parameters?: object;\r\n };\r\n children?: ExtendedTreeItemProps[];\r\n};\r\n\r\nexport const findNavigationItemById = (\r\n id: string,\r\n nodes: ExtendedTreeItemProps[]\r\n): ExtendedTreeItemProps | undefined => {\r\n for (const node of nodes) {\r\n if (node.id === id) return node;\r\n if (node.children) {\r\n const found = findNavigationItemById(id, node.children);\r\n if (found) return found;\r\n }\r\n }\r\n return undefined;\r\n};\r\n\r\nexport const NavigationItems: TreeViewBaseItem<ExtendedTreeItemProps>[] = [\r\n ...AdministrationItems, \r\n];\r\n","import { TreeViewBaseItem } from \"@mui/x-tree-view/models\";\r\nimport { ExtendedTreeItemProps } from \"..\";\r\nimport { adminNavigationItems } from \"./adminNavigationItems\";\r\n\r\nexport const AdministrationItems: TreeViewBaseItem<ExtendedTreeItemProps>[] = [\r\n ...adminNavigationItems\r\n// {\r\n// id: \"1\",\r\n// label: \"System Administration\",\r\n// icon: \"gears\",\r\n// authority: \"DEVELOPMENT_ADMIN\",\r\n// children: [\r\n// {\r\n// id: \"1.1\",\r\n// label: \"Security\",\r\n// icon: \"shield\",\r\n// action: \"NAVIGATION\",\r\n// actionPayload: { path: \"Security\" },\r\n// children: [\r\n// {\r\n// id: \"1.1.1\",\r\n// label: \"Roles\",\r\n// icon: \"tag\",\r\n// action: \"NAVIGATION\",\r\n// actionPayload: { path: \"admin/security/roles\" },\r\n// },\r\n// {\r\n// id: \"1.1.2\",\r\n// label: \"Authorities\",\r\n// icon: \"key\",\r\n// action: \"NAVIGATION\",\r\n// actionPayload: { path: \"admin/security/authorities\" },\r\n// children: [],\r\n// },\r\n// ],\r\n// },\r\n// {\r\n// id: \"1.2\",\r\n// label: \"Development Tools\",\r\n// icon: \"code\",\r\n// authority: \"DEVELOPMENT_ADMIN\",\r\n// children: [\r\n// {\r\n// id: \"1.2.1\",\r\n// label: \"Datasources\",\r\n// icon: \"database\",\r\n// authority: \"DEVELOPMENT_ADMIN\",\r\n// action: \"NAVIGATION\",\r\n// actionPayload: { path: \"admin/datasources\" },\r\n// },\r\n// {\r\n// id: \"1.2.2\",\r\n// label: \"Parameters\",\r\n// icon: \"p\",\r\n// authority: \"DEVELOPMENT_ADMIN\",\r\n// action: \"NAVIGATION\",\r\n// actionPayload: { path: \"admin/parameters\" },\r\n// },\r\n// {\r\n// id: \"1.2.3\",\r\n// label: \"System Queries\",\r\n// icon: \"file-code\",\r\n// authority: \"DEVELOPMENT_ADMIN\",\r\n// action: \"NAVIGATION\",\r\n// actionPayload: { path: \"admin/queries\" },\r\n// },\r\n// ],\r\n// },\r\n// ],\r\n// },\r\n];\r\n","import { TreeViewBaseItem } from \"@mui/x-tree-view/models\";\r\nimport { ExtendedTreeItemProps } from \"..\";\r\n\r\nexport const adminNavigationItems: TreeViewBaseItem<ExtendedTreeItemProps>[] = [\r\n {\r\n id: \"admin\",\r\n label: \"SYSTEM_ADMINISTRATION\",\r\n authority: \"DEVELOPMENT_ADMIN\",\r\n icon: \"cogs\",\r\n children: [\r\n {\r\n id: \"admin.systemManagement\",\r\n label: \"SYSTEM_MANAGEMENT\",\r\n icon: \"gear\",\r\n children: [\r\n {\r\n id: \"admin.systemManagement.Organization\",\r\n label: \"ORGANIZATION_PLURAL\",\r\n icon: \"globe\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/organizations\" },\r\n },\r\n {\r\n id: \"admin.systemManagement.OrganizationApplication\",\r\n label: \"ORGANIZATION_APPLICATION_PLURAL\",\r\n icon: \"diagram-project\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/organizationapplications\" },\r\n },\r\n ],\r\n },\r\n {\r\n id: \"admin.security\",\r\n label: \"SECURITY_ADMINISTRATION\",\r\n icon: \"shield\",\r\n children: [\r\n {\r\n id: \"admin.security.Authority\",\r\n label: \"AUTHORITY_PLURAL\",\r\n icon: \"key\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/authorities\" },\r\n },\r\n {\r\n id: \"admin.Role\",\r\n label: \"ROLE_PLURAL\",\r\n icon: \"tag\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/roles\" },\r\n },\r\n {\r\n id: \"admin.security.Employee\",\r\n label: \"EMPLOYEE_PLURAL\",\r\n icon: \"user\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/employees\" },\r\n },\r\n ],\r\n },\r\n {\r\n id: \"admin.devtools\",\r\n label: \"DEVELOPMENT_TOOLS\",\r\n icon: \"code\",\r\n children: [\r\n {\r\n id: \"admin.devtools.DatasourceConnection\",\r\n label: \"DATASOURCE_CONNECTION_PLURAL\",\r\n icon: \"plug\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/datasourceconnections\" },\r\n },\r\n {\r\n id: \"admin.devtools.EntityParameter\",\r\n label: \"ENTITY_PARAMETER_PLURAL\",\r\n icon: \"p\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/entityparameters\" },\r\n },\r\n {\r\n id: \"admin.devtools.DataQuery\",\r\n label: \"DATA_QUERY_PLURAL\",\r\n icon: \"file-code\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/dataqueries\" },\r\n },\r\n {\r\n id: \"admin.devtools.ExcelUploaderHeader\",\r\n label: \"EXCEL_UPLOADER_HEADER_PLURAL\",\r\n icon: \"file-excel\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/exceluploaderheaders\" },\r\n },\r\n {\r\n id: \"admin.devtools.Report\",\r\n label: \"REPORT_PLURAL\",\r\n icon: \"file\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/reports\" },\r\n },\r\n {\r\n id: \"admin.devtools.WorkflowDocument\",\r\n label: \"WORKFLOW_DOCUMENT_PLURAL\",\r\n icon: \"chart-diagram\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/workflowdocuments\" },\r\n },\r\n {\r\n id: \"admin.devtools.BluePrint\",\r\n label: \"BLUE_PRINT_PLURAL\",\r\n icon: \"fingerprint\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/blueprints\" },\r\n },\r\n {\r\n id: \"admin.devtools.Widget\",\r\n label: \"WIDGET_PLURAL\",\r\n icon: \"chart-pie\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/widgets\" },\r\n },\r\n {\r\n id: \"admin.devtools.Dashboard\",\r\n label: \"DASHBOARD_PLURAL\",\r\n icon: \"square-poll-vertical\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/dashboards\" },\r\n },\r\n {\r\n id: \"admin.devtools.MailTemplate\",\r\n label: \"MAIL_TEMPLATE_PLURAL\",\r\n icon: \"envelope\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/mailtemplates\" },\r\n },\r\n {\r\n id: \"admin.devtools.Notification\",\r\n label: \"NOTIFICATION_PLURAL\",\r\n icon: \"bell\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/notifications\" },\r\n },\r\n ],\r\n },\r\n {\r\n id: \"admin.followup\",\r\n label: \"SYSTEM_MONITORING\",\r\n icon: \"tv\",\r\n children: [\r\n {\r\n id: \"admin.WorkflowDocumentMailLog\",\r\n label: \"WORKFLOW_DOCUMENT_MAIL_LOG_PLURAL\",\r\n icon: \"envelopes-bulk\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/workflowdocumentmaillogs\" },\r\n },\r\n {\r\n id: \"admin.MailNotificationQueue\",\r\n label: \"MAIL_NOTIFICATION_QUEUE_PLURAL\",\r\n icon: \"envelope-open-text\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/mailnotificationqueues\" },\r\n },\r\n {\r\n id: \"admin.NotificationQueue\",\r\n label: \"NOTIFICATION_QUEUE_PLURAL\",\r\n icon: \"bell\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/notificationqueues\" },\r\n },\r\n ],\r\n },\r\n\r\n {\r\n id: \"admin.Lookup\",\r\n label: \"LOOKUP_PLURAL\",\r\n icon: \"list-check\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/lookups\" },\r\n },\r\n ],\r\n },\r\n];\r\n","import * as React from \"react\";\r\nimport clsx from \"clsx\";\r\nimport { animated, useSpring } from \"@react-spring/web\";\r\nimport { styled, alpha } from \"@mui/material/styles\";\r\nimport { TransitionProps } from \"@mui/material/transitions\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Collapse from \"@mui/material/Collapse\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport { RichTreeView } from \"@mui/x-tree-view/RichTreeView\";\r\nimport { treeItemClasses } from \"@mui/x-tree-view/TreeItem\";\r\nimport {\r\n useTreeItem2,\r\n UseTreeItem2Parameters,\r\n} from \"@mui/x-tree-view/useTreeItem2\";\r\nimport {\r\n TreeItem2Checkbox,\r\n TreeItem2Content,\r\n TreeItem2IconContainer,\r\n TreeItem2Label,\r\n TreeItem2Root,\r\n} from \"@mui/x-tree-view/TreeItem2\";\r\nimport { TreeItem2Icon } from \"@mui/x-tree-view/TreeItem2Icon\";\r\nimport { TreeItem2Provider } from \"@mui/x-tree-view/TreeItem2Provider\";\r\nimport { TreeItem2DragAndDropOverlay } from \"@mui/x-tree-view/TreeItem2DragAndDropOverlay\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { RootState } from \"../redux/store\";\r\nimport { IconProp } from \"@fortawesome/fontawesome-svg-core\";\r\nimport { useIsMobile } from \"../hooks/UseMobile\";\r\nimport useSession from \"../hooks/UseSession\";\r\nimport { findNavigationItemById, NavigationItems } from \"../navigationItems\";\r\nimport { DRAWER_WIDTH } from \"../redux/features/common/AppLayoutSlice\";\r\n\r\nfunction DotIcon() {\r\n return (\r\n <Box\r\n sx={{\r\n width: 6,\r\n height: 6,\r\n borderRadius: \"70%\",\r\n bgcolor: \"warning.main\",\r\n display: \"inline-block\",\r\n verticalAlign: \"middle\",\r\n zIndex: 1,\r\n mx: 1,\r\n }}\r\n />\r\n );\r\n}\r\ndeclare module \"react\" {\r\n interface CSSProperties {\r\n \"--tree-view-color\"?: string;\r\n \"--tree-view-bg-color\"?: string;\r\n }\r\n}\r\n\r\nconst StyledTreeItemRoot = styled(TreeItem2Root)(({ theme }) => ({\r\n color: theme.palette.grey[400],\r\n position: \"relative\",\r\n [`& .${treeItemClasses.groupTransition}`]: {\r\n marginLeft: theme.spacing(2.5),\r\n },\r\n ...theme.applyStyles(\"light\", {\r\n color: theme.palette.grey[800],\r\n }),\r\n})) as unknown as typeof TreeItem2Root;\r\n\r\nconst CustomTreeItemContent = styled(TreeItem2Content)(({ theme }) => ({\r\n flexDirection: \"row-reverse\",\r\n borderRadius: theme.spacing(0.7),\r\n marginBottom: theme.spacing(0.5),\r\n marginTop: theme.spacing(0.5),\r\n padding: theme.spacing(0.5),\r\n paddingRight: theme.spacing(1),\r\n [`&.Mui-expanded `]: {\r\n \"&:not(.Mui-focused, .Mui-selected, .Mui-selected.Mui-focused) .labelIcon\":\r\n {\r\n color: theme.palette.primary.dark,\r\n ...theme.applyStyles(\"light\", {\r\n color: theme.palette.primary.main,\r\n }),\r\n },\r\n \"&::before\": {\r\n content: '\"\"',\r\n display: \"block\",\r\n position: \"absolute\",\r\n left: \"16px\",\r\n top: \"44px\",\r\n height: \"calc(100% - 48px)\",\r\n width: \"1.5px\",\r\n backgroundColor: theme.palette.grey[700],\r\n ...theme.applyStyles(\"light\", {\r\n backgroundColor: theme.palette.grey[300],\r\n }),\r\n },\r\n },\r\n \"&:hover\": {\r\n backgroundColor: alpha(theme.palette.primary.main, 0.1),\r\n color: \"white\",\r\n ...theme.applyStyles(\"light\", {\r\n color: theme.palette.primary.main,\r\n }),\r\n },\r\n [`&.Mui-focused, &.Mui-selected, &.Mui-selected.Mui-focused`]: {\r\n backgroundColor: theme.palette.primary.dark,\r\n color: theme.palette.primary.contrastText,\r\n ...theme.applyStyles(\"light\", {\r\n backgroundColor: theme.palette.primary.main,\r\n }),\r\n },\r\n}));\r\n\r\nconst AnimatedCollapse = animated(Collapse);\r\n\r\nfunction TransitionComponent(props: TransitionProps) {\r\n const style = useSpring({\r\n to: {\r\n opacity: props.in ? 1 : 0,\r\n transform: `translate3d(0,${props.in ? 0 : 20}px,0)`,\r\n },\r\n });\r\n\r\n return <AnimatedCollapse style={style} {...props} />;\r\n}\r\n\r\nconst StyledTreeItemLabelText = styled(Typography)({\r\n color: \"inherit\",\r\n fontWeight: 500,\r\n}) as unknown as typeof Typography;\r\n\r\ninterface CustomLabelProps {\r\n children: any;\r\n icon: IconProp;\r\n expandable?: boolean;\r\n}\r\n\r\nfunction CustomLabel({\r\n icon,\r\n expandable,\r\n children,\r\n ...other\r\n}: CustomLabelProps) {\r\n const { t } = useTranslation();\r\n const appLayoutState = useSelector((state: RootState) => state.AppLayout);\r\n return (\r\n <TreeItem2Label\r\n {...other}\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n padding: 1,\r\n }}\r\n >\r\n <FontAwesomeIcon\r\n style={{\r\n marginRight: appLayoutState.appDirection === \"ltr\" ? 7 : undefined,\r\n marginLeft: appLayoutState.appDirection === \"rtl\" ? 7 : undefined,\r\n fontSize: \"1.2rem\",\r\n }}\r\n icon={icon}\r\n />\r\n <StyledTreeItemLabelText variant=\"body2\" sx={{ fontSize: 16 }}>\r\n {t(children)}\r\n </StyledTreeItemLabelText>\r\n {expandable && <DotIcon />}\r\n </TreeItem2Label>\r\n );\r\n}\r\n\r\nconst isExpandable = (reactChildren: React.ReactNode) => {\r\n if (Array.isArray(reactChildren)) {\r\n return reactChildren.length > 0 && reactChildren.some(isExpandable);\r\n }\r\n return Boolean(reactChildren);\r\n};\r\n\r\ninterface CustomTreeItemProps\r\n extends Omit<UseTreeItem2Parameters, \"rootRef\">,\r\n Omit<React.HTMLAttributes<HTMLLIElement>, \"onFocus\"> {}\r\n\r\nconst CustomTreeItem = React.forwardRef(function CustomTreeItem(\r\n props: CustomTreeItemProps,\r\n ref: React.Ref<HTMLLIElement>\r\n) {\r\n const { id, itemId, label, disabled, children, ...other } = props;\r\n const {\r\n getRootProps,\r\n getContentProps,\r\n getIconContainerProps,\r\n getCheckboxProps,\r\n getLabelProps,\r\n getGroupTransitionProps,\r\n getDragAndDropOverlayProps,\r\n status,\r\n publicAPI,\r\n } = useTreeItem2({ id, itemId, children, label, disabled, rootRef: ref });\r\n const item = publicAPI.getItem(itemId);\r\n const expandable = isExpandable(children);\r\n return (\r\n <TreeItem2Provider itemId={itemId}>\r\n <StyledTreeItemRoot {...getRootProps(other)}>\r\n <CustomTreeItemContent\r\n {...getContentProps({\r\n className: clsx(\"content\", {\r\n \"Mui-expanded\": status.expanded,\r\n \"Mui-selected\": status.selected,\r\n \"Mui-focused\": status.focused,\r\n \"Mui-disabled\": status.disabled,\r\n }),\r\n })}\r\n >\r\n <TreeItem2IconContainer {...getIconContainerProps()}>\r\n <TreeItem2Icon status={status} />\r\n </TreeItem2IconContainer>\r\n <TreeItem2Checkbox {...getCheckboxProps()} />\r\n <CustomLabel\r\n {...getLabelProps({\r\n icon: item?.icon || \"book\",\r\n expandable: expandable && status.expanded,\r\n })}\r\n />\r\n <TreeItem2DragAndDropOverlay {...getDragAndDropOverlayProps()} />\r\n </CustomTreeItemContent>\r\n {children && <TransitionComponent {...getGroupTransitionProps()} />}\r\n </StyledTreeItemRoot>\r\n </TreeItem2Provider>\r\n );\r\n});\r\n\r\nexport default function NavigationTree() {\r\n const navigate = useNavigate();\r\n const appLayoutState = useSelector((state: RootState) => state.AppLayout);\r\n const AppInfo = useSelector((state: RootState) => state.AppInfo.value);\r\n const dispatch = useDispatch();\r\n const isMobile = useIsMobile();\r\n const { isUserAuthorized } = useSession();\r\n const filterData = (data) => {\r\n return data\r\n .filter(\r\n (item: any) =>\r\n item.authority === undefined ||\r\n item.authority == null ||\r\n isUserAuthorized(item.authority)\r\n )\r\n .map((item: any) => {\r\n if (item.children) {\r\n item.children = filterData(item.children);\r\n }\r\n return item;\r\n });\r\n };\r\n\r\n const mergedNavigationItems = [];\r\n if (AppInfo.enableAdministrationModule) {\r\n mergedNavigationItems.push(...NavigationItems);\r\n }\r\n mergedNavigationItems.push(...AppInfo.businessNavigationItems);\r\n const authoriedNavigationItems = filterData(mergedNavigationItems);\r\n\r\n return (\r\n <RichTreeView\r\n items={authoriedNavigationItems}\r\n onItemClick={(event, itemId) => {\r\n const navigationItem = findNavigationItemById(\r\n itemId,\r\n mergedNavigationItems\r\n );\r\n if (\r\n navigationItem?.action === \"NAVIGATION\" &&\r\n navigationItem?.actionPayload != null &&\r\n (navigationItem.children === undefined ||\r\n navigationItem.children === null ||\r\n navigationItem.children.length == 0)\r\n ) {\r\n navigate(navigationItem?.actionPayload?.path || \"\");\r\n // dispatch(AppLayoutActions.toggleSideBarState());\r\n }\r\n }}\r\n sx={{\r\n height: \"fit-content\",\r\n flexGrow: 1,\r\n maxWidth: DRAWER_WIDTH,\r\n direction: appLayoutState.appDirection,\r\n maxHeight: isMobile ? 300 : undefined,\r\n overflowY: \"auto\",\r\n overflowX: \"auto\",\r\n }}\r\n slots={{ item: CustomTreeItem }}\r\n />\r\n );\r\n}\r\n","import Divider from \"@mui/material/Divider\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport Drawer from \"@mui/material/Drawer\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { DrawerHeader } from \"./DrawerHeader\";\r\nimport { Box, Typography, useTheme } from \"@mui/material\";\r\nimport { RootState } from \"../redux/store\";\r\nimport {\r\n AppLayoutActions,\r\n DRAWER_WIDTH,\r\n} from \"../redux/features/common/AppLayoutSlice\";\r\nimport NavigationTree from \"./NavigationTree\";\r\n\r\nconst SideBar: React.FC = () => {\r\n const AppInfo = useSelector((state: RootState) => state.AppInfo.value);\r\n const theme = useTheme();\r\n const AppLayout = useSelector((state: RootState) => state.AppLayout);\r\n const dispatch = useDispatch();\r\n const toggleSideBar = () => {\r\n dispatch(AppLayoutActions.toggleSideBarState());\r\n };\r\n return (\r\n <Drawer\r\n sx={{\r\n width: DRAWER_WIDTH,\r\n flexShrink: 0,\r\n \"& .MuiDrawer-paper\": {\r\n width: DRAWER_WIDTH,\r\n boxSizing: \"border-box\",\r\n },\r\n }}\r\n variant=\"persistent\"\r\n anchor={AppLayout.appDirection === \"ltr\" ? \"left\" : \"right\"}\r\n open={AppLayout.sideBarOpened}\r\n >\r\n <DrawerHeader>\r\n <Box sx={{ width: \"100%\" }}>\r\n <Typography\r\n color=\"primary\"\r\n sx={{\r\n width: \"100%\",\r\n textAlign: \"center\",\r\n fontSize: 18,\r\n fontWeight: \"bold\",\r\n }}\r\n >\r\n System Content\r\n </Typography>\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-around\",\r\n marginTop: 1,\r\n }}\r\n >\r\n <Typography sx={{ fontSize: 12 }} color=\"textDisabled\">\r\n {AppInfo.appName}\r\n </Typography>\r\n <Typography sx={{ fontSize: 12 }} color=\"textDisabled\">\r\n V.{AppInfo.appVersion}\r\n </Typography>\r\n </Box>\r\n </Box>\r\n <IconButton onClick={toggleSideBar}>\r\n {theme.direction === \"ltr\" ? (\r\n <FontAwesomeIcon icon=\"angle-left\" />\r\n ) : (\r\n <FontAwesomeIcon icon=\"angle-right\" />\r\n )}\r\n </IconButton>\r\n </DrawerHeader>\r\n <Divider />\r\n <NavigationTree />\r\n </Drawer>\r\n );\r\n};\r\n\r\nexport default SideBar;\r\n","import rtlPlugin from \"stylis-plugin-rtl\";\r\nimport { prefixer } from \"stylis\";\r\nimport createCache from \"@emotion/cache\";\r\n\r\nexport const cacheRtl = createCache({\r\n key: \"muirtl\",\r\n stylisPlugins: [prefixer, rtlPlugin],\r\n});\r\n\r\nexport const cacheLtr = createCache({\r\n key: \"mui\",\r\n});","import {\r\n Button,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogContentText,\r\n DialogTitle,\r\n} from \"@mui/material\";\r\nimport { useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\ninterface ConfirmationWindowProps {\r\n title: string;\r\n body: string;\r\n onConfirmationCallBk: () => void;\r\n}\r\n\r\nexport const useConfirmationWindow = (props: ConfirmationWindowProps) => {\r\n const [open, setOpen] = useState<boolean>(false);\r\n const { t } = useTranslation();\r\n const ConfirmationWindow: React.FC = () => {\r\n return (\r\n <Dialog open={open}>\r\n <DialogTitle>{props.title}</DialogTitle>\r\n <DialogContent>\r\n <DialogContentText>{props.body}</DialogContentText>\r\n </DialogContent>\r\n <DialogActions>\r\n <Button\r\n variant=\"contained\"\r\n color=\"primary\"\r\n onClick={() => {\r\n setOpen(false);\r\n }}\r\n >\r\n {t(\"NO_LABEL\")}\r\n </Button>\r\n <Button\r\n variant=\"contained\"\r\n color=\"error\"\r\n onClick={() => {\r\n props.onConfirmationCallBk();\r\n setOpen(false);\r\n }}\r\n autoFocus\r\n >\r\n {t(\"YES_LABEL\")}\r\n </Button>\r\n </DialogActions>\r\n </Dialog>\r\n );\r\n };\r\n return { ConfirmationWindow, open, setOpen };\r\n};\r\n","import { Button } from \"@mui/material\";\r\nimport { RecordAction } from \"../DataEntryTypes\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { toast } from \"react-toastify\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport useSession from \"../../../../hooks/UseSession\";\r\nimport { useConfirmationWindow } from \"../../../../hooks/UseConfirmationWindow\";\r\n\r\nconst TemplateGridMultiRecordAction: React.FC<RecordAction> = (\r\n rowAction: RecordAction\r\n) => {\r\n const { t } = useTranslation();\r\n const session = useSession();\r\n const { ConfirmationWindow, setOpen } = useConfirmationWindow({\r\n body: t(rowAction?.confirmationMessage || \"ACTION_CONFIRMATION\"),\r\n title: t(\"CONFIRMATION\"),\r\n onConfirmationCallBk: async () => {\r\n await rowAction?.actionFn(\r\n rowAction.recordsToProcessActionOn,\r\n rowAction.recordIdsToProcessActionOn\r\n );\r\n if (rowAction?.reloadData) {\r\n rowAction.reloadData();\r\n }\r\n },\r\n });\r\n let isActionAllowed = true;\r\n if (rowAction.authority) {\r\n isActionAllowed = session.isUserAuthorized(rowAction.authority);\r\n }\r\n\r\n if (isActionAllowed) {\r\n return (\r\n <>\r\n <ConfirmationWindow />\r\n <Button\r\n onClick={async () => {\r\n if (\r\n rowAction?.recordsToProcessActionOn &&\r\n rowAction?.recordsToProcessActionOn.length > 0\r\n ) {\r\n if (rowAction?.preActionValidation) {\r\n for (const record of rowAction.recordsToProcessActionOn) {\r\n if (!rowAction.preActionValidation(record)) {\r\n return;\r\n }\r\n }\r\n }\r\n if (rowAction?.isConfirmationRequired === true) {\r\n setOpen(true);\r\n } else {\r\n await rowAction.actionFn(\r\n rowAction.recordsToProcessActionOn,\r\n rowAction.recordIdsToProcessActionOn\r\n );\r\n if (rowAction?.reloadData) {\r\n rowAction.reloadData();\r\n }\r\n }\r\n } else {\r\n toast.error(t(\"AT_LEAST_ONE_RECORD_SELECTED_MESSAGE\"));\r\n }\r\n }}\r\n variant={\r\n rowAction?.label\r\n ? \"outlined\"\r\n : rowAction?.formActionProps?.actionButtonVariant\r\n ? rowAction.formActionProps.actionButtonVariant\r\n : \"text\"\r\n }\r\n size=\"small\"\r\n color={rowAction?.formActionProps?.actionButtonColor || \"primary\"}\r\n >\r\n {rowAction?.icon ? (\r\n <FontAwesomeIcon\r\n style={{ marginRight: 5, marginLeft: 5 }}\r\n icon={rowAction.icon}\r\n />\r\n ) : (\r\n <></>\r\n )}\r\n {rowAction?.label ? t(rowAction.label) : <></>}\r\n </Button>\r\n </>\r\n );\r\n }\r\n};\r\n\r\nexport default TemplateGridMultiRecordAction;\r\n","export const DATE_FORMAT = \"YYYY-MM-DD\";\r\nexport const DATE_TIME_FORMAT = \"YYYY-MM-DD HH:mm:ss\";","import { DatePicker, LocalizationProvider } from \"@mui/x-date-pickers\";\r\nimport { AdapterMoment } from \"@mui/x-date-pickers/AdapterMoment\";\r\nimport moment from \"moment\";\r\nimport { DATE_FORMAT } from \"../../../../../util/constants\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\ninterface DatefieldProps {\r\n value: string | null;\r\n label: string;\r\n disabled?: boolean;\r\n required?: boolean;\r\n sx?: any;\r\n format?: string;\r\n errorMessage?: any;\r\n onChangeCallBack: Function;\r\n [x: string | number | symbol]: unknown;\r\n}\r\n\r\nconst Datefield: React.FC<DatefieldProps> = (props) => {\r\n const { t } = useTranslation();\r\n return (\r\n <LocalizationProvider dateAdapter={AdapterMoment}>\r\n <DatePicker\r\n value={\r\n props.value != null && props.value !== undefined && props.value !== \"\"\r\n ? moment(props.value, props?.format || DATE_FORMAT)\r\n : null\r\n }\r\n sx={props.sx}\r\n label={t(props.label)}\r\n format={props?.format || DATE_FORMAT}\r\n disabled={props.disabled}\r\n onChange={(momentValue) => {\r\n let v = null;\r\n if (momentValue != null && momentValue.isValid()) {\r\n v = momentValue.format(props?.format || DATE_FORMAT);\r\n }\r\n if (\r\n props.onChangeCallBack !== undefined &&\r\n props.onChangeCallBack != null\r\n ) {\r\n props.onChangeCallBack(v);\r\n }\r\n }}\r\n slotProps={{\r\n textField: {\r\n InputLabelProps: { shrink: true },\r\n variant: \"outlined\",\r\n required: props.required,\r\n error:\r\n props.errorMessage !== undefined && props.errorMessage != null,\r\n helperText:\r\n props.errorMessage !== undefined && props.errorMessage != null ? (\r\n <>{t(props.errorMessage)}</>\r\n ) : (\r\n <></>\r\n ),\r\n },\r\n }}\r\n />\r\n </LocalizationProvider>\r\n );\r\n};\r\n\r\nexport default Datefield;\r\n","import { DateTimePicker, LocalizationProvider } from \"@mui/x-date-pickers\";\r\nimport { AdapterMoment } from \"@mui/x-date-pickers/AdapterMoment\";\r\nimport moment from \"moment\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { DATE_TIME_FORMAT } from \"../../../../../util/constants\";\r\n\r\ninterface DatetimeFieldProps {\r\n value: string | null;\r\n label: string;\r\n disabled?: boolean;\r\n required?: boolean;\r\n format?: string;\r\n sx?: any;\r\n errorMessage?: any;\r\n onChangeCallBack: Function;\r\n [x: string | number | symbol]: unknown;\r\n}\r\n\r\nconst DatetimeField: React.FC<DatetimeFieldProps> = (props) => {\r\n const { t } = useTranslation();\r\n return (\r\n <LocalizationProvider dateAdapter={AdapterMoment}>\r\n <DateTimePicker\r\n value={\r\n props.value != null && props.value !== undefined && props.value !== \"\"\r\n ? moment(props.value, props?.format || DATE_TIME_FORMAT)\r\n : null\r\n }\r\n label={t(props.label)}\r\n sx={props.sx}\r\n format={props?.format || DATE_TIME_FORMAT}\r\n disabled={props.disabled}\r\n onChange={(momentValue) => {\r\n let v = null;\r\n if (momentValue != null && momentValue.isValid()) {\r\n v = momentValue.format(props?.format || DATE_TIME_FORMAT);\r\n }\r\n if (\r\n props.onChangeCallBack !== undefined &&\r\n props.onChangeCallBack != null\r\n ) {\r\n props.onChangeCallBack(v);\r\n }\r\n }}\r\n slotProps={{\r\n textField: {\r\n variant: \"outlined\",\r\n required: props.required,\r\n error:\r\n props.errorMessage !== undefined && props.errorMessage != null,\r\n helperText:\r\n props.errorMessage !== undefined && props.errorMessage != null ? (\r\n <>{t(props.errorMessage)}</>\r\n ) : (\r\n <></>\r\n ),\r\n },\r\n }}\r\n />\r\n </LocalizationProvider>\r\n );\r\n};\r\n\r\nexport default DatetimeField;\r\n","import { useSelector } from \"react-redux\";\r\nimport { RootState } from \"../../../../../redux/store\";\r\nimport { Autocomplete, Popper, TextField } from \"@mui/material\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\ninterface ComboBoxProps {\r\n value: any;\r\n onChangeCallBack: Function;\r\n label: string;\r\n disabled?: boolean;\r\n required?: boolean;\r\n options: Array<any>;\r\n errorMessage?: any;\r\n displayField: string;\r\n valueField: string;\r\n sx?: any;\r\n}\r\n\r\nconst ComboBox: React.FC<ComboBoxProps> = (props) => {\r\n const AppLayoutState = useSelector((state: RootState) => state.AppLayout);\r\n const { t } = useTranslation();\r\n const getValue = (v: string) => {\r\n for (let option of props.options) {\r\n if (option[props.valueField] == v) {\r\n return option;\r\n }\r\n }\r\n return null;\r\n };\r\n return (\r\n <Autocomplete\r\n sx={props.sx}\r\n value={getValue(props.value)}\r\n options={props.options}\r\n disabled={props.disabled}\r\n onChange={(event, newValue) => {\r\n if (\r\n props.onChangeCallBack !== undefined &&\r\n props.onChangeCallBack != null\r\n ) {\r\n if (newValue != null) {\r\n let v = newValue[props.valueField];\r\n props.onChangeCallBack(v, newValue);\r\n } else {\r\n props.onChangeCallBack(null, null);\r\n }\r\n }\r\n }}\r\n clearOnBlur\r\n handleHomeEndKeys\r\n getOptionLabel={(option) => {\r\n return option != null ? t(option[props.displayField]) : \"\";\r\n }}\r\n renderOption={(props1, option) => {\r\n return (\r\n <li {...props1}>\r\n {option != null ? t(option[props.displayField]) : \"\"}\r\n </li>\r\n );\r\n }}\r\n slots={{\r\n popper: (props: any) => (\r\n <Popper\r\n {...props}\r\n style={{ ...props.style, direction: AppLayoutState.appDirection }}\r\n />\r\n ),\r\n }}\r\n renderInput={(params) => {\r\n return (\r\n <TextField\r\n {...params}\r\n required={props.required || false}\r\n variant=\"outlined\"\r\n InputLabelProps={{ shrink: true }}\r\n label={t(props.label)}\r\n error={\r\n props.errorMessage != null && props.errorMessage !== undefined\r\n ? true\r\n : false\r\n }\r\n helperText={\r\n props.errorMessage != null && props.errorMessage !== undefined\r\n ? t(props.errorMessage)\r\n : \"\"\r\n }\r\n />\r\n );\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default ComboBox;\r\n","import { Checkbox, FormControlLabel } from \"@mui/material\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\ninterface CheckBoxProps {\r\n value: any;\r\n disabled?: boolean;\r\n required?: boolean;\r\n label: string;\r\n checkedValue?: any;\r\n unCheckedValue?: any;\r\n onChangeCallBack: Function;\r\n sx?: any;\r\n}\r\n\r\nconst CheckBox: React.FC<CheckBoxProps> = (props) => {\r\n const { t } = useTranslation();\r\n return (\r\n <FormControlLabel\r\n sx={props.sx}\r\n disabled={props.disabled || false}\r\n required={props.required || false}\r\n control={\r\n <Checkbox\r\n checked={\r\n props?.checkedValue == props.value ||\r\n props.value === \"true\" ||\r\n props.value == \"1\"\r\n ? true\r\n : false\r\n }\r\n onChange={(e) => {\r\n if (\r\n props.onChangeCallBack !== undefined &&\r\n props.onChangeCallBack != null\r\n ) {\r\n if (e.target.checked) {\r\n if (\r\n props.checkedValue !== undefined &&\r\n props.checkedValue != null\r\n ) {\r\n props.onChangeCallBack(props.checkedValue);\r\n } else {\r\n props.onChangeCallBack(\"true\");\r\n }\r\n } else {\r\n if (\r\n props.unCheckedValue !== undefined &&\r\n props.unCheckedValue != null\r\n ) {\r\n props.onChangeCallBack(props.unCheckedValue);\r\n } else {\r\n props.onChangeCallBack(\"false\");\r\n }\r\n }\r\n }\r\n }}\r\n />\r\n }\r\n label={t(props.label)}\r\n />\r\n );\r\n};\r\n\r\nexport default CheckBox;\r\n","import moment from \"moment\";\r\nimport { TemplateGridColDef } from \"../DataEntryTypes\";\r\nimport Datefield from \"../TemplateDataForm/FormFields/Datefield\";\r\nimport { DATE_FORMAT, DATE_TIME_FORMAT } from \"../../../../util/constants\";\r\nimport DatetimeField from \"../TemplateDataForm/FormFields/DatetimeField\";\r\nimport ComboBox from \"../TemplateDataForm/FormFields/ComboBox\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport CheckBox from \"../TemplateDataForm/FormFields/CheckBox\";\r\n\r\nexport const generateDateColumn: any = (colDef: TemplateGridColDef) => {\r\n const column: TemplateGridColDef = {\r\n ...colDef,\r\n type: \"string\",\r\n renderEditCell: (params: any) => {\r\n return (\r\n <Datefield\r\n sx={{ width: \"100%\" }}\r\n label=\"\"\r\n value={params.value}\r\n onChangeCallBack={(v: any) => {\r\n params.api.setEditCellValue({\r\n id: params.id,\r\n field: params.field,\r\n value: v,\r\n });\r\n }}\r\n />\r\n );\r\n },\r\n valueParser: (value: any, row: any, column: any) => {\r\n let v = null;\r\n if (value !== null) {\r\n v = moment(value).format(DATE_FORMAT);\r\n }\r\n return v;\r\n },\r\n valueFormatter: (value: any, row: any, column: any) => {\r\n return row[column.field];\r\n },\r\n };\r\n return column;\r\n};\r\n\r\nexport const generateDateTimeColumn: any = (colDef: TemplateGridColDef) => {\r\n const column: TemplateGridColDef = {\r\n ...colDef,\r\n type: \"string\",\r\n renderEditCell: (params: any) => {\r\n return (\r\n <DatetimeField\r\n sx={{ width: \"100%\" }}\r\n label=\"\"\r\n value={params.value}\r\n onChangeCallBack={(v: any) => {\r\n params.api.setEditCellValue({\r\n id: params.id,\r\n field: params.field,\r\n value: v,\r\n });\r\n }}\r\n />\r\n );\r\n },\r\n valueParser: (value: any, row: any, column: any) => {\r\n let v = null;\r\n if (value !== null) {\r\n v = moment(value).format(DATE_TIME_FORMAT);\r\n }\r\n return v;\r\n },\r\n valueFormatter: (value: any, row: any, column: any) => {\r\n return row[column.field];\r\n },\r\n };\r\n return column;\r\n};\r\n\r\ntype ComboBoxColumnProps = TemplateGridColDef & {\r\n options: Array<any>;\r\n displayField: string;\r\n valueField: string;\r\n};\r\nexport const generateComboColumn: (\r\n props: ComboBoxColumnProps\r\n) => TemplateGridColDef = (colDef: ComboBoxColumnProps) => {\r\n const column: TemplateGridColDef = {\r\n ...colDef,\r\n type: \"custom\",\r\n valueGetter: (value) => {\r\n if (value) {\r\n return value + \"\";\r\n }\r\n return value;\r\n },\r\n renderCell: (parameters: any) => {\r\n let record = null;\r\n try {\r\n record = parameters.colDef.options.find(\r\n (item: any) => item[parameters.colDef.valueField] == parameters.value\r\n );\r\n } catch (e) {}\r\n return (\r\n <div>\r\n {record != null\r\n ? record[parameters.colDef.displayField]\r\n : parameters.value}\r\n </div>\r\n );\r\n },\r\n\r\n renderEditCell: (params: any) => {\r\n return (\r\n <ComboBox\r\n {...params}\r\n sx={{ width: \"100%\" }}\r\n options={colDef.options}\r\n valueField={colDef.valueField}\r\n displayField={colDef.displayField}\r\n onChangeCallBack={(v: any, selectedRecord: any) => {\r\n if (v === null) {\r\n params.api.setEditCellValue({\r\n id: params.id,\r\n field: params.field,\r\n value: null,\r\n });\r\n }\r\n params.api.setEditCellValue({\r\n id: params.id,\r\n field: params.field,\r\n value: v + \"\",\r\n });\r\n }}\r\n />\r\n );\r\n },\r\n };\r\n return column;\r\n};\r\n\r\ntype CheckBoxColumnProps = TemplateGridColDef & {\r\n checkedValue?: string;\r\n unCheckedValue?: string;\r\n};\r\n\r\nexport const generateCheckBoxColumn: (\r\n props: CheckBoxColumnProps\r\n) => TemplateGridColDef = (colDef: CheckBoxColumnProps) => {\r\n return {\r\n ...colDef,\r\n type: \"custom\",\r\n valueGetter: (value) => {\r\n if (value == null || value == undefined) {\r\n return null;\r\n } else {\r\n return value + \"\";\r\n }\r\n },\r\n renderCell: (parameters: any) => {\r\n const value = parameters?.value;\r\n if (\r\n value === colDef.checkedValue ||\r\n value === \"true\" ||\r\n value === 1 ||\r\n value === true\r\n ) {\r\n return <FontAwesomeIcon icon=\"check\" color=\"green\" />;\r\n } else {\r\n return <FontAwesomeIcon icon=\"xmark\" color=\"red\" />;\r\n }\r\n },\r\n renderEditCell: (params: any) => {\r\n return (\r\n <CheckBox\r\n {...params}\r\n checkedValue={colDef?.checkedValue || \"true\"}\r\n unCheckedValue={colDef?.unCheckedValue || \"false\"}\r\n onChangeCallBack={(v: any) => {\r\n params.api.setEditCellValue({\r\n id: params.id,\r\n field: params.field,\r\n value: v + \"\",\r\n });\r\n }}\r\n />\r\n );\r\n },\r\n };\r\n};\r\n","import { GridRowSelectionModel } from \"@mui/x-data-grid-premium\";\r\nimport {\r\n FormElementProps,\r\n RecordFieldProps,\r\n TemplateGridColDef,\r\n} from \"./DataEntryTypes\";\r\nimport {\r\n generateCheckBoxColumn,\r\n generateComboColumn,\r\n generateDateColumn,\r\n generateDateTimeColumn,\r\n} from \"./TemplateDataGrid/DataGridColumnsUtil\";\r\nimport * as z from \"zod\";\r\nimport { TFunction } from \"i18next\";\r\n\r\nexport const getElementFields: (\r\n element: FormElementProps\r\n) => Array<RecordFieldProps> = (element: FormElementProps) => {\r\n const fields: Array<RecordFieldProps> = [];\r\n if (element.type === \"field\" && element.mode === \"props\" && element?.props) {\r\n fields.push(element.props);\r\n } else if (\r\n element.type === \"group\" &&\r\n element?.props &&\r\n element?.props?.elements\r\n ) {\r\n for (const childElement of element.props.elements) {\r\n fields.push(...getElementFields(childElement));\r\n }\r\n }\r\n return fields;\r\n};\r\n\r\nexport const getAllFields: (\r\n elements: Array<FormElementProps>\r\n) => Array<RecordFieldProps> = (elements: Array<FormElementProps>) => {\r\n const fields: Array<RecordFieldProps> = [];\r\n for (const element of elements) {\r\n fields.push(...getElementFields(element));\r\n }\r\n return fields;\r\n};\r\n\r\nexport const constructGridColumnsFromFields: (\r\n fields: Array<RecordFieldProps>,\r\n isDefaultEditable: boolean,\r\n t: TFunction<\"translation\", undefined>\r\n) => Array<TemplateGridColDef> = (fields, isDefaultEditable, t) => {\r\n const columns: Array<TemplateGridColDef> = [];\r\n for (const tableField of fields) {\r\n if (\r\n tableField?.fieldType === \"text\" ||\r\n tableField?.fieldType === \"number\"\r\n ) {\r\n const column: TemplateGridColDef = {\r\n ...tableField?.gridProps?.muiProps,\r\n editable:\r\n tableField?.gridProps?.muiProps?.editable || isDefaultEditable,\r\n type: tableField?.fieldType == \"number\" ? \"number\" : \"string\",\r\n field: tableField?.fieldName,\r\n headerName: t(tableField?.fieldLabel || tableField?.fieldName),\r\n headerAlign: \"center\",\r\n align: \"center\",\r\n hidden: tableField?.hidden,\r\n searchable: tableField?.gridProps?.searchable,\r\n flex: 1,\r\n minWidth: 200,\r\n };\r\n columns.push(column);\r\n } else if (tableField?.fieldType === \"date\") {\r\n const column: TemplateGridColDef = generateDateColumn({\r\n ...tableField?.gridProps?.muiProps,\r\n editable:\r\n tableField?.gridProps?.muiProps?.editable || isDefaultEditable,\r\n field: tableField?.fieldName,\r\n headerName: t(tableField?.fieldLabel || tableField?.fieldName),\r\n headerAlign: \"center\",\r\n align: \"center\",\r\n hidden: tableField?.hidden,\r\n searchable: tableField?.gridProps?.searchable,\r\n flex: 1,\r\n minWidth: 200,\r\n });\r\n columns.push(column);\r\n } else if (tableField?.fieldType === \"datetime\") {\r\n const column: TemplateGridColDef = generateDateTimeColumn({\r\n ...tableField?.gridProps?.muiProps,\r\n editable:\r\n tableField?.gridProps?.muiProps?.editable || isDefaultEditable,\r\n field: tableField?.fieldName,\r\n headerName: t(tableField?.fieldLabel || tableField?.fieldName),\r\n headerAlign: \"center\",\r\n align: \"center\",\r\n hidden: tableField?.hidden,\r\n searchable: tableField?.gridProps?.searchable,\r\n flex: 1,\r\n minWidth: 200,\r\n });\r\n columns.push(column);\r\n } else if (tableField?.fieldType === \"checkbox\") {\r\n const column = generateCheckBoxColumn({\r\n ...tableField?.gridProps?.muiProps,\r\n editable:\r\n tableField?.gridProps?.muiProps?.editable || isDefaultEditable,\r\n field: tableField?.fieldName,\r\n headerName: t(tableField?.fieldLabel || tableField?.fieldName),\r\n headerAlign: \"center\",\r\n align: \"center\",\r\n hidden: tableField?.hidden,\r\n searchable: tableField?.gridProps?.searchable,\r\n checkedValue: tableField?.checkedValue,\r\n unCheckedValue: tableField?.unCheckedValue,\r\n width: 150,\r\n });\r\n columns.push(column);\r\n } else if (tableField?.fieldType === \"combobox\") {\r\n const column: TemplateGridColDef = generateComboColumn({\r\n ...tableField?.gridProps?.muiProps,\r\n editable:\r\n tableField?.gridProps?.muiProps?.editable || isDefaultEditable,\r\n field: tableField?.fieldName,\r\n headerName: t(tableField?.fieldLabel || tableField?.fieldName),\r\n headerAlign: \"center\",\r\n align: \"center\",\r\n hidden: tableField?.hidden,\r\n searchable: tableField?.gridProps?.searchable,\r\n valueField: tableField?.optionValueField || \"value\",\r\n displayField: tableField?.optionDisplayField || \"display\",\r\n options: tableField?.options || [],\r\n flex: 1,\r\n minWidth: 200,\r\n });\r\n columns.push(column);\r\n }\r\n }\r\n return columns;\r\n};\r\n\r\nexport const constructValidationSchema = (fields: Array<RecordFieldProps>) => {\r\n const validationSchemaObj: any = {};\r\n for (const field of fields) {\r\n if (field?.fieldName) {\r\n const fieldName = field.fieldName;\r\n if (field.fieldType === \"number\") {\r\n if (field?.required === true) {\r\n validationSchemaObj[fieldName] = z.number({\r\n required_error: \"This field is required\",\r\n invalid_type_error: \"This field must be a number\",\r\n });\r\n } else {\r\n validationSchemaObj[fieldName] = z.number().optional().nullable();\r\n }\r\n } else {\r\n if (field?.required === true) {\r\n validationSchemaObj[fieldName] = z\r\n .string({ message: \"This field is required\" })\r\n .min(1, \"This field is required\");\r\n } else {\r\n validationSchemaObj[fieldName] = z.string().optional().nullable();\r\n }\r\n }\r\n }\r\n }\r\n return validationSchemaObj;\r\n};\r\n\r\nexport type GridSelection = {\r\n selectedRecords: Array<any>;\r\n selectedRecordIds: Array<any>;\r\n};\r\n\r\nexport const getGridSelection: (\r\n rowSelectionModel: GridRowSelectionModel,\r\n data: Array<any>,\r\n keyColumnName: string\r\n) => GridSelection = (\r\n rowSelectionModel: GridRowSelectionModel,\r\n data: Array<any>,\r\n keyColumnName: string\r\n) => {\r\n const sRecords = [];\r\n const sRecordIds = [];\r\n if (\r\n rowSelectionModel.type === \"exclude\" &&\r\n rowSelectionModel.ids.size === 0\r\n ) {\r\n for (const record of data) {\r\n sRecords.push(record);\r\n sRecordIds.push(record[keyColumnName]);\r\n }\r\n } else {\r\n if (rowSelectionModel?.ids) {\r\n for (const selectedId of rowSelectionModel.ids) {\r\n const record = data.find((x) => x[keyColumnName] === selectedId);\r\n sRecords.push(record);\r\n sRecordIds.push(selectedId);\r\n }\r\n }\r\n }\r\n return { selectedRecords: sRecords, selectedRecordIds: sRecordIds };\r\n};\r\n","import {\r\n Badge,\r\n Box,\r\n Button,\r\n Divider,\r\n IconButton,\r\n InputAdornment,\r\n MenuItem,\r\n styled,\r\n TextField,\r\n Tooltip,\r\n} from \"@mui/material\";\r\nimport {\r\n Toolbar,\r\n ToolbarButton,\r\n ColumnsPanelTrigger,\r\n FilterPanelTrigger,\r\n QuickFilter,\r\n QuickFilterControl,\r\n QuickFilterClear,\r\n QuickFilterTrigger,\r\n GridViewColumnIcon,\r\n GridFilterListIcon,\r\n ExportExcel,\r\n} from \"@mui/x-data-grid-premium\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport TemplateGridMultiRecordAction from \"./TemplateGridMultiRecordAction\";\r\nimport { getGridSelection } from \"../DataEntryUtil\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { TemplateGridTopBarProps } from \"../DataEntryTypes\";\r\nimport useSession from \"../../../../hooks/UseSession\";\r\n\r\ntype OwnerState = {\r\n expanded: boolean;\r\n};\r\n\r\nconst StyledQuickFilter = styled(QuickFilter)({\r\n display: \"grid\",\r\n alignItems: \"center\",\r\n});\r\n\r\nconst StyledToolbarButton = styled(ToolbarButton)<{ ownerState: OwnerState }>(\r\n ({ theme, ownerState }) => ({\r\n gridArea: \"1 / 1\",\r\n width: \"min-content\",\r\n height: \"min-content\",\r\n zIndex: 1,\r\n opacity: ownerState.expanded ? 0 : 1,\r\n pointerEvents: ownerState.expanded ? \"none\" : \"auto\",\r\n transition: theme.transitions.create([\"opacity\"]),\r\n })\r\n);\r\n\r\nconst StyledTextField = styled(TextField)<{\r\n ownerState: OwnerState;\r\n}>(({ theme, ownerState }) => ({\r\n gridArea: \"1 / 1\",\r\n overflowX: \"clip\",\r\n width: ownerState.expanded ? 260 : \"var(--trigger-width)\",\r\n opacity: ownerState.expanded ? 1 : 0,\r\n transition: theme.transitions.create([\"width\", \"opacity\"]),\r\n}));\r\n\r\nconst TemplateGridTopBar: React.FC<TemplateGridTopBarProps> = (\r\n props: TemplateGridTopBarProps\r\n) => {\r\n const { t } = useTranslation();\r\n const session = useSession();\r\n const isCreationAuthorized = props?.templateProps?.editAction?.authority\r\n ? session.isUserAuthorized(props.templateProps.editAction.authority)\r\n : true;\r\n const isCreationEnabled = props?.templateProps?.disableDefaultAction || true;\r\n const gridSelection = getGridSelection(\r\n props?.templateProps?.rowSelectionModel || {\r\n ids: new Set(),\r\n type: \"include\",\r\n },\r\n props?.templateProps?.data || [],\r\n props?.templateProps?.keyColumnName || \"id\"\r\n );\r\n return (\r\n <Toolbar>\r\n {isCreationEnabled &&\r\n isCreationAuthorized &&\r\n props?.templateProps?.editMode?.editMode != \"none\" ? (\r\n <Button onClick={props?.handleCreateNewRecord}>\r\n <FontAwesomeIcon\r\n icon=\"add\"\r\n style={{ marginRight: 5, marginLeft: 5 }}\r\n />\r\n {t(\"ADD_BTN_LABEL\")}\r\n </Button>\r\n ) : (\r\n <></>\r\n )}\r\n {props?.templateProps?.rowActions ? (\r\n props.templateProps.rowActions.map((rowAction) =>\r\n rowAction?.gridActionProps?.multiRecord === true ? (\r\n <TemplateGridMultiRecordAction\r\n {...rowAction}\r\n reloadData={async () => {\r\n props.templateProps.apiActions.reloadData(\r\n props?.templateProps?.gridLoadParametersValues\r\n );\r\n }}\r\n recordIdsToProcessActionOn={gridSelection.selectedRecordIds}\r\n recordsToProcessActionOn={gridSelection.selectedRecords}\r\n />\r\n ) : (\r\n <></>\r\n )\r\n )\r\n ) : (\r\n <></>\r\n )}\r\n <Box sx={{ flex: 1, mx: 0.5 }}>{props?.templateProps?.tBar}</Box>\r\n\r\n <Tooltip title=\"Columns\">\r\n <ColumnsPanelTrigger render={<ToolbarButton />}>\r\n <GridViewColumnIcon fontSize=\"small\" />\r\n </ColumnsPanelTrigger>\r\n </Tooltip>\r\n\r\n <Tooltip title=\"Filters\">\r\n <FilterPanelTrigger\r\n render={(props, state) => (\r\n <ToolbarButton {...props} color=\"default\">\r\n <Badge\r\n badgeContent={state.filterCount}\r\n color=\"primary\"\r\n variant=\"dot\"\r\n >\r\n <GridFilterListIcon fontSize=\"small\" />\r\n </Badge>\r\n </ToolbarButton>\r\n )}\r\n />\r\n </Tooltip>\r\n\r\n {props?.templateProps?.gridStateKey ? (\r\n <Tooltip title={t(\"RESET_GRID_STATE\")}>\r\n <IconButton onClick={props?.clearGridState}>\r\n <FontAwesomeIcon icon=\"eraser\" />\r\n </IconButton>\r\n </Tooltip>\r\n ) : (\r\n <></>\r\n )}\r\n\r\n <Divider\r\n orientation=\"vertical\"\r\n variant=\"middle\"\r\n flexItem\r\n sx={{ mx: 0.5 }}\r\n />\r\n\r\n <Tooltip title={t(\"EXPORT_EXECL_LABEL\")}>\r\n <ExportExcel render={<MenuItem />}>\r\n <FontAwesomeIcon icon=\"file-excel\" color=\"green\" />\r\n </ExportExcel>\r\n </Tooltip>\r\n\r\n <StyledQuickFilter>\r\n <QuickFilterTrigger\r\n render={(triggerProps, state) => (\r\n <Tooltip title={t(\"SEARCH_BTN_LABEL\")} enterDelay={0}>\r\n <StyledToolbarButton\r\n {...triggerProps}\r\n ownerState={{ expanded: state.expanded }}\r\n color=\"default\"\r\n aria-disabled={state.expanded}\r\n >\r\n <FontAwesomeIcon icon=\"search\" />\r\n </StyledToolbarButton>\r\n </Tooltip>\r\n )}\r\n />\r\n <QuickFilterControl\r\n render={({ ref, ...controlProps }, state) => (\r\n <StyledTextField\r\n {...controlProps}\r\n ownerState={{ expanded: state.expanded }}\r\n inputRef={ref}\r\n aria-label=\"Search\"\r\n placeholder={`${t(\"SEARCH_BTN_LABEL\")}...`}\r\n size=\"small\"\r\n slotProps={{\r\n input: {\r\n startAdornment: (\r\n <InputAdornment position=\"start\">\r\n <FontAwesomeIcon icon=\"search\" />\r\n </InputAdornment>\r\n ),\r\n endAdornment: state.value ? (\r\n <InputAdornment position=\"end\">\r\n <QuickFilterClear\r\n edge=\"end\"\r\n size=\"small\"\r\n aria-label=\"Clear search\"\r\n // material={{ sx: { marginRight: -0.75 } }}\r\n >\r\n <FontAwesomeIcon icon=\"xmark\" />\r\n </QuickFilterClear>\r\n </InputAdornment>\r\n ) : null,\r\n ...controlProps.slotProps?.input,\r\n },\r\n ...controlProps.slotProps,\r\n }}\r\n />\r\n )}\r\n />\r\n </StyledQuickFilter>\r\n\r\n <IconButton\r\n onClick={() => {\r\n props.templateProps.apiActions.reloadData(\r\n props?.templateProps?.gridLoadParametersValues\r\n );\r\n }}\r\n >\r\n <FontAwesomeIcon icon=\"refresh\" />\r\n </IconButton>\r\n </Toolbar>\r\n );\r\n};\r\n\r\nexport default TemplateGridTopBar;\r\n","export function hasDigitsOnly(str: string) {\r\n return /^\\d+$/.test(str);\r\n}\r\n\r\nexport function isNumber(value: any) {\r\n return typeof value === \"number\" && !isNaN(value);\r\n}\r\n\r\nexport function isNumeric(value: string) {\r\n return (\r\n typeof value === \"string\" && value.trim() !== \"\" && !isNaN(Number(value))\r\n );\r\n}\r\n\r\nexport function capitalizeFirstLetter(str: string) {\r\n if (!str) return \"\";\r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n}\r\n","import { Tooltip } from \"@mui/material\";\r\nimport { GridActionsCellItem } from \"@mui/x-data-grid-premium\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { RecordAction } from \"../DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport useSession from \"../../../../hooks/UseSession\";\r\nimport { useConfirmationWindow } from \"../../../../hooks/UseConfirmationWindow\";\r\n\r\nconst TemplateGridRecordAction: React.FC<RecordAction> = (\r\n rowAction: RecordAction\r\n) => {\r\n const { t } = useTranslation();\r\n const session = useSession();\r\n const { ConfirmationWindow, setOpen } = useConfirmationWindow({\r\n body: t(rowAction?.confirmationMessage || \"ACTION_CONFIRMATION\"),\r\n title: t(\"CONFIRMATION\"),\r\n onConfirmationCallBk: async () => {\r\n await rowAction?.actionFn(rowAction.record);\r\n if (rowAction?.reloadData) {\r\n rowAction.reloadData();\r\n }\r\n },\r\n });\r\n let isActionAllowed = true;\r\n if (rowAction.authority) {\r\n isActionAllowed = session.isUserAuthorized(rowAction.authority);\r\n }\r\n let iconStyle: any = {};\r\n if (rowAction?.getActionIconStyleForRecord) {\r\n iconStyle = rowAction.getActionIconStyleForRecord(rowAction.record);\r\n }\r\n let isActionVisibleForRecord = true;\r\n if (rowAction?.isActionVisibleForRecord) {\r\n isActionVisibleForRecord = rowAction?.isActionVisibleForRecord(\r\n rowAction.record\r\n );\r\n }\r\n let isActionDisabledForRecord = false;\r\n if (rowAction?.isActionDisabledForRecord) {\r\n isActionDisabledForRecord = rowAction.isActionDisabledForRecord(\r\n rowAction.record\r\n );\r\n }\r\n if (isActionAllowed && isActionVisibleForRecord) {\r\n return (\r\n <>\r\n <ConfirmationWindow />\r\n <GridActionsCellItem\r\n disabled={isActionDisabledForRecord}\r\n icon={\r\n <Tooltip title={rowAction?.label ? t(rowAction.label) : \"\"}>\r\n <FontAwesomeIcon\r\n icon={rowAction.icon}\r\n style={{\r\n ...iconStyle,\r\n color: isActionDisabledForRecord\r\n ? \"gray\"\r\n : iconStyle?.color != undefined\r\n ? iconStyle.color\r\n : undefined,\r\n }}\r\n />\r\n </Tooltip>\r\n }\r\n showInMenu={rowAction?.gridActionProps?.showInMenu || false}\r\n label={\"\"}\r\n className=\"textPrimary\"\r\n color=\"inherit\"\r\n onClick={async () => {\r\n if (!isActionDisabledForRecord) {\r\n if (rowAction?.preActionValidation) {\r\n if (!rowAction.preActionValidation(rowAction.record)) {\r\n return;\r\n }\r\n }\r\n if (rowAction?.isConfirmationRequired === true) {\r\n setOpen(true);\r\n } else {\r\n await rowAction.actionFn(rowAction.record);\r\n if (rowAction?.reloadData) {\r\n rowAction.reloadData();\r\n }\r\n }\r\n }\r\n }}\r\n />\r\n </>\r\n );\r\n }\r\n};\r\n\r\nexport default TemplateGridRecordAction;\r\n","/**\n * WARNING: Don't import this directly. It's imported by the code generated by\n * `@mui/interal-babel-plugin-minify-errors`. Make sure to always use string literals in `Error`\n * constructors to ensure the plugin works as expected. Supported patterns include:\n * throw new Error('My message');\n * throw new Error(`My message: ${foo}`);\n * throw new Error(`My message: ${foo}` + 'another string');\n * ...\n * @param {number} code\n */\nexport default function formatMuiErrorMessage(code, ...args) {\n const url = new URL(`https://mui.com/production-error/?code=${code}`);\n args.forEach(arg => url.searchParams.append('args[]', arg));\n return `Minified MUI error #${code}; visit ${url} for the full message.`;\n}","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = require('./lib/has');\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * @license React\n * react-is.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\");\nSymbol.for(\"react.provider\");\nvar REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_VIEW_TRANSITION_TYPE = Symbol.for(\"react.view_transition\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\nfunction typeOf(object) {\n if (\"object\" === typeof object && null !== object) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n switch (((object = object.type), object)) {\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n case REACT_SUSPENSE_LIST_TYPE:\n case REACT_VIEW_TRANSITION_TYPE:\n return object;\n default:\n switch (((object = object && object.$$typeof), object)) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n return object;\n case REACT_CONSUMER_TYPE:\n return object;\n default:\n return $$typeof;\n }\n }\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n}\nexports.ContextConsumer = REACT_CONSUMER_TYPE;\nexports.ContextProvider = REACT_CONTEXT_TYPE;\nexports.Element = REACT_ELEMENT_TYPE;\nexports.ForwardRef = REACT_FORWARD_REF_TYPE;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Lazy = REACT_LAZY_TYPE;\nexports.Memo = REACT_MEMO_TYPE;\nexports.Portal = REACT_PORTAL_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.SuspenseList = REACT_SUSPENSE_LIST_TYPE;\nexports.isContextConsumer = function (object) {\n return typeOf(object) === REACT_CONSUMER_TYPE;\n};\nexports.isContextProvider = function (object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n};\nexports.isElement = function (object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n};\nexports.isForwardRef = function (object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n};\nexports.isFragment = function (object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n};\nexports.isLazy = function (object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n};\nexports.isMemo = function (object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n};\nexports.isPortal = function (object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n};\nexports.isProfiler = function (object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n};\nexports.isStrictMode = function (object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n};\nexports.isSuspense = function (object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n};\nexports.isSuspenseList = function (object) {\n return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;\n};\nexports.isValidElementType = function (type) {\n return \"string\" === typeof type ||\n \"function\" === typeof type ||\n type === REACT_FRAGMENT_TYPE ||\n type === REACT_PROFILER_TYPE ||\n type === REACT_STRICT_MODE_TYPE ||\n type === REACT_SUSPENSE_TYPE ||\n type === REACT_SUSPENSE_LIST_TYPE ||\n (\"object\" === typeof type &&\n null !== type &&\n (type.$$typeof === REACT_LAZY_TYPE ||\n type.$$typeof === REACT_MEMO_TYPE ||\n type.$$typeof === REACT_CONTEXT_TYPE ||\n type.$$typeof === REACT_CONSUMER_TYPE ||\n type.$$typeof === REACT_FORWARD_REF_TYPE ||\n type.$$typeof === REACT_CLIENT_REFERENCE ||\n void 0 !== type.getModuleId))\n ? !0\n : !1;\n};\nexports.typeOf = typeOf;\n","/**\n * @license React\n * react-is.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function typeOf(object) {\n if (\"object\" === typeof object && null !== object) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n switch (((object = object.type), object)) {\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n case REACT_SUSPENSE_LIST_TYPE:\n case REACT_VIEW_TRANSITION_TYPE:\n return object;\n default:\n switch (((object = object && object.$$typeof), object)) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n return object;\n case REACT_CONSUMER_TYPE:\n return object;\n default:\n return $$typeof;\n }\n }\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n }\n var REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\");\n Symbol.for(\"react.provider\");\n var REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_VIEW_TRANSITION_TYPE = Symbol.for(\"react.view_transition\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\n exports.ContextConsumer = REACT_CONSUMER_TYPE;\n exports.ContextProvider = REACT_CONTEXT_TYPE;\n exports.Element = REACT_ELEMENT_TYPE;\n exports.ForwardRef = REACT_FORWARD_REF_TYPE;\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.Lazy = REACT_LAZY_TYPE;\n exports.Memo = REACT_MEMO_TYPE;\n exports.Portal = REACT_PORTAL_TYPE;\n exports.Profiler = REACT_PROFILER_TYPE;\n exports.StrictMode = REACT_STRICT_MODE_TYPE;\n exports.Suspense = REACT_SUSPENSE_TYPE;\n exports.SuspenseList = REACT_SUSPENSE_LIST_TYPE;\n exports.isContextConsumer = function (object) {\n return typeOf(object) === REACT_CONSUMER_TYPE;\n };\n exports.isContextProvider = function (object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n };\n exports.isElement = function (object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n };\n exports.isForwardRef = function (object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n };\n exports.isFragment = function (object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n };\n exports.isLazy = function (object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n };\n exports.isMemo = function (object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n };\n exports.isPortal = function (object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n };\n exports.isProfiler = function (object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n };\n exports.isStrictMode = function (object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n };\n exports.isSuspense = function (object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n };\n exports.isSuspenseList = function (object) {\n return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;\n };\n exports.isValidElementType = function (type) {\n return \"string\" === typeof type ||\n \"function\" === typeof type ||\n type === REACT_FRAGMENT_TYPE ||\n type === REACT_PROFILER_TYPE ||\n type === REACT_STRICT_MODE_TYPE ||\n type === REACT_SUSPENSE_TYPE ||\n type === REACT_SUSPENSE_LIST_TYPE ||\n (\"object\" === typeof type &&\n null !== type &&\n (type.$$typeof === REACT_LAZY_TYPE ||\n type.$$typeof === REACT_MEMO_TYPE ||\n type.$$typeof === REACT_CONTEXT_TYPE ||\n type.$$typeof === REACT_CONSUMER_TYPE ||\n type.$$typeof === REACT_FORWARD_REF_TYPE ||\n type.$$typeof === REACT_CLIENT_REFERENCE ||\n void 0 !== type.getModuleId))\n ? !0\n : !1;\n };\n exports.typeOf = typeOf;\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","import * as React from 'react';\nimport { isValidElementType } from 'react-is';\n\n// https://github.com/sindresorhus/is-plain-obj/blob/main/index.js\nexport function isPlainObject(item) {\n if (typeof item !== 'object' || item === null) {\n return false;\n }\n const prototype = Object.getPrototypeOf(item);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in item) && !(Symbol.iterator in item);\n}\nfunction deepClone(source) {\n if (/*#__PURE__*/React.isValidElement(source) || isValidElementType(source) || !isPlainObject(source)) {\n return source;\n }\n const output = {};\n Object.keys(source).forEach(key => {\n output[key] = deepClone(source[key]);\n });\n return output;\n}\n\n/**\n * Merge objects deeply.\n * It will shallow copy React elements.\n *\n * If `options.clone` is set to `false` the source object will be merged directly into the target object.\n *\n * @example\n * ```ts\n * deepmerge({ a: { b: 1 }, d: 2 }, { a: { c: 2 }, d: 4 });\n * // => { a: { b: 1, c: 2 }, d: 4 }\n * ````\n *\n * @param target The target object.\n * @param source The source object.\n * @param options The merge options.\n * @param options.clone Set to `false` to merge the source object directly into the target object.\n * @returns The merged object.\n */\nexport default function deepmerge(target, source, options = {\n clone: true\n}) {\n const output = options.clone ? {\n ...target\n } : target;\n if (isPlainObject(target) && isPlainObject(source)) {\n Object.keys(source).forEach(key => {\n if (/*#__PURE__*/React.isValidElement(source[key]) || isValidElementType(source[key])) {\n output[key] = source[key];\n } else if (isPlainObject(source[key]) &&\n // Avoid prototype pollution\n Object.prototype.hasOwnProperty.call(target, key) && isPlainObject(target[key])) {\n // Since `output` is a clone of `target` and we have narrowed `target` in this block we can cast to the same type.\n output[key] = deepmerge(target[key], source[key], options);\n } else if (options.clone) {\n output[key] = isPlainObject(source[key]) ? deepClone(source[key]) : source[key];\n } else {\n output[key] = source[key];\n }\n });\n }\n return output;\n}","// Sorted ASC by size. That's important.\n// It can't be configured as it's used statically for propTypes.\nexport const breakpointKeys = ['xs', 'sm', 'md', 'lg', 'xl'];\nconst sortBreakpointsValues = values => {\n const breakpointsAsArray = Object.keys(values).map(key => ({\n key,\n val: values[key]\n })) || [];\n // Sort in ascending order\n breakpointsAsArray.sort((breakpoint1, breakpoint2) => breakpoint1.val - breakpoint2.val);\n return breakpointsAsArray.reduce((acc, obj) => {\n return {\n ...acc,\n [obj.key]: obj.val\n };\n }, {});\n};\n\n// Keep in mind that @media is inclusive by the CSS specification.\nexport default function createBreakpoints(breakpoints) {\n const {\n // The breakpoint **start** at this value.\n // For instance with the first breakpoint xs: [xs, sm).\n values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n },\n unit = 'px',\n step = 5,\n ...other\n } = breakpoints;\n const sortedValues = sortBreakpointsValues(values);\n const keys = Object.keys(sortedValues);\n function up(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (min-width:${value}${unit})`;\n }\n function down(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (max-width:${value - step / 100}${unit})`;\n }\n function between(start, end) {\n const endIndex = keys.indexOf(end);\n return `@media (min-width:${typeof values[start] === 'number' ? values[start] : start}${unit}) and ` + `(max-width:${(endIndex !== -1 && typeof values[keys[endIndex]] === 'number' ? values[keys[endIndex]] : end) - step / 100}${unit})`;\n }\n function only(key) {\n if (keys.indexOf(key) + 1 < keys.length) {\n return between(key, keys[keys.indexOf(key) + 1]);\n }\n return up(key);\n }\n function not(key) {\n // handle first and last key separately, for better readability\n const keyIndex = keys.indexOf(key);\n if (keyIndex === 0) {\n return up(keys[1]);\n }\n if (keyIndex === keys.length - 1) {\n return down(keys[keyIndex]);\n }\n return between(key, keys[keys.indexOf(key) + 1]).replace('@media', '@media not all and');\n }\n return {\n keys,\n values: sortedValues,\n up,\n down,\n between,\n only,\n not,\n unit,\n ...other\n };\n}","const shape = {\n borderRadius: 4\n};\nexport default shape;","import PropTypes from 'prop-types';\nconst responsivePropType = process.env.NODE_ENV !== 'production' ? PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.object, PropTypes.array]) : {};\nexport default responsivePropType;","import deepmerge from '@mui/utils/deepmerge';\nfunction merge(acc, item) {\n if (!item) {\n return acc;\n }\n return deepmerge(acc, item, {\n clone: false // No need to clone deep, it's way faster.\n });\n}\nexport default merge;","import PropTypes from 'prop-types';\nimport deepmerge from '@mui/utils/deepmerge';\nimport merge from \"../merge/index.js\";\nimport { isCqShorthand, getContainerQuery } from \"../cssContainerQueries/index.js\";\n\n// The breakpoint **start** at this value.\n// For instance with the first breakpoint xs: [xs, sm[.\nexport const values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n};\nconst defaultBreakpoints = {\n // Sorted ASC by size. That's important.\n // It can't be configured as it's used statically for propTypes.\n keys: ['xs', 'sm', 'md', 'lg', 'xl'],\n up: key => `@media (min-width:${values[key]}px)`\n};\nconst defaultContainerQueries = {\n containerQueries: containerName => ({\n up: key => {\n let result = typeof key === 'number' ? key : values[key] || key;\n if (typeof result === 'number') {\n result = `${result}px`;\n }\n return containerName ? `@container ${containerName} (min-width:${result})` : `@container (min-width:${result})`;\n }\n })\n};\nexport function handleBreakpoints(props, propValue, styleFromPropValue) {\n const theme = props.theme || {};\n if (Array.isArray(propValue)) {\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n return propValue.reduce((acc, item, index) => {\n acc[themeBreakpoints.up(themeBreakpoints.keys[index])] = styleFromPropValue(propValue[index]);\n return acc;\n }, {});\n }\n if (typeof propValue === 'object') {\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n return Object.keys(propValue).reduce((acc, breakpoint) => {\n if (isCqShorthand(themeBreakpoints.keys, breakpoint)) {\n const containerKey = getContainerQuery(theme.containerQueries ? theme : defaultContainerQueries, breakpoint);\n if (containerKey) {\n acc[containerKey] = styleFromPropValue(propValue[breakpoint], breakpoint);\n }\n }\n // key is breakpoint\n else if (Object.keys(themeBreakpoints.values || values).includes(breakpoint)) {\n const mediaKey = themeBreakpoints.up(breakpoint);\n acc[mediaKey] = styleFromPropValue(propValue[breakpoint], breakpoint);\n } else {\n const cssKey = breakpoint;\n acc[cssKey] = propValue[cssKey];\n }\n return acc;\n }, {});\n }\n const output = styleFromPropValue(propValue);\n return output;\n}\nfunction breakpoints(styleFunction) {\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const newStyleFunction = props => {\n const theme = props.theme || {};\n const base = styleFunction(props);\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n const extended = themeBreakpoints.keys.reduce((acc, key) => {\n if (props[key]) {\n acc = acc || {};\n acc[themeBreakpoints.up(key)] = styleFunction({\n theme,\n ...props[key]\n });\n }\n return acc;\n }, null);\n return merge(base, extended);\n };\n newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? {\n ...styleFunction.propTypes,\n xs: PropTypes.object,\n sm: PropTypes.object,\n md: PropTypes.object,\n lg: PropTypes.object,\n xl: PropTypes.object\n } : {};\n newStyleFunction.filterProps = ['xs', 'sm', 'md', 'lg', 'xl', ...styleFunction.filterProps];\n return newStyleFunction;\n}\nexport function createEmptyBreakpointObject(breakpointsInput = {}) {\n const breakpointsInOrder = breakpointsInput.keys?.reduce((acc, key) => {\n const breakpointStyleKey = breakpointsInput.up(key);\n acc[breakpointStyleKey] = {};\n return acc;\n }, {});\n return breakpointsInOrder || {};\n}\nexport function removeUnusedBreakpoints(breakpointKeys, style) {\n return breakpointKeys.reduce((acc, key) => {\n const breakpointOutput = acc[key];\n const isBreakpointUnused = !breakpointOutput || Object.keys(breakpointOutput).length === 0;\n if (isBreakpointUnused) {\n delete acc[key];\n }\n return acc;\n }, style);\n}\nexport function mergeBreakpointsInOrder(breakpointsInput, ...styles) {\n const emptyBreakpoints = createEmptyBreakpointObject(breakpointsInput);\n const mergedOutput = [emptyBreakpoints, ...styles].reduce((prev, next) => deepmerge(prev, next), {});\n return removeUnusedBreakpoints(Object.keys(emptyBreakpoints), mergedOutput);\n}\n\n// compute base for responsive values; e.g.,\n// [1,2,3] => {xs: true, sm: true, md: true}\n// {xs: 1, sm: 2, md: 3} => {xs: true, sm: true, md: true}\nexport function computeBreakpointsBase(breakpointValues, themeBreakpoints) {\n // fixed value\n if (typeof breakpointValues !== 'object') {\n return {};\n }\n const base = {};\n const breakpointsKeys = Object.keys(themeBreakpoints);\n if (Array.isArray(breakpointValues)) {\n breakpointsKeys.forEach((breakpoint, i) => {\n if (i < breakpointValues.length) {\n base[breakpoint] = true;\n }\n });\n } else {\n breakpointsKeys.forEach(breakpoint => {\n if (breakpointValues[breakpoint] != null) {\n base[breakpoint] = true;\n }\n });\n }\n return base;\n}\nexport function resolveBreakpointValues({\n values: breakpointValues,\n breakpoints: themeBreakpoints,\n base: customBase\n}) {\n const base = customBase || computeBreakpointsBase(breakpointValues, themeBreakpoints);\n const keys = Object.keys(base);\n if (keys.length === 0) {\n return breakpointValues;\n }\n let previous;\n return keys.reduce((acc, breakpoint, i) => {\n if (Array.isArray(breakpointValues)) {\n acc[breakpoint] = breakpointValues[i] != null ? breakpointValues[i] : breakpointValues[previous];\n previous = i;\n } else if (typeof breakpointValues === 'object') {\n acc[breakpoint] = breakpointValues[breakpoint] != null ? breakpointValues[breakpoint] : breakpointValues[previous];\n previous = breakpoint;\n } else {\n acc[breakpoint] = breakpointValues;\n }\n return acc;\n }, {});\n}\nexport default breakpoints;","import _formatErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n/**\n * For using in `sx` prop to sort the breakpoint from low to high.\n * Note: this function does not work and will not support multiple units.\n * e.g. input: { '@container (min-width:300px)': '1rem', '@container (min-width:40rem)': '2rem' }\n * output: { '@container (min-width:40rem)': '2rem', '@container (min-width:300px)': '1rem' } // since 40 < 300 eventhough 40rem > 300px\n */\nexport function sortContainerQueries(theme, css) {\n if (!theme.containerQueries) {\n return css;\n }\n const sorted = Object.keys(css).filter(key => key.startsWith('@container')).sort((a, b) => {\n const regex = /min-width:\\s*([0-9.]+)/;\n return +(a.match(regex)?.[1] || 0) - +(b.match(regex)?.[1] || 0);\n });\n if (!sorted.length) {\n return css;\n }\n return sorted.reduce((acc, key) => {\n const value = css[key];\n delete acc[key];\n acc[key] = value;\n return acc;\n }, {\n ...css\n });\n}\nexport function isCqShorthand(breakpointKeys, value) {\n return value === '@' || value.startsWith('@') && (breakpointKeys.some(key => value.startsWith(`@${key}`)) || !!value.match(/^@\\d/));\n}\nexport function getContainerQuery(theme, shorthand) {\n const matches = shorthand.match(/^@([^/]+)?\\/?(.+)?$/);\n if (!matches) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The provided shorthand ${`(${shorthand})`} is invalid. The format should be \\`@<breakpoint | number>\\` or \\`@<breakpoint | number>/<container>\\`.\\n` + 'For example, `@sm` or `@600` or `@40rem/sidebar`.' : _formatErrorMessage(18, `(${shorthand})`));\n }\n return null;\n }\n const [, containerQuery, containerName] = matches;\n const value = Number.isNaN(+containerQuery) ? containerQuery || 0 : +containerQuery;\n return theme.containerQueries(containerName).up(value);\n}\nexport default function cssContainerQueries(themeInput) {\n const toContainerQuery = (mediaQuery, name) => mediaQuery.replace('@media', name ? `@container ${name}` : '@container');\n function attachCq(node, name) {\n node.up = (...args) => toContainerQuery(themeInput.breakpoints.up(...args), name);\n node.down = (...args) => toContainerQuery(themeInput.breakpoints.down(...args), name);\n node.between = (...args) => toContainerQuery(themeInput.breakpoints.between(...args), name);\n node.only = (...args) => toContainerQuery(themeInput.breakpoints.only(...args), name);\n node.not = (...args) => {\n const result = toContainerQuery(themeInput.breakpoints.not(...args), name);\n if (result.includes('not all and')) {\n // `@container` does not work with `not all and`, so need to invert the logic\n return result.replace('not all and ', '').replace('min-width:', 'width<').replace('max-width:', 'width>').replace('and', 'or');\n }\n return result;\n };\n }\n const node = {};\n const containerQueries = name => {\n attachCq(node, name);\n return node;\n };\n attachCq(containerQueries);\n return {\n ...themeInput,\n containerQueries\n };\n}","import _formatErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n// It should to be noted that this function isn't equivalent to `text-transform: capitalize`.\n//\n// A strict capitalization should uppercase the first letter of each word in the sentence.\n// We only handle the first word.\nexport default function capitalize(string) {\n if (typeof string !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'MUI: `capitalize(string)` expects a string argument.' : _formatErrorMessage(7));\n }\n return string.charAt(0).toUpperCase() + string.slice(1);\n}","import capitalize from '@mui/utils/capitalize';\nimport responsivePropType from \"../responsivePropType/index.js\";\nimport { handleBreakpoints } from \"../breakpoints/index.js\";\nexport function getPath(obj, path, checkVars = true) {\n if (!path || typeof path !== 'string') {\n return null;\n }\n\n // Check if CSS variables are used\n if (obj && obj.vars && checkVars) {\n const val = `vars.${path}`.split('.').reduce((acc, item) => acc && acc[item] ? acc[item] : null, obj);\n if (val != null) {\n return val;\n }\n }\n return path.split('.').reduce((acc, item) => {\n if (acc && acc[item] != null) {\n return acc[item];\n }\n return null;\n }, obj);\n}\nexport function getStyleValue(themeMapping, transform, propValueFinal, userValue = propValueFinal) {\n let value;\n if (typeof themeMapping === 'function') {\n value = themeMapping(propValueFinal);\n } else if (Array.isArray(themeMapping)) {\n value = themeMapping[propValueFinal] || userValue;\n } else {\n value = getPath(themeMapping, propValueFinal) || userValue;\n }\n if (transform) {\n value = transform(value, userValue, themeMapping);\n }\n return value;\n}\nfunction style(options) {\n const {\n prop,\n cssProperty = options.prop,\n themeKey,\n transform\n } = options;\n\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const fn = props => {\n if (props[prop] == null) {\n return null;\n }\n const propValue = props[prop];\n const theme = props.theme;\n const themeMapping = getPath(theme, themeKey) || {};\n const styleFromPropValue = propValueFinal => {\n let value = getStyleValue(themeMapping, transform, propValueFinal);\n if (propValueFinal === value && typeof propValueFinal === 'string') {\n // Haven't found value\n value = getStyleValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n }\n if (cssProperty === false) {\n return value;\n }\n return {\n [cssProperty]: value\n };\n };\n return handleBreakpoints(props, propValue, styleFromPropValue);\n };\n fn.propTypes = process.env.NODE_ENV !== 'production' ? {\n [prop]: responsivePropType\n } : {};\n fn.filterProps = [prop];\n return fn;\n}\nexport default style;","import responsivePropType from \"../responsivePropType/index.js\";\nimport { handleBreakpoints } from \"../breakpoints/index.js\";\nimport { getPath } from \"../style/index.js\";\nimport merge from \"../merge/index.js\";\nimport memoize from \"../memoize/index.js\";\nconst properties = {\n m: 'margin',\n p: 'padding'\n};\nconst directions = {\n t: 'Top',\n r: 'Right',\n b: 'Bottom',\n l: 'Left',\n x: ['Left', 'Right'],\n y: ['Top', 'Bottom']\n};\nconst aliases = {\n marginX: 'mx',\n marginY: 'my',\n paddingX: 'px',\n paddingY: 'py'\n};\n\n// memoize() impact:\n// From 300,000 ops/sec\n// To 350,000 ops/sec\nconst getCssProperties = memoize(prop => {\n // It's not a shorthand notation.\n if (prop.length > 2) {\n if (aliases[prop]) {\n prop = aliases[prop];\n } else {\n return [prop];\n }\n }\n const [a, b] = prop.split('');\n const property = properties[a];\n const direction = directions[b] || '';\n return Array.isArray(direction) ? direction.map(dir => property + dir) : [property + direction];\n});\nexport const marginKeys = ['m', 'mt', 'mr', 'mb', 'ml', 'mx', 'my', 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'marginInline', 'marginInlineStart', 'marginInlineEnd', 'marginBlock', 'marginBlockStart', 'marginBlockEnd'];\nexport const paddingKeys = ['p', 'pt', 'pr', 'pb', 'pl', 'px', 'py', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'paddingX', 'paddingY', 'paddingInline', 'paddingInlineStart', 'paddingInlineEnd', 'paddingBlock', 'paddingBlockStart', 'paddingBlockEnd'];\nconst spacingKeys = [...marginKeys, ...paddingKeys];\nexport function createUnaryUnit(theme, themeKey, defaultValue, propName) {\n const themeSpacing = getPath(theme, themeKey, true) ?? defaultValue;\n if (typeof themeSpacing === 'number' || typeof themeSpacing === 'string') {\n return val => {\n if (typeof val === 'string') {\n return val;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (typeof val !== 'number') {\n console.error(`MUI: Expected ${propName} argument to be a number or a string, got ${val}.`);\n }\n }\n if (typeof themeSpacing === 'string') {\n if (themeSpacing.startsWith('var(') && val === 0) {\n return 0;\n }\n if (themeSpacing.startsWith('var(') && val === 1) {\n return themeSpacing;\n }\n return `calc(${val} * ${themeSpacing})`;\n }\n return themeSpacing * val;\n };\n }\n if (Array.isArray(themeSpacing)) {\n return val => {\n if (typeof val === 'string') {\n return val;\n }\n const abs = Math.abs(val);\n if (process.env.NODE_ENV !== 'production') {\n if (!Number.isInteger(abs)) {\n console.error([`MUI: The \\`theme.${themeKey}\\` array type cannot be combined with non integer values.` + `You should either use an integer value that can be used as index, or define the \\`theme.${themeKey}\\` as a number.`].join('\\n'));\n } else if (abs > themeSpacing.length - 1) {\n console.error([`MUI: The value provided (${abs}) overflows.`, `The supported values are: ${JSON.stringify(themeSpacing)}.`, `${abs} > ${themeSpacing.length - 1}, you need to add the missing values.`].join('\\n'));\n }\n }\n const transformed = themeSpacing[abs];\n if (val >= 0) {\n return transformed;\n }\n if (typeof transformed === 'number') {\n return -transformed;\n }\n if (typeof transformed === 'string' && transformed.startsWith('var(')) {\n return `calc(-1 * ${transformed})`;\n }\n return `-${transformed}`;\n };\n }\n if (typeof themeSpacing === 'function') {\n return themeSpacing;\n }\n if (process.env.NODE_ENV !== 'production') {\n console.error([`MUI: The \\`theme.${themeKey}\\` value (${themeSpacing}) is invalid.`, 'It should be a number, an array or a function.'].join('\\n'));\n }\n return () => undefined;\n}\nexport function createUnarySpacing(theme) {\n return createUnaryUnit(theme, 'spacing', 8, 'spacing');\n}\nexport function getValue(transformer, propValue) {\n if (typeof propValue === 'string' || propValue == null) {\n return propValue;\n }\n return transformer(propValue);\n}\nexport function getStyleFromPropValue(cssProperties, transformer) {\n return propValue => cssProperties.reduce((acc, cssProperty) => {\n acc[cssProperty] = getValue(transformer, propValue);\n return acc;\n }, {});\n}\nfunction resolveCssProperty(props, keys, prop, transformer) {\n // Using a hash computation over an array iteration could be faster, but with only 28 items,\n // it's doesn't worth the bundle size.\n if (!keys.includes(prop)) {\n return null;\n }\n const cssProperties = getCssProperties(prop);\n const styleFromPropValue = getStyleFromPropValue(cssProperties, transformer);\n const propValue = props[prop];\n return handleBreakpoints(props, propValue, styleFromPropValue);\n}\nfunction style(props, keys) {\n const transformer = createUnarySpacing(props.theme);\n return Object.keys(props).map(prop => resolveCssProperty(props, keys, prop, transformer)).reduce(merge, {});\n}\nexport function margin(props) {\n return style(props, marginKeys);\n}\nmargin.propTypes = process.env.NODE_ENV !== 'production' ? marginKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nmargin.filterProps = marginKeys;\nexport function padding(props) {\n return style(props, paddingKeys);\n}\npadding.propTypes = process.env.NODE_ENV !== 'production' ? paddingKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\npadding.filterProps = paddingKeys;\nfunction spacing(props) {\n return style(props, spacingKeys);\n}\nspacing.propTypes = process.env.NODE_ENV !== 'production' ? spacingKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nspacing.filterProps = spacingKeys;\nexport default spacing;","export default function memoize(fn) {\n const cache = {};\n return arg => {\n if (cache[arg] === undefined) {\n cache[arg] = fn(arg);\n }\n return cache[arg];\n };\n}","import merge from \"../merge/index.js\";\nfunction compose(...styles) {\n const handlers = styles.reduce((acc, style) => {\n style.filterProps.forEach(prop => {\n acc[prop] = style;\n });\n return acc;\n }, {});\n\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const fn = props => {\n return Object.keys(props).reduce((acc, prop) => {\n if (handlers[prop]) {\n return merge(acc, handlers[prop](props));\n }\n return acc;\n }, {});\n };\n fn.propTypes = process.env.NODE_ENV !== 'production' ? styles.reduce((acc, style) => Object.assign(acc, style.propTypes), {}) : {};\n fn.filterProps = styles.reduce((acc, style) => acc.concat(style.filterProps), []);\n return fn;\n}\nexport default compose;","import responsivePropType from \"../responsivePropType/index.js\";\nimport style from \"../style/index.js\";\nimport compose from \"../compose/index.js\";\nimport { createUnaryUnit, getValue } from \"../spacing/index.js\";\nimport { handleBreakpoints } from \"../breakpoints/index.js\";\nexport function borderTransform(value) {\n if (typeof value !== 'number') {\n return value;\n }\n return `${value}px solid`;\n}\nfunction createBorderStyle(prop, transform) {\n return style({\n prop,\n themeKey: 'borders',\n transform\n });\n}\nexport const border = createBorderStyle('border', borderTransform);\nexport const borderTop = createBorderStyle('borderTop', borderTransform);\nexport const borderRight = createBorderStyle('borderRight', borderTransform);\nexport const borderBottom = createBorderStyle('borderBottom', borderTransform);\nexport const borderLeft = createBorderStyle('borderLeft', borderTransform);\nexport const borderColor = createBorderStyle('borderColor');\nexport const borderTopColor = createBorderStyle('borderTopColor');\nexport const borderRightColor = createBorderStyle('borderRightColor');\nexport const borderBottomColor = createBorderStyle('borderBottomColor');\nexport const borderLeftColor = createBorderStyle('borderLeftColor');\nexport const outline = createBorderStyle('outline', borderTransform);\nexport const outlineColor = createBorderStyle('outlineColor');\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const borderRadius = props => {\n if (props.borderRadius !== undefined && props.borderRadius !== null) {\n const transformer = createUnaryUnit(props.theme, 'shape.borderRadius', 4, 'borderRadius');\n const styleFromPropValue = propValue => ({\n borderRadius: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.borderRadius, styleFromPropValue);\n }\n return null;\n};\nborderRadius.propTypes = process.env.NODE_ENV !== 'production' ? {\n borderRadius: responsivePropType\n} : {};\nborderRadius.filterProps = ['borderRadius'];\nconst borders = compose(border, borderTop, borderRight, borderBottom, borderLeft, borderColor, borderTopColor, borderRightColor, borderBottomColor, borderLeftColor, borderRadius, outline, outlineColor);\nexport default borders;","import style from \"../style/index.js\";\nimport compose from \"../compose/index.js\";\nimport { createUnaryUnit, getValue } from \"../spacing/index.js\";\nimport { handleBreakpoints } from \"../breakpoints/index.js\";\nimport responsivePropType from \"../responsivePropType/index.js\";\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const gap = props => {\n if (props.gap !== undefined && props.gap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'gap');\n const styleFromPropValue = propValue => ({\n gap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.gap, styleFromPropValue);\n }\n return null;\n};\ngap.propTypes = process.env.NODE_ENV !== 'production' ? {\n gap: responsivePropType\n} : {};\ngap.filterProps = ['gap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const columnGap = props => {\n if (props.columnGap !== undefined && props.columnGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'columnGap');\n const styleFromPropValue = propValue => ({\n columnGap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.columnGap, styleFromPropValue);\n }\n return null;\n};\ncolumnGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n columnGap: responsivePropType\n} : {};\ncolumnGap.filterProps = ['columnGap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const rowGap = props => {\n if (props.rowGap !== undefined && props.rowGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'rowGap');\n const styleFromPropValue = propValue => ({\n rowGap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.rowGap, styleFromPropValue);\n }\n return null;\n};\nrowGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n rowGap: responsivePropType\n} : {};\nrowGap.filterProps = ['rowGap'];\nexport const gridColumn = style({\n prop: 'gridColumn'\n});\nexport const gridRow = style({\n prop: 'gridRow'\n});\nexport const gridAutoFlow = style({\n prop: 'gridAutoFlow'\n});\nexport const gridAutoColumns = style({\n prop: 'gridAutoColumns'\n});\nexport const gridAutoRows = style({\n prop: 'gridAutoRows'\n});\nexport const gridTemplateColumns = style({\n prop: 'gridTemplateColumns'\n});\nexport const gridTemplateRows = style({\n prop: 'gridTemplateRows'\n});\nexport const gridTemplateAreas = style({\n prop: 'gridTemplateAreas'\n});\nexport const gridArea = style({\n prop: 'gridArea'\n});\nconst grid = compose(gap, columnGap, rowGap, gridColumn, gridRow, gridAutoFlow, gridAutoColumns, gridAutoRows, gridTemplateColumns, gridTemplateRows, gridTemplateAreas, gridArea);\nexport default grid;","import style from \"../style/index.js\";\nimport compose from \"../compose/index.js\";\nexport function paletteTransform(value, userValue) {\n if (userValue === 'grey') {\n return userValue;\n }\n return value;\n}\nexport const color = style({\n prop: 'color',\n themeKey: 'palette',\n transform: paletteTransform\n});\nexport const bgcolor = style({\n prop: 'bgcolor',\n cssProperty: 'backgroundColor',\n themeKey: 'palette',\n transform: paletteTransform\n});\nexport const backgroundColor = style({\n prop: 'backgroundColor',\n themeKey: 'palette',\n transform: paletteTransform\n});\nconst palette = compose(color, bgcolor, backgroundColor);\nexport default palette;","import style from \"../style/index.js\";\nimport compose from \"../compose/index.js\";\nimport { handleBreakpoints, values as breakpointsValues } from \"../breakpoints/index.js\";\nexport function sizingTransform(value) {\n return value <= 1 && value !== 0 ? `${value * 100}%` : value;\n}\nexport const width = style({\n prop: 'width',\n transform: sizingTransform\n});\nexport const maxWidth = props => {\n if (props.maxWidth !== undefined && props.maxWidth !== null) {\n const styleFromPropValue = propValue => {\n const breakpoint = props.theme?.breakpoints?.values?.[propValue] || breakpointsValues[propValue];\n if (!breakpoint) {\n return {\n maxWidth: sizingTransform(propValue)\n };\n }\n if (props.theme?.breakpoints?.unit !== 'px') {\n return {\n maxWidth: `${breakpoint}${props.theme.breakpoints.unit}`\n };\n }\n return {\n maxWidth: breakpoint\n };\n };\n return handleBreakpoints(props, props.maxWidth, styleFromPropValue);\n }\n return null;\n};\nmaxWidth.filterProps = ['maxWidth'];\nexport const minWidth = style({\n prop: 'minWidth',\n transform: sizingTransform\n});\nexport const height = style({\n prop: 'height',\n transform: sizingTransform\n});\nexport const maxHeight = style({\n prop: 'maxHeight',\n transform: sizingTransform\n});\nexport const minHeight = style({\n prop: 'minHeight',\n transform: sizingTransform\n});\nexport const sizeWidth = style({\n prop: 'size',\n cssProperty: 'width',\n transform: sizingTransform\n});\nexport const sizeHeight = style({\n prop: 'size',\n cssProperty: 'height',\n transform: sizingTransform\n});\nexport const boxSizing = style({\n prop: 'boxSizing'\n});\nconst sizing = compose(width, maxWidth, minWidth, height, maxHeight, minHeight, boxSizing);\nexport default sizing;","import { padding, margin } from \"../spacing/index.js\";\nimport { borderRadius, borderTransform } from \"../borders/index.js\";\nimport { gap, rowGap, columnGap } from \"../cssGrid/index.js\";\nimport { paletteTransform } from \"../palette/index.js\";\nimport { maxWidth, sizingTransform } from \"../sizing/index.js\";\nconst defaultSxConfig = {\n // borders\n border: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderTop: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderRight: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderBottom: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderLeft: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderColor: {\n themeKey: 'palette'\n },\n borderTopColor: {\n themeKey: 'palette'\n },\n borderRightColor: {\n themeKey: 'palette'\n },\n borderBottomColor: {\n themeKey: 'palette'\n },\n borderLeftColor: {\n themeKey: 'palette'\n },\n outline: {\n themeKey: 'borders',\n transform: borderTransform\n },\n outlineColor: {\n themeKey: 'palette'\n },\n borderRadius: {\n themeKey: 'shape.borderRadius',\n style: borderRadius\n },\n // palette\n color: {\n themeKey: 'palette',\n transform: paletteTransform\n },\n bgcolor: {\n themeKey: 'palette',\n cssProperty: 'backgroundColor',\n transform: paletteTransform\n },\n backgroundColor: {\n themeKey: 'palette',\n transform: paletteTransform\n },\n // spacing\n p: {\n style: padding\n },\n pt: {\n style: padding\n },\n pr: {\n style: padding\n },\n pb: {\n style: padding\n },\n pl: {\n style: padding\n },\n px: {\n style: padding\n },\n py: {\n style: padding\n },\n padding: {\n style: padding\n },\n paddingTop: {\n style: padding\n },\n paddingRight: {\n style: padding\n },\n paddingBottom: {\n style: padding\n },\n paddingLeft: {\n style: padding\n },\n paddingX: {\n style: padding\n },\n paddingY: {\n style: padding\n },\n paddingInline: {\n style: padding\n },\n paddingInlineStart: {\n style: padding\n },\n paddingInlineEnd: {\n style: padding\n },\n paddingBlock: {\n style: padding\n },\n paddingBlockStart: {\n style: padding\n },\n paddingBlockEnd: {\n style: padding\n },\n m: {\n style: margin\n },\n mt: {\n style: margin\n },\n mr: {\n style: margin\n },\n mb: {\n style: margin\n },\n ml: {\n style: margin\n },\n mx: {\n style: margin\n },\n my: {\n style: margin\n },\n margin: {\n style: margin\n },\n marginTop: {\n style: margin\n },\n marginRight: {\n style: margin\n },\n marginBottom: {\n style: margin\n },\n marginLeft: {\n style: margin\n },\n marginX: {\n style: margin\n },\n marginY: {\n style: margin\n },\n marginInline: {\n style: margin\n },\n marginInlineStart: {\n style: margin\n },\n marginInlineEnd: {\n style: margin\n },\n marginBlock: {\n style: margin\n },\n marginBlockStart: {\n style: margin\n },\n marginBlockEnd: {\n style: margin\n },\n // display\n displayPrint: {\n cssProperty: false,\n transform: value => ({\n '@media print': {\n display: value\n }\n })\n },\n display: {},\n overflow: {},\n textOverflow: {},\n visibility: {},\n whiteSpace: {},\n // flexbox\n flexBasis: {},\n flexDirection: {},\n flexWrap: {},\n justifyContent: {},\n alignItems: {},\n alignContent: {},\n order: {},\n flex: {},\n flexGrow: {},\n flexShrink: {},\n alignSelf: {},\n justifyItems: {},\n justifySelf: {},\n // grid\n gap: {\n style: gap\n },\n rowGap: {\n style: rowGap\n },\n columnGap: {\n style: columnGap\n },\n gridColumn: {},\n gridRow: {},\n gridAutoFlow: {},\n gridAutoColumns: {},\n gridAutoRows: {},\n gridTemplateColumns: {},\n gridTemplateRows: {},\n gridTemplateAreas: {},\n gridArea: {},\n // positions\n position: {},\n zIndex: {\n themeKey: 'zIndex'\n },\n top: {},\n right: {},\n bottom: {},\n left: {},\n // shadows\n boxShadow: {\n themeKey: 'shadows'\n },\n // sizing\n width: {\n transform: sizingTransform\n },\n maxWidth: {\n style: maxWidth\n },\n minWidth: {\n transform: sizingTransform\n },\n height: {\n transform: sizingTransform\n },\n maxHeight: {\n transform: sizingTransform\n },\n minHeight: {\n transform: sizingTransform\n },\n boxSizing: {},\n // typography\n font: {\n themeKey: 'font'\n },\n fontFamily: {\n themeKey: 'typography'\n },\n fontSize: {\n themeKey: 'typography'\n },\n fontStyle: {\n themeKey: 'typography'\n },\n fontWeight: {\n themeKey: 'typography'\n },\n letterSpacing: {},\n textTransform: {},\n lineHeight: {},\n textAlign: {},\n typography: {\n cssProperty: false,\n themeKey: 'typography'\n }\n};\nexport default defaultSxConfig;","import capitalize from '@mui/utils/capitalize';\nimport merge from \"../merge/index.js\";\nimport { getPath, getStyleValue as getValue } from \"../style/index.js\";\nimport { handleBreakpoints, createEmptyBreakpointObject, removeUnusedBreakpoints } from \"../breakpoints/index.js\";\nimport { sortContainerQueries } from \"../cssContainerQueries/index.js\";\nimport defaultSxConfig from \"./defaultSxConfig.js\";\nfunction objectsHaveSameKeys(...objects) {\n const allKeys = objects.reduce((keys, object) => keys.concat(Object.keys(object)), []);\n const union = new Set(allKeys);\n return objects.every(object => union.size === Object.keys(object).length);\n}\nfunction callIfFn(maybeFn, arg) {\n return typeof maybeFn === 'function' ? maybeFn(arg) : maybeFn;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function unstable_createStyleFunctionSx() {\n function getThemeValue(prop, val, theme, config) {\n const props = {\n [prop]: val,\n theme\n };\n const options = config[prop];\n if (!options) {\n return {\n [prop]: val\n };\n }\n const {\n cssProperty = prop,\n themeKey,\n transform,\n style\n } = options;\n if (val == null) {\n return null;\n }\n\n // TODO v6: remove, see https://github.com/mui/material-ui/pull/38123\n if (themeKey === 'typography' && val === 'inherit') {\n return {\n [prop]: val\n };\n }\n const themeMapping = getPath(theme, themeKey) || {};\n if (style) {\n return style(props);\n }\n const styleFromPropValue = propValueFinal => {\n let value = getValue(themeMapping, transform, propValueFinal);\n if (propValueFinal === value && typeof propValueFinal === 'string') {\n // Haven't found value\n value = getValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n }\n if (cssProperty === false) {\n return value;\n }\n return {\n [cssProperty]: value\n };\n };\n return handleBreakpoints(props, val, styleFromPropValue);\n }\n function styleFunctionSx(props) {\n const {\n sx,\n theme = {}\n } = props || {};\n if (!sx) {\n return null; // Emotion & styled-components will neglect null\n }\n const config = theme.unstable_sxConfig ?? defaultSxConfig;\n\n /*\n * Receive `sxInput` as object or callback\n * and then recursively check keys & values to create media query object styles.\n * (the result will be used in `styled`)\n */\n function traverse(sxInput) {\n let sxObject = sxInput;\n if (typeof sxInput === 'function') {\n sxObject = sxInput(theme);\n } else if (typeof sxInput !== 'object') {\n // value\n return sxInput;\n }\n if (!sxObject) {\n return null;\n }\n const emptyBreakpoints = createEmptyBreakpointObject(theme.breakpoints);\n const breakpointsKeys = Object.keys(emptyBreakpoints);\n let css = emptyBreakpoints;\n Object.keys(sxObject).forEach(styleKey => {\n const value = callIfFn(sxObject[styleKey], theme);\n if (value !== null && value !== undefined) {\n if (typeof value === 'object') {\n if (config[styleKey]) {\n css = merge(css, getThemeValue(styleKey, value, theme, config));\n } else {\n const breakpointsValues = handleBreakpoints({\n theme\n }, value, x => ({\n [styleKey]: x\n }));\n if (objectsHaveSameKeys(breakpointsValues, value)) {\n css[styleKey] = styleFunctionSx({\n sx: value,\n theme\n });\n } else {\n css = merge(css, breakpointsValues);\n }\n }\n } else {\n css = merge(css, getThemeValue(styleKey, value, theme, config));\n }\n }\n });\n return sortContainerQueries(theme, removeUnusedBreakpoints(breakpointsKeys, css));\n }\n return Array.isArray(sx) ? sx.map(traverse) : traverse(sx);\n }\n return styleFunctionSx;\n}\nconst styleFunctionSx = unstable_createStyleFunctionSx();\nstyleFunctionSx.filterProps = ['sx'];\nexport default styleFunctionSx;","/**\n * A universal utility to style components with multiple color modes. Always use it from the theme object.\n * It works with:\n * - [Basic theme](https://mui.com/material-ui/customization/dark-mode/)\n * - [CSS theme variables](https://mui.com/material-ui/customization/css-theme-variables/overview/)\n * - Zero-runtime engine\n *\n * Tips: Use an array over object spread and place `theme.applyStyles()` last.\n *\n * With the styled function:\n * ✅ [{ background: '#e5e5e5' }, theme.applyStyles('dark', { background: '#1c1c1c' })]\n * 🚫 { background: '#e5e5e5', ...theme.applyStyles('dark', { background: '#1c1c1c' })}\n *\n * With the sx prop:\n * ✅ [{ background: '#e5e5e5' }, theme => theme.applyStyles('dark', { background: '#1c1c1c' })]\n * 🚫 { background: '#e5e5e5', ...theme => theme.applyStyles('dark', { background: '#1c1c1c' })}\n *\n * @example\n * 1. using with `styled`:\n * ```jsx\n * const Component = styled('div')(({ theme }) => [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ]);\n * ```\n *\n * @example\n * 2. using with `sx` prop:\n * ```jsx\n * <Box sx={[\n * { background: '#e5e5e5' },\n * theme => theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ]}\n * />\n * ```\n *\n * @example\n * 3. theming a component:\n * ```jsx\n * extendTheme({\n * components: {\n * MuiButton: {\n * styleOverrides: {\n * root: ({ theme }) => [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ],\n * },\n * }\n * }\n * })\n *```\n */\nexport default function applyStyles(key, styles) {\n // @ts-expect-error this is 'any' type\n const theme = this;\n if (theme.vars) {\n if (!theme.colorSchemes?.[key] || typeof theme.getColorSchemeSelector !== 'function') {\n return {};\n }\n // If CssVarsProvider is used as a provider, returns '*:where({selector}) &'\n let selector = theme.getColorSchemeSelector(key);\n if (selector === '&') {\n return styles;\n }\n if (selector.includes('data-') || selector.includes('.')) {\n // '*' is required as a workaround for Emotion issue (https://github.com/emotion-js/emotion/issues/2836)\n selector = `*:where(${selector.replace(/\\s*&$/, '')}) &`;\n }\n return {\n [selector]: styles\n };\n }\n if (theme.palette.mode === key) {\n return styles;\n }\n return {};\n}","'use client';\n\nimport * as React from 'react';\nimport { ThemeContext } from '@mui/styled-engine';\nfunction isObjectEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\nfunction useTheme(defaultTheme = null) {\n const contextTheme = React.useContext(ThemeContext);\n return !contextTheme || isObjectEmpty(contextTheme) ? defaultTheme : contextTheme;\n}\nexport default useTheme;","'use client';\n\nimport createTheme from \"../createTheme/index.js\";\nimport useThemeWithoutDefault from \"../useThemeWithoutDefault/index.js\";\nexport const systemDefaultTheme = createTheme();\nfunction useTheme(defaultTheme = systemDefaultTheme) {\n return useThemeWithoutDefault(defaultTheme);\n}\nexport default useTheme;","import deepmerge from '@mui/utils/deepmerge';\nimport createBreakpoints from \"../createBreakpoints/createBreakpoints.js\";\nimport cssContainerQueries from \"../cssContainerQueries/index.js\";\nimport shape from \"./shape.js\";\nimport createSpacing from \"./createSpacing.js\";\nimport styleFunctionSx from \"../styleFunctionSx/styleFunctionSx.js\";\nimport defaultSxConfig from \"../styleFunctionSx/defaultSxConfig.js\";\nimport applyStyles from \"./applyStyles.js\";\nfunction createTheme(options = {}, ...args) {\n const {\n breakpoints: breakpointsInput = {},\n palette: paletteInput = {},\n spacing: spacingInput,\n shape: shapeInput = {},\n ...other\n } = options;\n const breakpoints = createBreakpoints(breakpointsInput);\n const spacing = createSpacing(spacingInput);\n let muiTheme = deepmerge({\n breakpoints,\n direction: 'ltr',\n components: {},\n // Inject component definitions.\n palette: {\n mode: 'light',\n ...paletteInput\n },\n spacing,\n shape: {\n ...shape,\n ...shapeInput\n }\n }, other);\n muiTheme = cssContainerQueries(muiTheme);\n muiTheme.applyStyles = applyStyles;\n muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n muiTheme.unstable_sxConfig = {\n ...defaultSxConfig,\n ...other?.unstable_sxConfig\n };\n muiTheme.unstable_sx = function sx(props) {\n return styleFunctionSx({\n sx: props,\n theme: this\n });\n };\n return muiTheme;\n}\nexport default createTheme;","import { createUnarySpacing } from \"../spacing/index.js\";\n\n// The different signatures imply different meaning for their arguments that can't be expressed structurally.\n// We express the difference with variable names.\n\nexport default function createSpacing(spacingInput = 8,\n// Material Design layouts are visually balanced. Most measurements align to an 8dp grid, which aligns both spacing and the overall layout.\n// Smaller components, such as icons, can align to a 4dp grid.\n// https://m2.material.io/design/layout/understanding-layout.html\ntransform = createUnarySpacing({\n spacing: spacingInput\n})) {\n // Already transformed.\n if (spacingInput.mui) {\n return spacingInput;\n }\n const spacing = (...argsInput) => {\n if (process.env.NODE_ENV !== 'production') {\n if (!(argsInput.length <= 4)) {\n console.error(`MUI: Too many arguments provided, expected between 0 and 4, got ${argsInput.length}`);\n }\n }\n const args = argsInput.length === 0 ? [1] : argsInput;\n return args.map(argument => {\n const output = transform(argument);\n return typeof output === 'number' ? `${output}px` : output;\n }).join(' ');\n };\n spacing.mui = true;\n return spacing;\n}","import { isPlainObject } from '@mui/utils/deepmerge';\nimport defaultSxConfig from \"./defaultSxConfig.js\";\nconst splitProps = props => {\n const result = {\n systemProps: {},\n otherProps: {}\n };\n const config = props?.theme?.unstable_sxConfig ?? defaultSxConfig;\n Object.keys(props).forEach(prop => {\n if (config[prop]) {\n result.systemProps[prop] = props[prop];\n } else {\n result.otherProps[prop] = props[prop];\n }\n });\n return result;\n};\nexport default function extendSxProp(props) {\n const {\n sx: inSx,\n ...other\n } = props;\n const {\n systemProps,\n otherProps\n } = splitProps(other);\n let finalSx;\n if (Array.isArray(inSx)) {\n finalSx = [systemProps, ...inSx];\n } else if (typeof inSx === 'function') {\n finalSx = (...args) => {\n const result = inSx(...args);\n if (!isPlainObject(result)) {\n return systemProps;\n }\n return {\n ...systemProps,\n ...result\n };\n };\n } else {\n finalSx = {\n ...systemProps,\n ...inSx\n };\n }\n return {\n ...otherProps,\n sx: finalSx\n };\n}","const defaultGenerator = componentName => componentName;\nconst createClassNameGenerator = () => {\n let generate = defaultGenerator;\n return {\n configure(generator) {\n generate = generator;\n },\n generate(componentName) {\n return generate(componentName);\n },\n reset() {\n generate = defaultGenerator;\n }\n };\n};\nconst ClassNameGenerator = createClassNameGenerator();\nexport default ClassNameGenerator;","import ClassNameGenerator from \"../ClassNameGenerator/index.js\";\nexport const globalStateClasses = {\n active: 'active',\n checked: 'checked',\n completed: 'completed',\n disabled: 'disabled',\n error: 'error',\n expanded: 'expanded',\n focused: 'focused',\n focusVisible: 'focusVisible',\n open: 'open',\n readOnly: 'readOnly',\n required: 'required',\n selected: 'selected'\n};\nexport default function generateUtilityClass(componentName, slot, globalStatePrefix = 'Mui') {\n const globalStateClass = globalStateClasses[slot];\n return globalStateClass ? `${globalStatePrefix}-${globalStateClass}` : `${ClassNameGenerator.generate(componentName)}-${slot}`;\n}\nexport function isGlobalState(slot) {\n return globalStateClasses[slot] !== undefined;\n}","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nconst boxClasses = generateUtilityClasses('MuiBox', ['root']);\nexport default boxClasses;","'use client';\n\nimport PropTypes from 'prop-types';\nimport ClassNameGenerator from '@mui/utils/ClassNameGenerator';\nimport createBox from \"../createBox/index.js\";\nimport boxClasses from \"./boxClasses.js\";\nconst Box = createBox({\n defaultClassName: boxClasses.root,\n generateClassName: ClassNameGenerator.generate\n});\nprocess.env.NODE_ENV !== \"production\" ? Box.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * @ignore\n */\n children: PropTypes.node,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Box;","'use client';\n\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport styled from '@mui/styled-engine';\nimport styleFunctionSx, { extendSxProp } from \"../styleFunctionSx/index.js\";\nimport useTheme from \"../useTheme/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function createBox(options = {}) {\n const {\n themeId,\n defaultTheme,\n defaultClassName = 'MuiBox-root',\n generateClassName\n } = options;\n const BoxRoot = styled('div', {\n shouldForwardProp: prop => prop !== 'theme' && prop !== 'sx' && prop !== 'as'\n })(styleFunctionSx);\n const Box = /*#__PURE__*/React.forwardRef(function Box(inProps, ref) {\n const theme = useTheme(defaultTheme);\n const {\n className,\n component = 'div',\n ...other\n } = extendSxProp(inProps);\n return /*#__PURE__*/_jsx(BoxRoot, {\n as: component,\n ref: ref,\n className: clsx(className, generateClassName ? generateClassName(defaultClassName) : defaultClassName),\n theme: themeId ? theme[themeId] || theme : theme,\n ...other\n });\n });\n return Box;\n}","/**\n * @mui/styled-engine v7.1.0\n *\n * @license MIT\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use client';\n\n/* eslint-disable no-underscore-dangle */\nimport emStyled from '@emotion/styled';\nimport { serializeStyles as emSerializeStyles } from '@emotion/serialize';\nexport default function styled(tag, options) {\n const stylesFactory = emStyled(tag, options);\n if (process.env.NODE_ENV !== 'production') {\n return (...styles) => {\n const component = typeof tag === 'string' ? `\"${tag}\"` : 'component';\n if (styles.length === 0) {\n console.error([`MUI: Seems like you called \\`styled(${component})()\\` without a \\`style\\` argument.`, 'You must provide a `styles` argument: `styled(\"div\")(styleYouForgotToPass)`.'].join('\\n'));\n } else if (styles.some(style => style === undefined)) {\n console.error(`MUI: the styled(${component})(...args) API requires all its args to be defined.`);\n }\n return stylesFactory(...styles);\n };\n }\n return stylesFactory;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function internal_mutateStyles(tag, processor) {\n // Emotion attaches all the styles as `__emotion_styles`.\n // Ref: https://github.com/emotion-js/emotion/blob/16d971d0da229596d6bcc39d282ba9753c9ee7cf/packages/styled/src/base.js#L186\n if (Array.isArray(tag.__emotion_styles)) {\n tag.__emotion_styles = processor(tag.__emotion_styles);\n }\n}\n\n// Emotion only accepts an array, but we want to avoid allocations\nconst wrapper = [];\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function internal_serializeStyles(styles) {\n wrapper[0] = styles;\n return emSerializeStyles(wrapper);\n}\nexport { ThemeContext, keyframes, css } from '@emotion/react';\nexport { default as StyledEngineProvider } from \"./StyledEngineProvider/index.js\";\nexport { default as GlobalStyles } from \"./GlobalStyles/index.js\";","import generateUtilityClass from \"../generateUtilityClass/index.js\";\nexport default function generateUtilityClasses(componentName, slots, globalStatePrefix = 'Mui') {\n const result = {};\n slots.forEach(slot => {\n result[slot] = generateUtilityClass(componentName, slot, globalStatePrefix);\n });\n return result;\n}","import { TextField, TextFieldProps } from \"@mui/material\";\r\n\r\nconst TemplateTextField: React.FC<Omit<TextFieldProps, \"outlined\">> = (\r\n props\r\n) => {\r\n return <TextField {...props} slotProps={{ inputLabel: { shrink: true } }} />;\r\n};\r\n\r\nexport default TemplateTextField;\r\n","import { Grid2 } from \"@mui/material\";\r\nimport TemplateTextField from \"./FormFields/TemplateTextField\";\r\nimport Datefield from \"./FormFields/Datefield\";\r\nimport DatetimeField from \"./FormFields/DatetimeField\";\r\nimport ComboBox from \"./FormFields/ComboBox\";\r\nimport CheckBox from \"./FormFields/CheckBox\";\r\nimport { DATE_FORMAT, DATE_TIME_FORMAT } from \"../../../../util/constants\";\r\nimport { isNumeric } from \"../../../../util/AppUtils\";\r\nimport { FormElementFieldProps } from \"../DataEntryTypes\";\r\n\r\nconst FormElementField: React.FC<FormElementFieldProps> = (\r\n element: FormElementFieldProps\r\n) => {\r\n if (element?.fieldInfo) {\r\n const props = element.fieldInfo;\r\n const formManager = element?.formManager || null;\r\n const formActions = element?.formActions || null;\r\n const formValues = element?.formValues || null;\r\n const fieldName: any = element?.fieldInfo?.fieldName || null;\r\n const fieldType = element?.fieldInfo?.fieldType || null;\r\n if (!(props && formManager && formValues && fieldName && fieldType)) {\r\n return <></>;\r\n }\r\n return (props?.hidden === undefined || !props?.hidden) &&\r\n !element.hiddenFields.includes(fieldName) ? (\r\n <Grid2\r\n size={\r\n props?.formProps?.fieldSize || {\r\n lg: 12,\r\n md: 12,\r\n sm: 12,\r\n }\r\n }\r\n sx={{\r\n padding: 1,\r\n width: \"100%\",\r\n }}\r\n >\r\n {fieldType === \"text\" || fieldType === \"number\" ? (\r\n <TemplateTextField\r\n fullWidth\r\n type={fieldType}\r\n disabled={\r\n props?.disabled || element.disabledFields.includes(fieldName)\r\n ? true\r\n : false\r\n }\r\n hidden={props?.hidden || false}\r\n label={props?.fieldLabel}\r\n value={formValues[fieldName]}\r\n onChange={(event) => {\r\n let newValue = null;\r\n if (event.target.value != \"\") {\r\n if (fieldType === \"number\" && isNumeric(event.target.value)) {\r\n newValue = Number(event.target.value);\r\n } else {\r\n newValue = event.target.value;\r\n }\r\n }\r\n formManager.setValue(fieldName, newValue);\r\n if (props?.formProps?.onValueChangeCallBack) {\r\n props?.formProps?.onValueChangeCallBack(\r\n newValue,\r\n formManager,\r\n formActions\r\n );\r\n }\r\n }}\r\n sx={props?.formProps?.style}\r\n error={formManager.formState.errors[fieldName] != undefined}\r\n helperText={formManager?.formState?.errors[\r\n fieldName\r\n ]?.message?.toString()}\r\n />\r\n ) : props?.fieldType === \"date\" ? (\r\n <Datefield\r\n format={props?.dateFormat || DATE_FORMAT}\r\n sx={props?.formProps?.style || { width: \"100%\" }}\r\n disabled={\r\n props?.disabled || element.disabledFields.includes(fieldName)\r\n ? true\r\n : false\r\n }\r\n label={props?.fieldLabel}\r\n onChangeCallBack={(v: any) => {\r\n formManager.setValue(fieldName, v);\r\n if (props?.formProps?.onValueChangeCallBack) {\r\n props?.formProps?.onValueChangeCallBack(\r\n v,\r\n formManager,\r\n formActions\r\n );\r\n }\r\n }}\r\n value={formValues[fieldName]}\r\n error={formManager.formState.errors[fieldName] != undefined}\r\n errorMessage={formManager?.formState?.errors[\r\n fieldName\r\n ]?.message?.toString()}\r\n />\r\n ) : props?.fieldType === \"datetime\" ? (\r\n <DatetimeField\r\n format={props?.dateFormat || DATE_TIME_FORMAT}\r\n sx={props?.formProps?.style || { width: \"100%\" }}\r\n disabled={\r\n props?.disabled || element.disabledFields.includes(fieldName)\r\n ? true\r\n : false\r\n }\r\n label={props?.fieldLabel}\r\n onChangeCallBack={(v: any) => {\r\n formManager.setValue(fieldName, v);\r\n if (props?.formProps?.onValueChangeCallBack) {\r\n props?.formProps?.onValueChangeCallBack(\r\n v,\r\n formManager,\r\n formActions\r\n );\r\n }\r\n }}\r\n value={formValues[fieldName]}\r\n error={formManager.formState.errors[fieldName] != undefined}\r\n errorMessage={formManager?.formState?.errors[\r\n fieldName\r\n ]?.message?.toString()}\r\n />\r\n ) : props?.fieldType === \"checkbox\" ? (\r\n <CheckBox\r\n label={props?.fieldLabel}\r\n onChangeCallBack={(v: any) => {\r\n formManager.setValue(fieldName, v);\r\n if (props?.formProps?.onValueChangeCallBack) {\r\n props?.formProps?.onValueChangeCallBack(\r\n v,\r\n formManager,\r\n formActions\r\n );\r\n }\r\n }}\r\n value={formValues[fieldName]}\r\n checkedValue={props?.checkedValue || \"true\"}\r\n unCheckedValue={props?.unCheckedValue || \"false\"}\r\n disabled={\r\n props?.disabled || element.disabledFields.includes(fieldName)\r\n ? true\r\n : false\r\n }\r\n sx={props?.formProps?.style}\r\n />\r\n ) : props?.fieldType === \"combobox\" ? (\r\n <ComboBox\r\n sx={props?.formProps?.style || { width: \"100%\" }}\r\n label={props?.fieldLabel}\r\n disabled={\r\n props?.disabled || element.disabledFields.includes(fieldName)\r\n ? true\r\n : false\r\n }\r\n onChangeCallBack={(v: any, selectedRecord: any) => {\r\n let newValue = null;\r\n if (v) {\r\n newValue = v + \"\";\r\n }\r\n formManager.setValue(fieldName, newValue);\r\n if (props?.formProps?.onValueChangeCallBack) {\r\n props?.formProps?.onValueChangeCallBack(\r\n newValue,\r\n formManager,\r\n formActions,\r\n selectedRecord\r\n );\r\n }\r\n }}\r\n options={props?.options || []}\r\n displayField={props?.optionDisplayField || \"\"}\r\n valueField={props?.optionValueField || \"\"}\r\n value={formValues[fieldName]}\r\n errorMessage={formManager?.formState?.errors[\r\n fieldName\r\n ]?.message?.toString()}\r\n />\r\n ) : (\r\n <>Unknown field type</>\r\n )}\r\n </Grid2>\r\n ) : (\r\n <></>\r\n );\r\n } else {\r\n return <></>;\r\n }\r\n};\r\n\r\nexport default FormElementField;\r\n","import { Button } from \"@mui/material\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { RecordAction } from \"../DataEntryTypes\";\r\nimport useSession from \"../../../../hooks/UseSession\";\r\nimport { useConfirmationWindow } from \"../../../../hooks/UseConfirmationWindow\";\r\n\r\nconst FormAction: React.FC<RecordAction> = (action: RecordAction) => {\r\n const session = useSession();\r\n const { ConfirmationWindow, setOpen: setConfirmationWindowState } =\r\n useConfirmationWindow({\r\n body: action?.confirmationMessage || \"\",\r\n title: \"Confirmation\",\r\n onConfirmationCallBk: () => {\r\n action?.actionFn(action?.record);\r\n },\r\n });\r\n if (\r\n action?.authority === undefined ||\r\n action?.authority === null ||\r\n session.isUserAuthorized(action.authority)\r\n ) {\r\n return (\r\n <>\r\n <ConfirmationWindow />\r\n <Button\r\n variant={action?.formActionProps?.actionButtonVariant}\r\n color={action?.formActionProps?.actionButtonColor}\r\n onClick={() => {\r\n if (action?.actionFn) {\r\n if (action?.preActionValidation) {\r\n if (!action.preActionValidation(action.record)) {\r\n return;\r\n }\r\n }\r\n if (action?.isConfirmationRequired === true) {\r\n setConfirmationWindowState(true);\r\n } else {\r\n action?.actionFn(action.record);\r\n }\r\n }\r\n }}\r\n >\r\n {action?.icon ? (\r\n <FontAwesomeIcon\r\n icon={action.icon}\r\n style={{ marginRight: 5, marginLeft: 5 }}\r\n />\r\n ) : (\r\n <></>\r\n )}\r\n <div>{action?.label}</div>\r\n </Button>\r\n </>\r\n );\r\n } else {\r\n return <></>;\r\n }\r\n};\r\n\r\nexport default FormAction;\r\n","import { Grid2 } from \"@mui/material\";\r\nimport FormElementField from \"./FormElementField\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport FormAction from \"./FormAction\";\r\nimport {\r\n FormElementGroupProps,\r\n FormElementProps,\r\n RecordAction,\r\n} from \"../DataEntryTypes\";\r\n\r\nconst FormElementGroup: React.FC<FormElementGroupProps> = (\r\n props: FormElementGroupProps\r\n) => {\r\n return (\r\n <>\r\n <Grid2 container sx={props?.style} alignItems=\"flex-start\">\r\n {props?.label ? (\r\n <Grid2\r\n size={12}\r\n sx={{ padding: 1, fontWeight: \"bold\", display: \"flex\" }}\r\n >\r\n {props?.icon ? (\r\n <>\r\n <FontAwesomeIcon\r\n icon={props.icon}\r\n style={{ marginRight: 5, marginLeft: 5 }}\r\n />\r\n <div>{props.label}</div>\r\n </>\r\n ) : (\r\n <>{props.label}</>\r\n )}\r\n </Grid2>\r\n ) : (\r\n <></>\r\n )}\r\n {props?.elements\r\n ? props.elements.map((element: FormElementProps) => {\r\n if (element.type === \"group\") {\r\n return (\r\n <FormElementGroup\r\n {...element.props}\r\n formManager={props.formManager}\r\n formValues={props.formValues}\r\n formActions={props.formActions}\r\n hiddenFields={props.hiddenFields}\r\n disabledFields={props.disabledFields}\r\n />\r\n );\r\n } else if (element.type === \"field\" && element.mode === \"props\") {\r\n return (\r\n <FormElementField\r\n fieldInfo={element.props}\r\n formManager={props.formManager}\r\n formValues={props.formValues}\r\n formActions={props.formActions}\r\n hiddenFields={props.hiddenFields}\r\n disabledFields={props.disabledFields}\r\n />\r\n );\r\n } else if (element.type === \"field\" && element.mode === \"node\") {\r\n return (\r\n <Grid2\r\n size={\r\n element?.props?.formProps?.fieldSize || {\r\n lg: 3,\r\n md: 6,\r\n sm: 12,\r\n }\r\n }\r\n sx={{ padding: 1, width: \"100%\" }}\r\n >\r\n <element.node\r\n formManager={props.formManager}\r\n formValues={props.formValues}\r\n formActions={props.formActions}\r\n />\r\n </Grid2>\r\n );\r\n }\r\n })\r\n : null}\r\n\r\n {props?.actions ? (\r\n <Grid2 size={{ sm: 12 }} sx={{ padding: 1 }}>\r\n {props.actions.map((action: RecordAction) => {\r\n return <FormAction {...action} record={props.formValues} />;\r\n })}\r\n </Grid2>\r\n ) : (\r\n <></>\r\n )}\r\n </Grid2>\r\n </>\r\n );\r\n};\r\n\r\nexport default FormElementGroup;\r\n","import { Box } from \"@mui/system\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport * as z from \"zod\";\r\nimport { useForm } from \"react-hook-form\";\r\nimport { zodResolver } from \"@hookform/resolvers/zod\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport { Button, Grid2 } from \"@mui/material\";\r\nimport { toast } from \"react-toastify\";\r\nimport FormElementGroup from \"./FormElementGroup\";\r\nimport FormElementField from \"./FormElementField\";\r\nimport FormAction from \"./FormAction\";\r\nimport { constructValidationSchema, getAllFields } from \"../DataEntryUtil\";\r\nimport {\r\n FormElementProps,\r\n RecordAction,\r\n TemplateFormProps,\r\n} from \"../DataEntryTypes\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\n\r\nconst TemplateForm: React.FC<TemplateFormProps> = (\r\n props: TemplateFormProps\r\n) => {\r\n const fields = getAllFields(props.elements);\r\n const [hiddenFields, setHiddenFields] = useState<string[]>([]);\r\n const [disabledFields, setDisabledFields] = useState<string[]>([]);\r\n const formSchema = z.object(constructValidationSchema(fields));\r\n type FormData = z.infer<typeof formSchema>;\r\n const formManager = useForm<FormData>({\r\n resolver: zodResolver(formSchema),\r\n });\r\n const formValues = formManager.watch();\r\n const pathParameters = useParams();\r\n const formRouteRecordIdParamName: any = props?.formRouteRecordIdParamName;\r\n\r\n const loadRecord = async () => {\r\n let idToLoad = null;\r\n if (props?.recordIdToEdit) {\r\n idToLoad = props.recordIdToEdit;\r\n } else if (\r\n formRouteRecordIdParamName &&\r\n pathParameters[formRouteRecordIdParamName]\r\n ) {\r\n idToLoad = pathParameters[formRouteRecordIdParamName];\r\n }\r\n if (idToLoad) {\r\n const retrievedRecord: any = await props.apiActions.loadRecordById(\r\n idToLoad\r\n );\r\n if (retrievedRecord) {\r\n formManager.reset({ ...retrievedRecord });\r\n }\r\n }\r\n };\r\n\r\n const saveRecord = async (record: any) => {\r\n if (props?.preSaveValidation && !props.preSaveValidation(record)) {\r\n return;\r\n }\r\n if (record) {\r\n const savedRecord: any = await props.apiActions.saveRecord(record);\r\n if (savedRecord) {\r\n formManager.reset({ ...savedRecord });\r\n if (props?.formSavedSuccessfullyCallBk) {\r\n props.formSavedSuccessfullyCallBk(savedRecord);\r\n }\r\n if (props?.formCloseCallBk) {\r\n props.formCloseCallBk();\r\n }\r\n }\r\n }\r\n };\r\n\r\n const formActions = {\r\n setFieldValue: (fieldName: string, fieldValue: any) => {\r\n formManager.setValue(fieldName, fieldValue);\r\n },\r\n hideField: (fieldName: string) => {\r\n setHiddenFields((oldValues) => {\r\n const newValues = [...oldValues, fieldName];\r\n return newValues;\r\n });\r\n },\r\n showField: (fieldName: string) => {\r\n setHiddenFields((oldValues) => {\r\n const newValues = oldValues.filter((x) => x !== fieldName);\r\n return newValues;\r\n });\r\n },\r\n disableField: (fieldName: string) => {\r\n setDisabledFields((oldValues) => {\r\n const newValues = [...oldValues, fieldName];\r\n return newValues;\r\n });\r\n },\r\n enableField: (fieldName: string) => {\r\n setDisabledFields((oldValues) => {\r\n const newValues = oldValues.filter((x) => x !== fieldName);\r\n return newValues;\r\n });\r\n },\r\n };\r\n\r\n useEffect(() => {\r\n loadRecord();\r\n }, [props?.recordIdToEdit]);\r\n\r\n return (\r\n <>\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n flex: 1,\r\n width: \"100%\",\r\n height: \"fit-content\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n overflow: \"auto\",\r\n }}\r\n >\r\n <Grid2 sx={{ width: \"100%\" }} container>\r\n {props.elements.map((formElement: FormElementProps) => {\r\n if (formElement.type === \"group\") {\r\n return (\r\n <FormElementGroup\r\n {...formElement.props}\r\n formManager={formManager}\r\n formValues={formValues}\r\n formActions={formActions}\r\n hiddenFields={hiddenFields}\r\n disabledFields={disabledFields}\r\n />\r\n );\r\n } else if (\r\n formElement.type === \"field\" &&\r\n formElement.mode === \"props\"\r\n ) {\r\n return (\r\n <FormElementField\r\n fieldInfo={formElement.props}\r\n formManager={formManager}\r\n formValues={formValues}\r\n formActions={formActions}\r\n hiddenFields={hiddenFields}\r\n disabledFields={disabledFields}\r\n />\r\n );\r\n } else if (\r\n formElement.type === \"field\" &&\r\n formElement.mode === \"node\"\r\n ) {\r\n return (\r\n <Grid2\r\n size={\r\n formElement?.props?.formProps?.fieldSize || {\r\n lg: 3,\r\n md: 6,\r\n xs: 12,\r\n }\r\n }\r\n sx={{ padding: 1, width: \"100%\" }}\r\n >\r\n <formElement.node\r\n formManager={formManager}\r\n formValues={formValues}\r\n />\r\n </Grid2>\r\n );\r\n }\r\n })}\r\n </Grid2>\r\n </Box>\r\n\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n width: \"100%\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-start\",\r\n }}\r\n >\r\n {props?.actions ? (\r\n props.actions.map((action: RecordAction) => {\r\n if (action?.formActionProps?.enabled === true) {\r\n return <FormAction {...action} record={formValues} />;\r\n } else {\r\n return <></>;\r\n }\r\n })\r\n ) : (\r\n <></>\r\n )}\r\n <div style={{ flex: 1 }}></div>\r\n <Button\r\n variant={\r\n props?.saveButtonSpecs?.actionButtonVariant\r\n ? props.saveButtonSpecs.actionButtonVariant\r\n : \"contained\"\r\n }\r\n sx={{ m: 1 }}\r\n startIcon={\r\n props?.saveButtonSpecs?.icon ? (\r\n <FontAwesomeIcon icon={props.saveButtonSpecs.icon} />\r\n ) : null\r\n }\r\n color={\r\n props?.saveButtonSpecs?.actionButtonColor\r\n ? props.saveButtonSpecs.actionButtonColor\r\n : \"primary\"\r\n }\r\n onClick={formManager.handleSubmit(\r\n (values) => {\r\n console.log(\"form values\", values);\r\n saveRecord(values);\r\n },\r\n (errors) => {\r\n toast.error(\r\n \"Form Data is not valid, make sure you have all field with valid data\"\r\n );\r\n console.log(\"form validation error\", errors);\r\n }\r\n )}\r\n >\r\n {props?.saveButtonSpecs?.label || \"save\"}\r\n </Button>\r\n <Button\r\n variant={\r\n props?.cancelButtonSpecs?.actionButtonVariant\r\n ? props.cancelButtonSpecs.actionButtonVariant\r\n : \"contained\"\r\n }\r\n startIcon={\r\n props?.cancelButtonSpecs?.icon ? (\r\n <FontAwesomeIcon icon={props.cancelButtonSpecs.icon} />\r\n ) : null\r\n }\r\n color={\r\n props?.cancelButtonSpecs?.actionButtonColor\r\n ? props.cancelButtonSpecs.actionButtonColor\r\n : \"error\"\r\n }\r\n sx={{ m: 1 }}\r\n onClick={() => {\r\n if (props?.formCloseCallBk) {\r\n props.formCloseCallBk();\r\n }\r\n formManager.reset({});\r\n }}\r\n >\r\n {props?.cancelButtonSpecs?.label || \"cancel\"}\r\n </Button>\r\n </Box>\r\n </>\r\n );\r\n};\r\n\r\nexport default TemplateForm;\r\n","import { useEffect, useState } from \"react\";\r\nimport {\r\n AppBar,\r\n Box,\r\n IconButton,\r\n Modal,\r\n Paper,\r\n Toolbar,\r\n Typography,\r\n} from \"@mui/material\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\n\r\nexport interface TemplateWindowProp {\r\n height?: any;\r\n width?: any;\r\n minWidth?: any;\r\n minHeight?: any;\r\n windowIcon?: any;\r\n windowTitle?: string;\r\n onCloseCallBack?: any;\r\n}\r\n\r\ninterface WindowProps {\r\n children?: React.ReactNode;\r\n}\r\n\r\nexport const useWindow = (props: TemplateWindowProp) => {\r\n const [windowState, setWindowState] = useState(false);\r\n\r\n const Window: React.FC<WindowProps> = (windowProps: WindowProps) => {\r\n return (\r\n <Modal\r\n open={windowState}\r\n sx={{ zIndex: (theme) => theme.zIndex.drawer }}\r\n onClose={() => {\r\n if (!windowState && props?.onCloseCallBack) {\r\n props.onCloseCallBack();\r\n }\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n position: \"absolute\",\r\n top: \"50%\",\r\n left: \"50%\",\r\n maxHeight: \"90%\",\r\n transform: \"translate(-50%, -50%)\",\r\n height: props?.height || \"80%\",\r\n width: props?.width || \"90%\",\r\n minWidth: props.minWidth || 400,\r\n minHeight: props.minHeight || 200,\r\n overflow: \"hidden\",\r\n bgcolor: \"modalBackground.main\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-start\",\r\n }}\r\n >\r\n <AppBar position=\"static\">\r\n <Toolbar variant=\"dense\">\r\n <FontAwesomeIcon\r\n icon={props?.windowIcon || \"window-maximize\"}\r\n style={{ marginRight: 5 }}\r\n />\r\n <Typography variant=\"h6\" color=\"inherit\" component=\"div\">\r\n {props?.windowTitle || \"window\"}\r\n </Typography>\r\n <div style={{ flexGrow: 1 }}></div>\r\n <IconButton\r\n onClick={() => {\r\n setWindowState(false);\r\n if (\r\n props.onCloseCallBack != undefined &&\r\n props.onCloseCallBack != null\r\n ) {\r\n props.onCloseCallBack();\r\n }\r\n }}\r\n color=\"secondary\"\r\n >\r\n <FontAwesomeIcon icon=\"xmark-square\" />\r\n </IconButton>\r\n </Toolbar>\r\n </AppBar>\r\n <Paper\r\n sx={{\r\n // flexGrow: 1,\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n padding: 1,\r\n // justifyContent: \"center\",\r\n overflow: \"hidden\",\r\n }}\r\n >\r\n {windowProps?.children}\r\n </Paper>\r\n </Box>\r\n </Modal>\r\n );\r\n };\r\n return { windowState, setWindowState, Window };\r\n};\r\n","import {\r\n DataGridPremium,\r\n GridActionsCellItem,\r\n GridActionsCellItemProps,\r\n GridColumnOrderChangeParams,\r\n GridColumnResizeParams,\r\n GridColumnVisibilityModel,\r\n GridEventListener,\r\n GridExpandMoreIcon,\r\n GridPinnedColumnFields,\r\n GridRowGroupingModel,\r\n GridRowModes,\r\n GridRowModesModel,\r\n GridRowParams,\r\n GridRowSelectionModel,\r\n} from \"@mui/x-data-grid-premium\";\r\nimport { TemplateGridColDef, TemplateGridProps } from \"../DataEntryTypes\";\r\nimport TemplateGridTopBar from \"./TemplateGridTopBar\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { z } from \"zod\";\r\nimport {\r\n constructGridColumnsFromFields,\r\n constructValidationSchema,\r\n getAllFields,\r\n} from \"../DataEntryUtil\";\r\nimport { toast } from \"react-toastify\";\r\nimport {\r\n Accordion,\r\n AccordionDetails,\r\n AccordionSummary,\r\n Box,\r\n Divider,\r\n IconButton,\r\n Tooltip,\r\n Typography,\r\n} from \"@mui/material\";\r\nimport { capitalizeFirstLetter, isNumber } from \"../../../../util/AppUtils\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport TemplateGridRecordAction from \"./TemplateGridRecordAction\";\r\nimport TemplateForm from \"../TemplateDataForm/TemplateForm\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { RootState } from \"../../../../redux/store\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport useSession from \"../../../../hooks/UseSession\";\r\nimport { useConfirmationWindow } from \"../../../../hooks/UseConfirmationWindow\";\r\nimport { useWindow } from \"../../../../hooks/UseWindow\";\r\nlet currentNewRecordIndex = -1;\r\n\r\ninterface GridState {\r\n columnVisibilityModel?: GridColumnVisibilityModel;\r\n columnOrder?: string[];\r\n columnWidths?: { [key: string]: number };\r\n columnGroupingModel?: GridRowGroupingModel;\r\n pinnedColumns?: GridPinnedColumnFields;\r\n}\r\n\r\nconst loadGridState = (gridStateKey: string): GridState => {\r\n try {\r\n const saved = localStorage.getItem(gridStateKey);\r\n return saved ? JSON.parse(saved) : {};\r\n } catch (e) {\r\n console.error(\"Failed to load grid state\", e);\r\n return {};\r\n }\r\n};\r\n\r\nconst saveGridState = (gridStateKey: string, statePart: GridState) => {\r\n const current = loadGridState(gridStateKey);\r\n localStorage.setItem(\r\n gridStateKey,\r\n JSON.stringify({ ...current, ...statePart })\r\n );\r\n};\r\n\r\nconst PIN_FIXED_COLUMNS = [\"__check__\", \"actions\"];\r\n\r\nconst TemplateGrid: React.FC<TemplateGridProps> = (props) => {\r\n const { t } = useTranslation();\r\n const fields = getAllFields(props.formElements);\r\n const hiddenFields = [];\r\n const savedState = React.useMemo<GridState>(\r\n () => (props?.gridStateKey ? loadGridState(props.gridStateKey) : {}),\r\n []\r\n );\r\n for (const field of fields) {\r\n if (field?.gridProps?.hidden === true) {\r\n hiddenFields.push(field.fieldName);\r\n }\r\n }\r\n let initialVisibilityState: GridColumnVisibilityModel = {};\r\n if (savedState?.columnVisibilityModel) {\r\n initialVisibilityState = savedState.columnVisibilityModel;\r\n const existingFields = Object.keys(initialVisibilityState);\r\n for (const field of hiddenFields) {\r\n if (!existingFields.includes(field)) {\r\n initialVisibilityState[field] = false;\r\n }\r\n }\r\n } else {\r\n for (const field of hiddenFields) {\r\n initialVisibilityState[field] = false;\r\n }\r\n }\r\n\r\n const themeDirection = useSelector(\r\n (state: RootState) => state.AppLayout.appDirection\r\n );\r\n\r\n const clearGridState = () => {\r\n if (props?.gridStateKey) {\r\n localStorage.removeItem(props.gridStateKey);\r\n }\r\n setColumnVisibilityModel({});\r\n setColumnOrder([]);\r\n setColumnWidths({});\r\n setGridRowGroupingModel([]);\r\n setPinnedColumns({\r\n left: [...(themeDirection === \"ltr\" ? PIN_FIXED_COLUMNS : [])],\r\n right: [...(themeDirection === \"rtl\" ? PIN_FIXED_COLUMNS : [])],\r\n });\r\n };\r\n const [columnVisibilityModel, setColumnVisibilityModel] =\r\n React.useState<GridColumnVisibilityModel>(initialVisibilityState);\r\n const [columnOrder, setColumnOrder] = React.useState<string[]>(\r\n savedState.columnOrder || []\r\n );\r\n const [columnWidths, setColumnWidths] = React.useState<{\r\n [key: string]: number;\r\n }>(savedState.columnWidths || {});\r\n const [gridRowGroupingModel, setGridRowGroupingModel] =\r\n useState<GridRowGroupingModel>(savedState.columnGroupingModel || []);\r\n let newLeft = savedState?.pinnedColumns?.left || [];\r\n newLeft = newLeft.filter(\r\n (record: any) => !PIN_FIXED_COLUMNS.includes(record)\r\n );\r\n let newRight = savedState?.pinnedColumns?.right || [] || [];\r\n newRight = newRight.filter(\r\n (record: any) => !PIN_FIXED_COLUMNS.includes(record)\r\n );\r\n\r\n const [pinnedColumns, setPinnedColumns] = useState<GridPinnedColumnFields>({\r\n left: [...(themeDirection === \"ltr\" ? PIN_FIXED_COLUMNS : []), ...newLeft],\r\n right: [\r\n ...(themeDirection === \"rtl\" ? PIN_FIXED_COLUMNS : []),\r\n ...newRight,\r\n ],\r\n });\r\n\r\n const session = useSession();\r\n const navigate = useNavigate();\r\n const [recordToDelete, setRecordToDelete] = useState<any>(null);\r\n const [recordToEdit, setRecordToEdit] = useState<any>(null);\r\n const [rowModesModel, setRowModesModel] = useState<GridRowModesModel>({});\r\n\r\n const [rowSelectionModel, setRowSelectionModel] =\r\n useState<GridRowSelectionModel>({ ids: new Set(), type: \"include\" });\r\n let keyColumnName: string = \"id\";\r\n if (props?.keyColumnName) {\r\n keyColumnName = props?.keyColumnName;\r\n }\r\n const setData = props.setData;\r\n const validationSchema = z.object(constructValidationSchema(fields));\r\n const generatedColumns = constructGridColumnsFromFields(\r\n fields,\r\n props?.editMode?.editMode === \"row\" || false,\r\n t\r\n );\r\n let isEditAllowed = true;\r\n if (props?.editAction?.authority) {\r\n isEditAllowed = session.isUserAuthorized(props.editAction.authority);\r\n }\r\n let isDeleteAllowed = true;\r\n if (props?.deleteAction?.authority) {\r\n isDeleteAllowed = session.isUserAuthorized(props.deleteAction.authority);\r\n }\r\n\r\n const handleRowModesModelChange = (newModel: GridRowModesModel) => {\r\n setRowModesModel(newModel);\r\n };\r\n\r\n const handlePinnedColumnsChange = (newModel: GridPinnedColumnFields) => {\r\n let newLeft = newModel?.left || [];\r\n newLeft = newLeft.filter(\r\n (record: any) => !PIN_FIXED_COLUMNS.includes(record)\r\n );\r\n let newRight = newModel?.right || [];\r\n newRight = newRight.filter(\r\n (record: any) => !PIN_FIXED_COLUMNS.includes(record)\r\n );\r\n const newPinedColumns: GridPinnedColumnFields = {\r\n left: [\r\n ...(themeDirection === \"ltr\" ? PIN_FIXED_COLUMNS : []),\r\n ...newLeft,\r\n ],\r\n right: [\r\n ...(themeDirection === \"rtl\" ? PIN_FIXED_COLUMNS : []),\r\n ...newRight,\r\n ],\r\n };\r\n setPinnedColumns(newPinedColumns);\r\n if (props?.gridStateKey) {\r\n saveGridState(props.gridStateKey, { pinnedColumns: newPinedColumns });\r\n }\r\n };\r\n\r\n const handleDeleteRecord = async () => {\r\n let result = true;\r\n if (!(recordToDelete && recordToDelete?.isNew === true)) {\r\n result = await props.apiActions.deleteRecordById(\r\n recordToDelete[keyColumnName]\r\n );\r\n }\r\n if (result) {\r\n if (props?.deleteAction?.postActionCallBack) {\r\n await props.deleteAction.postActionCallBack(recordToDelete);\r\n }\r\n\r\n setData((oldData: any) => {\r\n const newData = oldData.filter(\r\n (record: any) =>\r\n record[keyColumnName] != recordToDelete[keyColumnName]\r\n );\r\n return newData;\r\n });\r\n }\r\n };\r\n\r\n const { ConfirmationWindow, setOpen: setConfirmationWindowOpened } =\r\n useConfirmationWindow({\r\n title: \"Confirmation\",\r\n body: \"Are you sure you want to delete this record ?\",\r\n onConfirmationCallBk: handleDeleteRecord,\r\n });\r\n\r\n let formModalHeight = undefined;\r\n let formModalWidth = undefined;\r\n let formModalMinHeight = undefined;\r\n let formModalMinWidth = undefined;\r\n let formModalIcon = undefined;\r\n let formModalTitle = undefined;\r\n\r\n if (props?.editMode?.editMode === \"modal\") {\r\n formModalHeight = props?.editMode?.specs?.modalHeight || \"fit-content\";\r\n formModalWidth = props?.editMode?.specs?.modalWidth || \"300\";\r\n formModalMinHeight = props?.editMode?.specs?.modalMinHeight;\r\n formModalMinWidth = props?.editMode?.specs?.modalMinWidth;\r\n formModalIcon = props?.editMode?.specs?.modalIcon || \"window\";\r\n formModalTitle = props?.editMode?.specs?.modalTitle || \"Record Form\";\r\n }\r\n\r\n const { Window: FormWindow, setWindowState: setFormWindowState } = useWindow({\r\n height: formModalHeight,\r\n minHeight: formModalMinHeight,\r\n minWidth: formModalMinWidth,\r\n onCloseCallBack: () => {\r\n props.apiActions.reloadData(props?.gridLoadParametersValues);\r\n },\r\n width: formModalWidth,\r\n windowIcon: formModalIcon,\r\n windowTitle: formModalTitle,\r\n });\r\n\r\n const handleCreateNewRecord = () => {\r\n if (props?.editMode?.editMode === \"form\") {\r\n navigate(props.editMode.specs.formRoute);\r\n } else if (props?.editMode?.editMode === \"modal\") {\r\n setFormWindowState(true);\r\n } else if (props?.editMode?.editMode === \"row\") {\r\n currentNewRecordIndex = currentNewRecordIndex - 1;\r\n const newRecord: any = {};\r\n newRecord[keyColumnName] = currentNewRecordIndex;\r\n newRecord.isNew = true;\r\n for (const gridColumn of generatedColumns) {\r\n if (\r\n gridColumn?.type != \"actions\" &&\r\n gridColumn?.field != keyColumnName\r\n ) {\r\n if (gridColumn?.field) {\r\n newRecord[gridColumn.field] = null;\r\n }\r\n }\r\n }\r\n setData((oldRows: any) => [newRecord, ...oldRows]);\r\n setRowModesModel((oldModel: any) => ({\r\n ...oldModel,\r\n [currentNewRecordIndex]: { mode: GridRowModes.Edit },\r\n }));\r\n }\r\n };\r\n\r\n const handleEditRecord = async (record: any) => {\r\n if (record) {\r\n setRecordToEdit(record);\r\n if (props.editMode.editMode === \"form\") {\r\n navigate(props.editMode.specs.formRoute + \"/\" + record[keyColumnName]);\r\n } else if (props.editMode.editMode === \"modal\") {\r\n setFormWindowState(true);\r\n } else if (props?.editMode?.editMode === \"row\") {\r\n const id = record[keyColumnName];\r\n setRowModesModel({\r\n ...rowModesModel,\r\n [id]: { mode: GridRowModes.Edit },\r\n });\r\n }\r\n }\r\n };\r\n\r\n const validateRecord = (record: any) => {\r\n try {\r\n validationSchema.parse(record);\r\n } catch (err) {\r\n console.log(\"validateRecord err\", err);\r\n let errorMessage: any = null;\r\n if (err instanceof z.ZodError) {\r\n errorMessage = err.errors\r\n .map(\r\n (error) => \"Error in field (\" + error.path + \") : \" + error.message\r\n )\r\n .join(\",\");\r\n } else {\r\n errorMessage = \"invalid record data\";\r\n }\r\n return errorMessage;\r\n }\r\n };\r\n\r\n const handleSaveRowClick = (record: any) => {\r\n const id = record[keyColumnName];\r\n setRowModesModel({\r\n ...rowModesModel,\r\n [id]: { mode: GridRowModes.View },\r\n });\r\n };\r\n\r\n const processRowUpdate = async (record: any) => {\r\n if (props.editMode.editMode === \"row\") {\r\n let savedRecord: any = null;\r\n const errorMessage = validateRecord(record);\r\n if (errorMessage) {\r\n const errors = errorMessage.split(\",\");\r\n toast.error(\r\n <div style={{}}>\r\n {errors.map((error: any) => (\r\n <>\r\n <div>{error}</div>\r\n <Divider />\r\n </>\r\n ))}\r\n </div>\r\n );\r\n throw new Error(errorMessage);\r\n }\r\n if (props?.editAction?.preActionValidation) {\r\n if (!props.editAction.preActionValidation(record)) {\r\n throw new Error(\"error on the configured presave validation\");\r\n }\r\n }\r\n const requestObject: any = { ...record };\r\n if (\r\n record[keyColumnName] &&\r\n isNumber(record[keyColumnName]) &&\r\n Number(record[keyColumnName]) < 0\r\n ) {\r\n requestObject[keyColumnName] = null;\r\n }\r\n savedRecord = await props.apiActions.saveRecord(requestObject);\r\n if (savedRecord == null) {\r\n throw new Error(\r\n \"Failed to process your request, contact your administrator\"\r\n );\r\n }\r\n if (props?.editAction?.postActionCallBack) {\r\n await props.editAction.postActionCallBack(record);\r\n }\r\n if (record?.isNew === true) {\r\n setData((oldData: any) => {\r\n const newData = oldData.filter(\r\n (x: any) => x[keyColumnName] !== record[keyColumnName]\r\n );\r\n return [savedRecord, ...newData];\r\n });\r\n }\r\n if (\r\n props?.editMode?.reloadAfterSave === true &&\r\n props?.apiActions?.reloadData\r\n ) {\r\n props?.apiActions?.reloadData(props?.gridLoadParametersValues);\r\n }\r\n return savedRecord;\r\n }\r\n };\r\n\r\n const handleCancelRowEditClick = (record: any) => {\r\n const id = record[keyColumnName];\r\n if (id && isNumber(id) && id < 0) {\r\n setRowModesModel({\r\n ...rowModesModel,\r\n [id]: { mode: GridRowModes.View, ignoreModifications: true },\r\n });\r\n setData((oldData: any) => {\r\n const newData = oldData.filter(\r\n (record: any) => record[keyColumnName] != id\r\n );\r\n return newData;\r\n });\r\n } else {\r\n setRowModesModel({\r\n ...rowModesModel,\r\n [id]: { mode: GridRowModes.View, ignoreModifications: true },\r\n });\r\n }\r\n };\r\n\r\n const getActionColumnActions = (params: GridRowParams<any>) => {\r\n const record: any = params.row;\r\n const actions: Array<React.ReactElement<GridActionsCellItemProps>> = [];\r\n if (props?.editMode?.editMode != \"none\") {\r\n if (\r\n props?.disableDefaultAction === undefined ||\r\n !props.disableDefaultAction\r\n ) {\r\n const isInEditMode: boolean =\r\n rowModesModel[record[keyColumnName]]?.mode === GridRowModes.Edit;\r\n if (props.editMode.editMode === \"row\" && isInEditMode) {\r\n if (isEditAllowed) {\r\n actions.push(\r\n <GridActionsCellItem\r\n icon={<FontAwesomeIcon icon=\"save\" />}\r\n label={t(\"SAVE_BTN_LABEL\")}\r\n onClick={() => {\r\n handleSaveRowClick(record);\r\n }}\r\n />\r\n );\r\n actions.push(\r\n <GridActionsCellItem\r\n icon={<FontAwesomeIcon icon=\"cancel\" />}\r\n label={t(\"CANCEL_BTN_LABEL\")}\r\n onClick={() => {\r\n handleCancelRowEditClick(record);\r\n }}\r\n color=\"inherit\"\r\n />\r\n );\r\n }\r\n } else {\r\n if (props?.editAction && props?.editAction?.isEnabled === true) {\r\n let isEditActionVisibleForRecord = true;\r\n if (props?.editAction?.isActionVisibleForRecord) {\r\n isEditActionVisibleForRecord =\r\n props?.editAction?.isActionVisibleForRecord(record);\r\n }\r\n let isActionEditDisabledForRecord = false;\r\n if (props?.editAction?.isActionDisabledForRecord) {\r\n isActionEditDisabledForRecord =\r\n props?.editAction?.isActionDisabledForRecord(record);\r\n }\r\n if (isEditAllowed && isEditActionVisibleForRecord) {\r\n actions.push(\r\n <GridActionsCellItem\r\n disabled={isActionEditDisabledForRecord}\r\n icon={\r\n <Tooltip title={t(\"EDIT_BTN_LABEL\")}>\r\n <FontAwesomeIcon\r\n icon={\"edit\"}\r\n style={{\r\n color: isActionEditDisabledForRecord\r\n ? \"gray\"\r\n : undefined,\r\n }}\r\n />\r\n </Tooltip>\r\n }\r\n showInMenu={\r\n props?.editAction?.gridActionProps?.showInMenu || false\r\n }\r\n label={t(\"EDIT_BTN_LABEL\")}\r\n className=\"textPrimary\"\r\n color=\"inherit\"\r\n onClick={() => {\r\n if (isEditAllowed && !isActionEditDisabledForRecord) {\r\n handleEditRecord(record);\r\n }\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n if (props?.deleteAction && props?.deleteAction?.isEnabled === true) {\r\n let isDeleteActionVisibleForRecord = true;\r\n if (props?.deleteAction?.isActionVisibleForRecord) {\r\n isDeleteActionVisibleForRecord =\r\n props?.deleteAction?.isActionVisibleForRecord(record);\r\n }\r\n let isDeleteActionDisabledForRecord = false;\r\n if (props?.deleteAction?.isActionDisabledForRecord) {\r\n isDeleteActionDisabledForRecord =\r\n props?.deleteAction?.isActionDisabledForRecord(record);\r\n }\r\n if (isDeleteAllowed && isDeleteActionVisibleForRecord) {\r\n actions.push(\r\n <GridActionsCellItem\r\n disabled={isDeleteActionDisabledForRecord}\r\n icon={\r\n <Tooltip title={t(\"DELETE_BTN_LABEL\")}>\r\n <FontAwesomeIcon\r\n icon={\"trash\"}\r\n style={{\r\n color: isDeleteActionDisabledForRecord\r\n ? \"gray\"\r\n : undefined,\r\n }}\r\n />\r\n </Tooltip>\r\n }\r\n showInMenu={\r\n props?.deleteAction?.gridActionProps?.showInMenu || false\r\n }\r\n label={t(\"DELETE_BTN_LABEL\")}\r\n className=\"textPrimary\"\r\n color=\"inherit\"\r\n onClick={() => {\r\n if (isDeleteAllowed && !isDeleteActionDisabledForRecord) {\r\n if (props?.deleteAction?.preActionValidation) {\r\n if (!props.deleteAction.preActionValidation(record)) {\r\n return;\r\n }\r\n }\r\n setRecordToDelete(record);\r\n setConfirmationWindowOpened(true);\r\n }\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (props?.rowActions) {\r\n for (const rowAction of props.rowActions) {\r\n if (\r\n !(\r\n rowAction?.gridActionProps?.multiRecord &&\r\n rowAction?.gridActionProps?.multiRecord === true\r\n )\r\n ) {\r\n actions.push(\r\n <TemplateGridRecordAction\r\n {...rowAction}\r\n record={record}\r\n reloadData={async () => {\r\n props.apiActions.reloadData(props?.gridLoadParametersValues);\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n }\r\n\r\n return actions;\r\n };\r\n\r\n const actionColumn: TemplateGridColDef = {\r\n type: \"actions\",\r\n field: \"actions\",\r\n headerName: \"\",\r\n headerAlign: \"center\",\r\n width:\r\n (props?.rowActions ? props.rowActions.length * 30 : 0) +\r\n (props?.editAction && props?.editAction?.isEnabled ? 30 : 0) +\r\n (props?.deleteAction && props?.deleteAction?.isEnabled ? 30 : 0),\r\n getActions: getActionColumnActions,\r\n };\r\n\r\n let structuredColumns: Array<TemplateGridColDef> = [];\r\n if (\r\n props?.disableDefaultAction === undefined ||\r\n !props.disableDefaultAction ||\r\n (props?.rowActions && props?.rowActions.length > 0)\r\n ) {\r\n structuredColumns.push(actionColumn);\r\n }\r\n\r\n structuredColumns = [...structuredColumns, ...generatedColumns];\r\n const handleRowSelection = (gridSelectionModel: GridRowSelectionModel) => {\r\n setRowSelectionModel(gridSelectionModel);\r\n };\r\n useEffect(() => {\r\n if (props?.autoLoad === undefined || props.autoLoad === true) {\r\n props.apiActions.reloadData(props?.gridLoadParametersValues);\r\n }\r\n }, []);\r\n\r\n const handleColumnVisibilityChange = (model: GridColumnVisibilityModel) => {\r\n setColumnVisibilityModel(model);\r\n if (props?.gridStateKey) {\r\n saveGridState(props.gridStateKey, { columnVisibilityModel: model });\r\n }\r\n };\r\n\r\n const handleColumnOrderChange: GridEventListener<\"columnOrderChange\"> = (\r\n params: GridColumnOrderChangeParams\r\n ) => {\r\n const { column, targetIndex } = params;\r\n setColumnOrder((prevOrder) => {\r\n const currentOrder = prevOrder.length\r\n ? [...prevOrder]\r\n : structuredColumns.map((col) => col.field);\r\n const fromIndex = currentOrder.indexOf(column.field);\r\n if (fromIndex === -1) return currentOrder;\r\n\r\n currentOrder.splice(fromIndex, 1); // remove\r\n currentOrder.splice(targetIndex, 0, column.field); // insert at new index\r\n\r\n if (props?.gridStateKey) {\r\n saveGridState(props.gridStateKey, { columnOrder: currentOrder });\r\n }\r\n\r\n return currentOrder;\r\n });\r\n };\r\n\r\n const handleRowGroupChange = (model: GridRowGroupingModel) => {\r\n setGridRowGroupingModel(model);\r\n if (props?.gridStateKey) {\r\n saveGridState(props.gridStateKey, { columnGroupingModel: model });\r\n }\r\n };\r\n\r\n const handleColumnWidthChange: GridEventListener<\"columnWidthChange\"> = (\r\n params: GridColumnResizeParams\r\n ) => {\r\n const updatedWidths = {\r\n ...columnWidths,\r\n [params.colDef.field]: params.width,\r\n };\r\n setColumnWidths(updatedWidths);\r\n if (props?.gridStateKey) {\r\n saveGridState(props.gridStateKey, { columnWidths: updatedWidths });\r\n }\r\n };\r\n\r\n const adjustedColumns: Array<TemplateGridColDef> = React.useMemo(() => {\r\n const baseCols = structuredColumns.map((col) => ({\r\n ...col,\r\n width: columnWidths[col.field] || col.width,\r\n }));\r\n\r\n // Reorder based on saved columnOrder\r\n if (columnOrder.length) {\r\n const fieldToCol = new Map(baseCols.map((col) => [col.field, col]));\r\n return columnOrder.map((field) => fieldToCol.get(field)!).filter(Boolean);\r\n }\r\n\r\n return baseCols;\r\n }, [columnOrder, columnWidths, structuredColumns]);\r\n return (\r\n <>\r\n <ConfirmationWindow />\r\n {props?.editMode?.editMode === \"modal\" ? (\r\n <FormWindow>\r\n {props?.editMode?.specs?.formComponent ? (\r\n <props.editMode.specs.formComponent\r\n recordIdToEdit={\r\n recordToEdit ? recordToEdit[keyColumnName] : undefined\r\n }\r\n formCloseCallBk={() => {\r\n setFormWindowState(false);\r\n props.apiActions.reloadData(props?.gridLoadParametersValues);\r\n }}\r\n />\r\n ) : (\r\n <TemplateForm\r\n recordIdToEdit={\r\n recordToEdit ? recordToEdit[keyColumnName] : undefined\r\n }\r\n formCloseCallBk={() => {\r\n setFormWindowState(false);\r\n props.apiActions.reloadData(props?.gridLoadParametersValues);\r\n }}\r\n elements={props.formElements}\r\n apiActions={props.apiActions}\r\n editAuthorityKey={props?.editAction?.authority}\r\n formSavedSuccessfullyCallBk={\r\n props?.editAction?.postActionCallBack\r\n }\r\n preSaveValidation={props?.editAction?.preActionValidation}\r\n actions={props?.rowActions}\r\n />\r\n )}\r\n </FormWindow>\r\n ) : (\r\n <></>\r\n )}\r\n {props?.hideInfoBar === undefined && !props?.hideInfoBar ? (\r\n <Box sx={{ display: \"flex\" }}>\r\n {props?.hideBackButton === undefined && !props?.hideBackButton ? (\r\n <IconButton\r\n onClick={() => {\r\n navigate(\"-1\", { replace: true });\r\n }}\r\n >\r\n <FontAwesomeIcon icon=\"arrow-left\" />\r\n </IconButton>\r\n ) : (\r\n <></>\r\n )}\r\n <Box\r\n sx={{\r\n flex: 1,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n {props?.girdIcon ? (\r\n <FontAwesomeIcon\r\n icon={props.girdIcon}\r\n style={{ marginRight: 5, marginLeft: 5 }}\r\n />\r\n ) : (\r\n <></>\r\n )}\r\n <Typography variant=\"h5\">\r\n {props?.gridTitle\r\n ? capitalizeFirstLetter(t(props?.gridTitle))\r\n : \"\"}\r\n </Typography>\r\n </Box>\r\n </Box>\r\n ) : (\r\n <></>\r\n )}\r\n\r\n {props?.gridLoadParameters &&\r\n props?.gridLoadParametersValues &&\r\n props?.setGridLoadParametersValues ? (\r\n <Accordion defaultExpanded>\r\n <AccordionSummary expandIcon={<GridExpandMoreIcon />}>\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n <FontAwesomeIcon\r\n style={{ marginLeft: 5, marginRight: 5 }}\r\n icon=\"search\"\r\n />\r\n <Typography component=\"span\">Filters</Typography>\r\n </Box>\r\n </AccordionSummary>\r\n <AccordionDetails>\r\n <Box>\r\n <TemplateForm\r\n saveButtonSpecs={{\r\n label: t(\"SEARCH_BTN_LABEL\"),\r\n icon: \"search\",\r\n actionButtonVariant: \"outlined\",\r\n actionButtonColor: \"success\",\r\n }}\r\n cancelButtonSpecs={{\r\n label: t(\"RESET_BTN_LABEL\"),\r\n icon: \"eraser\",\r\n actionButtonVariant: \"outlined\",\r\n actionButtonColor: \"error\",\r\n }}\r\n apiActions={{\r\n deleteRecordById: async () => {\r\n return true;\r\n },\r\n saveRecord: async (params) => {\r\n if (params != undefined) {\r\n props.setGridLoadParametersValues(params);\r\n } else {\r\n props.setGridLoadParametersValues({});\r\n }\r\n props.apiActions.reloadData(params);\r\n },\r\n reloadData: async () => {},\r\n loadRecordById: async () => {},\r\n }}\r\n elements={props.gridLoadParameters}\r\n />\r\n </Box>\r\n </AccordionDetails>\r\n </Accordion>\r\n ) : (\r\n <></>\r\n )}\r\n\r\n <DataGridPremium\r\n {...props?.muiProps}\r\n slots={{ toolbar: TemplateGridTopBar }}\r\n slotProps={{\r\n toolbar: {\r\n templateProps: {\r\n ...props,\r\n rowSelectionModel: rowSelectionModel,\r\n data: props?.data,\r\n },\r\n handleCreateNewRecord,\r\n clearGridState,\r\n } as any,\r\n }}\r\n getRowId={(record: any) => {\r\n return record[keyColumnName];\r\n }}\r\n showToolbar={true}\r\n rows={props?.data}\r\n columns={adjustedColumns}\r\n checkboxSelection\r\n editMode=\"row\"\r\n rowModesModel={\r\n props.editMode.editMode == \"row\" ? rowModesModel : undefined\r\n }\r\n onRowModesModelChange={\r\n props.editMode.editMode == \"row\"\r\n ? handleRowModesModelChange\r\n : undefined\r\n }\r\n rowGroupingColumnMode=\"multiple\"\r\n processRowUpdate={processRowUpdate}\r\n rowSelectionModel={rowSelectionModel}\r\n onRowSelectionModelChange={handleRowSelection}\r\n columnVisibilityModel={columnVisibilityModel}\r\n onColumnVisibilityModelChange={handleColumnVisibilityChange}\r\n onColumnOrderChange={handleColumnOrderChange}\r\n onColumnWidthChange={handleColumnWidthChange}\r\n rowGroupingModel={gridRowGroupingModel}\r\n onRowGroupingModelChange={(model: GridRowGroupingModel) => {\r\n handleRowGroupChange(model);\r\n }}\r\n pinnedColumns={pinnedColumns}\r\n onPinnedColumnsChange={handlePinnedColumnsChange}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport default TemplateGrid;\r\n","import { useDispatch, useSelector } from \"react-redux\";\r\nimport { RootState } from \"../redux/store\";\r\nimport useSession from \"./UseSession\";\r\nimport useAxios from \"./useAxios\";\r\nimport { setStoreData } from \"../redux/features/common/CommonStoreSlice\";\r\n\r\nexport type ApiActionsProps = {\r\n findAll?: string;\r\n commonStoreKey?: string;\r\n setData?: any;\r\n findById?: string;\r\n findByIdParamName?: string;\r\n save?: string;\r\n deleteById?: string;\r\n deleteByIdParamName?: string;\r\n};\r\n\r\nexport type ApiActions = {\r\n reloadData: (params?: any) => Promise<void>;\r\n saveRecord: (record: any) => Promise<any | null>;\r\n loadRecordById: (recordId: any) => Promise<any>;\r\n deleteRecordById: (recordId: any) => Promise<boolean>;\r\n};\r\n\r\nconst useApiActions: (apiActionsProps: ApiActionsProps) => ApiActions = (\r\n apiActionsProps: ApiActionsProps\r\n) => {\r\n const CommonStores = useSelector((state: RootState) => state.commonStores);\r\n const dispatch = useDispatch();\r\n const session = useSession();\r\n const { handleGetRequest, handlePostRequest, handleDeleteRequest } =\r\n useAxios();\r\n const reloadData = async (params?: any) => {\r\n if (apiActionsProps?.commonStoreKey) {\r\n const storeKeys = Object.keys(CommonStores);\r\n for (const storeKey of storeKeys) {\r\n if (storeKey === apiActionsProps.commonStoreKey) {\r\n if (\r\n (CommonStores[storeKey]?.authority === undefined ||\r\n CommonStores[storeKey]?.authority === null ||\r\n session.isUserAuthorized(CommonStores[storeKey]?.authority)) &&\r\n CommonStores[storeKey]?.url != \"\"\r\n ) {\r\n await handleGetRequest({\r\n endPointURI: CommonStores[storeKey].url,\r\n showMask: false,\r\n successCallBkFn: (response: any) => {\r\n dispatch(setStoreData({ storeKey, data: response.data }));\r\n apiActionsProps.setData(response.data);\r\n },\r\n failureCallBkFn: () => {\r\n dispatch(setStoreData({ storeKey, data: [] }));\r\n apiActionsProps.setData([]);\r\n },\r\n });\r\n break;\r\n }\r\n }\r\n }\r\n } else if (apiActionsProps?.findAll) {\r\n await handleGetRequest({\r\n endPointURI: apiActionsProps.findAll,\r\n showMask: true,\r\n parameters: params || {},\r\n successCallBkFn: (response: any) => {\r\n apiActionsProps.setData(response.data);\r\n },\r\n });\r\n }\r\n };\r\n const saveRecord = async (record: any) => {\r\n let savedRecord = null;\r\n if (apiActionsProps?.save) {\r\n await handlePostRequest({\r\n endPointURI: apiActionsProps.save,\r\n data: record,\r\n showMask: true,\r\n successCallBkFn: (response: any) => {\r\n savedRecord = response.data;\r\n },\r\n });\r\n }\r\n return savedRecord;\r\n };\r\n const loadRecordById = async (recordId: any) => {\r\n let record: any = null;\r\n if (apiActionsProps?.findById) {\r\n const parameters: any = {};\r\n const keyParameterName = apiActionsProps?.findByIdParamName || \"id\";\r\n parameters[keyParameterName] = recordId;\r\n await handleGetRequest({\r\n endPointURI: apiActionsProps.findById,\r\n showMask: true,\r\n parameters,\r\n successCallBkFn: (response: any) => {\r\n record = response.data;\r\n },\r\n });\r\n }\r\n return record;\r\n };\r\n const deleteRecordById = async (recordId: any) => {\r\n let result = true;\r\n if (apiActionsProps?.deleteById) {\r\n const parameters: any = {};\r\n const keyParameterName = apiActionsProps?.deleteByIdParamName || \"id\";\r\n parameters[keyParameterName] = recordId;\r\n await handleDeleteRequest({\r\n endPointURI: apiActionsProps.deleteById,\r\n showMask: true,\r\n parameters,\r\n successCallBkFn: () => {\r\n result = true;\r\n },\r\n failureCallBkFn: () => {\r\n result = false;\r\n },\r\n });\r\n }\r\n return result;\r\n };\r\n return { reloadData, loadRecordById, saveRecord, deleteRecordById };\r\n};\r\n\r\nexport default useApiActions;\r\n","import Home from \"../components/common/Home\";\r\nimport { ADMINISTRATION_ROUTES } from \"./administration\";\r\nimport { SystemRoute } from \"./types\";\r\n\r\nexport const SYSTEM_ROUTES: Array<SystemRoute> = [\r\n {\r\n path: \"/\",\r\n component: Home,\r\n },\r\n ...ADMINISTRATION_ROUTES,\r\n];\r\n","import { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { Box } from \"@mui/material\";\r\n\r\nconst Home: React.FC = () => {\r\n return (\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n flex: 1,\r\n fontSize: 24,\r\n fontWeight: \"bold\",\r\n }}\r\n >\r\n <img src=\"logo.png\" style={{ margin: 5 }} />\r\n <div>Welcome to Ezzsteel Flat Product Management System</div>\r\n <div style={{ fontSize: 16 }}>\r\n Use side menu [\r\n <FontAwesomeIcon\r\n icon=\"bars\"\r\n style={{ marginLeft: 10, marginRight: 10 }}\r\n />\r\n ] to navigate to your authorized system modules\r\n </div>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default Home;\r\n","import { SystemRoute } from \"../types\";\r\nimport { adminRoutes } from \"./adminRoutes\";\r\n\r\nexport const ADMINISTRATION_ROUTES: Array<SystemRoute> = [...adminRoutes];\r\n","import { SystemRoute } from \"../types\";\r\n\r\nimport AuthorityGrid from \"../../components/admin/AuthorityGrid\";\r\nimport BluePrintGrid from \"../../components/admin/BluePrintGrid\";\r\nimport BluePrintPageGrid from \"../../components/admin/BluePrintPageGrid\";\r\nimport BluePrintPointGrid from \"../../components/admin/BluePrintPointGrid\";\r\nimport DashboardGrid from \"../../components/admin/DashboardGrid\";\r\nimport DashboardWidgetGrid from \"../../components/admin/DashboardWidgetGrid\";\r\nimport DataQueryGrid from \"../../components/admin/DataQueryGrid\";\r\nimport DataQueryParameterGrid from \"../../components/admin/DataQueryParameterGrid\";\r\nimport DatasourceConnectionGrid from \"../../components/admin/DatasourceConnectionGrid\";\r\nimport EmployeeGrid from \"../../components/admin/EmployeeGrid\";\r\nimport EntityParameterGrid from \"../../components/admin/EntityParameterGrid\";\r\nimport ExcelUploaderDetailGrid from \"../../components/admin/ExcelUploaderDetailGrid\";\r\nimport ExcelUploaderHeaderGrid from \"../../components/admin/ExcelUploaderHeaderGrid\";\r\nimport LookupGrid from \"../../components/admin/LookupGrid\";\r\nimport MailAttachmentGrid from \"../../components/admin/MailAttachmentGrid\";\r\nimport MailBodyGrid from \"../../components/admin/MailBodyGrid\";\r\nimport MailNotificationQueueGrid from \"../../components/admin/MailNotificationQueueGrid\";\r\nimport MailRecipientGrid from \"../../components/admin/MailRecipientGrid\";\r\nimport MailTemplateGrid from \"../../components/admin/MailTemplateGrid\";\r\nimport NewTableGrid from \"../../components/admin/NewTableGrid\";\r\nimport NotificationGrid from \"../../components/admin/NotificationGrid\";\r\nimport NotificationQueueGrid from \"../../components/admin/NotificationQueueGrid\";\r\nimport OrganizationGrid from \"../../components/admin/OrganizationGrid\";\r\nimport OrganizationApplicationGrid from \"../../components/admin/OrganizationApplicationGrid\";\r\nimport OrganizationRankGrid from \"../../components/admin/OrganizationRankGrid\";\r\nimport OrganizationUnitGrid from \"../../components/admin/OrganizationUnitGrid\";\r\nimport OrganizationUserGrid from \"../../components/admin/OrganizationUserGrid\";\r\nimport OrganizationUserRoleGrid from \"../../components/admin/OrganizationUserRoleGrid\";\r\nimport ReportGrid from \"../../components/admin/ReportGrid\";\r\nimport ReportParameterGrid from \"../../components/admin/ReportParameterGrid\";\r\nimport RoleGrid from \"../../components/admin/RoleGrid\";\r\nimport RoleAuthorityGrid from \"../../components/admin/RoleAuthorityGrid\";\r\nimport UserAccountGrid from \"../../components/admin/UserAccountGrid\";\r\nimport UserRequestGrid from \"../../components/admin/UserRequestGrid\";\r\nimport WidgetGrid from \"../../components/admin/WidgetGrid\";\r\nimport WorkflowDocumentGrid from \"../../components/admin/WorkflowDocumentGrid\";\r\nimport WorkflowDocumentActionGrid from \"../../components/admin/WorkflowDocumentActionGrid\";\r\nimport WorkflowDocumentActionHistoryGrid from \"../../components/admin/WorkflowDocumentActionHistoryGrid\";\r\nimport WorkflowDocumentActionMailGrid from \"../../components/admin/WorkflowDocumentActionMailGrid\";\r\nimport WorkflowDocumentMailLogGrid from \"../../components/admin/WorkflowDocumentMailLogGrid\";\r\nimport WorkflowDocumentStatusGrid from \"../../components/admin/WorkflowDocumentStatusGrid\";\r\nimport AttachmentGrid from \"../../components/admin/AttachmentGrid\";\r\nexport const adminRoutes: Array<SystemRoute> = [\r\n {\r\n path: \"admin/attachments\",\r\n component: AttachmentGrid,\r\n authority: \"ATTACHMENT_VIEW\",\r\n },\r\n {\r\n path: \"admin/authorities\",\r\n component: AuthorityGrid,\r\n authority: \"AUTHORITY_VIEW\",\r\n },\r\n {\r\n path: \"admin/blueprints\",\r\n component: BluePrintGrid,\r\n authority: \"BLUE_PRINT_VIEW\",\r\n },\r\n {\r\n path: \"admin/blueprintpages\",\r\n component: BluePrintPageGrid,\r\n authority: \"BLUE_PRINT_PAGE_VIEW\",\r\n },\r\n {\r\n path: \"admin/blueprintpoints\",\r\n component: BluePrintPointGrid,\r\n authority: \"BLUE_PRINT_POINT_VIEW\",\r\n },\r\n {\r\n path: \"admin/dashboards\",\r\n component: DashboardGrid,\r\n authority: \"DASHBOARD_VIEW\",\r\n },\r\n {\r\n path: \"admin/dashboardwidgets\",\r\n component: DashboardWidgetGrid,\r\n authority: \"DASHBOARD_WIDGET_VIEW\",\r\n },\r\n {\r\n path: \"admin/dataqueries\",\r\n component: DataQueryGrid,\r\n authority: \"DATA_QUERY_VIEW\",\r\n },\r\n {\r\n path: \"admin/dataqueryparameters\",\r\n component: DataQueryParameterGrid,\r\n authority: \"DATA_QUERY_PARAMETER_VIEW\",\r\n },\r\n {\r\n path: \"admin/datasourceconnections\",\r\n component: DatasourceConnectionGrid,\r\n authority: \"DATASOURCE_CONNECTION_VIEW\",\r\n },\r\n {\r\n path: \"admin/employees\",\r\n component: EmployeeGrid,\r\n authority: \"EMPLOYEE_VIEW\",\r\n },\r\n {\r\n path: \"admin/entityparameters\",\r\n component: EntityParameterGrid,\r\n authority: \"ENTITY_PARAMETER_VIEW\",\r\n },\r\n {\r\n path: \"admin/exceluploaderdetails\",\r\n component: ExcelUploaderDetailGrid,\r\n authority: \"EXCEL_UPLOADER_DETAIL_VIEW\",\r\n },\r\n {\r\n path: \"admin/exceluploaderheaders\",\r\n component: ExcelUploaderHeaderGrid,\r\n authority: \"EXCEL_UPLOADER_HEADER_VIEW\",\r\n },\r\n {\r\n path: \"admin/lookups\",\r\n component: LookupGrid,\r\n authority: \"LOOKUP_VIEW\",\r\n },\r\n {\r\n path: \"admin/mailattachments\",\r\n component: MailAttachmentGrid,\r\n authority: \"MAIL_ATTACHMENT_VIEW\",\r\n },\r\n {\r\n path: \"admin/mailbodies\",\r\n component: MailBodyGrid,\r\n authority: \"MAIL_BODY_VIEW\",\r\n },\r\n {\r\n path: \"admin/mailnotificationqueues\",\r\n component: MailNotificationQueueGrid,\r\n authority: \"MAIL_NOTIFICATION_QUEUE_VIEW\",\r\n },\r\n {\r\n path: \"admin/mailrecipients\",\r\n component: MailRecipientGrid,\r\n authority: \"MAIL_RECIPIENT_VIEW\",\r\n },\r\n {\r\n path: \"admin/mailtemplates\",\r\n component: MailTemplateGrid,\r\n authority: \"MAIL_TEMPLATE_VIEW\",\r\n },\r\n {\r\n path: \"admin/newtables\",\r\n component: NewTableGrid,\r\n authority: \"NEW_TABLE_VIEW\",\r\n },\r\n {\r\n path: \"admin/notifications\",\r\n component: NotificationGrid,\r\n authority: \"NOTIFICATION_VIEW\",\r\n },\r\n {\r\n path: \"admin/notificationqueues\",\r\n component: NotificationQueueGrid,\r\n authority: \"NOTIFICATION_QUEUE_VIEW\",\r\n },\r\n {\r\n path: \"admin/organizations\",\r\n component: OrganizationGrid,\r\n authority: \"ORGANIZATION_VIEW\",\r\n },\r\n {\r\n path: \"admin/organizationapplications\",\r\n component: OrganizationApplicationGrid,\r\n authority: \"ORGANIZATION_APPLICATION_VIEW\",\r\n },\r\n {\r\n path: \"admin/organizationranks\",\r\n component: OrganizationRankGrid,\r\n authority: \"ORGANIZATION_RANK_VIEW\",\r\n },\r\n {\r\n path: \"admin/organizationunits\",\r\n component: OrganizationUnitGrid,\r\n authority: \"ORGANIZATION_UNIT_VIEW\",\r\n },\r\n {\r\n path: \"admin/organizationusers\",\r\n component: OrganizationUserGrid,\r\n authority: \"ORGANIZATION_USER_VIEW\",\r\n },\r\n {\r\n path: \"admin/organizationuserroles\",\r\n component: OrganizationUserRoleGrid,\r\n authority: \"ORGANIZATION_USER_ROLE_VIEW\",\r\n },\r\n {\r\n path: \"admin/reports\",\r\n component: ReportGrid,\r\n authority: \"REPORT_VIEW\",\r\n },\r\n {\r\n path: \"admin/reportparameters\",\r\n component: ReportParameterGrid,\r\n authority: \"REPORT_PARAMETER_VIEW\",\r\n },\r\n {\r\n path: \"admin/roles\",\r\n component: RoleGrid,\r\n authority: \"ROLE_VIEW\",\r\n },\r\n {\r\n path: \"admin/roleauthorities\",\r\n component: RoleAuthorityGrid,\r\n authority: \"ROLE_AUTHORITY_VIEW\",\r\n },\r\n {\r\n path: \"admin/useraccounts\",\r\n component: UserAccountGrid,\r\n authority: \"USER_ACCOUNT_VIEW\",\r\n },\r\n {\r\n path: \"admin/userrequests\",\r\n component: UserRequestGrid,\r\n authority: \"USER_REQUEST_VIEW\",\r\n },\r\n {\r\n path: \"admin/widgets\",\r\n component: WidgetGrid,\r\n authority: \"WIDGET_VIEW\",\r\n },\r\n {\r\n path: \"admin/workflowdocuments\",\r\n component: WorkflowDocumentGrid,\r\n authority: \"WORKFLOW_DOCUMENT_VIEW\",\r\n },\r\n {\r\n path: \"admin/workflowdocumentactions\",\r\n component: WorkflowDocumentActionGrid,\r\n authority: \"WORKFLOW_DOCUMENT_ACTION_VIEW\",\r\n },\r\n {\r\n path: \"admin/workflowdocumentactionhistories\",\r\n component: WorkflowDocumentActionHistoryGrid,\r\n authority: \"WORKFLOW_DOCUMENT_ACTION_HISTORY_VIEW\",\r\n },\r\n {\r\n path: \"admin/workflowdocumentactionmails\",\r\n component: WorkflowDocumentActionMailGrid,\r\n authority: \"WORKFLOW_DOCUMENT_ACTION_MAIL_VIEW\",\r\n },\r\n {\r\n path: \"admin/workflowdocumentmaillogs\",\r\n component: WorkflowDocumentMailLogGrid,\r\n authority: \"WORKFLOW_DOCUMENT_MAIL_LOG_VIEW\",\r\n },\r\n {\r\n path: \"admin/workflowdocumentstatuses\",\r\n component: WorkflowDocumentStatusGrid,\r\n authority: \"WORKFLOW_DOCUMENT_STATUS_VIEW\",\r\n },\r\n];\r\n\r\n// import { adminRoutes } from \"./adminRoutes\";\r\n// [...adminRoutes]\r\n","import { useState } from \"react\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\n\r\n\r\nconst AttachmentGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/attachment/all\",\r\n deleteById: \"api/v1/admin/attachment\",\r\n save: \"api/v1/admin/attachment\",\r\n findById: \"api/v1/admin/attachment\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ATTACHMENT_ATTACHMENT_NUMBER\",\r\n fieldName: \"attachmentNumber\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ATTACHMENT_ATTACHMENT_SIZE\",\r\n fieldName: \"attachmentSize\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ATTACHMENT_ATTACHMENT_TYPE\",\r\n fieldName: \"attachmentType\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ATTACHMENT_CATEGORY\",\r\n fieldName: \"category\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ATTACHMENT_DOC_TYPE\",\r\n fieldName: \"docType\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ATTACHMENT_FILE_NAME\",\r\n fieldName: \"fileName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ATTACHMENT_REF_KEY\",\r\n fieldName: \"refKey\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ATTACHMENT_REMARK\",\r\n fieldName: \"remark\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"ATTACHMENT_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"ATTACHMENT_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"ATTACHMENT_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default AttachmentGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst AuthorityGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n commonStoreKey: \"SystemAuthorities\",\r\n deleteById: \"api/v1/admin/authority\",\r\n save: \"api/v1/admin/authority\",\r\n findById: \"api/v1/admin/authority\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"AUTHORITY_AUTHORITY_CODE\",\r\n fieldName: \"authorityCode\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"AUTHORITY_AUTHORITY_DESCRIPTION\",\r\n fieldName: \"authorityDescription\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"AUTHORITY_AUTHORITY_NAME\",\r\n fieldName: \"authorityName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"AUTHORITY_IS_ACTIVE\",\r\n fieldName: \"isActive\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"AUTHORITY_ORGANIZATION_APPLICATION_ID\",\r\n fieldName: \"organizationApplicationId\",\r\n required: false,\r\n fieldType: \"text\",\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\", reloadAfterSave: true }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"AUTHORITY_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"AUTHORITY_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"AUTHORITY_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default AuthorityGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst BluePrintGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/blueprint/all\",\r\n deleteById: \"api/v1/admin/blueprint\",\r\n save: \"api/v1/admin/blueprint\",\r\n findById: \"api/v1/admin/blueprint\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"BLUE_PRINT_BLUE_PRINT_CODE\",\r\n fieldName: \"bluePrintCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"BLUE_PRINT_QUERY_ID\",\r\n fieldName: \"queryId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"BLUE_PRINT_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"BLUE_PRINT_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"BLUE_PRINT_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default BluePrintGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst BluePrintPageGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/blueprintpage/all\",\r\n deleteById: \"api/v1/admin/blueprintpage\",\r\n save: \"api/v1/admin/blueprintpage\",\r\n findById: \"api/v1/admin/blueprintpage\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"BLUE_PRINT_PAGE_BLUE_PRINT_ID\",\r\n fieldName: \"bluePrintId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"BLUE_PRINT_PAGE_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"BLUE_PRINT_PAGE_PAGE_NAME\",\r\n fieldName: \"pageName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"BLUE_PRINT_PAGE_PAGE_ORDER\",\r\n fieldName: \"pageOrder\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"BLUE_PRINT_PAGE_QUERY_ID\",\r\n fieldName: \"queryId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"BLUE_PRINT_PAGE_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"BLUE_PRINT_PAGE_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"BLUE_PRINT_PAGE_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default BluePrintPageGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst BluePrintPointGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/blueprintpoint/all\",\r\n deleteById: \"api/v1/admin/blueprintpoint\",\r\n save: \"api/v1/admin/blueprintpoint\",\r\n findById: \"api/v1/admin/blueprintpoint\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"BLUE_PRINT_POINT_BLUE_PRINT_PAGE_ID\",\r\n fieldName: \"bluePrintPageId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"BLUE_PRINT_POINT_FONT_SIZE\",\r\n fieldName: \"fontSize\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"BLUE_PRINT_POINT_POINT_CODE\",\r\n fieldName: \"pointCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"BLUE_PRINT_POINT_X\",\r\n fieldName: \"x\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"BLUE_PRINT_POINT_Y\",\r\n fieldName: \"y\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"BLUE_PRINT_POINT_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"BLUE_PRINT_POINT_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"BLUE_PRINT_POINT_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default BluePrintPointGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst DashboardGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/dashboard/all\",\r\n deleteById: \"api/v1/admin/dashboard\",\r\n save: \"api/v1/admin/dashboard\",\r\n findById: \"api/v1/admin/dashboard\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DASHBOARD_DASHBOARD_CODE\",\r\n fieldName: \"dashboardCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DASHBOARD_DASHBOARD_NAME\",\r\n fieldName: \"dashboardName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DASHBOARD_DASHBOARD_TITLE\",\r\n fieldName: \"dashboardTitle\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DASHBOARD_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DASHBOARD_LOAD_WIDGETS_INDIVIDUALLY\",\r\n fieldName: \"loadWidgetsIndividually\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DASHBOARD_NUMBER_OF_COLUMNS\",\r\n fieldName: \"numberOfColumns\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"DASHBOARD_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"DASHBOARD_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"DASHBOARD_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default DashboardGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst DashboardWidgetGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/dashboardwidget/all\",\r\n deleteById: \"api/v1/admin/dashboardwidget\",\r\n save: \"api/v1/admin/dashboardwidget\",\r\n findById: \"api/v1/admin/dashboardwidget\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DASHBOARD_WIDGET_DASHBOARD_ID\",\r\n fieldName: \"dashboardId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DASHBOARD_WIDGET_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DASHBOARD_WIDGET_WIDGET_ID\",\r\n fieldName: \"widgetId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DASHBOARD_WIDGET_WIDGET_ORDER\",\r\n fieldName: \"widgetOrder\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"DASHBOARD_WIDGET_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"DASHBOARD_WIDGET_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"DASHBOARD_WIDGET_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default DashboardWidgetGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst DataQueryGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n commonStoreKey: \"SystemDataQueries\",\r\n deleteById: \"api/v1/admin/dataquery\",\r\n save: \"api/v1/admin/dataquery\",\r\n findById: \"api/v1/admin/dataquery\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATA_QUERY_DATASOURCE_CON_ID\",\r\n fieldName: \"datasourceConId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATA_QUERY_QUERY_NAME\",\r\n fieldName: \"queryName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATA_QUERY_QUERY_STR\",\r\n fieldName: \"queryStr\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATA_QUERY_USE_SYS_CON\",\r\n fieldName: \"useSysCon\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\", reloadAfterSave: true }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"DATA_QUERY_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"DATA_QUERY_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"DATA_QUERY_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default DataQueryGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst DataQueryParameterGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/dataqueryparameter/all\",\r\n deleteById: \"api/v1/admin/dataqueryparameter\",\r\n save: \"api/v1/admin/dataqueryparameter\",\r\n findById: \"api/v1/admin/dataqueryparameter\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATA_QUERY_PARAMETER_DATA_QUERY_ID\",\r\n fieldName: \"dataQueryId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATA_QUERY_PARAMETER_DEFAULT_VALUE\",\r\n fieldName: \"defaultValue\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATA_QUERY_PARAMETER_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATA_QUERY_PARAMETER_ENTITY_PARAMETER_ID\",\r\n fieldName: \"entityParameterId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATA_QUERY_PARAMETER_HIDDEN\",\r\n fieldName: \"hidden\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATA_QUERY_PARAMETER_MANDATORY\",\r\n fieldName: \"mandatory\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"DATA_QUERY_PARAMETER_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"DATA_QUERY_PARAMETER_EDIT\" }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"DATA_QUERY_PARAMETER_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default DataQueryParameterGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst DatasourceConnectionGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n commonStoreKey: \"SystemDataSources\",\r\n deleteById: \"api/v1/admin/datasourceconnection\",\r\n save: \"api/v1/admin/datasourceconnection\",\r\n findById: \"api/v1/admin/datasourceconnection\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATASOURCE_CONNECTION_CONNECTION_NAME\",\r\n fieldName: \"connectionName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATASOURCE_CONNECTION_DATASOURCE_PASSWORD\",\r\n fieldName: \"datasourcePassword\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATASOURCE_CONNECTION_DATASOURCE_TYPE\",\r\n fieldName: \"datasourceType\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATASOURCE_CONNECTION_DATASOURCE_URL\",\r\n fieldName: \"datasourceUrl\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATASOURCE_CONNECTION_DATASOURCE_USERNAME\",\r\n fieldName: \"datasourceUsername\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATASOURCE_CONNECTION_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\", reloadAfterSave: true }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"DATASOURCE_CONNECTION_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"DATASOURCE_CONNECTION_EDIT\" }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"DATASOURCE_CONNECTION_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default DatasourceConnectionGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst EmployeeGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/employee/all\",\r\n deleteById: \"api/v1/admin/employee\",\r\n save: \"api/v1/admin/employee\",\r\n findById: \"api/v1/admin/employee\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"EMPLOYEE_EMAIL\",\r\n fieldName: \"email\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"EMPLOYEE_EMPLOYEE_NAME\",\r\n fieldName: \"employeeName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"EMPLOYEE_EMPLOYEE_NUMBER\",\r\n fieldName: \"employeeNumber\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"EMPLOYEE_MOBILE_NUMBER\",\r\n fieldName: \"mobileNumber\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"EMPLOYEE_ORGANIZATION_RANK_ID\",\r\n fieldName: \"organizationRankId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"EMPLOYEE_ORGANIZATION_UNIT_ID\",\r\n fieldName: \"organizationUnitId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"EMPLOYEE_USER_ACCOUNT_ID\",\r\n fieldName: \"userAccountId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"EMPLOYEE_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"EMPLOYEE_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"EMPLOYEE_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default EmployeeGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst EntityParameterGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n commonStoreKey: \"SystemEntityParameters\",\r\n deleteById: \"api/v1/admin/entityparameter\",\r\n save: \"api/v1/admin/entityparameter\",\r\n findById: \"api/v1/admin/entityparameter\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ENTITY_PARAMETER_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ENTITY_PARAMETER_PARAMETER_CODE\",\r\n fieldName: \"parameterCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ENTITY_PARAMETER_PARAMETER_DATA_QUERY_ID\",\r\n fieldName: \"parameterDataQueryId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ENTITY_PARAMETER_PARAMETER_DATASET\",\r\n fieldName: \"parameterDataset\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ENTITY_PARAMETER_PARAMETER_DISPLAY_FIELD\",\r\n fieldName: \"parameterDisplayField\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ENTITY_PARAMETER_PARAMETER_LABEL\",\r\n fieldName: \"parameterLabel\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ENTITY_PARAMETER_PARAMETER_TYPE\",\r\n fieldName: \"parameterType\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ENTITY_PARAMETER_PARAMETER_VALUE_FIELD\",\r\n fieldName: \"parameterValueField\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ENTITY_PARAMETER_PARAMETER_VALUE_FORMAT\",\r\n fieldName: \"parameterValueFormat\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\", reloadAfterSave: true }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"ENTITY_PARAMETER_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"ENTITY_PARAMETER_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"ENTITY_PARAMETER_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default EntityParameterGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst ExcelUploaderDetailGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/exceluploaderdetail/all\",\r\n deleteById: \"api/v1/admin/exceluploaderdetail\",\r\n save: \"api/v1/admin/exceluploaderdetail\",\r\n findById: \"api/v1/admin/exceluploaderdetail\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"EXCEL_UPLOADER_DETAIL_COLUMN_INDEX\",\r\n fieldName: \"columnIndex\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"EXCEL_UPLOADER_DETAIL_EXCEL_UPLOADER_HEADER_ID\",\r\n fieldName: \"excelUploaderHeaderId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"EXCEL_UPLOADER_DETAIL_LOOKUP_QUERY_ID\",\r\n fieldName: \"lookupQueryId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"EXCEL_UPLOADER_DETAIL_TABLE_FIELD\",\r\n fieldName: \"tableField\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"EXCEL_UPLOADER_DETAIL_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"EXCEL_UPLOADER_DETAIL_EDIT\" }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"EXCEL_UPLOADER_DETAIL_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default ExcelUploaderDetailGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst ExcelUploaderHeaderGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/exceluploaderheader/all\",\r\n deleteById: \"api/v1/admin/exceluploaderheader\",\r\n save: \"api/v1/admin/exceluploaderheader\",\r\n findById: \"api/v1/admin/exceluploaderheader\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"EXCEL_UPLOADER_HEADER_UPLOADER_CONNECTION_ID\",\r\n fieldName: \"uploaderConnectionId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"EXCEL_UPLOADER_HEADER_UPLOADER_DATABASE_NAME\",\r\n fieldName: \"uploaderDatabaseName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"EXCEL_UPLOADER_HEADER_UPLOADER_NAME\",\r\n fieldName: \"uploaderName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"EXCEL_UPLOADER_HEADER_UPLOADER_TABLE_NAME\",\r\n fieldName: \"uploaderTableName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"EXCEL_UPLOADER_HEADER_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"EXCEL_UPLOADER_HEADER_EDIT\" }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"EXCEL_UPLOADER_HEADER_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default ExcelUploaderHeaderGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst LookupGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/lookup/all\",\r\n deleteById: \"api/v1/admin/lookup\",\r\n save: \"api/v1/admin/lookup\",\r\n findById: \"api/v1/admin/lookup\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"LOOKUP_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"LOOKUP_LOOKUP_AR_DISPLAY\",\r\n fieldName: \"lookupArDisplay\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"LOOKUP_LOOKUP_EN_DISPLAY\",\r\n fieldName: \"lookupEnDisplay\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"LOOKUP_LOOKUP_TYPE\",\r\n fieldName: \"lookupType\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"LOOKUP_LOOKUP_VALUE\",\r\n fieldName: \"lookupValue\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"LOOKUP_ORG_CODE\",\r\n fieldName: \"orgCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"LOOKUP_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"LOOKUP_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"LOOKUP_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default LookupGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst MailAttachmentGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/mailattachment/all\",\r\n deleteById: \"api/v1/admin/mailattachment\",\r\n save: \"api/v1/admin/mailattachment\",\r\n findById: \"api/v1/admin/mailattachment\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_ATTACHMENT_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_ATTACHMENT_MAIL_TEMPLATE_ID\",\r\n fieldName: \"mailTemplateId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_ATTACHMENT_REPORT_ID\",\r\n fieldName: \"reportId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"MAIL_ATTACHMENT_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"MAIL_ATTACHMENT_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"MAIL_ATTACHMENT_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default MailAttachmentGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst MailBodyGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/mailbody/all\",\r\n deleteById: \"api/v1/admin/mailbody\",\r\n save: \"api/v1/admin/mailbody\",\r\n findById: \"api/v1/admin/mailbody\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_BODY_BODY_CONTENT\",\r\n fieldName: \"bodyContent\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_BODY_BODY_CONTENT_DATA_QUERY_ID\",\r\n fieldName: \"bodyContentDataQueryId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_BODY_BODY_ORDER\",\r\n fieldName: \"bodyOrder\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_BODY_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_BODY_IS_MAIN\",\r\n fieldName: \"isMain\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_BODY_MAIL_TEMPLATE_ID\",\r\n fieldName: \"mailTemplateId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_BODY_PRINT_FOR_EACH_RECORD\",\r\n fieldName: \"printForEachRecord\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"MAIL_BODY_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"MAIL_BODY_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"MAIL_BODY_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default MailBodyGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst MailNotificationQueueGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/mailnotificationqueue/all\",\r\n deleteById: \"api/v1/admin/mailnotificationqueue\",\r\n save: \"api/v1/admin/mailnotificationqueue\",\r\n findById: \"api/v1/admin/mailnotificationqueue\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_NOTIFICATION_QUEUE_CUSTOM_MAIL_ATTACHED_REPORT_ID\",\r\n fieldName: \"customMailAttachedReportId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_NOTIFICATION_QUEUE_CUSTOM_MAIL_BODY\",\r\n fieldName: \"customMailBody\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_NOTIFICATION_QUEUE_CUSTOM_MAIL_SUBJECT\",\r\n fieldName: \"customMailSubject\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_NOTIFICATION_QUEUE_CUSTOM_RECIPIENTS\",\r\n fieldName: \"customRecipients\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_NOTIFICATION_QUEUE_IS_NOTIFIED\",\r\n fieldName: \"isNotified\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_NOTIFICATION_QUEUE_MAIL_PARAMETERS\",\r\n fieldName: \"mailParameters\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_NOTIFICATION_QUEUE_MAIL_TEMPLATE_ID\",\r\n fieldName: \"mailTemplateId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_NOTIFICATION_QUEUE_NOTIFICATION_MESSAGE\",\r\n fieldName: \"notificationMessage\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_NOTIFICATION_QUEUE_NOTIFICATION_TIME\",\r\n fieldName: \"notificationTime\",\r\n required: false,\r\n fieldType: \"datetime\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"MAIL_NOTIFICATION_QUEUE_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"MAIL_NOTIFICATION_QUEUE_EDIT\",\r\n }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"MAIL_NOTIFICATION_QUEUE_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default MailNotificationQueueGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst MailRecipientGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/mailrecipient/all\",\r\n deleteById: \"api/v1/admin/mailrecipient\",\r\n save: \"api/v1/admin/mailrecipient\",\r\n findById: \"api/v1/admin/mailrecipient\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_RECIPIENT_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_RECIPIENT_MAIL_TEMPLATE_ID\",\r\n fieldName: \"mailTemplateId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_RECIPIENT_RECIPIENT_MAIL\",\r\n fieldName: \"recipientMail\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_RECIPIENT_RECIPIENT_TYPE\",\r\n fieldName: \"recipientType\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"MAIL_RECIPIENT_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"MAIL_RECIPIENT_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"MAIL_RECIPIENT_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default MailRecipientGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst MailTemplateGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/mailtemplate/all\",\r\n deleteById: \"api/v1/admin/mailtemplate\",\r\n save: \"api/v1/admin/mailtemplate\",\r\n findById: \"api/v1/admin/mailtemplate\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_TEMPLATE_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_TEMPLATE_MAIL_CC_DATA_QUERY_ID\",\r\n fieldName: \"mailCcDataQueryId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_TEMPLATE_MAIL_SUBJECT\",\r\n fieldName: \"mailSubject\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_TEMPLATE_MAIL_TEMPLATE_CODE\",\r\n fieldName: \"mailTemplateCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_TEMPLATE_MAIL_TEMPLATE_NAME\",\r\n fieldName: \"mailTemplateName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_TEMPLATE_MAIL_TO_DATA_QUERY_ID\",\r\n fieldName: \"mailToDataQueryId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_TEMPLATE_PERIOD_TYPE\",\r\n fieldName: \"periodType\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_TEMPLATE_PERIOD_VALUE\",\r\n fieldName: \"periodValue\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_TEMPLATE_PERIODICAL\",\r\n fieldName: \"periodical\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_TEMPLATE_START_SENDING_AT\",\r\n fieldName: \"startSendingAt\",\r\n required: false,\r\n fieldType: \"datetime\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_TEMPLATE_SUBJECT_DATA_QUERY_ID\",\r\n fieldName: \"subjectDataQueryId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"MAIL_TEMPLATE_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"MAIL_TEMPLATE_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"MAIL_TEMPLATE_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default MailTemplateGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst NewTableGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/newtable/all\",\r\n deleteById: \"api/v1/admin/newtable\",\r\n save: \"api/v1/admin/newtable\",\r\n findById: \"api/v1/admin/newtable\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"NEW_TABLE_TEST_DATE\",\r\n fieldName: \"testDate\",\r\n required: false,\r\n fieldType: \"date\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"NEW_TABLE_TEST_LONG\",\r\n fieldName: \"testLong\",\r\n required: false,\r\n fieldType: \"number\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"NEW_TABLE_TEST_DECIMAL\",\r\n fieldName: \"testDecimal\",\r\n required: false,\r\n fieldType: \"number\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"NEW_TABLE_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"NEW_TABLE_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"NEW_TABLE_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default NewTableGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst NotificationGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/notification/all\",\r\n deleteById: \"api/v1/admin/notification\",\r\n save: \"api/v1/admin/notification\",\r\n findById: \"api/v1/admin/notification\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"NOTIFICATION_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"NOTIFICATION_NOTIFICATION_ACTION_KEY\",\r\n fieldName: \"notificationActionKey\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"NOTIFICATION_NOTIFICATION_ACTION_PAYLOAD\",\r\n fieldName: \"notificationActionPayload\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"NOTIFICATION_NOTIFICATION_CODE\",\r\n fieldName: \"notificationCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"NOTIFICATION_NOTIFICATION_ICON\",\r\n fieldName: \"notificationIcon\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"NOTIFICATION_NOTIFICATION_QUERY_ID\",\r\n fieldName: \"notificationQueryId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"NOTIFICATION_NOTIFICATION_TEXT\",\r\n fieldName: \"notificationText\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"NOTIFICATION_USERS_TO_NOTIFY_QUERY_ID\",\r\n fieldName: \"usersToNotifyQueryId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"NOTIFICATION_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"NOTIFICATION_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"NOTIFICATION_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default NotificationGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst NotificationQueueGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/notificationqueue/all\",\r\n deleteById: \"api/v1/admin/notificationqueue\",\r\n save: \"api/v1/admin/notificationqueue\",\r\n findById: \"api/v1/admin/notificationqueue\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"NOTIFICATION_QUEUE_CUSTOM_NOTIFICATION_ACTION_KEY\",\r\n fieldName: \"customNotificationActionKey\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"NOTIFICATION_QUEUE_CUSTOM_NOTIFICATION_ACTION_PAYLOAD\",\r\n fieldName: \"customNotificationActionPayload\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"NOTIFICATION_QUEUE_CUSTOM_NOTIFICATION_ICON\",\r\n fieldName: \"customNotificationIcon\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"NOTIFICATION_QUEUE_CUSTOM_NOTIFICATION_TEXT\",\r\n fieldName: \"customNotificationText\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"NOTIFICATION_QUEUE_IS_NOTIFIED\",\r\n fieldName: \"isNotified\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"NOTIFICATION_QUEUE_NOTIFICATION_CODE\",\r\n fieldName: \"notificationCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"NOTIFICATION_QUEUE_NOTIFICATION_PARAMS\",\r\n fieldName: \"notificationParams\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"NOTIFICATION_QUEUE_NOTIFIED_TIME\",\r\n fieldName: \"notifiedTime\",\r\n required: false,\r\n fieldType: \"datetime\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"NOTIFICATION_QUEUE_USERNAME\",\r\n fieldName: \"username\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"NOTIFICATION_QUEUE_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"NOTIFICATION_QUEUE_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"NOTIFICATION_QUEUE_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default NotificationQueueGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst OrganizationGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/organization/all\",\r\n deleteById: \"api/v1/admin/organization\",\r\n save: \"api/v1/admin/organization\",\r\n findById: \"api/v1/admin/organization\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_ORGANIZATION_CODE\",\r\n fieldName: \"organizationCode\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_IS_ACTIVE\",\r\n fieldName: \"isActive\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_ORGANIZATION_NAME\",\r\n fieldName: \"organizationName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"organizationCode\"}\r\n gridTitle=\"ORGANIZATION_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"ORGANIZATION_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"ORGANIZATION_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default OrganizationGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst OrganizationApplicationGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/organizationapplication/all\",\r\n deleteById: \"api/v1/admin/organizationapplication\",\r\n save: \"api/v1/admin/organizationapplication\",\r\n findById: \"api/v1/admin/organizationapplication\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_APPLICATION_APPLICATION_CODE\",\r\n fieldName: \"applicationCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_APPLICATION_APPLICATION_DESCRIPTION\",\r\n fieldName: \"applicationDescription\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_APPLICATION_APPLICATION_NAME\",\r\n fieldName: \"applicationName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_APPLICATION_IS_ACTIVE\",\r\n fieldName: \"isActive\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"ORGANIZATION_APPLICATION_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"ORGANIZATION_APPLICATION_EDIT\",\r\n }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"ORGANIZATION_APPLICATION_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default OrganizationApplicationGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst OrganizationRankGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/organizationrank/all\",\r\n deleteById: \"api/v1/admin/organizationrank\",\r\n save: \"api/v1/admin/organizationrank\",\r\n findById: \"api/v1/admin/organizationrank\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_RANK_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_RANK_ORGANIZATION_CODE\",\r\n fieldName: \"organizationCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_RANK_RANK_CODE\",\r\n fieldName: \"rankCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_RANK_RANK_NAME\",\r\n fieldName: \"rankName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_RANK_RANK_ORDER\",\r\n fieldName: \"rankOrder\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"ORGANIZATION_RANK_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"ORGANIZATION_RANK_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"ORGANIZATION_RANK_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default OrganizationRankGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst OrganizationUnitGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/organizationunit/all\",\r\n deleteById: \"api/v1/admin/organizationunit\",\r\n save: \"api/v1/admin/organizationunit\",\r\n findById: \"api/v1/admin/organizationunit\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_UNIT_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_UNIT_ORGANIZATION_CODE\",\r\n fieldName: \"organizationCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_UNIT_ORGANIZATION_UNIT_AR_NAME\",\r\n fieldName: \"organizationUnitArName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_UNIT_ORGANIZATION_UNIT_EN_NAME\",\r\n fieldName: \"organizationUnitEnName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_UNIT_ORGANIZATION_UNIT_PARENT_ID\",\r\n fieldName: \"organizationUnitParentId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"ORGANIZATION_UNIT_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"ORGANIZATION_UNIT_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"ORGANIZATION_UNIT_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default OrganizationUnitGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst OrganizationUserGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/organizationuser/all\",\r\n deleteById: \"api/v1/admin/organizationuser\",\r\n save: \"api/v1/admin/organizationuser\",\r\n findById: \"api/v1/admin/organizationuser\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_USER_IS_ACTIVE\",\r\n fieldName: \"isActive\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_USER_IS_DEFAULT\",\r\n fieldName: \"isDefault\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_USER_ORGANIZATION_CODE\",\r\n fieldName: \"organizationCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_USER_USERNAME\",\r\n fieldName: \"username\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"ORGANIZATION_USER_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"ORGANIZATION_USER_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"ORGANIZATION_USER_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default OrganizationUserGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst OrganizationUserRoleGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/organizationuserrole/all\",\r\n deleteById: \"api/v1/admin/organizationuserrole\",\r\n save: \"api/v1/admin/organizationuserrole\",\r\n findById: \"api/v1/admin/organizationuserrole\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_USER_ROLE_END_DATE\",\r\n fieldName: \"endDate\",\r\n required: false,\r\n fieldType: \"datetime\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_USER_ROLE_IS_ACTIVE\",\r\n fieldName: \"isActive\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_USER_ROLE_ORGANIZATION_CODE\",\r\n fieldName: \"organizationCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_USER_ROLE_ROLE_ID\",\r\n fieldName: \"roleId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_USER_ROLE_START_DATE\",\r\n fieldName: \"startDate\",\r\n required: false,\r\n fieldType: \"datetime\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_USER_ROLE_USERNAME\",\r\n fieldName: \"username\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"ORGANIZATION_USER_ROLE_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"ORGANIZATION_USER_ROLE_EDIT\" }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"ORGANIZATION_USER_ROLE_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default OrganizationUserRoleGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst ReportGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/report/all\",\r\n deleteById: \"api/v1/admin/report\",\r\n save: \"api/v1/admin/report\",\r\n findById: \"api/v1/admin/report\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_DATASOURCE_CON_ID\",\r\n fieldName: \"datasourceConId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_REPORT_BLUE_PRINT_ID\",\r\n fieldName: \"reportBluePrintId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_REPORT_CATEGORY\",\r\n fieldName: \"reportCategory\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_REPORT_CODE\",\r\n fieldName: \"reportCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_REPORT_EXCEL_DATA_QUERY_ID\",\r\n fieldName: \"reportExcelDataQueryId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_REPORT_EXPORT_NAME\",\r\n fieldName: \"reportExportName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_REPORT_JASPER_NAME\",\r\n fieldName: \"reportJasperName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_REPORT_JASPER_PATH\",\r\n fieldName: \"reportJasperPath\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_REPORT_MENU_CODE\",\r\n fieldName: \"reportMenuCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_REPORT_NAME\",\r\n fieldName: \"reportName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_REPORT_TYPE\",\r\n fieldName: \"reportType\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_USE_SYS_DATASOURCE\",\r\n fieldName: \"useSysDatasource\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"REPORT_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"REPORT_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"REPORT_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default ReportGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst ReportParameterGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/reportparameter/all\",\r\n deleteById: \"api/v1/admin/reportparameter\",\r\n save: \"api/v1/admin/reportparameter\",\r\n findById: \"api/v1/admin/reportparameter\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_PARAMETER_DEFAULT_VALUE\",\r\n fieldName: \"defaultValue\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_PARAMETER_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_PARAMETER_ENTITY_PARAMETER_ID\",\r\n fieldName: \"entityParameterId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_PARAMETER_HIDDEN\",\r\n fieldName: \"hidden\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_PARAMETER_MANDATORY\",\r\n fieldName: \"mandatory\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_PARAMETER_REPORT_ID\",\r\n fieldName: \"reportId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"REPORT_PARAMETER_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"REPORT_PARAMETER_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"REPORT_PARAMETER_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default ReportParameterGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst RoleGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n commonStoreKey: \"SystemRoles\",\r\n deleteById: \"api/v1/admin/role\",\r\n save: \"api/v1/admin/role\",\r\n findById: \"api/v1/admin/role\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ROLE_ROLE_NAME\",\r\n fieldName: \"roleName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ROLE_DESCRIPTION\",\r\n fieldName: \"description\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ROLE_IS_ACTIVE\",\r\n fieldName: \"isActive\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ROLE_ORGANIZATION_APPLICATION_ID\",\r\n fieldName: \"organizationApplicationId\",\r\n required: false,\r\n fieldType: \"text\",\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\", reloadAfterSave: true }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"ROLE_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"ROLE_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"ROLE_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default RoleGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst RoleAuthorityGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/roleauthority/all\",\r\n deleteById: \"api/v1/admin/roleauthority\",\r\n save: \"api/v1/admin/roleauthority\",\r\n findById: \"api/v1/admin/roleauthority\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ROLE_AUTHORITY_AUTHORITY_ID\",\r\n fieldName: \"authorityId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ROLE_AUTHORITY_IS_ACTIVE\",\r\n fieldName: \"isActive\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ROLE_AUTHORITY_ROLE_ID\",\r\n fieldName: \"roleId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"ROLE_AUTHORITY_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"ROLE_AUTHORITY_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"ROLE_AUTHORITY_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default RoleAuthorityGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst UserAccountGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/useraccount/all\",\r\n deleteById: \"api/v1/admin/useraccount\",\r\n save: \"api/v1/admin/useraccount\",\r\n findById: \"api/v1/admin/useraccount\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"USER_ACCOUNT_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"USER_ACCOUNT_PASSWORD\",\r\n fieldName: \"password\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"USER_ACCOUNT_USERNAME\",\r\n fieldName: \"username\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"USER_ACCOUNT_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"USER_ACCOUNT_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"USER_ACCOUNT_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default UserAccountGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst UserRequestGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/userrequest/all\",\r\n deleteById: \"api/v1/admin/userrequest\",\r\n save: \"api/v1/admin/userrequest\",\r\n findById: \"api/v1/admin/userrequest\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"USER_REQUEST_IS_NOTIFIED\",\r\n fieldName: \"isNotified\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"USER_REQUEST_MAILS_TO_NOTIFY\",\r\n fieldName: \"mailsToNotify\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"USER_REQUEST_NOTIFICATION_MESSAGE\",\r\n fieldName: \"notificationMessage\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"USER_REQUEST_NOTIFICATION_TIME\",\r\n fieldName: \"notificationTime\",\r\n required: false,\r\n fieldType: \"datetime\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"USER_REQUEST_NOTIFICATION_TYPE\",\r\n fieldName: \"notificationType\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"USER_REQUEST_NOTIFY_USER\",\r\n fieldName: \"notifyUser\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"USER_REQUEST_REPORT_CODE\",\r\n fieldName: \"reportCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"USER_REQUEST_REPORT_PARAMETERS\",\r\n fieldName: \"reportParameters\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"USER_REQUEST_REQUEST_TYPE\",\r\n fieldName: \"requestType\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"USER_REQUEST_STATUS\",\r\n fieldName: \"status\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"USER_REQUEST_STATUS_MESSAGE\",\r\n fieldName: \"statusMessage\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"USER_REQUEST_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"USER_REQUEST_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"USER_REQUEST_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default UserRequestGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst WidgetGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/widget/all\",\r\n deleteById: \"api/v1/admin/widget\",\r\n save: \"api/v1/admin/widget\",\r\n findById: \"api/v1/admin/widget\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_DATA_QUERY_ID\",\r\n fieldName: \"dataQueryId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_HEIGHT\",\r\n fieldName: \"height\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_HORIZONTAL_AXIS_FIELD\",\r\n fieldName: \"horizontalAxisField\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_HORIZONTAL_AXIS_LABEL\",\r\n fieldName: \"horizontalAxisLabel\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_ICON\",\r\n fieldName: \"icon\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_SERIES_KEYS\",\r\n fieldName: \"seriesKeys\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_TITLE\",\r\n fieldName: \"title\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_VERTICAL_AXIS_FIELD\",\r\n fieldName: \"verticalAxisField\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_VERTICAL_AXIS_LABEL\",\r\n fieldName: \"verticalAxisLabel\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_WIDGET_DESCRIPTION\",\r\n fieldName: \"widgetDescription\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_WIDGET_NAME\",\r\n fieldName: \"widgetName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_WIDGET_TYPE\",\r\n fieldName: \"widgetType\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_WIDTH\",\r\n fieldName: \"width\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"WIDGET_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"WIDGET_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"WIDGET_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default WidgetGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst WorkflowDocumentGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/workflowdocument/all\",\r\n deleteById: \"api/v1/admin/workflowdocument\",\r\n save: \"api/v1/admin/workflowdocument\",\r\n findById: \"api/v1/admin/workflowdocument\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_APP_NOTIFICATION_ICON\",\r\n fieldName: \"appNotificationIcon\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_APP_NOTIFICATION_STYLE\",\r\n fieldName: \"appNotificationStyle\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_APP_VIEW_ROUTE\",\r\n fieldName: \"appViewRoute\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_DOCUMENT_CODE\",\r\n fieldName: \"documentCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_DOCUMENT_CON_ID\",\r\n fieldName: \"documentConId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_DOCUMENT_DATABASE_NAME\",\r\n fieldName: \"documentDatabaseName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_DOCUMENT_DATABASE_TABLE\",\r\n fieldName: \"documentDatabaseTable\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_DOCUMENT_ID_FIELD\",\r\n fieldName: \"documentIdField\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_DOCUMENT_NAME\",\r\n fieldName: \"documentName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_DOCUMENT_NUMBER_FIELD\",\r\n fieldName: \"documentNumberField\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_DOCUMENT_REPORT_ID\",\r\n fieldName: \"documentReportId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_DOCUMENT_STATUS_FIELD\",\r\n fieldName: \"documentStatusField\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_APPROVAL_ALLOWED\",\r\n fieldName: \"mailApprovalAllowed\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ORG_CODE\",\r\n fieldName: \"orgCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_USE_SYSTEM_CON\",\r\n fieldName: \"useSystemCon\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"WORKFLOW_DOCUMENT_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"WORKFLOW_DOCUMENT_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"WORKFLOW_DOCUMENT_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default WorkflowDocumentGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst WorkflowDocumentActionGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/workflowdocumentaction/all\",\r\n deleteById: \"api/v1/admin/workflowdocumentaction\",\r\n save: \"api/v1/admin/workflowdocumentaction\",\r\n findById: \"api/v1/admin/workflowdocumentaction\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_DOCUMENT_ACTION_CODE\",\r\n fieldName: \"documentActionCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_DOCUMENT_ACTION_NAME\",\r\n fieldName: \"documentActionName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_NEXT_DOCUMENT_STATUS_ID\",\r\n fieldName: \"nextDocumentStatusId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_POST_ACTION_ENDPOINT\",\r\n fieldName: \"postActionEndpoint\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_PRE_ACTION_ENDPOINT\",\r\n fieldName: \"preActionEndpoint\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_REQUIRE_COMMENT\",\r\n fieldName: \"requireComment\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_WORKFLOW_DOCUMENT_ID\",\r\n fieldName: \"workflowDocumentId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"WORKFLOW_DOCUMENT_ACTION_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"WORKFLOW_DOCUMENT_ACTION_EDIT\",\r\n }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"WORKFLOW_DOCUMENT_ACTION_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default WorkflowDocumentActionGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst WorkflowDocumentActionHistoryGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/workflowdocumentactionhistory/all\",\r\n deleteById: \"api/v1/admin/workflowdocumentactionhistory\",\r\n save: \"api/v1/admin/workflowdocumentactionhistory\",\r\n findById: \"api/v1/admin/workflowdocumentactionhistory\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_HISTORY_ACTION_BY\",\r\n fieldName: \"actionBy\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_HISTORY_ACTION_COMMENT\",\r\n fieldName: \"actionComment\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_HISTORY_ACTION_METHOD\",\r\n fieldName: \"actionMethod\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_HISTORY_ACTION_TIME\",\r\n fieldName: \"actionTime\",\r\n required: false,\r\n fieldType: \"datetime\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_HISTORY_DOCUMENT_ACTION_ID\",\r\n fieldName: \"documentActionId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_HISTORY_DOCUMENT_REF_ID\",\r\n fieldName: \"documentRefId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_HISTORY_WORKFLOW_DOCUMENT_ID\",\r\n fieldName: \"workflowDocumentId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"WORKFLOW_DOCUMENT_ACTION_HISTORY_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"WORKFLOW_DOCUMENT_ACTION_HISTORY_EDIT\",\r\n }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"WORKFLOW_DOCUMENT_ACTION_HISTORY_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default WorkflowDocumentActionHistoryGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst WorkflowDocumentActionMailGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/workflowdocumentactionmail/all\",\r\n deleteById: \"api/v1/admin/workflowdocumentactionmail\",\r\n save: \"api/v1/admin/workflowdocumentactionmail\",\r\n findById: \"api/v1/admin/workflowdocumentactionmail\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_MAIL_DOCUMENT_ACTION_ID\",\r\n fieldName: \"documentActionId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_MAIL_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_MAIL_MAIL_TEMPLATE_ID\",\r\n fieldName: \"mailTemplateId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"WORKFLOW_DOCUMENT_ACTION_MAIL_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"WORKFLOW_DOCUMENT_ACTION_MAIL_EDIT\",\r\n }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"WORKFLOW_DOCUMENT_ACTION_MAIL_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default WorkflowDocumentActionMailGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst WorkflowDocumentMailLogGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/workflowdocumentmaillog/all\",\r\n deleteById: \"api/v1/admin/workflowdocumentmaillog\",\r\n save: \"api/v1/admin/workflowdocumentmaillog\",\r\n findById: \"api/v1/admin/workflowdocumentmaillog\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_GRAPH_API_MSG_ID\",\r\n fieldName: \"graphApiMsgId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_IS_PROCESSED\",\r\n fieldName: \"isProcessed\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_MAIL_ACTION_CODE\",\r\n fieldName: \"mailActionCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_MAIL_BODY_CONTENT\",\r\n fieldName: \"mailBodyContent\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_MAIL_FROM\",\r\n fieldName: \"mailFrom\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_MAIL_SUBJECT\",\r\n fieldName: \"mailSubject\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_PROCESS_MESSAGE\",\r\n fieldName: \"processMessage\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_PROCESS_TIME\",\r\n fieldName: \"processTime\",\r\n required: false,\r\n fieldType: \"datetime\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_REF_DOC_ID\",\r\n fieldName: \"refDocId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_WORKFLOW_DOCUMENT_ID\",\r\n fieldName: \"workflowDocumentId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"WORKFLOW_DOCUMENT_MAIL_LOG_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"WORKFLOW_DOCUMENT_MAIL_LOG_EDIT\",\r\n }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"WORKFLOW_DOCUMENT_MAIL_LOG_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default WorkflowDocumentMailLogGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst WorkflowDocumentStatusGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/workflowdocumentstatus/all\",\r\n deleteById: \"api/v1/admin/workflowdocumentstatus\",\r\n save: \"api/v1/admin/workflowdocumentstatus\",\r\n findById: \"api/v1/admin/workflowdocumentstatus\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_STATUS_DOCUMENT_STATUS_CODE\",\r\n fieldName: \"documentStatusCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_STATUS_DOCUMENT_STATUS_NAME\",\r\n fieldName: \"documentStatusName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_STATUS_DOCUMENT_STATUS_ORDER\",\r\n fieldName: \"documentStatusOrder\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_STATUS_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_STATUS_IS_ZERO_STATE\",\r\n fieldName: \"isZeroState\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_STATUS_NEXT_ACTION_TAKERS_QUERY_ID\",\r\n fieldName: \"nextActionTakersQueryId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_STATUS_NEXT_ACTIONS_QUERY_ID\",\r\n fieldName: \"nextActionsQueryId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_STATUS_WORKFLOW_DOCUMENT_ID\",\r\n fieldName: \"workflowDocumentId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"WORKFLOW_DOCUMENT_STATUS_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"WORKFLOW_DOCUMENT_STATUS_EDIT\",\r\n }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"WORKFLOW_DOCUMENT_STATUS_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default WorkflowDocumentStatusGrid;\r\n","import { Box } from \"@mui/material\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { CacheProvider } from \"@emotion/react\";\r\nimport { Route, Routes } from \"react-router-dom\";\r\nimport { RootState } from \"../redux/store\";\r\nimport { cacheLtr, cacheRtl } from \"../components/common/LayoutHandlers\";\r\nimport { SYSTEM_ROUTES } from \"../routes\";\r\nimport { SystemRoute } from \"../routes/types\";\r\n\r\nconst MainContent: React.FC = () => {\r\n const AppLayoutState = useSelector((state: RootState) => state.AppLayout);\r\n const AppInfo = useSelector((state: RootState) => state.AppInfo.value);\r\n const businessRoutes = useSelector(\r\n (state: RootState) => state.AppInfo.value.businessRoutes\r\n );\r\n return (\r\n <CacheProvider\r\n value={AppLayoutState.appDirection === \"ltr\" ? cacheLtr : cacheRtl}\r\n >\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n // alignItems: \"center\",\r\n justifyContent: \"flex-start\",\r\n flex: 1,\r\n overflow: \"hidden\",\r\n padding: 3,\r\n }}\r\n >\r\n <Routes>\r\n {AppInfo.enableAdministrationModule\r\n ? SYSTEM_ROUTES.map((route: SystemRoute, index) => {\r\n return (\r\n <Route\r\n key={\"adm\" + index}\r\n path={route.path}\r\n Component={route.component}\r\n />\r\n );\r\n })\r\n : null}\r\n {businessRoutes.map((route: SystemRoute, index) => {\r\n return (\r\n <Route\r\n key={\"bs\" + index}\r\n path={route.path}\r\n Component={route.component}\r\n />\r\n );\r\n })}\r\n </Routes>\r\n </Box>\r\n </CacheProvider>\r\n );\r\n};\r\n\r\nexport default MainContent;\r\n","import { styled } from \"@mui/material/styles\";\r\nimport { grey } from \"@mui/material/colors\";\r\nimport SwipeableDrawer from \"@mui/material/SwipeableDrawer\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Box, Typography } from \"@mui/material\";\r\nimport { RootState } from \"../redux/store\";\r\nimport { AppLayoutActions } from \"../redux/features/common/AppLayoutSlice\";\r\nimport NavigationTree from \"./NavigationTree\";\r\n\r\nconst drawerBleeding = 56;\r\n\r\ninterface Props {\r\n /**\r\n * Injected by the documentation to work in an iframe.\r\n * You won't need it on your project.\r\n */\r\n window?: () => Window;\r\n}\r\n\r\nconst Puller = styled(\"div\")(({ theme }) => ({\r\n width: 30,\r\n height: 6,\r\n margin: 10,\r\n backgroundColor: grey[300],\r\n borderRadius: 3,\r\n // position: \"absolute\",\r\n top: 8,\r\n // left: \"calc(50% - 15px)\",\r\n ...theme.applyStyles(\"dark\", {\r\n backgroundColor: grey[900],\r\n }),\r\n}));\r\n\r\nexport default function MobileDrawer(props: Props) {\r\n const { window } = props;\r\n const AppLayout = useSelector((state: RootState) => state.AppLayout);\r\n const AppInfo = useSelector((state: RootState) => state.AppInfo.value);\r\n const dispatch = useDispatch();\r\n const toggleDrawer = (newState: boolean) => {\r\n dispatch(AppLayoutActions.setSideBarState(newState));\r\n };\r\n // This is used only for the example\r\n const container =\r\n window !== undefined ? () => window().document.body : undefined;\r\n\r\n return (\r\n <SwipeableDrawer\r\n container={container}\r\n anchor=\"bottom\"\r\n open={AppLayout.sideBarOpened}\r\n onClose={() => {\r\n toggleDrawer(false);\r\n }}\r\n onOpen={() => {\r\n toggleDrawer(true);\r\n }}\r\n swipeAreaWidth={drawerBleeding}\r\n disableSwipeToOpen={false}\r\n ModalProps={{\r\n keepMounted: true,\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n height: \"100%\",\r\n overflow: \"hidden\",\r\n }}\r\n >\r\n <Puller />\r\n <Box\r\n sx={{\r\n flexGrow: 1,\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n width: \"99%\",\r\n overflowY: \"auto\",\r\n }}\r\n >\r\n <NavigationTree />\r\n </Box>\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-around\",\r\n marginTop: 1,\r\n width: \"100%\",\r\n }}\r\n >\r\n <Typography sx={{ fontSize: 12 }} color=\"textDisabled\">\r\n {AppInfo.appName}\r\n </Typography>\r\n <Typography sx={{ fontSize: 12 }} color=\"textDisabled\">\r\n V.{AppInfo.appVersion}\r\n </Typography>\r\n </Box>\r\n </Box>\r\n </SwipeableDrawer>\r\n );\r\n}\r\n","import { useSelector } from \"react-redux\";\r\nimport { RootState } from \"../../redux/store\";\r\nimport { Backdrop, CircularProgress } from \"@mui/material\";\r\n\r\nconst LoadingMask: React.FC = () => {\r\n const loadingMask = useSelector(\r\n (state: RootState) => state.loadingMask.value\r\n );\r\n return (\r\n <Backdrop\r\n sx={{ color: \"#fff\", zIndex: (theme) => theme.zIndex.drawer + 1 }}\r\n open={loadingMask.isOpened}\r\n >\r\n <CircularProgress color=\"inherit\" />\r\n </Backdrop>\r\n );\r\n};\r\n\r\nexport default LoadingMask;\r\n","import {\r\n Box,\r\n Button,\r\n CircularProgress,\r\n createTheme,\r\n Paper,\r\n TextField,\r\n Typography,\r\n} from \"@mui/material\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { ThemeProvider } from \"@emotion/react\";\r\nimport { useEffect, useState } from \"react\";\r\nimport axios from \"axios\";\r\nimport { toast } from \"react-toastify\";\r\nimport { RootState } from \"../../redux/store\";\r\nimport { UserSessionActions } from \"../../redux/features/common/UserSessionSlice\";\r\n\r\nconst Login: React.FC = () => {\r\n const appInfo = useSelector((state: RootState) => state.AppInfo.value);\r\n const [username, setUsername] = useState(\"\");\r\n const [password, setPassword] = useState(\"\");\r\n const [isLoginInProcess, setIsLoginInProcess] = useState(false);\r\n const UserSessionState = useSelector(\r\n (state: RootState) => state.UserSession.value\r\n );\r\n const dispatch = useDispatch();\r\n const handleLogin = async () => {\r\n if (username == null || username == \"\") {\r\n toast.error(\"username is required to proceed\");\r\n return;\r\n }\r\n if (password == null || password == \"\") {\r\n toast.error(\"password is required to proceed\");\r\n return;\r\n }\r\n setIsLoginInProcess(true);\r\n let response: any = null;\r\n try {\r\n response = await axios.post(\r\n `${appInfo.apiBaseUrl}/api/auth/login`,\r\n {\r\n username,\r\n password,\r\n },\r\n {\r\n withCredentials: true,\r\n }\r\n );\r\n if (response.data != null && response.data !== \"\") {\r\n setIsLoginInProcess(false);\r\n const UserSession = {\r\n isAuthenticated: true,\r\n authorities: response.data.authorities,\r\n userProfile: response.data,\r\n };\r\n dispatch(UserSessionActions.setAuthenticated(UserSession));\r\n }\r\n } catch (e: any) {\r\n setIsLoginInProcess(false);\r\n toast.error(\r\n e?.response?.data ||\r\n \"failed to authenticate, contact your administrator\"\r\n );\r\n }\r\n };\r\n const userSession = useSelector(\r\n (state: RootState) => state.UserSession.value\r\n );\r\n const loginTheme = createTheme({\r\n components: {\r\n MuiCssBaseline: {\r\n styleOverrides: `\r\n /* Custom Scrollbar */\r\n * {\r\n scrollbar-width: thin;\r\n scrollbar-color: ${appInfo.appTheme.dark.primaryColor} #121212;\r\n }\r\n \r\n /* Webkit Browsers */\r\n *::-webkit-scrollbar {\r\n width: 12px;\r\n height: 10px;\r\n } \r\n `,\r\n },\r\n },\r\n palette: {\r\n mode: \"dark\",\r\n primary: {\r\n main: appInfo.appTheme.dark.primaryColor,\r\n },\r\n secondary: {\r\n main: appInfo.appTheme.dark.secondaryColor,\r\n },\r\n },\r\n });\r\n const checkUserSession = async () => {\r\n if (appInfo?.apiBaseUrl) {\r\n if (userSession.isAuthenticated == null) {\r\n try {\r\n let response = await axios.get(\r\n `${appInfo.apiBaseUrl}/api/auth/userInfo`,\r\n {\r\n withCredentials: true,\r\n }\r\n );\r\n if (response != null && response.data != null) {\r\n const UserSession = {\r\n isAuthenticated: true,\r\n authorities: response.data.authorities,\r\n userProfile: response.data,\r\n };\r\n dispatch(UserSessionActions.setAuthenticated(UserSession));\r\n } else {\r\n dispatch(UserSessionActions.setUnAuthenticated());\r\n }\r\n } catch (error) {\r\n dispatch(UserSessionActions.setUnAuthenticated());\r\n }\r\n }\r\n }\r\n };\r\n useEffect(() => {\r\n checkUserSession();\r\n }, [appInfo]);\r\n return (\r\n <ThemeProvider theme={loginTheme}>\r\n <Paper\r\n sx={{\r\n display: \"flex\",\r\n height: \"100vh\",\r\n width: \"100%\",\r\n borderRadius: 0,\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n {UserSessionState.isAuthenticated == false ? (\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n <img src={appInfo?.appLogo} width={150} height={150} />\r\n <Typography sx={{ m: 1 }} variant=\"h4\" color=\"textSecondary\">\r\n {appInfo?.appName}\r\n </Typography>\r\n <Typography\r\n sx={{\r\n paddingRight: 1,\r\n width: \"100%\",\r\n textAlign: \"right\",\r\n fontSize: 10,\r\n }}\r\n variant=\"caption\"\r\n color=\"textSecondary\"\r\n >\r\n V.{appInfo.appVersion}\r\n </Typography>\r\n <TextField\r\n label=\"username\"\r\n sx={{ width: 300, m: 1 }}\r\n value={username}\r\n onChange={(event) => {\r\n setUsername(event.target.value);\r\n }}\r\n onKeyDown={(event) => {\r\n if (event.key === \"Enter\") {\r\n handleLogin();\r\n }\r\n }}\r\n />\r\n <TextField\r\n label=\"password\"\r\n sx={{ width: 300, m: 1 }}\r\n value={password}\r\n type=\"password\"\r\n onChange={(event) => {\r\n setPassword(event.target.value);\r\n }}\r\n onKeyDown={(event) => {\r\n if (event.key === \"Enter\") {\r\n handleLogin();\r\n }\r\n }}\r\n />\r\n <Button\r\n loading={isLoginInProcess}\r\n onClick={handleLogin}\r\n variant=\"contained\"\r\n color=\"primary\"\r\n sx={{ m: 1 }}\r\n >\r\n login\r\n </Button>\r\n </Box>\r\n ) : (\r\n <>\r\n <CircularProgress sx={{ marginRight: 1 }} />\r\n <div>You will be redirected shortly ... please wait</div>\r\n </>\r\n )}\r\n </Paper>\r\n </ThemeProvider>\r\n );\r\n};\r\n\r\nexport default Login;\r\n","import { styled, useTheme } from \"@mui/material/styles\";\r\nimport CssBaseline from \"@mui/material/CssBaseline\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport TopBar from \"./TopBar\";\r\nimport { DrawerHeader } from \"./DrawerHeader\";\r\nimport SideBar from \"./SideBar\";\r\nimport MainContent from \"./MainContent\";\r\nimport { BrowserRouter } from \"react-router-dom\";\r\nimport MobileDrawer from \"./MobileDrawer\";\r\nimport { ToastContainer } from \"react-toastify\";\r\nimport { useEffect } from \"react\";\r\nimport { RootState } from \"../redux/store\";\r\nimport useLoadingMask from \"../hooks/useLoadingMask\";\r\nimport { useIsMobile } from \"../hooks/UseMobile\";\r\nimport useSession from \"../hooks/UseSession\";\r\nimport useAxios from \"../hooks/useAxios\";\r\nimport { DRAWER_WIDTH } from \"../redux/features/common/AppLayoutSlice\";\r\nimport { UserSessionProps } from \"../redux/features/common/UserSessionSlice\";\r\nimport LoadingMask from \"../components/common/LoadingMask\";\r\nimport Login from \"../components/common/Login\";\r\nimport { setStoreData } from \"../redux/features/common/CommonStoreSlice\";\r\n\r\nconst Main = styled(\"main\", {\r\n shouldForwardProp: (prop) => prop !== \"open\",\r\n})<{\r\n open?: boolean;\r\n}>(({ theme: any, open }) => {\r\n const AppLayout = useSelector((state: RootState) => state.AppLayout);\r\n const dispatch = useDispatch();\r\n const { show, hide } = useLoadingMask();\r\n const CommonStores = useSelector((state: RootState) => state.commonStores);\r\n const theme = useTheme();\r\n const isMobile = useIsMobile();\r\n const { isUserAuthorized } = useSession();\r\n\r\n // loadCommonStores\r\n const { handleGetRequest } = useAxios();\r\n const loadCommonStores = async () => {\r\n show(\"Loading ... please wait\");\r\n let storeKeys = Object.keys(CommonStores);\r\n for (let storeKey of storeKeys) {\r\n if (\r\n (CommonStores[storeKey]?.authority === undefined ||\r\n CommonStores[storeKey]?.authority === null ||\r\n isUserAuthorized(CommonStores[storeKey]?.authority)) &&\r\n CommonStores[storeKey]?.url != \"\" &&\r\n CommonStores[storeKey].autoLoad === true\r\n ) {\r\n await handleGetRequest({\r\n endPointURI: CommonStores[storeKey].url,\r\n showMask: false,\r\n successCallBkFn: (response) => {\r\n dispatch(setStoreData({ storeKey, data: response.data }));\r\n },\r\n failureCallBkFn: () => {\r\n dispatch(setStoreData({ storeKey, data: [] }));\r\n },\r\n });\r\n }\r\n }\r\n hide();\r\n };\r\n\r\n useEffect(() => {\r\n loadCommonStores();\r\n }, []);\r\n\r\n return {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n overflow: \"hidden\",\r\n flexGrow: 1,\r\n width: !isMobile && open ? `calc(100% - ${DRAWER_WIDTH}px)` : \"100%\",\r\n direction: AppLayout.appDirection,\r\n justifyContent: \"flex-start\",\r\n transition:\r\n open === true\r\n ? theme.transitions.create([\"margin\", \"width\"], {\r\n easing: theme.transitions.easing.easeOut,\r\n duration: theme.transitions.duration.enteringScreen,\r\n })\r\n : theme.transitions.create([\"margin\", \"width\"], {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.leavingScreen,\r\n }),\r\n marginLeft:\r\n !isMobile && AppLayout.appDirection === \"ltr\" && open === true\r\n ? DRAWER_WIDTH + \"px\"\r\n : 0,\r\n marginRight:\r\n !isMobile && AppLayout.appDirection === \"rtl\" && open === true\r\n ? DRAWER_WIDTH + \"px\"\r\n : 0,\r\n };\r\n});\r\n\r\nexport default function Layout() {\r\n const AppLayoutState = useSelector((state: RootState) => state.AppLayout);\r\n const isMobile = useIsMobile();\r\n const UserSession: UserSessionProps = useSelector(\r\n (state: RootState) => state.UserSession\r\n );\r\n return (\r\n <BrowserRouter>\r\n <ToastContainer draggable={true} position=\"bottom-center\" />\r\n <LoadingMask />\r\n {UserSession.value.isAuthenticated === true ? (\r\n <Main open={AppLayoutState.sideBarOpened}>\r\n <CssBaseline />\r\n <TopBar />\r\n {!isMobile ? <SideBar /> : null}\r\n {isMobile ? <MobileDrawer /> : null}\r\n <DrawerHeader />\r\n <MainContent />\r\n </Main>\r\n ) : (\r\n <Login />\r\n )}\r\n </BrowserRouter>\r\n );\r\n}\r\n","import { useDispatch, useSelector } from \"react-redux\";\r\nimport { createTheme, ThemeOptions } from \"@mui/material\";\r\nimport { ThemeProvider } from \"@emotion/react\";\r\nimport React, { useEffect } from \"react\";\r\nimport { RootState } from \"../redux/store\";\r\nimport Layout from \"../layout/Layout\";\r\nimport { AppInfo, AppInfoActions } from \"../redux/features/common/AppInfoSlice\";\r\nimport { LicenseInfo } from \"@mui/x-license\";\r\n\r\nconst App: React.FC<AppInfo> = (props: AppInfo) => {\r\n LicenseInfo.setLicenseKey(props.muiPremiumKey);\r\n const LightThemeOptions: ThemeOptions = {\r\n components: {\r\n MuiCssBaseline: {\r\n styleOverrides: `\r\n /* Custom Scrollbar */\r\n * {\r\n scrollbar-width: thin;\r\n scrollbar-color: ${props.appTheme.light.primaryColor} #ffffff;\r\n }\r\n \r\n /* Webkit Browsers */\r\n *::-webkit-scrollbar {\r\n width: 12px;\r\n height: 10px;\r\n } \r\n `,\r\n },\r\n },\r\n palette: {\r\n mode: \"light\",\r\n primary: {\r\n main: props.appTheme.light.primaryColor,\r\n },\r\n secondary: {\r\n main: props.appTheme.light.secondaryColor,\r\n },\r\n background: {\r\n default: \"#f5f5f5\",\r\n paper: \"#f5f5f5\",\r\n },\r\n },\r\n };\r\n const DarkThemeOptions: ThemeOptions = {\r\n components: {\r\n MuiCssBaseline: {\r\n styleOverrides: `\r\n /* Custom Scrollbar */\r\n * {\r\n scrollbar-width: thin;\r\n scrollbar-color: ${props.appTheme.dark.primaryColor} #121212;\r\n }\r\n \r\n /* Webkit Browsers */\r\n *::-webkit-scrollbar {\r\n width: 12px;\r\n height: 10px;\r\n } \r\n `,\r\n },\r\n },\r\n palette: {\r\n mode: \"dark\",\r\n primary: {\r\n main: props.appTheme.dark.primaryColor,\r\n },\r\n secondary: {\r\n main: props.appTheme.dark.secondaryColor,\r\n },\r\n },\r\n };\r\n const dispatch = useDispatch();\r\n const AppLayoutState = useSelector((state: RootState) => state.AppLayout);\r\n let themeOptions = { ...LightThemeOptions };\r\n if (AppLayoutState.themeMode === \"dark\") {\r\n themeOptions = { ...DarkThemeOptions };\r\n }\r\n const theme = createTheme({\r\n direction: AppLayoutState.appDirection,\r\n ...themeOptions,\r\n });\r\n useEffect(() => {\r\n document.title = props.documentTitle;\r\n dispatch(AppInfoActions.setAppInfo(props));\r\n }, []);\r\n return (\r\n <ThemeProvider theme={theme}>\r\n <Layout />\r\n </ThemeProvider>\r\n );\r\n};\r\n\r\nexport default App;\r\n","import { CommonStoresInterface } from \"../common/CommonStoreSlice\";\r\n\r\nexport const ADMINISTRATION_STORES: CommonStoresInterface = {\r\n SystemDataSourceType: {\r\n autoLoad: false,\r\n data: [{ value: \"Mysql\" }, { value: \"Oracle\" }, { value: \"DB2\" }],\r\n url: \"\",\r\n },\r\n SystemParameterTypes: {\r\n autoLoad: false,\r\n url: \"\",\r\n data: [\r\n { value: \"datetime\" },\r\n { value: \"date\" },\r\n { value: \"text\" },\r\n { value: \"number\" },\r\n { value: \"droplist\" },\r\n ],\r\n },\r\n SystemReportTypes: {\r\n autoLoad: false,\r\n url: \"\",\r\n data: [{ value: \"Excel\" }, { value: \"Jasper\" }, { value: \"Blueprint\" }],\r\n },\r\n SystemWidgetTypes: {\r\n autoLoad: false,\r\n url: \"\",\r\n data: [\r\n { name: \"LineChart\" },\r\n { name: \"ColumnChart\" },\r\n { name: \"PieChart\" },\r\n { name: \"Card\" },\r\n { name: \"CircularProgress\" },\r\n { name: \"LinearProgress\" },\r\n ],\r\n },\r\n SystemMailRecipientTypes: {\r\n autoLoad: false,\r\n url: \"\",\r\n data: [{ name: \"To\" }, { name: \"CC\" }],\r\n },\r\n SystemDataSources: {\r\n autoLoad: true,\r\n data: [],\r\n authority: \"DEVELOPMENT_ADMIN\",\r\n url: \"api/v1/admin/datasourceconnection/all\",\r\n },\r\n SystemDataQueries: {\r\n autoLoad: true,\r\n data: [],\r\n authority: \"DEVELOPMENT_ADMIN\",\r\n url: \"api/v1/admin/dataquery/all\",\r\n },\r\n SystemEntityParameters: {\r\n autoLoad: true,\r\n data: [],\r\n authority: \"DEVELOPMENT_ADMIN\",\r\n url: \"api/v1/admin/entityparameter/all\",\r\n },\r\n SystemAuthorities: {\r\n autoLoad: true,\r\n data: [],\r\n authority: \"DEVELOPMENT_ADMIN\",\r\n url: \"api/v1/admin/authority/all\",\r\n },\r\n SystemRoles: {\r\n autoLoad: true,\r\n data: [],\r\n authority: \"DEVELOPMENT_ADMIN\",\r\n url: \"api/v1/admin/role/all\",\r\n },\r\n};\r\n","import { Provider } from \"react-redux\";\r\nimport { addReducer, store } from \"../redux/store\";\r\nimport { library } from \"@fortawesome/fontawesome-svg-core\";\r\nimport { fab } from \"@fortawesome/free-brands-svg-icons\";\r\nimport { far } from \"@fortawesome/free-regular-svg-icons\";\r\nimport { fas } from \"@fortawesome/free-solid-svg-icons\";\r\nimport \"../styles/index.css\";\r\nimport \"react-toastify/dist/ReactToastify.css\";\r\nimport App from \"./App\";\r\nimport { AppInfo } from \"../redux/features/common/AppInfoSlice\";\r\nimport { commonStoresInitialState } from \"../redux/features/common/CommonStoreSlice\";\r\nimport { ADMINISTRATION_STORES } from \"../redux/features/administration/AdministrationStoresMetaData\";\r\n\r\nlibrary.add(fab);\r\nlibrary.add(far);\r\nlibrary.add(fas);\r\n\r\nexport const BaseApp: React.FC<AppInfo> = (props) => {\r\n if (props.enableAdministrationModule) {\r\n for (let adminStoreKey of Object.keys(ADMINISTRATION_STORES)) {\r\n commonStoresInitialState[adminStoreKey] =\r\n ADMINISTRATION_STORES[adminStoreKey];\r\n }\r\n }\r\n if (props?.businessCommonStoresMetaData) {\r\n for (let businessStoreKey of Object.keys(\r\n props.businessCommonStoresMetaData\r\n )) {\r\n commonStoresInitialState[businessStoreKey] =\r\n props.businessCommonStoresMetaData[businessStoreKey];\r\n }\r\n }\r\n if (props?.businessReduxReducers) {\r\n for (let businessReducerKey of Object.keys(props.businessReduxReducers)) {\r\n addReducer(\r\n businessReducerKey,\r\n props.businessReduxReducers[businessReducerKey]\r\n );\r\n }\r\n }\r\n return (\r\n <Provider store={store}>\r\n <App {...props} />\r\n </Provider>\r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport List from \"@mui/material/List\";\r\nimport Card from \"@mui/material/Card\";\r\nimport CardHeader from \"@mui/material/CardHeader\";\r\nimport ListItem from \"@mui/material/ListItem\";\r\nimport ListItemText from \"@mui/material/ListItemText\";\r\nimport ListItemIcon from \"@mui/material/ListItemIcon\";\r\nimport Checkbox from \"@mui/material/Checkbox\";\r\nimport Button from \"@mui/material/Button\";\r\nimport Divider from \"@mui/material/Divider\";\r\nimport { Box, Grid2 } from \"@mui/material\";\r\nimport TemplateTextField from \"./DataEntryTemplates/TemplateDataForm/FormFields/TemplateTextField\";\r\n\r\nfunction not(a, b) {\r\n return a.filter((value) => b.indexOf(value) === -1);\r\n}\r\n\r\nfunction intersection(a, b) {\r\n return a.filter((value) => b.indexOf(value) !== -1);\r\n}\r\n\r\nfunction union(a, b) {\r\n return [...a, ...not(b, a)];\r\n}\r\n\r\nexport type TransferListProps = {\r\n valueField: string;\r\n displayField: string;\r\n options: Array<any>;\r\n selectedOptions: Array<any>;\r\n setSelection: any;\r\n};\r\n\r\nconst TransferList: React.FC<TransferListProps> = ({\r\n valueField = \"id\",\r\n displayField = \"name\",\r\n options = [],\r\n selectedOptions = [],\r\n setSelection,\r\n}) => {\r\n const [checked, setChecked] = React.useState([]);\r\n const [left, setLeft] = React.useState(options);\r\n const [right, setRight] = React.useState(selectedOptions);\r\n\r\n const [leftFilterValue, setLeftFilterValue] = React.useState<string>(\"\");\r\n const [rightFilterValue, setRightFilterValue] = React.useState<string>(\"\");\r\n\r\n const leftChecked = intersection(checked, left);\r\n const rightChecked = intersection(checked, right);\r\n\r\n const handleToggle = (value) => () => {\r\n const currentIndex = checked.indexOf(value);\r\n const newChecked = [...checked];\r\n\r\n if (currentIndex === -1) {\r\n newChecked.push(value);\r\n } else {\r\n newChecked.splice(currentIndex, 1);\r\n }\r\n\r\n setChecked(newChecked);\r\n };\r\n\r\n const numberOfChecked = (items) => intersection(checked, items).length;\r\n\r\n const handleToggleAll = (items) => () => {\r\n if (numberOfChecked(items) === items.length) {\r\n setChecked(not(checked, items));\r\n } else {\r\n setChecked(union(checked, items));\r\n }\r\n };\r\n\r\n const handleCheckedRight = () => {\r\n setRight((oldState) => {\r\n let newState = right.concat(leftChecked);\r\n setSelection(newState);\r\n return newState;\r\n });\r\n setLeft(not(left, leftChecked));\r\n setChecked(not(checked, leftChecked));\r\n };\r\n\r\n const handleCheckedLeft = () => {\r\n setLeft(left.concat(rightChecked));\r\n setRight((oldState) => {\r\n let newState = not(right, rightChecked);\r\n setSelection(newState);\r\n return newState;\r\n });\r\n setChecked(not(checked, rightChecked));\r\n };\r\n\r\n const customList = (\r\n title: string,\r\n unfilteredItems: Array<any>,\r\n side: \"left\" | \"right\"\r\n ) => {\r\n const items = unfilteredItems.filter((option: any) => {\r\n if (option[displayField]) {\r\n const value: string = option[displayField];\r\n if (\r\n side === \"left\" &&\r\n value\r\n .toLocaleLowerCase()\r\n .includes(leftFilterValue.toLocaleLowerCase())\r\n ) {\r\n return true;\r\n } else if (\r\n side === \"right\" &&\r\n value\r\n .toLocaleLowerCase()\r\n .includes(rightFilterValue.toLocaleLowerCase())\r\n ) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n });\r\n return (\r\n <Card sx={{ height: \"100%\" }}>\r\n <CardHeader\r\n sx={{ px: 2, py: 1 }}\r\n avatar={\r\n <Checkbox\r\n onClick={handleToggleAll(items)}\r\n checked={\r\n numberOfChecked(items) === items.length && items.length !== 0\r\n }\r\n indeterminate={\r\n numberOfChecked(items) !== items.length &&\r\n numberOfChecked(items) !== 0\r\n }\r\n disabled={items.length === 0}\r\n inputProps={{\r\n \"aria-label\": \"all items selected\",\r\n }}\r\n />\r\n }\r\n title={title}\r\n subheader={`${numberOfChecked(unfilteredItems)} / ${\r\n unfilteredItems.length\r\n } Selected`}\r\n />\r\n <Box sx={{ width: \"100%\", padding: 1 }}>\r\n <TemplateTextField\r\n fullWidth\r\n label=\"search\"\r\n value={side === \"left\" ? leftFilterValue : rightFilterValue}\r\n onChange={(event) => {\r\n if (side === \"left\") {\r\n setLeftFilterValue(event.target.value);\r\n } else {\r\n setRightFilterValue(event.target.value);\r\n }\r\n }}\r\n />\r\n </Box>\r\n <Divider />\r\n <List\r\n sx={{\r\n width: \"100%\",\r\n height: \"100%\",\r\n bgcolor: \"secondary\",\r\n overflow: \"auto\",\r\n }}\r\n dense\r\n component=\"div\"\r\n role=\"list\"\r\n >\r\n {items.map((value) => {\r\n const labelId = `transfer-list-all-item-${value[valueField]}-label`;\r\n\r\n return (\r\n <ListItem\r\n key={value[valueField]}\r\n role=\"listitem\"\r\n component=\"button\"\r\n onClick={handleToggle(value)}\r\n >\r\n <ListItemIcon>\r\n <Checkbox\r\n checked={checked.indexOf(value) !== -1}\r\n tabIndex={-1}\r\n disableRipple\r\n inputProps={{\r\n \"aria-labelledby\": labelId,\r\n }}\r\n />\r\n </ListItemIcon>\r\n <ListItemText\r\n id={value[valueField]}\r\n primary={value[displayField]}\r\n />\r\n </ListItem>\r\n );\r\n })}\r\n </List>\r\n </Card>\r\n );\r\n };\r\n return (\r\n <Grid2\r\n container\r\n spacing={2}\r\n sx={{\r\n flexGrow: 1,\r\n overflow: \"auto\",\r\n margin: 1,\r\n display: \"flex\",\r\n width: \"100%\",\r\n }}\r\n justifyContent=\"center\"\r\n alignItems=\"center\"\r\n >\r\n <Grid2 sx={{ height: \"100%\", flex: 1 }}>\r\n {customList(\"Available Items\", left, \"left\")}\r\n </Grid2>\r\n <Grid2>\r\n <Grid2 container direction=\"column\" alignItems=\"center\">\r\n <Button\r\n sx={{ my: 0.5 }}\r\n variant=\"outlined\"\r\n size=\"small\"\r\n onClick={handleCheckedRight}\r\n disabled={leftChecked.length === 0}\r\n aria-label=\"move selected right\"\r\n >\r\n >\r\n </Button>\r\n <Button\r\n sx={{ my: 0.5 }}\r\n variant=\"outlined\"\r\n size=\"small\"\r\n onClick={handleCheckedLeft}\r\n disabled={rightChecked.length === 0}\r\n aria-label=\"move selected left\"\r\n >\r\n <\r\n </Button>\r\n </Grid2>\r\n </Grid2>\r\n <Grid2 sx={{ height: \"100%\", flex: 1 }}>\r\n {customList(\"Currently Selected\", right, \"right\")}\r\n </Grid2>\r\n </Grid2>\r\n );\r\n};\r\n\r\nexport default TransferList;\r\n","import { PieChart } from \"@mui/x-charts/PieChart\";\r\nimport { WidgetProps } from \"../TemplateDashboard\";\r\n\r\nconst TemplatePieChart: React.FC<WidgetProps> = (props) => {\r\n // construct data object\r\n const chartData = props.data.map((record: any, index: any) => {\r\n return {\r\n id: index,\r\n value: record[props.valueField],\r\n label: record[props.labelField] + \"\",\r\n };\r\n });\r\n console.log(\"chartData\", chartData);\r\n return (\r\n <PieChart\r\n series={[\r\n {\r\n data: chartData,\r\n },\r\n ]}\r\n />\r\n );\r\n};\r\n\r\nexport default TemplatePieChart;\r\n","import { BarChart } from \"@mui/x-charts\";\r\nimport { WidgetProps } from \"../TemplateDashboard\";\r\n\r\nconst TemplateBarChart: React.FC<WidgetProps> = (props) => {\r\n return (\r\n <BarChart\r\n dataset={props.data}\r\n xAxis={[{ dataKey: props.valueField, scaleType: \"band\" }]}\r\n series={props.labelField?.split(\",\").map((labelField) => {\r\n return { dataKey: labelField, label: labelField };\r\n })}\r\n />\r\n );\r\n};\r\n\r\nexport default TemplateBarChart;\r\n","import { LineChart } from \"@mui/x-charts\";\r\nimport { WidgetProps } from \"../TemplateDashboard\";\r\n\r\nconst TemplateLineChart: React.FC<WidgetProps> = (props) => {\r\n return (\r\n <LineChart\r\n dataset={props.data}\r\n xAxis={[{ dataKey: props.valueField, scaleType: \"band\" }]}\r\n series={props.labelField?.split(\",\").map((labelField) => {\r\n return { dataKey: labelField, label: labelField };\r\n })}\r\n />\r\n );\r\n};\r\n\r\nexport default TemplateLineChart;\r\n","import { Gauge } from \"@mui/x-charts\";\r\nimport { SingleRecordWidgetProps } from \"../TemplateDashboard\";\r\nimport { Typography } from \"@mui/material\";\r\n\r\nconst TemplateGauge: React.FC<SingleRecordWidgetProps> = (props: any) => {\r\n return (\r\n <>\r\n <Typography sx={{ fontSize: 16, fontWeight: \"bold\" }}>\r\n {props.widgetTitle} - {props.record[props.labelField]}\r\n </Typography>\r\n <Gauge width={200} height={200} value={props.record[props.valueField]} />\r\n </>\r\n );\r\n};\r\n\r\nexport default TemplateGauge;\r\n","import { Box, Paper, Typography } from \"@mui/material\";\r\nimport { SingleRecordWidgetProps } from \"../TemplateDashboard\";\r\n\r\nconst TemplateDataCard: React.FC<SingleRecordWidgetProps> = (props: any) => {\r\n return (\r\n <Paper\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n height: 150,\r\n padding: 1,\r\n flexGrow: 1,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n width: \"100%\",\r\n justifyContent: \"space-evenly\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <Typography sx={{ fontSize: 16, fontWeight: \"bold\" }}>\r\n {props.widgetTitle}\r\n </Typography>\r\n </Box>\r\n <Box\r\n sx={{\r\n flex: 1,\r\n display: \"flex\",\r\n width: \"100%\",\r\n justifyContent: \"space-evenly\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n {/* <div>left</div> */}\r\n <div>{`${props.record[props.labelField]} : ${\r\n props.record[props.valueField]\r\n }`}</div>\r\n {/* <div>right</div> */}\r\n </Box>\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n width: \"100%\",\r\n justifyContent: \"space-evenly\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n {/* <div>left</div>\r\n <div>center</div>\r\n <div>right</div> */}\r\n </Box>\r\n </Paper>\r\n );\r\n};\r\n\r\nexport default TemplateDataCard;\r\n","import * as React from \"react\";\r\nimport LinearProgress, {\r\n LinearProgressProps,\r\n} from \"@mui/material/LinearProgress\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport Box from \"@mui/material/Box\";\r\nimport { SingleRecordWidgetProps } from \"../TemplateDashboard\";\r\n\r\nfunction LinearProgressWithLabel(\r\n props: LinearProgressProps & { value: number }\r\n) {\r\n return (\r\n <Box sx={{ display: \"flex\", alignItems: \"center\" }}>\r\n <Box sx={{ width: \"100%\", mr: 1 }}>\r\n <LinearProgress variant=\"determinate\" {...props} />\r\n </Box>\r\n <Box sx={{ minWidth: 35 }}>\r\n <Typography\r\n variant=\"body2\"\r\n sx={{ color: \"text.secondary\" }}\r\n >{`${Math.round(props.value)}%`}</Typography>\r\n </Box>\r\n </Box>\r\n );\r\n}\r\n\r\nconst TemplateLineProgress: React.FC<SingleRecordWidgetProps> = (\r\n props: any\r\n) => {\r\n return (\r\n <Box sx={{ width: \"100%\" }}>\r\n <Typography sx={{ fontSize: 16, fontWeight: \"bold\" }}>\r\n {props.widgetTitle} - {props.record[props.labelField]}\r\n </Typography>\r\n <LinearProgressWithLabel value={props.record[props.valueField]} />\r\n </Box>\r\n );\r\n};\r\n\r\nexport default TemplateLineProgress;\r\n","import Grid from \"@mui/material/Grid2\";\r\nimport TemplatePieChart from \"./charts/TemplatePieChart\";\r\nimport TemplateBarChart from \"./charts/TemplateBarChart\";\r\nimport TemplateLineChart from \"./charts/TemplateLineChart\";\r\nimport TemplateGauge from \"./charts/TemplateGauge\";\r\nimport TemplateDataCard from \"./charts/TemplateDataCard\";\r\nimport TemplateLineProgress from \"./charts/TemplateLineProgress\";\r\nimport { Typography } from \"@mui/material\";\r\n\r\ninterface WidgetContainerProps {\r\n children: React.ReactNode;\r\n widgetType: \"Line\" | \"Bar\" | \"Pie\" | \"Card\" | \"Gauge\" | \"Progress\";\r\n}\r\n\r\nexport interface WidgetProps {\r\n widgetTitle?: string;\r\n widgetType: \"Line\" | \"Bar\" | \"Pie\" | \"Card\" | \"Gauge\" | \"Progress\";\r\n data: any;\r\n valueField: string; //x-axis field in case of line/bar chart\r\n labelField: string; //y-axis field in case of line/bar chart, it can also be a comma separated string for multiple series\r\n}\r\n\r\nexport interface SingleRecordWidgetProps {\r\n widgetTitle?: string;\r\n record: object;\r\n valueField: string;\r\n labelField: string;\r\n}\r\n\r\nexport interface DashboardProps {\r\n dashboardTitle: string;\r\n dashboardWidgets: Array<WidgetProps>;\r\n}\r\n\r\nconst WidgetContainer: React.FC<WidgetContainerProps> = ({\r\n children,\r\n widgetType,\r\n}) => {\r\n return (\r\n <Grid\r\n size={{ xs: 12, sm: 6, md: 4 }}\r\n sx={{\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n padding: 1,\r\n display: \"flex\",\r\n flexDirection: widgetType != \"Card\" ? \"column\" : undefined,\r\n height: 300,\r\n }}\r\n >\r\n {children}\r\n </Grid>\r\n );\r\n};\r\n\r\nconst TemplateDashboard: React.FC<DashboardProps> = (props) => {\r\n return (\r\n <>\r\n <Typography sx={{ fontSize: 20, fontWeight: \"bold\" }}>\r\n {props.dashboardTitle}\r\n </Typography>\r\n <Grid\r\n container\r\n sx={{\r\n flexGrow: 1,\r\n width: \"100%\",\r\n overflowY: \"auto\",\r\n padding: 2,\r\n }}\r\n >\r\n {props.dashboardWidgets.map((widgetProps: any, index: any) => {\r\n if (\r\n widgetProps.widgetType === \"Card\" ||\r\n widgetProps.widgetType === \"Gauge\" ||\r\n widgetProps.widgetType === \"Progress\"\r\n ) {\r\n return (\r\n <>\r\n {widgetProps.data.map((record: any, index: any) => {\r\n const singleRecordWidgetProps: SingleRecordWidgetProps = {\r\n widgetTitle: widgetProps.widgetTitle,\r\n record,\r\n labelField: widgetProps.labelField,\r\n valueField: widgetProps.valueField,\r\n };\r\n return (\r\n <WidgetContainer\r\n key={index}\r\n widgetType={widgetProps.widgetType}\r\n >\r\n {widgetProps.widgetType === \"Card\" ? (\r\n <TemplateDataCard {...singleRecordWidgetProps} />\r\n ) : null}\r\n {widgetProps.widgetType === \"Gauge\" ? (\r\n <TemplateGauge {...singleRecordWidgetProps} />\r\n ) : null}\r\n {widgetProps.widgetType === \"Progress\" ? (\r\n <TemplateLineProgress {...singleRecordWidgetProps} />\r\n ) : null}\r\n </WidgetContainer>\r\n );\r\n })}\r\n </>\r\n );\r\n } else {\r\n return (\r\n <WidgetContainer key={index} widgetType={widgetProps.widgetType}>\r\n {widgetProps.widgetType === \"Pie\" ? (\r\n <TemplatePieChart {...widgetProps} />\r\n ) : null}\r\n {widgetProps.widgetType === \"Line\" ? (\r\n <TemplateLineChart {...widgetProps} />\r\n ) : null}\r\n {widgetProps.widgetType === \"Bar\" ? (\r\n <TemplateBarChart {...widgetProps} />\r\n ) : null}\r\n </WidgetContainer>\r\n );\r\n }\r\n })}\r\n </Grid>\r\n </>\r\n );\r\n};\r\n\r\nexport default TemplateDashboard;\r\n"],"names":["DRAWER_WIDTH","initialState","sideBarOpened","themeMode","localStorage","getItem","appDirection","AppLayoutSlice","createSlice","name","reducers","toggleSideBarState","state","setSideBarState","action","payload","setThemeMode","setAppDirection","AppLayoutActions","actions","AppLayoutReducer","reducer","UserSessionSlice","value","isAuthenticated","authorities","userProfile","setAuthenticated","setUnAuthenticated","UserSessionActions","UserSessionReducer","loadingMaskSlice","isOpened","message","showLoadingMask","hideLoadingMask","LoadingMaskReducer","commonStoresInitialState","commonStoreSlice","setStoreData","storeKey","data","CommonStoreReducer","AppInfoSlice","documentTitle","apiBaseUrl","appName","appVersion","appLogo","muiPremiumKey","enableAdministrationModule","businessRoutes","businessNavigationItems","businessReduxReducers","businessCommonStoresMetaData","appTheme","light","primaryColor","secondaryColor","dark","setAppInfo","AppInfoActions","AppLayout","UserSession","loadingMask","commonStores","AppInfo","store","configureStore","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","useIsMobile","breakpoint","isMobile","setIsMobile","useState","window","innerWidth","useEffect","handleResize","addEventListener","removeEventListener","useLoadingMask","dispatch","useDispatch","show","hide","useAxios","mask","useSelector","axiosInstance","axios","create","baseURL","timeout","withCredentials","defaults","interceptors","response","use","error","status","toast","autoClose","handleGetRequest","async","props","endPointURI","parameters","undefined","showMask","loadingMessage","get","params","successCallBkFn","failureCallBkFn","handlePostRequest","post","handleDeleteRequest","delete","HandleDownloadHTTPPostPDF","responseType","resources","en","translation","common","ar","i18n","initReactI18next","init","lng","fallbackLng","AppBar","styled","MuiAppBar","shouldForwardProp","prop","theme","transition","transitions","easing","sharp","duration","leavingScreen","variants","open","width","marginLeft","marginRight","easeOut","enteringScreen","TopBar","_jsx","position","children","_jsxs","Toolbar","IconButton","color","onClick","edge","sx","mr","ml","display","FontAwesomeIcon","icon","Avatar","src","Typography","variant","noWrap","component","flex","setItem","jsx","prefix","iconName","nextLanguage","language","changeLanguage","username","console","log","rotation","DrawerHeader","alignItems","mixins","toolbar","justifyContent","r","e","t","f","n","Array","isArray","o","length","clsx","arguments","useSession","isUserAuthorized","authorityCode","grantedAuthority","authority","findNavigationItemById","id","nodes","node","found","NavigationItems","label","actionPayload","path","DotIcon","Box","height","borderRadius","bgcolor","verticalAlign","zIndex","mx","StyledTreeItemRoot","TreeItem2Root","palette","grey","treeItemClasses","groupTransition","spacing","applyStyles","CustomTreeItemContent","TreeItem2Content","flexDirection","marginBottom","marginTop","padding","paddingRight","primary","main","content","left","top","backgroundColor","alpha","contrastText","AnimatedCollapse","animated","Collapse","TransitionComponent","useSpring","to","opacity","in","transform","StyledTreeItemLabelText","fontWeight","CustomLabel","expandable","other","useTranslation","appLayoutState","jsxs","TreeItem2Label","fontSize","isExpandable","reactChildren","some","Boolean","CustomTreeItem","React","forwardRef","itemId","disabled","getRootProps","getContentProps","getIconContainerProps","getCheckboxProps","getLabelProps","getGroupTransitionProps","getDragAndDropOverlayProps","publicAPI","useTreeItem2","rootRef","item","TreeItem2Provider","className","expanded","selected","focused","TreeItem2IconContainer","TreeItem2Icon","TreeItem2Checkbox","TreeItem2DragAndDropOverlay","NavigationTree","navigate","useNavigate","filterData","filter","map","mergedNavigationItems","push","authoriedNavigationItems","RichTreeView","items","onItemClick","event","navigationItem","flexGrow","maxWidth","direction","maxHeight","overflowY","overflowX","slots","SideBar","useTheme","Drawer","flexShrink","boxSizing","anchor","textAlign","Divider","cacheRtl","createCache","key","stylisPlugins","prefixer","rtlPlugin","cacheLtr","useConfirmationWindow","setOpen","ConfirmationWindow","Dialog","DialogTitle","title","DialogContent","DialogContentText","body","DialogActions","Button","onConfirmationCallBk","autoFocus","TemplateGridMultiRecordAction","rowAction","session","confirmationMessage","actionFn","recordsToProcessActionOn","recordIdsToProcessActionOn","reloadData","isActionAllowed","_Fragment","preActionValidation","record","isConfirmationRequired","formActionProps","actionButtonVariant","size","actionButtonColor","Fragment","DATE_FORMAT","DATE_TIME_FORMAT","Datefield","LocalizationProvider","dateAdapter","AdapterMoment","DatePicker","moment","format","onChange","momentValue","v","isValid","onChangeCallBack","slotProps","textField","InputLabelProps","shrink","required","errorMessage","helperText","DatetimeField","DateTimePicker","ComboBox","AppLayoutState","Autocomplete","option","options","valueField","getValue","newValue","clearOnBlur","handleHomeEndKeys","getOptionLabel","displayField","renderOption","props1","popper","Popper","renderInput","TextField","CheckBox","FormControlLabel","control","Checkbox","checked","checkedValue","target","unCheckedValue","generateDateTimeColumn","colDef","renderEditCell","api","setEditCellValue","field","valueParser","row","column","valueFormatter","generateComboColumn","valueGetter","renderCell","find","selectedRecord","generateCheckBoxColumn","getElementFields","element","fields","mode","elements","childElement","getAllFields","constructValidationSchema","validationSchemaObj","fieldName","fieldType","z","number","required_error","invalid_type_error","optional","nullable","string","min","StyledQuickFilter","QuickFilter","StyledToolbarButton","ToolbarButton","ownerState","gridArea","pointerEvents","StyledTextField","TemplateGridTopBar","isCreationAuthorized","templateProps","editAction","gridSelection","rowSelectionModel","keyColumnName","sRecords","sRecordIds","ids","selectedId","x","selectedRecords","selectedRecordIds","getGridSelection","Set","editMode","handleCreateNewRecord","rowActions","gridActionProps","multiRecord","apiActions","gridLoadParametersValues","tBar","Tooltip","ColumnsPanelTrigger","render","GridViewColumnIcon","FilterPanelTrigger","Badge","badgeContent","filterCount","GridFilterListIcon","gridStateKey","clearGridState","orientation","flexItem","ExportExcel","MenuItem","QuickFilterTrigger","triggerProps","enterDelay","QuickFilterControl","controlProps","inputRef","placeholder","input","startAdornment","InputAdornment","endAdornment","QuickFilterClear","isNumber","isNaN","isNumeric","trim","Number","capitalizeFirstLetter","str","charAt","toUpperCase","slice","TemplateGridRecordAction","iconStyle","getActionIconStyleForRecord","isActionVisibleForRecord","isActionDisabledForRecord","GridActionsCellItem","showInMenu","formatMuiErrorMessage","code","args","url","URL","forEach","arg","searchParams","append","process","env","NODE_ENV","reactIsModule","exports","b","Symbol","for","c","d","g","h","k","l","m","p","q","w","y","a","u","$$typeof","A","reactIs_production_min","AsyncMode","ConcurrentMode","ContextConsumer","Element","ForwardRef","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","require$$0","hasSymbol","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_ASYNC_MODE_TYPE","REACT_CONCURRENT_MODE_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_BLOCK_TYPE","REACT_FUNDAMENTAL_TYPE","REACT_RESPONDER_TYPE","REACT_SCOPE_TYPE","object","$$typeofType","ContextProvider","Memo","hasWarnedAboutDeprecatedIsAsyncMode","reactIs_development","isPortal","getOwnPropertySymbols","Object","hasOwnProperty","prototype","propIsEnumerable","propertyIsEnumerable","objectAssign","assign","test1","String","getOwnPropertyNames","test2","i","fromCharCode","join","test3","split","letter","keys","err","shouldUseNative","source","from","symbols","val","TypeError","toObject","s","call","ReactPropTypesSecret_1","has","Function","bind","printWarning","ReactPropTypesSecret","loggedTypeFailures","require$$1","text","Error","checkPropTypes","typeSpecs","values","location","componentName","getStack","typeSpecName","ex","stack","resetWarningCache","checkPropTypes_1","ReactIs","require$$2","require$$3","require$$4","emptyFunctionThatReturnsNull","factoryWithTypeCheckers","isValidElement","throwOnDirectAccess","ITERATOR_SYMBOL","iterator","ANONYMOUS","ReactPropTypes","array","createPrimitiveTypeChecker","bigint","bool","func","symbol","any","createChainableTypeChecker","arrayOf","typeChecker","propName","propFullName","PropTypeError","propValue","getPropType","elementType","instanceOf","expectedClass","expectedClassName","constructor","isNode","objectOf","propType","oneOf","expectedValues","is","valuesString","JSON","stringify","getPreciseType","oneOfType","arrayOfTypeCheckers","checker","getPostfixForTypeWarning","expectedTypes","checkerResult","expectedType","shape","shapeTypes","invalidValidatorError","exact","allKeys","this","validate","manualPropTypeCallCache","manualPropTypeWarningCount","checkType","isRequired","secret","cacheKey","chainedCheckType","every","iteratorFn","maybeIterable","getIteratorFn","step","entries","next","done","entry","RegExp","isSymbol","Date","PropTypes","emptyFunction","emptyFunctionWithReset","factoryWithThrowingShims","shim","getShim","propTypesModule","REACT_CONSUMER_TYPE","REACT_VIEW_TRANSITION_TYPE","REACT_CLIENT_REFERENCE","reactIs_production","SuspenseList","isSuspenseList","getModuleId","isPlainObject","getPrototypeOf","toStringTag","deepClone","output","deepmerge","clone","createBreakpoints","breakpoints","xs","sm","md","lg","xl","unit","sortedValues","breakpointsAsArray","sort","breakpoint1","breakpoint2","reduce","acc","obj","sortBreakpointsValues","up","down","between","start","end","endIndex","indexOf","only","not","keyIndex","replace","responsivePropType","merge","defaultBreakpoints","defaultContainerQueries","containerQueries","containerName","result","handleBreakpoints","styleFromPropValue","themeBreakpoints","index","breakpointKeys","startsWith","match","containerKey","shorthand","matches","_formatErrorMessage","containerQuery","getContainerQuery","includes","cssKey","capitalize","getPath","checkVars","vars","getStyleValue","themeMapping","propValueFinal","userValue","cssProperty","themeKey","fn","propTypes","filterProps","properties","directions","aliases","marginX","marginY","paddingX","paddingY","getCssProperties","cache","memoize","property","dir","marginKeys","paddingKeys","spacingKeys","createUnaryUnit","defaultValue","themeSpacing","abs","Math","isInteger","transformed","createUnarySpacing","transformer","resolveCssProperty","cssProperties","getStyleFromPropValue","margin","compose","styles","handlers","concat","borderTransform","createBorderStyle","border","borderTop","borderRight","borderBottom","borderLeft","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","outline","outlineColor","gap","columnGap","rowGap","paletteTransform","sizingTransform","breakpointsValues","minWidth","minHeight","defaultSxConfig","pt","pr","pb","pl","px","py","paddingTop","paddingBottom","paddingLeft","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd","mt","mb","my","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd","displayPrint","overflow","textOverflow","visibility","whiteSpace","flexBasis","flexWrap","alignContent","order","alignSelf","justifyItems","justifySelf","gridColumn","gridRow","gridAutoFlow","gridAutoColumns","gridAutoRows","gridTemplateColumns","gridTemplateRows","gridTemplateAreas","right","bottom","boxShadow","font","fontFamily","fontStyle","letterSpacing","textTransform","lineHeight","typography","styleFunctionSx","getThemeValue","config","unstable_sxConfig","traverse","sxInput","sxObject","emptyBreakpoints","breakpointsInput","breakpointsInOrder","createEmptyBreakpointObject","breakpointsKeys","styleKey","maybeFn","objects","union","objectsHaveSameKeys","sorted","regex","sortContainerQueries","breakpointOutput","removeUnusedBreakpoints","unstable_createStyleFunctionSx","colorSchemes","getColorSchemeSelector","selector","defaultTheme","contextTheme","useContext","ThemeContext","systemDefaultTheme","paletteInput","spacingInput","shapeInput","mui","argsInput","argument","createSpacing","muiTheme","components","themeInput","toContainerQuery","mediaQuery","attachCq","cssContainerQueries","unstable_sx","createTheme","extendSxProp","inSx","systemProps","otherProps","splitProps","finalSx","defaultGenerator","ClassNameGenerator","generate","configure","generator","reset","createClassNameGenerator","globalStateClasses","active","completed","focusVisible","readOnly","themeId","defaultClassName","generateClassName","BoxRoot","tag","stylesFactory","emStyled","inProps","useThemeWithoutDefault","as","createBox","globalStatePrefix","slot","globalStateClass","generateUtilityClass","generateUtilityClasses","root","TemplateTextField","inputLabel","FormElementField","fieldInfo","formManager","formActions","formValues","hidden","hiddenFields","Grid2","formProps","fieldSize","fullWidth","disabledFields","fieldLabel","setValue","onValueChangeCallBack","formState","errors","toString","dateFormat","optionDisplayField","optionValueField","FormAction","setConfirmationWindowState","FormElementGroup","container","TemplateForm","setHiddenFields","setDisabledFields","formSchema","useForm","resolver","zodResolver","watch","pathParameters","useParams","formRouteRecordIdParamName","setFieldValue","fieldValue","hideField","oldValues","showField","disableField","enableField","idToLoad","recordIdToEdit","retrievedRecord","loadRecordById","loadRecord","formElement","enabled","saveButtonSpecs","startIcon","handleSubmit","preSaveValidation","savedRecord","saveRecord","formSavedSuccessfullyCallBk","formCloseCallBk","cancelButtonSpecs","useWindow","windowState","setWindowState","Window","windowProps","Modal","drawer","onClose","onCloseCallBack","windowIcon","windowTitle","Paper","currentNewRecordIndex","loadGridState","saved","parse","saveGridState","statePart","current","PIN_FIXED_COLUMNS","TemplateGrid","formElements","savedState","useMemo","gridProps","initialVisibilityState","columnVisibilityModel","existingFields","themeDirection","setColumnVisibilityModel","columnOrder","setColumnOrder","columnWidths","setColumnWidths","gridRowGroupingModel","setGridRowGroupingModel","columnGroupingModel","newLeft","pinnedColumns","newRight","setPinnedColumns","recordToDelete","setRecordToDelete","recordToEdit","setRecordToEdit","rowModesModel","setRowModesModel","setRowSelectionModel","setData","validationSchema","generatedColumns","isDefaultEditable","columns","tableField","muiProps","editable","headerName","headerAlign","align","searchable","constructGridColumnsFromFields","isEditAllowed","isDeleteAllowed","deleteAction","setConfirmationWindowOpened","isNew","deleteRecordById","postActionCallBack","oldData","formModalHeight","formModalWidth","formModalMinHeight","formModalMinWidth","formModalIcon","formModalTitle","specs","modalHeight","modalWidth","modalMinHeight","modalMinWidth","modalIcon","modalTitle","FormWindow","setFormWindowState","actionColumn","isEnabled","getActions","disableDefaultAction","isInEditMode","GridRowModes","Edit","View","handleSaveRowClick","ignoreModifications","newData","handleCancelRowEditClick","isEditActionVisibleForRecord","isActionEditDisabledForRecord","formRoute","handleEditRecord","isDeleteActionVisibleForRecord","isDeleteActionDisabledForRecord","structuredColumns","autoLoad","adjustedColumns","baseCols","col","fieldToCol","Map","formComponent","editAuthorityKey","hideInfoBar","hideBackButton","girdIcon","gridTitle","gridLoadParameters","setGridLoadParametersValues","Accordion","defaultExpanded","AccordionSummary","expandIcon","GridExpandMoreIcon","AccordionDetails","DataGridPremium","newRecord","oldRows","oldModel","removeItem","getRowId","showToolbar","rows","checkboxSelection","onRowModesModelChange","newModel","rowGroupingColumnMode","processRowUpdate","ZodError","validateRecord","requestObject","reloadAfterSave","onRowSelectionModelChange","gridSelectionModel","onColumnVisibilityModelChange","model","onColumnOrderChange","targetIndex","prevOrder","currentOrder","fromIndex","splice","onColumnWidthChange","updatedWidths","rowGroupingModel","onRowGroupingModelChange","handleRowGroupChange","onPinnedColumnsChange","newPinedColumns","useApiActions","apiActionsProps","CommonStores","commonStoreKey","storeKeys","findAll","recordId","findById","findByIdParamName","save","deleteById","deleteByIdParamName","SYSTEM_ROUTES","MainContent","CacheProvider","Routes","route","Route","Component","Puller","MobileDrawer","toggleDrawer","newState","SwipeableDrawer","onOpen","swipeAreaWidth","disableSwipeToOpen","ModalProps","keepMounted","LoadingMask","Backdrop","CircularProgress","Login","appInfo","setUsername","password","setPassword","isLoginInProcess","setIsLoginInProcess","UserSessionState","handleLogin","userSession","loginTheme","MuiCssBaseline","styleOverrides","secondary","checkUserSession","ThemeProvider","onKeyDown","loading","Main","loadCommonStores","Layout","BrowserRouter","ToastContainer","draggable","CssBaseline","App","LicenseInfo","setLicenseKey","LightThemeOptions","background","default","paper","DarkThemeOptions","themeOptions","ADMINISTRATION_STORES","SystemDataSourceType","SystemParameterTypes","SystemReportTypes","SystemWidgetTypes","SystemMailRecipientTypes","SystemDataSources","SystemDataQueries","SystemEntityParameters","SystemAuthorities","SystemRoles","library","add","fab","far","fas","intersection","TemplatePieChart","chartData","labelField","PieChart","series","TemplateBarChart","BarChart","dataset","xAxis","dataKey","scaleType","TemplateLineChart","LineChart","TemplateGauge","widgetTitle","Gauge","TemplateDataCard","LinearProgressWithLabel","LinearProgress","round","TemplateLineProgress","WidgetContainer","widgetType","Grid","adminStoreKey","businessStoreKey","businessReducerKey","Provider","dashboardTitle","dashboardWidgets","widgetProps","singleRecordWidgetProps","selectedOptions","setSelection","setChecked","setLeft","setRight","leftFilterValue","setLeftFilterValue","rightFilterValue","setRightFilterValue","leftChecked","rightChecked","handleToggle","currentIndex","newChecked","numberOfChecked","handleToggleAll","customList","unfilteredItems","side","toLocaleLowerCase","Card","CardHeader","avatar","indeterminate","inputProps","subheader","List","dense","role","labelId","ListItem","ListItemIcon","tabIndex","disableRipple","ListItemText","oldState","test"],"mappings":"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","x_google_ignoreList":[6,16,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../node_modules/style-inject/dist/style-inject.es.js","../src/hooks/UseMobile.tsx","../src/redux/features/common/AppLayoutSlice.ts","../src/redux/features/common/LoadingMaskSlice.ts","../src/hooks/useLoadingMask.tsx","../src/hooks/useAxios.tsx","../src/redux/features/common/UserSessionSlice.ts","../src/locales/english/index.ts","../src/locales/index.ts","../src/locales/arabic/index.ts","../src/locales/i18n.ts","../src/layout/TopBar.tsx","../src/layout/DrawerHeader.tsx","../node_modules/clsx/dist/clsx.mjs","../src/hooks/UseSession.tsx","../src/navigationItems/index.tsx","../src/navigationItems/Administration/index.tsx","../src/navigationItems/Administration/adminNavigationItems.tsx","../src/layout/NavigationTree.tsx","../src/layout/SideBar.tsx","../src/components/common/LayoutHandlers.tsx","../src/hooks/UseConfirmationWindow.tsx","../src/components/templates/DataEntryTemplates/TemplateDataGrid/TemplateGridMultiRecordAction.tsx","../src/util/constants.ts","../src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/Datefield.tsx","../src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/DatetimeField.tsx","../src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/ComboBox.tsx","../src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/CheckBox.tsx","../src/components/templates/DataEntryTemplates/TemplateDataGrid/DataGridColumnsUtil.tsx","../src/components/templates/DataEntryTemplates/DataEntryUtil.ts","../src/components/templates/DataEntryTemplates/TemplateDataGrid/TemplateGridTopBar.tsx","../src/util/AppUtils.ts","../src/components/templates/DataEntryTemplates/TemplateDataGrid/TemplateGridRecordAction.tsx","../node_modules/@mui/system/node_modules/@mui/utils/esm/formatMuiErrorMessage/formatMuiErrorMessage.js","../node_modules/prop-types/node_modules/react-is/index.js","../node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js","../node_modules/object-assign/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/lib/has.js","../node_modules/prop-types/checkPropTypes.js","../node_modules/prop-types/factoryWithTypeCheckers.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/react-is/cjs/react-is.production.js","../node_modules/react-is/cjs/react-is.development.js","../node_modules/react-is/index.js","../node_modules/@mui/system/node_modules/@mui/utils/esm/deepmerge/deepmerge.js","../node_modules/@mui/system/esm/createBreakpoints/createBreakpoints.js","../node_modules/@mui/system/esm/createTheme/shape.js","../node_modules/@mui/system/esm/responsivePropType/responsivePropType.js","../node_modules/@mui/system/esm/merge/merge.js","../node_modules/@mui/system/esm/breakpoints/breakpoints.js","../node_modules/@mui/system/esm/cssContainerQueries/cssContainerQueries.js","../node_modules/@mui/system/node_modules/@mui/utils/esm/capitalize/capitalize.js","../node_modules/@mui/system/esm/style/style.js","../node_modules/@mui/system/esm/spacing/spacing.js","../node_modules/@mui/system/esm/memoize/memoize.js","../node_modules/@mui/system/esm/compose/compose.js","../node_modules/@mui/system/esm/borders/borders.js","../node_modules/@mui/system/esm/cssGrid/cssGrid.js","../node_modules/@mui/system/esm/palette/palette.js","../node_modules/@mui/system/esm/sizing/sizing.js","../node_modules/@mui/system/esm/styleFunctionSx/defaultSxConfig.js","../node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js","../node_modules/@mui/system/esm/createTheme/applyStyles.js","../node_modules/@mui/system/esm/useThemeWithoutDefault/useThemeWithoutDefault.js","../node_modules/@mui/system/esm/useTheme/useTheme.js","../node_modules/@mui/system/esm/createTheme/createTheme.js","../node_modules/@mui/system/esm/createTheme/createSpacing.js","../node_modules/@mui/system/esm/styleFunctionSx/extendSxProp.js","../node_modules/@mui/system/node_modules/@mui/utils/esm/ClassNameGenerator/ClassNameGenerator.js","../node_modules/@mui/system/node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js","../node_modules/@mui/system/esm/Box/boxClasses.js","../node_modules/@mui/system/esm/Box/Box.js","../node_modules/@mui/system/esm/createBox/createBox.js","../node_modules/@mui/styled-engine/esm/index.js","../node_modules/@mui/system/node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js","../src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/TemplateTextField.tsx","../src/components/templates/DataEntryTemplates/TemplateDataForm/FormElementField.tsx","../src/components/templates/DataEntryTemplates/TemplateDataForm/FormAction.tsx","../src/components/templates/DataEntryTemplates/TemplateDataForm/FormElementGroup.tsx","../src/components/templates/DataEntryTemplates/TemplateDataForm/TemplateForm.tsx","../src/hooks/UseWindow.tsx","../src/components/templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid.tsx","../src/redux/features/common/CommonStoreSlice.ts","../src/hooks/useApiActions.ts","../src/components/templates/TransferList.tsx","../src/components/templates/visuals/charts/TemplatePieChart.tsx","../src/components/templates/visuals/charts/TemplateBarChart.tsx","../src/components/templates/visuals/charts/TemplateLineChart.tsx","../src/components/templates/visuals/charts/TemplateGauge.tsx","../src/components/templates/visuals/charts/TemplateDataCard.tsx","../src/components/templates/visuals/charts/TemplateLineProgress.tsx","../src/components/templates/visuals/TemplateDashboard.tsx","../src/components/admin/RoleAuthoritiesForm.tsx","../src/routes/index.ts","../src/components/common/Home.tsx","../src/routes/administration/index.ts","../src/routes/administration/adminRoutes.tsx","../src/components/admin/AttachmentGrid.tsx","../src/components/admin/AuthorityGrid.tsx","../src/components/admin/BluePrintGrid.tsx","../src/components/admin/BluePrintPageGrid.tsx","../src/components/admin/BluePrintPointGrid.tsx","../src/components/admin/DashboardGrid.tsx","../src/components/admin/DashboardWidgetGrid.tsx","../src/components/admin/DataQueryGrid.tsx","../src/components/admin/DataQueryParameterGrid.tsx","../src/components/admin/DatasourceConnectionGrid.tsx","../src/components/admin/EmployeeGrid.tsx","../src/components/admin/EntityParameterGrid.tsx","../src/components/admin/ExcelUploaderDetailGrid.tsx","../src/components/admin/ExcelUploaderHeaderGrid.tsx","../src/components/admin/LookupGrid.tsx","../src/components/admin/MailAttachmentGrid.tsx","../src/components/admin/MailBodyGrid.tsx","../src/components/admin/MailNotificationQueueGrid.tsx","../src/components/admin/MailRecipientGrid.tsx","../src/components/admin/MailTemplateGrid.tsx","../src/components/admin/NewTableGrid.tsx","../src/components/admin/NotificationGrid.tsx","../src/components/admin/NotificationQueueGrid.tsx","../src/components/admin/OrganizationGrid.tsx","../src/components/admin/OrganizationApplicationGrid.tsx","../src/components/admin/OrganizationRankGrid.tsx","../src/components/admin/OrganizationUnitGrid.tsx","../src/components/admin/OrganizationUserGrid.tsx","../src/components/admin/OrganizationUserRoleGrid.tsx","../src/components/admin/ReportGrid.tsx","../src/components/admin/ReportParameterGrid.tsx","../src/components/admin/RoleGrid.tsx","../src/components/admin/RoleAuthorityGrid.tsx","../src/components/admin/UserAccountGrid.tsx","../src/components/admin/UserRequestGrid.tsx","../src/components/admin/WidgetGrid.tsx","../src/components/admin/WorkflowDocumentGrid.tsx","../src/components/admin/WorkflowDocumentActionGrid.tsx","../src/components/admin/WorkflowDocumentActionHistoryGrid.tsx","../src/components/admin/WorkflowDocumentActionMailGrid.tsx","../src/components/admin/WorkflowDocumentMailLogGrid.tsx","../src/components/admin/WorkflowDocumentStatusGrid.tsx","../src/layout/MainContent.tsx","../src/layout/MobileDrawer.tsx","../src/components/common/LoadingMask.tsx","../src/components/common/Login.tsx","../src/layout/Layout.tsx","../src/redux/features/common/AppInfoSlice.ts","../src/redux/features/administration/AdministrationStoresMetaData.ts","../src/components/App.tsx","../src/components/BaseApp.tsx"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import { useEffect, useState } from \"react\";\r\n\r\nexport const useIsMobile = (breakpoint = 768) => {\r\n const [isMobile, setIsMobile] = useState(window.innerWidth < breakpoint);\r\n\r\n useEffect(() => {\r\n const handleResize = () => setIsMobile(window.innerWidth < breakpoint);\r\n window.addEventListener(\"resize\", handleResize);\r\n return () => window.removeEventListener(\"resize\", handleResize);\r\n }, [breakpoint]);\r\n\r\n return isMobile;\r\n};\r\n","import { createSlice } from \"@reduxjs/toolkit\";\r\n\r\nexport const DRAWER_WIDTH = 350;\r\n\r\ninterface AppLayoutState {\r\n sideBarOpened: boolean;\r\n themeMode: \"light\" | \"dark\" | string;\r\n appDirection: \"ltr\" | \"rtl\";\r\n}\r\n\r\nconst initialState: AppLayoutState = {\r\n sideBarOpened: false,\r\n themeMode: localStorage.getItem(\"themeMode\") || \"light\",\r\n appDirection: localStorage.getItem(\"language\") == \"ar\" ? \"rtl\" : \"ltr\",\r\n};\r\n\r\nconst AppLayoutSlice = createSlice({\r\n name: \"AppLayout\",\r\n initialState,\r\n reducers: {\r\n toggleSideBarState: (state) => {\r\n state.sideBarOpened = !state.sideBarOpened;\r\n },\r\n setSideBarState: (state, action) => {\r\n state.sideBarOpened = action.payload;\r\n },\r\n setThemeMode: (state, action) => {\r\n state.themeMode = action.payload;\r\n },\r\n setAppDirection: (state, action) => {\r\n state.appDirection = action.payload;\r\n },\r\n },\r\n});\r\n\r\nexport const AppLayoutActions = AppLayoutSlice.actions;\r\nexport default AppLayoutSlice.reducer;\r\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\n\r\ninterface LoadingMaskStateValue {\r\n value: { isOpened: boolean; message?: string | null };\r\n}\r\n\r\nconst initialState: LoadingMaskStateValue = {\r\n value: { isOpened: false, message: null },\r\n};\r\n\r\nconst loadingMaskSlice = createSlice({\r\n name: \"loadingMask\",\r\n initialState,\r\n reducers: {\r\n showLoadingMask: (\r\n state,\r\n action: PayloadAction<string | null | undefined>\r\n ) => {\r\n state.value.isOpened = true;\r\n state.value.message = action.payload;\r\n },\r\n hideLoadingMask: (state) => {\r\n state.value.isOpened = false;\r\n state.value.message = null;\r\n },\r\n },\r\n});\r\n\r\nexport const { showLoadingMask, hideLoadingMask } = loadingMaskSlice.actions;\r\nexport default loadingMaskSlice.reducer;\r\n","import { useDispatch } from \"react-redux\";\r\nimport { hideLoadingMask, showLoadingMask } from \"../redux/features/common/LoadingMaskSlice\";\r\n\r\n\r\nconst useLoadingMask = () => {\r\n const dispatch = useDispatch();\r\n const show = (message?: string) => {\r\n dispatch(showLoadingMask(message));\r\n };\r\n const hide = () => {\r\n dispatch(hideLoadingMask());\r\n };\r\n return { show, hide };\r\n};\r\n\r\nexport default useLoadingMask;\r\n","import { toast } from \"react-toastify\";\r\nimport axios from \"axios\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { RootState } from \"../redux/store\";\r\nimport useLoadingMask from \"./useLoadingMask\";\r\n\r\nexport interface APIRequest {\r\n endPointURI: string;\r\n parameters?: any;\r\n data?: any;\r\n showMask?: Boolean;\r\n loadingMessage?: string;\r\n successCallBkFn?: Function;\r\n failureCallBkFn?: Function;\r\n}\r\n\r\nconst useAxios = () => {\r\n const mask = useLoadingMask();\r\n const apiBaseUrl = useSelector(\r\n (state: RootState) => state.AppInfo.value.apiBaseUrl\r\n );\r\n const axiosInstance = axios.create({\r\n baseURL: apiBaseUrl,\r\n timeout: 600000,\r\n withCredentials: true,\r\n });\r\n\r\n axiosInstance.defaults.withCredentials = true;\r\n axiosInstance.interceptors.response.use(\r\n (response: any) => {\r\n return response;\r\n },\r\n (error: any) => {\r\n if (\r\n error\r\n ? error.response\r\n ? error.response.status\r\n ? error.response.status === 401\r\n : false\r\n : false\r\n : false\r\n ) {\r\n toast.error(\"your session is now expired, you need to login again\", {\r\n autoClose: false,\r\n });\r\n } else if (\r\n error\r\n ? error.response\r\n ? error.response.status\r\n ? error.response.status === 403\r\n : false\r\n : false\r\n : false\r\n ) {\r\n toast.error(\"you aren't authorized to process this request\");\r\n } else if (\r\n error\r\n ? error.response\r\n ? error.response.status\r\n ? error.response.status === 500\r\n : false\r\n : false\r\n : false\r\n ) {\r\n toast.error(error.response.data);\r\n } else {\r\n toast.error(\r\n \"failed to communicate with the server ... try again later\"\r\n );\r\n }\r\n return \"ERROR\";\r\n }\r\n );\r\n const handleGetRequest = async (\r\n props: APIRequest = { endPointURI: \"\", parameters: {} }\r\n ) => {\r\n if (\r\n props.showMask !== undefined &&\r\n props.showMask != null &&\r\n props.showMask === true\r\n ) {\r\n mask.show(props.loadingMessage);\r\n }\r\n const response: any = await axiosInstance.get(props.endPointURI, {\r\n params: { ...props.parameters },\r\n withCredentials: true,\r\n // withCredentials: true,\r\n });\r\n if (\r\n props.showMask !== undefined &&\r\n props.showMask != null &&\r\n props.showMask === true\r\n ) {\r\n mask.hide();\r\n }\r\n if (response !== \"ERROR\") {\r\n if (\r\n props.successCallBkFn !== undefined &&\r\n props.successCallBkFn != null\r\n ) {\r\n props.successCallBkFn(response);\r\n }\r\n return response;\r\n } else {\r\n if (\r\n props.failureCallBkFn !== undefined &&\r\n props.failureCallBkFn != null\r\n ) {\r\n props.failureCallBkFn(response);\r\n }\r\n return \"ERROR\";\r\n }\r\n };\r\n\r\n const HandleDownloadHTTPPostPDF = async (\r\n props: APIRequest = { endPointURI: \"\", parameters: {}, data: {} }\r\n ) => {\r\n if (\r\n props.showMask !== undefined &&\r\n props.showMask != null &&\r\n props.showMask === true\r\n ) {\r\n mask.show(props.loadingMessage);\r\n }\r\n const response: any = await axiosInstance.post(\r\n props.endPointURI,\r\n props.data,\r\n {\r\n responseType: \"blob\",\r\n }\r\n );\r\n if (\r\n props.showMask !== undefined &&\r\n props.showMask != null &&\r\n props.showMask === true\r\n ) {\r\n mask.hide();\r\n }\r\n if (response !== \"ERROR\") {\r\n if (\r\n props.successCallBkFn !== undefined &&\r\n props.successCallBkFn != null\r\n ) {\r\n props.successCallBkFn(response);\r\n }\r\n return response;\r\n } else {\r\n if (\r\n props.failureCallBkFn !== undefined &&\r\n props.failureCallBkFn != null\r\n ) {\r\n props.failureCallBkFn(response);\r\n }\r\n return \"ERROR\";\r\n }\r\n // axiosInstance\r\n // .request({\r\n // url: props.endPointURI,\r\n // method: \"POST\",\r\n // data: props.data,\r\n // responseType: \"blob\",\r\n // })\r\n // .then((response) => {\r\n // const url = window.URL.createObjectURL(\r\n // new Blob([response.data], { type: \"application/pdf\" })\r\n // );\r\n // const link = document.createElement(\"a\");\r\n // link.href = url;\r\n // link.setAttribute(\"download\", \"example.pdf\"); // specify download filename\r\n // document.body.appendChild(link);\r\n // link.click();\r\n // link.remove();\r\n // })\r\n // .catch((error) => {\r\n // console.error(\"Download error:\", error);\r\n // })\r\n // .finally(() => {\r\n\r\n // });\r\n };\r\n const handlePostRequest = async (\r\n props: APIRequest = { endPointURI: \"\", parameters: {}, data: {} }\r\n ) => {\r\n if (\r\n props.showMask !== undefined &&\r\n props.showMask != null &&\r\n props.showMask === true\r\n ) {\r\n mask.show(props.loadingMessage);\r\n }\r\n let response: any = await axiosInstance.post(\r\n props.endPointURI,\r\n props.data,\r\n {\r\n params: props.parameters,\r\n }\r\n );\r\n if (\r\n props.showMask !== undefined &&\r\n props.showMask != null &&\r\n props.showMask === true\r\n ) {\r\n mask.hide();\r\n }\r\n if (response !== \"ERROR\") {\r\n if (\r\n props.successCallBkFn !== undefined &&\r\n props.successCallBkFn != null\r\n ) {\r\n props.successCallBkFn(response);\r\n }\r\n return response;\r\n } else {\r\n if (\r\n props.failureCallBkFn !== undefined &&\r\n props.failureCallBkFn != null\r\n ) {\r\n props.failureCallBkFn(response);\r\n }\r\n return \"ERROR\";\r\n }\r\n };\r\n const handleDeleteRequest = async (\r\n props: APIRequest = { endPointURI: \"\", parameters: {} }\r\n ) => {\r\n if (\r\n props.showMask !== undefined &&\r\n props.showMask != null &&\r\n props.showMask === true\r\n ) {\r\n mask.show(props.loadingMessage);\r\n }\r\n let response: any = await axiosInstance.delete(props.endPointURI, {\r\n params: {\r\n ...props.parameters,\r\n },\r\n });\r\n if (\r\n props.showMask !== undefined &&\r\n props.showMask != null &&\r\n props.showMask === true\r\n ) {\r\n mask.hide();\r\n }\r\n if (response !== \"ERROR\") {\r\n if (\r\n props.successCallBkFn !== undefined &&\r\n props.successCallBkFn != null\r\n ) {\r\n props.successCallBkFn(response);\r\n }\r\n return response;\r\n } else {\r\n if (\r\n props.failureCallBkFn !== undefined &&\r\n props.failureCallBkFn != null\r\n ) {\r\n props.failureCallBkFn(response);\r\n }\r\n return \"ERROR\";\r\n }\r\n };\r\n return {\r\n handleGetRequest,\r\n handlePostRequest,\r\n handleDeleteRequest,\r\n HandleDownloadHTTPPostPDF,\r\n };\r\n};\r\n\r\nexport default useAxios;\r\n","import { createSlice } from \"@reduxjs/toolkit\";\r\n\r\nexport interface OrganizationProps {\r\n organizationCode?: string;\r\n organizationName?: string;\r\n}\r\nexport interface UserProfileProps {\r\n username?: string;\r\n currentOrganizationCode?: string;\r\n userOrganizations?: Array<OrganizationProps>;\r\n employeeNumber?: string;\r\n employeeName?: string;\r\n divisionCode?: string;\r\n divisionName?: string;\r\n departmentCode?: string;\r\n departmentName?: string;\r\n rankCode?: string;\r\n rankName?: string;\r\n sectionCode?: string;\r\n sectionName?: string;\r\n subsectionCode?: string;\r\n subsectionName?: string;\r\n extNumber?: string;\r\n mobileNumber?: string;\r\n email?: string;\r\n}\r\n\r\nexport interface UserSessionProps {\r\n value: {\r\n isAuthenticated: boolean | null;\r\n userProfile: UserProfileProps | null;\r\n authorities: Array<{ authority: string }>;\r\n };\r\n}\r\n\r\nconst initialState: UserSessionProps = {\r\n value: {\r\n isAuthenticated: null,\r\n authorities: [],\r\n userProfile: null,\r\n },\r\n};\r\n\r\nconst UserSessionSlice = createSlice({\r\n name: \"UserSession\",\r\n initialState,\r\n reducers: {\r\n setAuthenticated: (state, action) => {\r\n state.value = action.payload;\r\n },\r\n setUnAuthenticated: (state) => {\r\n state.value = {\r\n isAuthenticated: false,\r\n authorities: [],\r\n userProfile: null,\r\n };\r\n },\r\n },\r\n});\r\n\r\nexport const UserSessionActions = UserSessionSlice.actions;\r\nexport default UserSessionSlice.reducer;\r\n","import common from \"./common.json\";\r\nimport AdminLocalsEn from \"./adminLocalsEn.json\";\r\nexport const ENGLISH_TRANS = {\r\n ...common,\r\n ...AdminLocalsEn,\r\n};\r\n","import { ARABIC_TRANS } from \"./arabic\";\r\nimport { ENGLISH_TRANS } from \"./english\";\r\n\r\nconst resources = {\r\n en: { translation: ENGLISH_TRANS },\r\n ar: { translation: ARABIC_TRANS },\r\n};\r\n\r\nexport default resources;\r\n","import common from \"./common.json\";\r\nimport adminLocalsAr from \"./adminLocalsAr.json\";\r\n\r\nexport const ARABIC_TRANS = {\r\n ...common,\r\n ...adminLocalsAr,\r\n};\r\n","import i18n from \"i18next\";\r\nimport { initReactI18next } from \"react-i18next\";\r\nimport resources from \".\";\r\ni18n.use(initReactI18next).init({\r\n resources: resources, // Where we're gonna put translations' files\r\n lng: localStorage.getItem(\"language\") || \"en\", // Set the initial language of the App\r\n fallbackLng: \"en\",\r\n});\r\n\r\nexport const changeLanguage = (lng: string) => {\r\n i18n.changeLanguage(lng);\r\n localStorage.setItem(\"language\", lng); // Persist user choice\r\n};\r\n\r\nexport default i18n;\r\n","import { Avatar, IconButton, styled, Typography } from \"@mui/material\";\r\nimport MuiAppBar, { AppBarProps as MuiAppBarProps } from \"@mui/material/AppBar\";\r\nimport Toolbar from \"@mui/material/Toolbar\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { RootState } from \"../redux/store\";\r\nimport { useIsMobile } from \"../hooks/UseMobile\";\r\nimport {\r\n AppLayoutActions,\r\n DRAWER_WIDTH,\r\n} from \"../redux/features/common/AppLayoutSlice\";\r\nimport useAxios from \"../hooks/useAxios\";\r\nimport { UserSessionActions } from \"../redux/features/common/UserSessionSlice\";\r\nimport i18n, { changeLanguage } from \"../locales/i18n\";\r\n\r\ninterface AppBarProps extends MuiAppBarProps {\r\n open?: boolean;\r\n}\r\n\r\nconst AppBar = styled(MuiAppBar, {\r\n shouldForwardProp: (prop) => prop !== \"open\",\r\n})<AppBarProps>(({ theme }) => {\r\n const AppLayout = useSelector((state: RootState) => state.AppLayout);\r\n const isMobile = useIsMobile();\r\n return {\r\n transition: theme.transitions.create([\"margin\", \"width\"], {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.leavingScreen,\r\n }),\r\n variants: [\r\n {\r\n props: ({ open }) => open,\r\n style: {\r\n width: !isMobile ? `calc(100% - ${DRAWER_WIDTH}px)` : undefined,\r\n marginLeft:\r\n !isMobile && AppLayout.appDirection === \"ltr\"\r\n ? `${DRAWER_WIDTH}px`\r\n : undefined,\r\n marginRight:\r\n !isMobile && AppLayout.appDirection === \"rtl\"\r\n ? `${DRAWER_WIDTH}px`\r\n : undefined,\r\n transition: theme.transitions.create([\"margin\", \"width\"], {\r\n easing: theme.transitions.easing.easeOut,\r\n duration: theme.transitions.duration.enteringScreen,\r\n }),\r\n },\r\n },\r\n ],\r\n };\r\n});\r\n\r\nconst TopBar: React.FC = () => {\r\n const AppInfo = useSelector((state: RootState) => state.AppInfo.value);\r\n const AppLayout = useSelector((state: RootState) => state.AppLayout);\r\n const UserSession = useSelector((state: RootState) => state.UserSession);\r\n const { handleGetRequest } = useAxios();\r\n const isMobile = useIsMobile();\r\n const dispatch = useDispatch();\r\n const handleLogout = async () => {\r\n try {\r\n await handleGetRequest({ endPointURI: \"api/auth/logout\" });\r\n } catch (error) {\r\n console.log(\"logout error\", error);\r\n }\r\n dispatch(UserSessionActions.setUnAuthenticated());\r\n };\r\n const toggleSideBar = () => {\r\n dispatch(AppLayoutActions.toggleSideBarState());\r\n };\r\n return (\r\n <AppBar position=\"fixed\" open={AppLayout.sideBarOpened}>\r\n <Toolbar>\r\n <IconButton\r\n color=\"inherit\"\r\n aria-label=\"open drawer\"\r\n onClick={toggleSideBar}\r\n edge=\"start\"\r\n sx={[\r\n {\r\n mr: AppLayout.appDirection === \"ltr\" ? 2 : undefined,\r\n ml: AppLayout.appDirection === \"rtl\" ? 2 : undefined,\r\n },\r\n AppLayout.sideBarOpened && { display: \"none\" },\r\n ]}\r\n >\r\n <FontAwesomeIcon icon=\"bars\" />\r\n </IconButton>\r\n <Avatar src={AppInfo.appLogo} sx={{ marginRight: 1, marginLeft: 1 }} />\r\n <Typography variant=\"h6\" noWrap component=\"div\" sx={{ flex: 1 }}>\r\n {isMobile ? \"\" : AppInfo.appName}\r\n </Typography>\r\n <IconButton\r\n color=\"inherit\"\r\n onClick={() => {\r\n dispatch(\r\n AppLayoutActions.setThemeMode(\r\n AppLayout.themeMode === \"light\" ? \"dark\" : \"light\"\r\n )\r\n );\r\n localStorage.setItem(\r\n \"themeMode\",\r\n AppLayout.themeMode === \"light\" ? \"dark\" : \"light\"\r\n );\r\n }}\r\n >\r\n {AppLayout.themeMode === \"light\" ? (\r\n <FontAwesomeIcon icon=\"moon\" />\r\n ) : (\r\n <FontAwesomeIcon icon={{ prefix: \"far\", iconName: \"sun\" }} />\r\n )}\r\n </IconButton>\r\n <IconButton\r\n color=\"inherit\"\r\n onClick={() => {\r\n let nextLanguage = i18n.language === \"ar\" ? \"en\" : \"ar\";\r\n changeLanguage(nextLanguage);\r\n dispatch(\r\n AppLayoutActions.setAppDirection(\r\n nextLanguage === \"ar\" ? \"rtl\" : \"ltr\"\r\n )\r\n );\r\n }}\r\n >\r\n <FontAwesomeIcon icon=\"language\" />\r\n </IconButton>\r\n <Avatar />\r\n <div style={{ marginLeft: 5, marginRight: 5 }}>\r\n {isMobile ? \"\" : UserSession.value?.userProfile?.username}\r\n </div>\r\n <IconButton color=\"inherit\" onClick={handleLogout}>\r\n <FontAwesomeIcon\r\n rotation={AppLayout.appDirection === \"rtl\" ? 180 : undefined}\r\n icon=\"arrow-right-from-bracket\"\r\n />\r\n </IconButton>\r\n </Toolbar>\r\n </AppBar>\r\n );\r\n};\r\n\r\nexport default TopBar;\r\n","import { styled } from \"@mui/material\";\r\n\r\nexport const DrawerHeader = styled(\"div\")(({ theme }) => ({\r\n display: \"flex\",\r\n alignItems: \"center\", \r\n // padding: theme.spacing(0, 1),\r\n // necessary for content to be below app bar\r\n ...theme.mixins.toolbar,\r\n justifyContent: \"flex-end\",\r\n}));\r\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import { useSelector } from \"react-redux\";\r\nimport { RootState } from \"../redux/store\";\r\n\r\n\r\nconst useSession = () => {\r\n const UserSession = useSelector((state: RootState) => state.UserSession);\r\n const isUserAuthorized = (authorityCode: string): boolean => {\r\n if (UserSession?.value?.authorities) {\r\n // if (UserSession.value.authorities.includes(\"DEVELOPMENT_ADMIN\")) {\r\n // return true;\r\n // }\r\n for (let grantedAuthority of UserSession.value.authorities) {\r\n if (\r\n grantedAuthority?.authority === \"DEVELOPMENT_ADMIN\" ||\r\n grantedAuthority?.authority === authorityCode\r\n ) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n };\r\n return { UserSession, isUserAuthorized };\r\n};\r\n\r\nexport default useSession;\r\n","import { TreeViewBaseItem } from \"@mui/x-tree-view/models\";\r\nimport { AdministrationItems } from \"./Administration\";\r\nimport { IconProp } from \"@fortawesome/fontawesome-svg-core\";\r\n\r\nexport type ExtendedTreeItemProps = {\r\n icon: IconProp;\r\n id: string;\r\n label: string;\r\n action?: \"NAVIGATION\";\r\n authority?: string;\r\n actionPayload?: {\r\n path?: string;\r\n parameters?: object;\r\n };\r\n children?: ExtendedTreeItemProps[];\r\n};\r\n\r\nexport const findNavigationItemById = (\r\n id: string,\r\n nodes: ExtendedTreeItemProps[]\r\n): ExtendedTreeItemProps | undefined => {\r\n for (const node of nodes) {\r\n if (node.id === id) return node;\r\n if (node.children) {\r\n const found = findNavigationItemById(id, node.children);\r\n if (found) return found;\r\n }\r\n }\r\n return undefined;\r\n};\r\n\r\nexport const NavigationItems: TreeViewBaseItem<ExtendedTreeItemProps>[] = [\r\n ...AdministrationItems, \r\n];\r\n","import { TreeViewBaseItem } from \"@mui/x-tree-view/models\";\r\nimport { ExtendedTreeItemProps } from \"..\";\r\nimport { adminNavigationItems } from \"./adminNavigationItems\";\r\n\r\nexport const AdministrationItems: TreeViewBaseItem<ExtendedTreeItemProps>[] = [\r\n ...adminNavigationItems\r\n// {\r\n// id: \"1\",\r\n// label: \"System Administration\",\r\n// icon: \"gears\",\r\n// authority: \"DEVELOPMENT_ADMIN\",\r\n// children: [\r\n// {\r\n// id: \"1.1\",\r\n// label: \"Security\",\r\n// icon: \"shield\",\r\n// action: \"NAVIGATION\",\r\n// actionPayload: { path: \"Security\" },\r\n// children: [\r\n// {\r\n// id: \"1.1.1\",\r\n// label: \"Roles\",\r\n// icon: \"tag\",\r\n// action: \"NAVIGATION\",\r\n// actionPayload: { path: \"admin/security/roles\" },\r\n// },\r\n// {\r\n// id: \"1.1.2\",\r\n// label: \"Authorities\",\r\n// icon: \"key\",\r\n// action: \"NAVIGATION\",\r\n// actionPayload: { path: \"admin/security/authorities\" },\r\n// children: [],\r\n// },\r\n// ],\r\n// },\r\n// {\r\n// id: \"1.2\",\r\n// label: \"Development Tools\",\r\n// icon: \"code\",\r\n// authority: \"DEVELOPMENT_ADMIN\",\r\n// children: [\r\n// {\r\n// id: \"1.2.1\",\r\n// label: \"Datasources\",\r\n// icon: \"database\",\r\n// authority: \"DEVELOPMENT_ADMIN\",\r\n// action: \"NAVIGATION\",\r\n// actionPayload: { path: \"admin/datasources\" },\r\n// },\r\n// {\r\n// id: \"1.2.2\",\r\n// label: \"Parameters\",\r\n// icon: \"p\",\r\n// authority: \"DEVELOPMENT_ADMIN\",\r\n// action: \"NAVIGATION\",\r\n// actionPayload: { path: \"admin/parameters\" },\r\n// },\r\n// {\r\n// id: \"1.2.3\",\r\n// label: \"System Queries\",\r\n// icon: \"file-code\",\r\n// authority: \"DEVELOPMENT_ADMIN\",\r\n// action: \"NAVIGATION\",\r\n// actionPayload: { path: \"admin/queries\" },\r\n// },\r\n// ],\r\n// },\r\n// ],\r\n// },\r\n];\r\n","import { TreeViewBaseItem } from \"@mui/x-tree-view/models\";\r\nimport { ExtendedTreeItemProps } from \"..\";\r\n\r\nexport const adminNavigationItems: TreeViewBaseItem<ExtendedTreeItemProps>[] = [\r\n {\r\n id: \"admin\",\r\n label: \"SYSTEM_ADMINISTRATION\",\r\n authority: \"DEVELOPMENT_ADMIN\",\r\n icon: \"cogs\",\r\n children: [\r\n {\r\n id: \"admin.systemManagement\",\r\n label: \"SYSTEM_MANAGEMENT\",\r\n icon: \"gear\",\r\n children: [\r\n {\r\n id: \"admin.systemManagement.Organization\",\r\n label: \"ORGANIZATION_PLURAL\",\r\n icon: \"globe\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/organizations\" },\r\n },\r\n {\r\n id: \"admin.systemManagement.OrganizationApplication\",\r\n label: \"ORGANIZATION_APPLICATION_PLURAL\",\r\n icon: \"diagram-project\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/organizationapplications\" },\r\n },\r\n ],\r\n },\r\n {\r\n id: \"admin.security\",\r\n label: \"SECURITY_ADMINISTRATION\",\r\n icon: \"shield\",\r\n children: [\r\n {\r\n id: \"admin.security.Authority\",\r\n label: \"AUTHORITY_PLURAL\",\r\n icon: \"key\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/authorities\" },\r\n },\r\n {\r\n id: \"admin.Role\",\r\n label: \"ROLE_PLURAL\",\r\n icon: \"tag\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/roles\" },\r\n },\r\n {\r\n id: \"admin.security.Employee\",\r\n label: \"EMPLOYEE_PLURAL\",\r\n icon: \"user\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/employees\" },\r\n },\r\n ],\r\n },\r\n {\r\n id: \"admin.devtools\",\r\n label: \"DEVELOPMENT_TOOLS\",\r\n icon: \"code\",\r\n children: [\r\n {\r\n id: \"admin.devtools.DatasourceConnection\",\r\n label: \"DATASOURCE_CONNECTION_PLURAL\",\r\n icon: \"plug\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/datasourceconnections\" },\r\n },\r\n {\r\n id: \"admin.devtools.EntityParameter\",\r\n label: \"ENTITY_PARAMETER_PLURAL\",\r\n icon: \"p\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/entityparameters\" },\r\n },\r\n {\r\n id: \"admin.devtools.DataQuery\",\r\n label: \"DATA_QUERY_PLURAL\",\r\n icon: \"file-code\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/dataqueries\" },\r\n },\r\n {\r\n id: \"admin.devtools.ExcelUploaderHeader\",\r\n label: \"EXCEL_UPLOADER_HEADER_PLURAL\",\r\n icon: \"file-excel\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/exceluploaderheaders\" },\r\n },\r\n {\r\n id: \"admin.devtools.Report\",\r\n label: \"REPORT_PLURAL\",\r\n icon: \"file\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/reports\" },\r\n },\r\n {\r\n id: \"admin.devtools.WorkflowDocument\",\r\n label: \"WORKFLOW_DOCUMENT_PLURAL\",\r\n icon: \"chart-diagram\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/workflowdocuments\" },\r\n },\r\n {\r\n id: \"admin.devtools.BluePrint\",\r\n label: \"BLUE_PRINT_PLURAL\",\r\n icon: \"fingerprint\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/blueprints\" },\r\n },\r\n {\r\n id: \"admin.devtools.Widget\",\r\n label: \"WIDGET_PLURAL\",\r\n icon: \"chart-pie\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/widgets\" },\r\n },\r\n {\r\n id: \"admin.devtools.Dashboard\",\r\n label: \"DASHBOARD_PLURAL\",\r\n icon: \"square-poll-vertical\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/dashboards\" },\r\n },\r\n {\r\n id: \"admin.devtools.MailTemplate\",\r\n label: \"MAIL_TEMPLATE_PLURAL\",\r\n icon: \"envelope\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/mailtemplates\" },\r\n },\r\n {\r\n id: \"admin.devtools.Notification\",\r\n label: \"NOTIFICATION_PLURAL\",\r\n icon: \"bell\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/notifications\" },\r\n },\r\n ],\r\n },\r\n {\r\n id: \"admin.followup\",\r\n label: \"SYSTEM_MONITORING\",\r\n icon: \"tv\",\r\n children: [\r\n {\r\n id: \"admin.WorkflowDocumentMailLog\",\r\n label: \"WORKFLOW_DOCUMENT_MAIL_LOG_PLURAL\",\r\n icon: \"envelopes-bulk\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/workflowdocumentmaillogs\" },\r\n },\r\n {\r\n id: \"admin.MailNotificationQueue\",\r\n label: \"MAIL_NOTIFICATION_QUEUE_PLURAL\",\r\n icon: \"envelope-open-text\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/mailnotificationqueues\" },\r\n },\r\n {\r\n id: \"admin.NotificationQueue\",\r\n label: \"NOTIFICATION_QUEUE_PLURAL\",\r\n icon: \"bell\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/notificationqueues\" },\r\n },\r\n ],\r\n },\r\n\r\n {\r\n id: \"admin.Lookup\",\r\n label: \"LOOKUP_PLURAL\",\r\n icon: \"list-check\",\r\n action: \"NAVIGATION\",\r\n actionPayload: { path: \"admin/lookups\" },\r\n },\r\n ],\r\n },\r\n];\r\n","import * as React from \"react\";\r\nimport clsx from \"clsx\";\r\nimport { animated, useSpring } from \"@react-spring/web\";\r\nimport { styled, alpha } from \"@mui/material/styles\";\r\nimport { TransitionProps } from \"@mui/material/transitions\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Collapse from \"@mui/material/Collapse\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport { RichTreeView } from \"@mui/x-tree-view/RichTreeView\";\r\nimport { treeItemClasses } from \"@mui/x-tree-view/TreeItem\";\r\nimport {\r\n useTreeItem2,\r\n UseTreeItem2Parameters,\r\n} from \"@mui/x-tree-view/useTreeItem2\";\r\nimport {\r\n TreeItem2Checkbox,\r\n TreeItem2Content,\r\n TreeItem2IconContainer,\r\n TreeItem2Label,\r\n TreeItem2Root,\r\n} from \"@mui/x-tree-view/TreeItem2\";\r\nimport { TreeItem2Icon } from \"@mui/x-tree-view/TreeItem2Icon\";\r\nimport { TreeItem2Provider } from \"@mui/x-tree-view/TreeItem2Provider\";\r\nimport { TreeItem2DragAndDropOverlay } from \"@mui/x-tree-view/TreeItem2DragAndDropOverlay\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { RootState } from \"../redux/store\";\r\nimport { IconProp } from \"@fortawesome/fontawesome-svg-core\";\r\nimport { useIsMobile } from \"../hooks/UseMobile\";\r\nimport useSession from \"../hooks/UseSession\";\r\nimport { findNavigationItemById, NavigationItems } from \"../navigationItems\";\r\nimport { DRAWER_WIDTH } from \"../redux/features/common/AppLayoutSlice\";\r\n\r\nfunction DotIcon() {\r\n return (\r\n <Box\r\n sx={{\r\n width: 6,\r\n height: 6,\r\n borderRadius: \"70%\",\r\n bgcolor: \"warning.main\",\r\n display: \"inline-block\",\r\n verticalAlign: \"middle\",\r\n zIndex: 1,\r\n mx: 1,\r\n }}\r\n />\r\n );\r\n}\r\ndeclare module \"react\" {\r\n interface CSSProperties {\r\n \"--tree-view-color\"?: string;\r\n \"--tree-view-bg-color\"?: string;\r\n }\r\n}\r\n\r\nconst StyledTreeItemRoot = styled(TreeItem2Root)(({ theme }) => ({\r\n color: theme.palette.grey[400],\r\n position: \"relative\",\r\n [`& .${treeItemClasses.groupTransition}`]: {\r\n marginLeft: theme.spacing(2.5),\r\n },\r\n ...theme.applyStyles(\"light\", {\r\n color: theme.palette.grey[800],\r\n }),\r\n})) as unknown as typeof TreeItem2Root;\r\n\r\nconst CustomTreeItemContent = styled(TreeItem2Content)(({ theme }) => ({\r\n flexDirection: \"row-reverse\",\r\n borderRadius: theme.spacing(0.7),\r\n marginBottom: theme.spacing(0.5),\r\n marginTop: theme.spacing(0.5),\r\n padding: theme.spacing(0.5),\r\n paddingRight: theme.spacing(1),\r\n [`&.Mui-expanded `]: {\r\n \"&:not(.Mui-focused, .Mui-selected, .Mui-selected.Mui-focused) .labelIcon\":\r\n {\r\n color: theme.palette.primary.dark,\r\n ...theme.applyStyles(\"light\", {\r\n color: theme.palette.primary.main,\r\n }),\r\n },\r\n \"&::before\": {\r\n content: '\"\"',\r\n display: \"block\",\r\n position: \"absolute\",\r\n left: \"16px\",\r\n top: \"44px\",\r\n height: \"calc(100% - 48px)\",\r\n width: \"1.5px\",\r\n backgroundColor: theme.palette.grey[700],\r\n ...theme.applyStyles(\"light\", {\r\n backgroundColor: theme.palette.grey[300],\r\n }),\r\n },\r\n },\r\n \"&:hover\": {\r\n backgroundColor: alpha(theme.palette.primary.main, 0.1),\r\n color: \"white\",\r\n ...theme.applyStyles(\"light\", {\r\n color: theme.palette.primary.main,\r\n }),\r\n },\r\n [`&.Mui-focused, &.Mui-selected, &.Mui-selected.Mui-focused`]: {\r\n backgroundColor: theme.palette.primary.dark,\r\n color: theme.palette.primary.contrastText,\r\n ...theme.applyStyles(\"light\", {\r\n backgroundColor: theme.palette.primary.main,\r\n }),\r\n },\r\n}));\r\n\r\nconst AnimatedCollapse = animated(Collapse);\r\n\r\nfunction TransitionComponent(props: TransitionProps) {\r\n const style = useSpring({\r\n to: {\r\n opacity: props.in ? 1 : 0,\r\n transform: `translate3d(0,${props.in ? 0 : 20}px,0)`,\r\n },\r\n });\r\n\r\n return <AnimatedCollapse style={style} {...props} />;\r\n}\r\n\r\nconst StyledTreeItemLabelText = styled(Typography)({\r\n color: \"inherit\",\r\n fontWeight: 500,\r\n}) as unknown as typeof Typography;\r\n\r\ninterface CustomLabelProps {\r\n children: any;\r\n icon: IconProp;\r\n expandable?: boolean;\r\n}\r\n\r\nfunction CustomLabel({\r\n icon,\r\n expandable,\r\n children,\r\n ...other\r\n}: CustomLabelProps) {\r\n const { t } = useTranslation();\r\n const appLayoutState = useSelector((state: RootState) => state.AppLayout);\r\n return (\r\n <TreeItem2Label\r\n {...other}\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n padding: 1,\r\n }}\r\n >\r\n <FontAwesomeIcon\r\n style={{\r\n marginRight: appLayoutState.appDirection === \"ltr\" ? 7 : undefined,\r\n marginLeft: appLayoutState.appDirection === \"rtl\" ? 7 : undefined,\r\n fontSize: \"1.2rem\",\r\n }}\r\n icon={icon}\r\n />\r\n <StyledTreeItemLabelText variant=\"body2\" sx={{ fontSize: 16 }}>\r\n {t(children)}\r\n </StyledTreeItemLabelText>\r\n {expandable && <DotIcon />}\r\n </TreeItem2Label>\r\n );\r\n}\r\n\r\nconst isExpandable = (reactChildren: React.ReactNode) => {\r\n if (Array.isArray(reactChildren)) {\r\n return reactChildren.length > 0 && reactChildren.some(isExpandable);\r\n }\r\n return Boolean(reactChildren);\r\n};\r\n\r\ninterface CustomTreeItemProps\r\n extends Omit<UseTreeItem2Parameters, \"rootRef\">,\r\n Omit<React.HTMLAttributes<HTMLLIElement>, \"onFocus\"> {}\r\n\r\nconst CustomTreeItem = React.forwardRef(function CustomTreeItem(\r\n props: CustomTreeItemProps,\r\n ref: React.Ref<HTMLLIElement>\r\n) {\r\n const { id, itemId, label, disabled, children, ...other } = props;\r\n const {\r\n getRootProps,\r\n getContentProps,\r\n getIconContainerProps,\r\n getCheckboxProps,\r\n getLabelProps,\r\n getGroupTransitionProps,\r\n getDragAndDropOverlayProps,\r\n status,\r\n publicAPI,\r\n } = useTreeItem2({ id, itemId, children, label, disabled, rootRef: ref });\r\n const item = publicAPI.getItem(itemId);\r\n const expandable = isExpandable(children);\r\n return (\r\n <TreeItem2Provider itemId={itemId}>\r\n <StyledTreeItemRoot {...getRootProps(other)}>\r\n <CustomTreeItemContent\r\n {...getContentProps({\r\n className: clsx(\"content\", {\r\n \"Mui-expanded\": status.expanded,\r\n \"Mui-selected\": status.selected,\r\n \"Mui-focused\": status.focused,\r\n \"Mui-disabled\": status.disabled,\r\n }),\r\n })}\r\n >\r\n <TreeItem2IconContainer {...getIconContainerProps()}>\r\n <TreeItem2Icon status={status} />\r\n </TreeItem2IconContainer>\r\n <TreeItem2Checkbox {...getCheckboxProps()} />\r\n <CustomLabel\r\n {...getLabelProps({\r\n icon: item?.icon || \"book\",\r\n expandable: expandable && status.expanded,\r\n })}\r\n />\r\n <TreeItem2DragAndDropOverlay {...getDragAndDropOverlayProps()} />\r\n </CustomTreeItemContent>\r\n {children && <TransitionComponent {...getGroupTransitionProps()} />}\r\n </StyledTreeItemRoot>\r\n </TreeItem2Provider>\r\n );\r\n});\r\n\r\nexport default function NavigationTree() {\r\n const navigate = useNavigate();\r\n const appLayoutState = useSelector((state: RootState) => state.AppLayout);\r\n const AppInfo = useSelector((state: RootState) => state.AppInfo.value);\r\n const dispatch = useDispatch();\r\n const isMobile = useIsMobile();\r\n const { isUserAuthorized } = useSession();\r\n const filterData = (data) => {\r\n return data\r\n .filter(\r\n (item: any) =>\r\n item.authority === undefined ||\r\n item.authority == null ||\r\n isUserAuthorized(item.authority)\r\n )\r\n .map((item: any) => {\r\n if (item.children) {\r\n item.children = filterData(item.children);\r\n }\r\n return item;\r\n });\r\n };\r\n\r\n const mergedNavigationItems = [];\r\n if (AppInfo.enableAdministrationModule) {\r\n mergedNavigationItems.push(...NavigationItems);\r\n }\r\n mergedNavigationItems.push(...AppInfo.businessNavigationItems);\r\n const authoriedNavigationItems = filterData(mergedNavigationItems);\r\n\r\n return (\r\n <RichTreeView\r\n items={authoriedNavigationItems}\r\n onItemClick={(event, itemId) => {\r\n const navigationItem = findNavigationItemById(\r\n itemId,\r\n mergedNavigationItems\r\n );\r\n if (\r\n navigationItem?.action === \"NAVIGATION\" &&\r\n navigationItem?.actionPayload != null &&\r\n (navigationItem.children === undefined ||\r\n navigationItem.children === null ||\r\n navigationItem.children.length == 0)\r\n ) {\r\n navigate(navigationItem?.actionPayload?.path || \"\");\r\n // dispatch(AppLayoutActions.toggleSideBarState());\r\n }\r\n }}\r\n sx={{\r\n height: \"fit-content\",\r\n flexGrow: 1,\r\n maxWidth: DRAWER_WIDTH,\r\n direction: appLayoutState.appDirection,\r\n maxHeight: isMobile ? 300 : undefined,\r\n overflowY: \"auto\",\r\n overflowX: \"auto\",\r\n }}\r\n slots={{ item: CustomTreeItem }}\r\n />\r\n );\r\n}\r\n","import Divider from \"@mui/material/Divider\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport Drawer from \"@mui/material/Drawer\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { DrawerHeader } from \"./DrawerHeader\";\r\nimport { Box, Typography, useTheme } from \"@mui/material\";\r\nimport { RootState } from \"../redux/store\";\r\nimport {\r\n AppLayoutActions,\r\n DRAWER_WIDTH,\r\n} from \"../redux/features/common/AppLayoutSlice\";\r\nimport NavigationTree from \"./NavigationTree\";\r\n\r\nconst SideBar: React.FC = () => {\r\n const AppInfo = useSelector((state: RootState) => state.AppInfo.value);\r\n const theme = useTheme();\r\n const AppLayout = useSelector((state: RootState) => state.AppLayout);\r\n const dispatch = useDispatch();\r\n const toggleSideBar = () => {\r\n dispatch(AppLayoutActions.toggleSideBarState());\r\n };\r\n return (\r\n <Drawer\r\n sx={{\r\n width: DRAWER_WIDTH,\r\n flexShrink: 0,\r\n \"& .MuiDrawer-paper\": {\r\n width: DRAWER_WIDTH,\r\n boxSizing: \"border-box\",\r\n },\r\n }}\r\n variant=\"persistent\"\r\n anchor={AppLayout.appDirection === \"ltr\" ? \"left\" : \"right\"}\r\n open={AppLayout.sideBarOpened}\r\n >\r\n <DrawerHeader>\r\n <Box sx={{ width: \"100%\" }}>\r\n <Typography\r\n color=\"primary\"\r\n sx={{\r\n width: \"100%\",\r\n textAlign: \"center\",\r\n fontSize: 18,\r\n fontWeight: \"bold\",\r\n }}\r\n >\r\n System Content\r\n </Typography>\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-around\",\r\n marginTop: 1,\r\n }}\r\n >\r\n <Typography sx={{ fontSize: 12 }} color=\"textDisabled\">\r\n {AppInfo.appName}\r\n </Typography>\r\n <Typography sx={{ fontSize: 12 }} color=\"textDisabled\">\r\n V.{AppInfo.appVersion}\r\n </Typography>\r\n </Box>\r\n </Box>\r\n <IconButton onClick={toggleSideBar}>\r\n {theme.direction === \"ltr\" ? (\r\n <FontAwesomeIcon icon=\"angle-left\" />\r\n ) : (\r\n <FontAwesomeIcon icon=\"angle-right\" />\r\n )}\r\n </IconButton>\r\n </DrawerHeader>\r\n <Divider />\r\n <NavigationTree />\r\n </Drawer>\r\n );\r\n};\r\n\r\nexport default SideBar;\r\n","import rtlPlugin from \"stylis-plugin-rtl\";\r\nimport { prefixer } from \"stylis\";\r\nimport createCache from \"@emotion/cache\";\r\n\r\nexport const cacheRtl = createCache({\r\n key: \"muirtl\",\r\n stylisPlugins: [prefixer, rtlPlugin],\r\n});\r\n\r\nexport const cacheLtr = createCache({\r\n key: \"mui\",\r\n});","import {\r\n Button,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogContentText,\r\n DialogTitle,\r\n} from \"@mui/material\";\r\nimport { useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\ninterface ConfirmationWindowProps {\r\n title: string;\r\n body: string;\r\n onConfirmationCallBk: () => void;\r\n}\r\n\r\nexport const useConfirmationWindow = (props: ConfirmationWindowProps) => {\r\n const [open, setOpen] = useState<boolean>(false);\r\n const { t } = useTranslation();\r\n const ConfirmationWindow: React.FC = () => {\r\n return (\r\n <Dialog open={open}>\r\n <DialogTitle>{props.title}</DialogTitle>\r\n <DialogContent>\r\n <DialogContentText>{props.body}</DialogContentText>\r\n </DialogContent>\r\n <DialogActions>\r\n <Button\r\n variant=\"contained\"\r\n color=\"primary\"\r\n onClick={() => {\r\n setOpen(false);\r\n }}\r\n >\r\n {t(\"NO_LABEL\")}\r\n </Button>\r\n <Button\r\n variant=\"contained\"\r\n color=\"error\"\r\n onClick={() => {\r\n props.onConfirmationCallBk();\r\n setOpen(false);\r\n }}\r\n autoFocus\r\n >\r\n {t(\"YES_LABEL\")}\r\n </Button>\r\n </DialogActions>\r\n </Dialog>\r\n );\r\n };\r\n return { ConfirmationWindow, open, setOpen };\r\n};\r\n","import { Button } from \"@mui/material\";\r\nimport { RecordAction } from \"../DataEntryTypes\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { toast } from \"react-toastify\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport useSession from \"../../../../hooks/UseSession\";\r\nimport { useConfirmationWindow } from \"../../../../hooks/UseConfirmationWindow\";\r\n\r\nconst TemplateGridMultiRecordAction: React.FC<RecordAction> = (\r\n rowAction: RecordAction\r\n) => {\r\n const { t } = useTranslation();\r\n const session = useSession();\r\n const { ConfirmationWindow, setOpen } = useConfirmationWindow({\r\n body: t(rowAction?.confirmationMessage || \"ACTION_CONFIRMATION\"),\r\n title: t(\"CONFIRMATION\"),\r\n onConfirmationCallBk: async () => {\r\n await rowAction?.actionFn(\r\n rowAction.recordsToProcessActionOn,\r\n rowAction.recordIdsToProcessActionOn\r\n );\r\n if (rowAction?.reloadData) {\r\n rowAction.reloadData();\r\n }\r\n },\r\n });\r\n let isActionAllowed = true;\r\n if (rowAction.authority) {\r\n isActionAllowed = session.isUserAuthorized(rowAction.authority);\r\n }\r\n\r\n if (isActionAllowed) {\r\n return (\r\n <>\r\n <ConfirmationWindow />\r\n <Button\r\n onClick={async () => {\r\n if (\r\n rowAction?.recordsToProcessActionOn &&\r\n rowAction?.recordsToProcessActionOn.length > 0\r\n ) {\r\n if (rowAction?.preActionValidation) {\r\n for (const record of rowAction.recordsToProcessActionOn) {\r\n if (!rowAction.preActionValidation(record)) {\r\n return;\r\n }\r\n }\r\n }\r\n if (rowAction?.isConfirmationRequired === true) {\r\n setOpen(true);\r\n } else {\r\n await rowAction.actionFn(\r\n rowAction.recordsToProcessActionOn,\r\n rowAction.recordIdsToProcessActionOn\r\n );\r\n if (rowAction?.reloadData) {\r\n rowAction.reloadData();\r\n }\r\n }\r\n } else {\r\n toast.error(t(\"AT_LEAST_ONE_RECORD_SELECTED_MESSAGE\"));\r\n }\r\n }}\r\n variant={\r\n rowAction?.label\r\n ? \"outlined\"\r\n : rowAction?.formActionProps?.actionButtonVariant\r\n ? rowAction.formActionProps.actionButtonVariant\r\n : \"text\"\r\n }\r\n size=\"small\"\r\n color={rowAction?.formActionProps?.actionButtonColor || \"primary\"}\r\n >\r\n {rowAction?.icon ? (\r\n <FontAwesomeIcon\r\n style={{ marginRight: 5, marginLeft: 5 }}\r\n icon={rowAction.icon}\r\n />\r\n ) : (\r\n <></>\r\n )}\r\n {rowAction?.label ? t(rowAction.label) : <></>}\r\n </Button>\r\n </>\r\n );\r\n }\r\n};\r\n\r\nexport default TemplateGridMultiRecordAction;\r\n","export const DATE_FORMAT = \"YYYY-MM-DD\";\r\nexport const DATE_TIME_FORMAT = \"YYYY-MM-DD HH:mm:ss\";\r\nexport const LIGHT_THEME_INITIAL_MAIN_COLOR = \"#37505C\";\r\nexport const LIGHT_THEME_INITIAL_SECANDARY_COLOR = \"#ff6d00\";\r\nexport const DARK_THEME_INITIAL_MAIN_COLOR = \"#ea690e\";\r\nexport const DARK_THEME_INITIAL_SECANDARY_COLOR = \"#74776B\";\r\n","import { DatePicker, LocalizationProvider } from \"@mui/x-date-pickers\";\r\nimport { AdapterMoment } from \"@mui/x-date-pickers/AdapterMoment\";\r\nimport moment from \"moment\";\r\nimport { DATE_FORMAT } from \"../../../../../util/constants\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\ninterface DatefieldProps {\r\n value: string | null;\r\n label: string;\r\n disabled?: boolean;\r\n required?: boolean;\r\n sx?: any;\r\n format?: string;\r\n errorMessage?: any;\r\n onChangeCallBack: Function;\r\n [x: string | number | symbol]: unknown;\r\n}\r\n\r\nconst Datefield: React.FC<DatefieldProps> = (props) => {\r\n const { t } = useTranslation();\r\n return (\r\n <LocalizationProvider dateAdapter={AdapterMoment}>\r\n <DatePicker\r\n value={\r\n props.value != null && props.value !== undefined && props.value !== \"\"\r\n ? moment(props.value, props?.format || DATE_FORMAT)\r\n : null\r\n }\r\n sx={props.sx}\r\n label={t(props.label)}\r\n format={props?.format || DATE_FORMAT}\r\n disabled={props.disabled}\r\n onChange={(momentValue) => {\r\n let v = null;\r\n if (momentValue != null && momentValue.isValid()) {\r\n v = momentValue.format(props?.format || DATE_FORMAT);\r\n }\r\n if (\r\n props.onChangeCallBack !== undefined &&\r\n props.onChangeCallBack != null\r\n ) {\r\n props.onChangeCallBack(v);\r\n }\r\n }}\r\n slotProps={{\r\n textField: {\r\n InputLabelProps: { shrink: true },\r\n variant: \"outlined\",\r\n required: props.required,\r\n error:\r\n props.errorMessage !== undefined && props.errorMessage != null,\r\n helperText:\r\n props.errorMessage !== undefined && props.errorMessage != null ? (\r\n <>{t(props.errorMessage)}</>\r\n ) : (\r\n <></>\r\n ),\r\n },\r\n }}\r\n />\r\n </LocalizationProvider>\r\n );\r\n};\r\n\r\nexport default Datefield;\r\n","import { DateTimePicker, LocalizationProvider } from \"@mui/x-date-pickers\";\r\nimport { AdapterMoment } from \"@mui/x-date-pickers/AdapterMoment\";\r\nimport moment from \"moment\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { DATE_TIME_FORMAT } from \"../../../../../util/constants\";\r\n\r\ninterface DatetimeFieldProps {\r\n value: string | null;\r\n label: string;\r\n disabled?: boolean;\r\n required?: boolean;\r\n format?: string;\r\n sx?: any;\r\n errorMessage?: any;\r\n onChangeCallBack: Function;\r\n [x: string | number | symbol]: unknown;\r\n}\r\n\r\nconst DatetimeField: React.FC<DatetimeFieldProps> = (props) => {\r\n const { t } = useTranslation();\r\n return (\r\n <LocalizationProvider dateAdapter={AdapterMoment}>\r\n <DateTimePicker\r\n value={\r\n props.value != null && props.value !== undefined && props.value !== \"\"\r\n ? moment(props.value, props?.format || DATE_TIME_FORMAT)\r\n : null\r\n }\r\n label={t(props.label)}\r\n sx={props.sx}\r\n format={props?.format || DATE_TIME_FORMAT}\r\n disabled={props.disabled}\r\n onChange={(momentValue) => {\r\n let v = null;\r\n if (momentValue != null && momentValue.isValid()) {\r\n v = momentValue.format(props?.format || DATE_TIME_FORMAT);\r\n }\r\n if (\r\n props.onChangeCallBack !== undefined &&\r\n props.onChangeCallBack != null\r\n ) {\r\n props.onChangeCallBack(v);\r\n }\r\n }}\r\n slotProps={{\r\n textField: {\r\n variant: \"outlined\",\r\n required: props.required,\r\n error:\r\n props.errorMessage !== undefined && props.errorMessage != null,\r\n helperText:\r\n props.errorMessage !== undefined && props.errorMessage != null ? (\r\n <>{t(props.errorMessage)}</>\r\n ) : (\r\n <></>\r\n ),\r\n },\r\n }}\r\n />\r\n </LocalizationProvider>\r\n );\r\n};\r\n\r\nexport default DatetimeField;\r\n","import { useSelector } from \"react-redux\";\r\nimport { RootState } from \"../../../../../redux/store\";\r\nimport { Autocomplete, Popper, TextField } from \"@mui/material\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\ninterface ComboBoxProps {\r\n value: any;\r\n onChangeCallBack: Function;\r\n label: string;\r\n disabled?: boolean;\r\n required?: boolean;\r\n options: Array<any>;\r\n errorMessage?: any;\r\n displayField: string;\r\n valueField: string;\r\n sx?: any;\r\n}\r\n\r\nconst ComboBox: React.FC<ComboBoxProps> = (props) => {\r\n const AppLayoutState = useSelector((state: RootState) => state.AppLayout);\r\n const { t } = useTranslation();\r\n const getValue = (v: string) => {\r\n for (let option of props.options) {\r\n if (option[props.valueField] == v) {\r\n return option;\r\n }\r\n }\r\n return null;\r\n };\r\n return (\r\n <Autocomplete\r\n sx={props.sx}\r\n value={getValue(props.value)}\r\n options={props.options}\r\n disabled={props.disabled}\r\n onChange={(event, newValue) => {\r\n if (\r\n props.onChangeCallBack !== undefined &&\r\n props.onChangeCallBack != null\r\n ) {\r\n if (newValue != null) {\r\n let v = newValue[props.valueField];\r\n props.onChangeCallBack(v, newValue);\r\n } else {\r\n props.onChangeCallBack(null, null);\r\n }\r\n }\r\n }}\r\n clearOnBlur\r\n handleHomeEndKeys\r\n getOptionLabel={(option) => {\r\n return option != null ? t(option[props.displayField]) : \"\";\r\n }}\r\n renderOption={(props1, option) => {\r\n return (\r\n <li {...props1}>\r\n {option != null ? t(option[props.displayField]) : \"\"}\r\n </li>\r\n );\r\n }}\r\n slots={{\r\n popper: (props: any) => (\r\n <Popper\r\n {...props}\r\n style={{ ...props.style, direction: AppLayoutState.appDirection }}\r\n />\r\n ),\r\n }}\r\n renderInput={(params) => {\r\n return (\r\n <TextField\r\n {...params}\r\n required={props.required || false}\r\n variant=\"outlined\"\r\n InputLabelProps={{ shrink: true }}\r\n label={t(props.label)}\r\n error={\r\n props.errorMessage != null && props.errorMessage !== undefined\r\n ? true\r\n : false\r\n }\r\n helperText={\r\n props.errorMessage != null && props.errorMessage !== undefined\r\n ? t(props.errorMessage)\r\n : \"\"\r\n }\r\n />\r\n );\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default ComboBox;\r\n","import { Checkbox, FormControlLabel } from \"@mui/material\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\ninterface CheckBoxProps {\r\n value: any;\r\n disabled?: boolean;\r\n required?: boolean;\r\n label: string;\r\n checkedValue?: any;\r\n unCheckedValue?: any;\r\n onChangeCallBack: Function;\r\n sx?: any;\r\n}\r\n\r\nconst CheckBox: React.FC<CheckBoxProps> = (props) => {\r\n const { t } = useTranslation();\r\n return (\r\n <FormControlLabel\r\n sx={props.sx}\r\n disabled={props.disabled || false}\r\n required={props.required || false}\r\n control={\r\n <Checkbox\r\n checked={\r\n props?.checkedValue == props.value ||\r\n props.value === \"true\" ||\r\n props.value == \"1\"\r\n ? true\r\n : false\r\n }\r\n onChange={(e) => {\r\n if (\r\n props.onChangeCallBack !== undefined &&\r\n props.onChangeCallBack != null\r\n ) {\r\n if (e.target.checked) {\r\n if (\r\n props.checkedValue !== undefined &&\r\n props.checkedValue != null\r\n ) {\r\n props.onChangeCallBack(props.checkedValue);\r\n } else {\r\n props.onChangeCallBack(\"true\");\r\n }\r\n } else {\r\n if (\r\n props.unCheckedValue !== undefined &&\r\n props.unCheckedValue != null\r\n ) {\r\n props.onChangeCallBack(props.unCheckedValue);\r\n } else {\r\n props.onChangeCallBack(\"false\");\r\n }\r\n }\r\n }\r\n }}\r\n />\r\n }\r\n label={t(props.label)}\r\n />\r\n );\r\n};\r\n\r\nexport default CheckBox;\r\n","import moment from \"moment\";\r\nimport { TemplateGridColDef } from \"../DataEntryTypes\";\r\nimport Datefield from \"../TemplateDataForm/FormFields/Datefield\";\r\nimport { DATE_FORMAT, DATE_TIME_FORMAT } from \"../../../../util/constants\";\r\nimport DatetimeField from \"../TemplateDataForm/FormFields/DatetimeField\";\r\nimport ComboBox from \"../TemplateDataForm/FormFields/ComboBox\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport CheckBox from \"../TemplateDataForm/FormFields/CheckBox\";\r\n\r\nexport const generateDateColumn: any = (colDef: TemplateGridColDef) => {\r\n const column: TemplateGridColDef = {\r\n ...colDef,\r\n type: \"string\",\r\n renderEditCell: (params: any) => {\r\n return (\r\n <Datefield\r\n sx={{ width: \"100%\" }}\r\n label=\"\"\r\n value={params.value}\r\n onChangeCallBack={(v: any) => {\r\n params.api.setEditCellValue({\r\n id: params.id,\r\n field: params.field,\r\n value: v,\r\n });\r\n }}\r\n />\r\n );\r\n },\r\n valueParser: (value: any, row: any, column: any) => {\r\n let v = null;\r\n if (value !== null) {\r\n v = moment(value).format(DATE_FORMAT);\r\n }\r\n return v;\r\n },\r\n valueFormatter: (value: any, row: any, column: any) => {\r\n return row[column.field];\r\n },\r\n };\r\n return column;\r\n};\r\n\r\nexport const generateDateTimeColumn: any = (colDef: TemplateGridColDef) => {\r\n const column: TemplateGridColDef = {\r\n ...colDef,\r\n type: \"string\",\r\n renderEditCell: (params: any) => {\r\n return (\r\n <DatetimeField\r\n sx={{ width: \"100%\" }}\r\n label=\"\"\r\n value={params.value}\r\n onChangeCallBack={(v: any) => {\r\n params.api.setEditCellValue({\r\n id: params.id,\r\n field: params.field,\r\n value: v,\r\n });\r\n }}\r\n />\r\n );\r\n },\r\n valueParser: (value: any, row: any, column: any) => {\r\n let v = null;\r\n if (value !== null) {\r\n v = moment(value).format(DATE_TIME_FORMAT);\r\n }\r\n return v;\r\n },\r\n valueFormatter: (value: any, row: any, column: any) => {\r\n return row[column.field];\r\n },\r\n };\r\n return column;\r\n};\r\n\r\ntype ComboBoxColumnProps = TemplateGridColDef & {\r\n options: Array<any>;\r\n displayField: string;\r\n valueField: string;\r\n};\r\nexport const generateComboColumn: (\r\n props: ComboBoxColumnProps\r\n) => TemplateGridColDef = (colDef: ComboBoxColumnProps) => {\r\n const column: TemplateGridColDef = {\r\n ...colDef,\r\n type: \"custom\",\r\n valueGetter: (value) => {\r\n if (value) {\r\n return value + \"\";\r\n }\r\n return value;\r\n },\r\n renderCell: (parameters: any) => {\r\n let record = null;\r\n try {\r\n record = parameters.colDef.options.find(\r\n (item: any) => item[parameters.colDef.valueField] == parameters.value\r\n );\r\n } catch (e) {}\r\n return (\r\n <div>\r\n {record != null\r\n ? record[parameters.colDef.displayField]\r\n : parameters.value}\r\n </div>\r\n );\r\n },\r\n\r\n renderEditCell: (params: any) => {\r\n return (\r\n <ComboBox\r\n {...params}\r\n sx={{ width: \"100%\" }}\r\n options={colDef.options}\r\n valueField={colDef.valueField}\r\n displayField={colDef.displayField}\r\n onChangeCallBack={(v: any, selectedRecord: any) => {\r\n if (v === null) {\r\n params.api.setEditCellValue({\r\n id: params.id,\r\n field: params.field,\r\n value: null,\r\n });\r\n }\r\n params.api.setEditCellValue({\r\n id: params.id,\r\n field: params.field,\r\n value: v + \"\",\r\n });\r\n }}\r\n />\r\n );\r\n },\r\n };\r\n return column;\r\n};\r\n\r\ntype CheckBoxColumnProps = TemplateGridColDef & {\r\n checkedValue?: string;\r\n unCheckedValue?: string;\r\n};\r\n\r\nexport const generateCheckBoxColumn: (\r\n props: CheckBoxColumnProps\r\n) => TemplateGridColDef = (colDef: CheckBoxColumnProps) => {\r\n return {\r\n ...colDef,\r\n type: \"custom\",\r\n valueGetter: (value) => {\r\n if (value == null || value == undefined) {\r\n return null;\r\n } else {\r\n return value + \"\";\r\n }\r\n },\r\n renderCell: (parameters: any) => {\r\n const value = parameters?.value;\r\n if (\r\n value === colDef.checkedValue ||\r\n value === \"true\" ||\r\n value === 1 ||\r\n value === true\r\n ) {\r\n return <FontAwesomeIcon icon=\"check\" color=\"green\" />;\r\n } else {\r\n return <FontAwesomeIcon icon=\"xmark\" color=\"red\" />;\r\n }\r\n },\r\n renderEditCell: (params: any) => {\r\n return (\r\n <CheckBox\r\n {...params}\r\n checkedValue={colDef?.checkedValue || \"true\"}\r\n unCheckedValue={colDef?.unCheckedValue || \"false\"}\r\n onChangeCallBack={(v: any) => {\r\n params.api.setEditCellValue({\r\n id: params.id,\r\n field: params.field,\r\n value: v + \"\",\r\n });\r\n }}\r\n />\r\n );\r\n },\r\n };\r\n};\r\n","import { GridRowSelectionModel } from \"@mui/x-data-grid-premium\";\r\nimport {\r\n FormElementProps,\r\n RecordFieldProps,\r\n TemplateGridColDef,\r\n} from \"./DataEntryTypes\";\r\nimport {\r\n generateCheckBoxColumn,\r\n generateComboColumn,\r\n generateDateColumn,\r\n generateDateTimeColumn,\r\n} from \"./TemplateDataGrid/DataGridColumnsUtil\";\r\nimport * as z from \"zod\";\r\nimport { TFunction } from \"i18next\";\r\n\r\nexport const getElementFields: (\r\n element: FormElementProps\r\n) => Array<RecordFieldProps> = (element: FormElementProps) => {\r\n const fields: Array<RecordFieldProps> = [];\r\n if (element.type === \"field\" && element.mode === \"props\" && element?.props) {\r\n fields.push(element.props);\r\n } else if (\r\n element.type === \"group\" &&\r\n element?.props &&\r\n element?.props?.elements\r\n ) {\r\n for (const childElement of element.props.elements) {\r\n fields.push(...getElementFields(childElement));\r\n }\r\n }\r\n return fields;\r\n};\r\n\r\nexport const getAllFields: (\r\n elements: Array<FormElementProps>\r\n) => Array<RecordFieldProps> = (elements: Array<FormElementProps>) => {\r\n const fields: Array<RecordFieldProps> = [];\r\n for (const element of elements) {\r\n fields.push(...getElementFields(element));\r\n }\r\n return fields;\r\n};\r\n\r\nexport const constructGridColumnsFromFields: (\r\n fields: Array<RecordFieldProps>,\r\n isDefaultEditable: boolean,\r\n t: TFunction<\"translation\", undefined>\r\n) => Array<TemplateGridColDef> = (fields, isDefaultEditable, t) => {\r\n const columns: Array<TemplateGridColDef> = [];\r\n for (const tableField of fields) {\r\n if (\r\n tableField?.fieldType === \"text\" ||\r\n tableField?.fieldType === \"number\"\r\n ) {\r\n const column: TemplateGridColDef = {\r\n ...tableField?.gridProps?.muiProps,\r\n editable:\r\n tableField?.gridProps?.muiProps?.editable || isDefaultEditable,\r\n type: tableField?.fieldType == \"number\" ? \"number\" : \"string\",\r\n field: tableField?.fieldName,\r\n headerName: t(tableField?.fieldLabel || tableField?.fieldName),\r\n headerAlign: \"center\",\r\n align: \"center\",\r\n hidden: tableField?.hidden,\r\n searchable: tableField?.gridProps?.searchable,\r\n flex: 1,\r\n minWidth: 200,\r\n };\r\n columns.push(column);\r\n } else if (tableField?.fieldType === \"date\") {\r\n const column: TemplateGridColDef = generateDateColumn({\r\n ...tableField?.gridProps?.muiProps,\r\n editable:\r\n tableField?.gridProps?.muiProps?.editable || isDefaultEditable,\r\n field: tableField?.fieldName,\r\n headerName: t(tableField?.fieldLabel || tableField?.fieldName),\r\n headerAlign: \"center\",\r\n align: \"center\",\r\n hidden: tableField?.hidden,\r\n searchable: tableField?.gridProps?.searchable,\r\n flex: 1,\r\n minWidth: 200,\r\n });\r\n columns.push(column);\r\n } else if (tableField?.fieldType === \"datetime\") {\r\n const column: TemplateGridColDef = generateDateTimeColumn({\r\n ...tableField?.gridProps?.muiProps,\r\n editable:\r\n tableField?.gridProps?.muiProps?.editable || isDefaultEditable,\r\n field: tableField?.fieldName,\r\n headerName: t(tableField?.fieldLabel || tableField?.fieldName),\r\n headerAlign: \"center\",\r\n align: \"center\",\r\n hidden: tableField?.hidden,\r\n searchable: tableField?.gridProps?.searchable,\r\n flex: 1,\r\n minWidth: 200,\r\n });\r\n columns.push(column);\r\n } else if (tableField?.fieldType === \"checkbox\") {\r\n const column = generateCheckBoxColumn({\r\n ...tableField?.gridProps?.muiProps,\r\n editable:\r\n tableField?.gridProps?.muiProps?.editable || isDefaultEditable,\r\n field: tableField?.fieldName,\r\n headerName: t(tableField?.fieldLabel || tableField?.fieldName),\r\n headerAlign: \"center\",\r\n align: \"center\",\r\n hidden: tableField?.hidden,\r\n searchable: tableField?.gridProps?.searchable,\r\n checkedValue: tableField?.checkedValue,\r\n unCheckedValue: tableField?.unCheckedValue,\r\n width: 150,\r\n });\r\n columns.push(column);\r\n } else if (tableField?.fieldType === \"combobox\") {\r\n const column: TemplateGridColDef = generateComboColumn({\r\n ...tableField?.gridProps?.muiProps,\r\n editable:\r\n tableField?.gridProps?.muiProps?.editable || isDefaultEditable,\r\n field: tableField?.fieldName,\r\n headerName: t(tableField?.fieldLabel || tableField?.fieldName),\r\n headerAlign: \"center\",\r\n align: \"center\",\r\n hidden: tableField?.hidden,\r\n searchable: tableField?.gridProps?.searchable,\r\n valueField: tableField?.optionValueField || \"value\",\r\n displayField: tableField?.optionDisplayField || \"display\",\r\n options: tableField?.options || [],\r\n flex: 1,\r\n minWidth: 200,\r\n });\r\n columns.push(column);\r\n }\r\n }\r\n return columns;\r\n};\r\n\r\nexport const constructValidationSchema = (fields: Array<RecordFieldProps>) => {\r\n const validationSchemaObj: any = {};\r\n for (const field of fields) {\r\n if (field?.fieldName) {\r\n const fieldName = field.fieldName;\r\n if (field.fieldType === \"number\") {\r\n if (field?.required === true) {\r\n validationSchemaObj[fieldName] = z.number({\r\n required_error: \"This field is required\",\r\n invalid_type_error: \"This field must be a number\",\r\n });\r\n } else {\r\n validationSchemaObj[fieldName] = z.number().optional().nullable();\r\n }\r\n } else {\r\n if (field?.required === true) {\r\n validationSchemaObj[fieldName] = z\r\n .string({ message: \"This field is required\" })\r\n .min(1, \"This field is required\");\r\n } else {\r\n validationSchemaObj[fieldName] = z.string().optional().nullable();\r\n }\r\n }\r\n }\r\n }\r\n return validationSchemaObj;\r\n};\r\n\r\nexport type GridSelection = {\r\n selectedRecords: Array<any>;\r\n selectedRecordIds: Array<any>;\r\n};\r\n\r\nexport const getGridSelection: (\r\n rowSelectionModel: GridRowSelectionModel,\r\n data: Array<any>,\r\n keyColumnName: string\r\n) => GridSelection = (\r\n rowSelectionModel: GridRowSelectionModel,\r\n data: Array<any>,\r\n keyColumnName: string\r\n) => {\r\n const sRecords = [];\r\n const sRecordIds = [];\r\n if (\r\n rowSelectionModel.type === \"exclude\" &&\r\n rowSelectionModel.ids.size === 0\r\n ) {\r\n for (const record of data) {\r\n sRecords.push(record);\r\n sRecordIds.push(record[keyColumnName]);\r\n }\r\n } else {\r\n if (rowSelectionModel?.ids) {\r\n for (const selectedId of rowSelectionModel.ids) {\r\n const record = data.find((x) => x[keyColumnName] === selectedId);\r\n sRecords.push(record);\r\n sRecordIds.push(selectedId);\r\n }\r\n }\r\n }\r\n return { selectedRecords: sRecords, selectedRecordIds: sRecordIds };\r\n};\r\n","import {\r\n Badge,\r\n Box,\r\n Button,\r\n Divider,\r\n IconButton,\r\n InputAdornment,\r\n MenuItem,\r\n styled,\r\n TextField,\r\n Tooltip,\r\n} from \"@mui/material\";\r\nimport {\r\n Toolbar,\r\n ToolbarButton,\r\n ColumnsPanelTrigger,\r\n FilterPanelTrigger,\r\n QuickFilter,\r\n QuickFilterControl,\r\n QuickFilterClear,\r\n QuickFilterTrigger,\r\n GridViewColumnIcon,\r\n GridFilterListIcon,\r\n ExportExcel,\r\n} from \"@mui/x-data-grid-premium\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport TemplateGridMultiRecordAction from \"./TemplateGridMultiRecordAction\";\r\nimport { getGridSelection } from \"../DataEntryUtil\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { TemplateGridTopBarProps } from \"../DataEntryTypes\";\r\nimport useSession from \"../../../../hooks/UseSession\";\r\n\r\ntype OwnerState = {\r\n expanded: boolean;\r\n};\r\n\r\nconst StyledQuickFilter = styled(QuickFilter)({\r\n display: \"grid\",\r\n alignItems: \"center\",\r\n});\r\n\r\nconst StyledToolbarButton = styled(ToolbarButton)<{ ownerState: OwnerState }>(\r\n ({ theme, ownerState }) => ({\r\n gridArea: \"1 / 1\",\r\n width: \"min-content\",\r\n height: \"min-content\",\r\n zIndex: 1,\r\n opacity: ownerState.expanded ? 0 : 1,\r\n pointerEvents: ownerState.expanded ? \"none\" : \"auto\",\r\n transition: theme.transitions.create([\"opacity\"]),\r\n })\r\n);\r\n\r\nconst StyledTextField = styled(TextField)<{\r\n ownerState: OwnerState;\r\n}>(({ theme, ownerState }) => ({\r\n gridArea: \"1 / 1\",\r\n overflowX: \"clip\",\r\n width: ownerState.expanded ? 260 : \"var(--trigger-width)\",\r\n opacity: ownerState.expanded ? 1 : 0,\r\n transition: theme.transitions.create([\"width\", \"opacity\"]),\r\n}));\r\n\r\nconst TemplateGridTopBar: React.FC<TemplateGridTopBarProps> = (\r\n props: TemplateGridTopBarProps\r\n) => {\r\n const { t } = useTranslation();\r\n const session = useSession();\r\n const isCreationAuthorized = props?.templateProps?.editAction?.authority\r\n ? session.isUserAuthorized(props.templateProps.editAction.authority)\r\n : true;\r\n const isCreationEnabled = props?.templateProps?.disableDefaultAction || true;\r\n const gridSelection = getGridSelection(\r\n props?.templateProps?.rowSelectionModel || {\r\n ids: new Set(),\r\n type: \"include\",\r\n },\r\n props?.templateProps?.data || [],\r\n props?.templateProps?.keyColumnName || \"id\"\r\n );\r\n return (\r\n <Toolbar>\r\n {isCreationEnabled &&\r\n isCreationAuthorized &&\r\n props?.templateProps?.editMode?.editMode != \"none\" ? (\r\n <Button onClick={props?.handleCreateNewRecord}>\r\n <FontAwesomeIcon\r\n icon=\"add\"\r\n style={{ marginRight: 5, marginLeft: 5 }}\r\n />\r\n {t(\"ADD_BTN_LABEL\")}\r\n </Button>\r\n ) : (\r\n <></>\r\n )}\r\n {props?.templateProps?.rowActions ? (\r\n props.templateProps.rowActions.map((rowAction) =>\r\n rowAction?.gridActionProps?.multiRecord === true ? (\r\n <TemplateGridMultiRecordAction\r\n {...rowAction}\r\n reloadData={async () => {\r\n props.templateProps.apiActions.reloadData(\r\n props?.templateProps?.gridLoadParametersValues\r\n );\r\n }}\r\n recordIdsToProcessActionOn={gridSelection.selectedRecordIds}\r\n recordsToProcessActionOn={gridSelection.selectedRecords}\r\n />\r\n ) : (\r\n <></>\r\n )\r\n )\r\n ) : (\r\n <></>\r\n )}\r\n <Box sx={{ flex: 1, mx: 0.5 }}>{props?.templateProps?.tBar}</Box>\r\n\r\n <Tooltip title=\"Columns\">\r\n <ColumnsPanelTrigger render={<ToolbarButton />}>\r\n <GridViewColumnIcon fontSize=\"small\" />\r\n </ColumnsPanelTrigger>\r\n </Tooltip>\r\n\r\n <Tooltip title=\"Filters\">\r\n <FilterPanelTrigger\r\n render={(props, state) => (\r\n <ToolbarButton {...props} color=\"default\">\r\n <Badge\r\n badgeContent={state.filterCount}\r\n color=\"primary\"\r\n variant=\"dot\"\r\n >\r\n <GridFilterListIcon fontSize=\"small\" />\r\n </Badge>\r\n </ToolbarButton>\r\n )}\r\n />\r\n </Tooltip>\r\n\r\n {props?.templateProps?.gridStateKey ? (\r\n <Tooltip title={t(\"RESET_GRID_STATE\")}>\r\n <IconButton onClick={props?.clearGridState}>\r\n <FontAwesomeIcon icon=\"eraser\" />\r\n </IconButton>\r\n </Tooltip>\r\n ) : (\r\n <></>\r\n )}\r\n\r\n <Divider\r\n orientation=\"vertical\"\r\n variant=\"middle\"\r\n flexItem\r\n sx={{ mx: 0.5 }}\r\n />\r\n\r\n <Tooltip title={t(\"EXPORT_EXECL_LABEL\")}>\r\n <ExportExcel render={<MenuItem />}>\r\n <FontAwesomeIcon icon=\"file-excel\" color=\"green\" />\r\n </ExportExcel>\r\n </Tooltip>\r\n\r\n <StyledQuickFilter>\r\n <QuickFilterTrigger\r\n render={(triggerProps, state) => (\r\n <Tooltip title={t(\"SEARCH_BTN_LABEL\")} enterDelay={0}>\r\n <StyledToolbarButton\r\n {...triggerProps}\r\n ownerState={{ expanded: state.expanded }}\r\n color=\"default\"\r\n aria-disabled={state.expanded}\r\n >\r\n <FontAwesomeIcon icon=\"search\" />\r\n </StyledToolbarButton>\r\n </Tooltip>\r\n )}\r\n />\r\n <QuickFilterControl\r\n render={({ ref, ...controlProps }, state) => (\r\n <StyledTextField\r\n {...controlProps}\r\n ownerState={{ expanded: state.expanded }}\r\n inputRef={ref}\r\n aria-label=\"Search\"\r\n placeholder={`${t(\"SEARCH_BTN_LABEL\")}...`}\r\n size=\"small\"\r\n slotProps={{\r\n input: {\r\n startAdornment: (\r\n <InputAdornment position=\"start\">\r\n <FontAwesomeIcon icon=\"search\" />\r\n </InputAdornment>\r\n ),\r\n endAdornment: state.value ? (\r\n <InputAdornment position=\"end\">\r\n <QuickFilterClear\r\n edge=\"end\"\r\n size=\"small\"\r\n aria-label=\"Clear search\"\r\n // material={{ sx: { marginRight: -0.75 } }}\r\n >\r\n <FontAwesomeIcon icon=\"xmark\" />\r\n </QuickFilterClear>\r\n </InputAdornment>\r\n ) : null,\r\n ...controlProps.slotProps?.input,\r\n },\r\n ...controlProps.slotProps,\r\n }}\r\n />\r\n )}\r\n />\r\n </StyledQuickFilter>\r\n\r\n <IconButton\r\n onClick={() => {\r\n props.templateProps.apiActions.reloadData(\r\n props?.templateProps?.gridLoadParametersValues\r\n );\r\n }}\r\n >\r\n <FontAwesomeIcon icon=\"refresh\" />\r\n </IconButton>\r\n </Toolbar>\r\n );\r\n};\r\n\r\nexport default TemplateGridTopBar;\r\n","export function hasDigitsOnly(str: string) {\r\n return /^\\d+$/.test(str);\r\n}\r\n\r\nexport function isNumber(value: any) {\r\n return typeof value === \"number\" && !isNaN(value);\r\n}\r\n\r\nexport function isNumeric(value: string) {\r\n return (\r\n typeof value === \"string\" && value.trim() !== \"\" && !isNaN(Number(value))\r\n );\r\n}\r\n\r\nexport function capitalizeFirstLetter(str: string) {\r\n if (!str) return \"\";\r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n}\r\n","import { Tooltip } from \"@mui/material\";\r\nimport { GridActionsCellItem } from \"@mui/x-data-grid-premium\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { RecordAction } from \"../DataEntryTypes\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport useSession from \"../../../../hooks/UseSession\";\r\nimport { useConfirmationWindow } from \"../../../../hooks/UseConfirmationWindow\";\r\n\r\nconst TemplateGridRecordAction: React.FC<RecordAction> = (\r\n rowAction: RecordAction\r\n) => {\r\n const { t } = useTranslation();\r\n const session = useSession();\r\n const { ConfirmationWindow, setOpen } = useConfirmationWindow({\r\n body: t(rowAction?.confirmationMessage || \"ACTION_CONFIRMATION\"),\r\n title: t(\"CONFIRMATION\"),\r\n onConfirmationCallBk: async () => {\r\n await rowAction?.actionFn(rowAction.record);\r\n if (rowAction?.reloadData) {\r\n rowAction.reloadData();\r\n }\r\n },\r\n });\r\n let isActionAllowed = true;\r\n if (rowAction.authority) {\r\n isActionAllowed = session.isUserAuthorized(rowAction.authority);\r\n }\r\n let iconStyle: any = {};\r\n if (rowAction?.getActionIconStyleForRecord) {\r\n iconStyle = rowAction.getActionIconStyleForRecord(rowAction.record);\r\n }\r\n let isActionVisibleForRecord = true;\r\n if (rowAction?.isActionVisibleForRecord) {\r\n isActionVisibleForRecord = rowAction?.isActionVisibleForRecord(\r\n rowAction.record\r\n );\r\n }\r\n let isActionDisabledForRecord = false;\r\n if (rowAction?.isActionDisabledForRecord) {\r\n isActionDisabledForRecord = rowAction.isActionDisabledForRecord(\r\n rowAction.record\r\n );\r\n }\r\n if (isActionAllowed && isActionVisibleForRecord) {\r\n return (\r\n <>\r\n <ConfirmationWindow />\r\n <GridActionsCellItem\r\n disabled={isActionDisabledForRecord}\r\n icon={\r\n <Tooltip title={rowAction?.label ? t(rowAction.label) : \"\"}>\r\n <FontAwesomeIcon\r\n icon={rowAction.icon}\r\n style={{\r\n ...iconStyle,\r\n color: isActionDisabledForRecord\r\n ? \"gray\"\r\n : iconStyle?.color != undefined\r\n ? iconStyle.color\r\n : undefined,\r\n }}\r\n />\r\n </Tooltip>\r\n }\r\n showInMenu={rowAction?.gridActionProps?.showInMenu || false}\r\n label={\"\"}\r\n className=\"textPrimary\"\r\n color=\"inherit\"\r\n onClick={async () => {\r\n if (!isActionDisabledForRecord) {\r\n if (rowAction?.preActionValidation) {\r\n if (!rowAction.preActionValidation(rowAction.record)) {\r\n return;\r\n }\r\n }\r\n if (rowAction?.isConfirmationRequired === true) {\r\n setOpen(true);\r\n } else {\r\n await rowAction.actionFn(rowAction.record);\r\n if (rowAction?.reloadData) {\r\n rowAction.reloadData();\r\n }\r\n }\r\n }\r\n }}\r\n />\r\n </>\r\n );\r\n }\r\n};\r\n\r\nexport default TemplateGridRecordAction;\r\n","/**\n * WARNING: Don't import this directly. It's imported by the code generated by\n * `@mui/interal-babel-plugin-minify-errors`. Make sure to always use string literals in `Error`\n * constructors to ensure the plugin works as expected. Supported patterns include:\n * throw new Error('My message');\n * throw new Error(`My message: ${foo}`);\n * throw new Error(`My message: ${foo}` + 'another string');\n * ...\n * @param {number} code\n */\nexport default function formatMuiErrorMessage(code, ...args) {\n const url = new URL(`https://mui.com/production-error/?code=${code}`);\n args.forEach(arg => url.searchParams.append('args[]', arg));\n return `Minified MUI error #${code}; visit ${url} for the full message.`;\n}","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = require('./lib/has');\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * @license React\n * react-is.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\");\nSymbol.for(\"react.provider\");\nvar REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_VIEW_TRANSITION_TYPE = Symbol.for(\"react.view_transition\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\nfunction typeOf(object) {\n if (\"object\" === typeof object && null !== object) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n switch (((object = object.type), object)) {\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n case REACT_SUSPENSE_LIST_TYPE:\n case REACT_VIEW_TRANSITION_TYPE:\n return object;\n default:\n switch (((object = object && object.$$typeof), object)) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n return object;\n case REACT_CONSUMER_TYPE:\n return object;\n default:\n return $$typeof;\n }\n }\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n}\nexports.ContextConsumer = REACT_CONSUMER_TYPE;\nexports.ContextProvider = REACT_CONTEXT_TYPE;\nexports.Element = REACT_ELEMENT_TYPE;\nexports.ForwardRef = REACT_FORWARD_REF_TYPE;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Lazy = REACT_LAZY_TYPE;\nexports.Memo = REACT_MEMO_TYPE;\nexports.Portal = REACT_PORTAL_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.SuspenseList = REACT_SUSPENSE_LIST_TYPE;\nexports.isContextConsumer = function (object) {\n return typeOf(object) === REACT_CONSUMER_TYPE;\n};\nexports.isContextProvider = function (object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n};\nexports.isElement = function (object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n};\nexports.isForwardRef = function (object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n};\nexports.isFragment = function (object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n};\nexports.isLazy = function (object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n};\nexports.isMemo = function (object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n};\nexports.isPortal = function (object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n};\nexports.isProfiler = function (object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n};\nexports.isStrictMode = function (object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n};\nexports.isSuspense = function (object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n};\nexports.isSuspenseList = function (object) {\n return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;\n};\nexports.isValidElementType = function (type) {\n return \"string\" === typeof type ||\n \"function\" === typeof type ||\n type === REACT_FRAGMENT_TYPE ||\n type === REACT_PROFILER_TYPE ||\n type === REACT_STRICT_MODE_TYPE ||\n type === REACT_SUSPENSE_TYPE ||\n type === REACT_SUSPENSE_LIST_TYPE ||\n (\"object\" === typeof type &&\n null !== type &&\n (type.$$typeof === REACT_LAZY_TYPE ||\n type.$$typeof === REACT_MEMO_TYPE ||\n type.$$typeof === REACT_CONTEXT_TYPE ||\n type.$$typeof === REACT_CONSUMER_TYPE ||\n type.$$typeof === REACT_FORWARD_REF_TYPE ||\n type.$$typeof === REACT_CLIENT_REFERENCE ||\n void 0 !== type.getModuleId))\n ? !0\n : !1;\n};\nexports.typeOf = typeOf;\n","/**\n * @license React\n * react-is.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function typeOf(object) {\n if (\"object\" === typeof object && null !== object) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n switch (((object = object.type), object)) {\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n case REACT_SUSPENSE_LIST_TYPE:\n case REACT_VIEW_TRANSITION_TYPE:\n return object;\n default:\n switch (((object = object && object.$$typeof), object)) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n return object;\n case REACT_CONSUMER_TYPE:\n return object;\n default:\n return $$typeof;\n }\n }\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n }\n var REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\");\n Symbol.for(\"react.provider\");\n var REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_VIEW_TRANSITION_TYPE = Symbol.for(\"react.view_transition\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\n exports.ContextConsumer = REACT_CONSUMER_TYPE;\n exports.ContextProvider = REACT_CONTEXT_TYPE;\n exports.Element = REACT_ELEMENT_TYPE;\n exports.ForwardRef = REACT_FORWARD_REF_TYPE;\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.Lazy = REACT_LAZY_TYPE;\n exports.Memo = REACT_MEMO_TYPE;\n exports.Portal = REACT_PORTAL_TYPE;\n exports.Profiler = REACT_PROFILER_TYPE;\n exports.StrictMode = REACT_STRICT_MODE_TYPE;\n exports.Suspense = REACT_SUSPENSE_TYPE;\n exports.SuspenseList = REACT_SUSPENSE_LIST_TYPE;\n exports.isContextConsumer = function (object) {\n return typeOf(object) === REACT_CONSUMER_TYPE;\n };\n exports.isContextProvider = function (object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n };\n exports.isElement = function (object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n };\n exports.isForwardRef = function (object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n };\n exports.isFragment = function (object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n };\n exports.isLazy = function (object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n };\n exports.isMemo = function (object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n };\n exports.isPortal = function (object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n };\n exports.isProfiler = function (object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n };\n exports.isStrictMode = function (object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n };\n exports.isSuspense = function (object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n };\n exports.isSuspenseList = function (object) {\n return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;\n };\n exports.isValidElementType = function (type) {\n return \"string\" === typeof type ||\n \"function\" === typeof type ||\n type === REACT_FRAGMENT_TYPE ||\n type === REACT_PROFILER_TYPE ||\n type === REACT_STRICT_MODE_TYPE ||\n type === REACT_SUSPENSE_TYPE ||\n type === REACT_SUSPENSE_LIST_TYPE ||\n (\"object\" === typeof type &&\n null !== type &&\n (type.$$typeof === REACT_LAZY_TYPE ||\n type.$$typeof === REACT_MEMO_TYPE ||\n type.$$typeof === REACT_CONTEXT_TYPE ||\n type.$$typeof === REACT_CONSUMER_TYPE ||\n type.$$typeof === REACT_FORWARD_REF_TYPE ||\n type.$$typeof === REACT_CLIENT_REFERENCE ||\n void 0 !== type.getModuleId))\n ? !0\n : !1;\n };\n exports.typeOf = typeOf;\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","import * as React from 'react';\nimport { isValidElementType } from 'react-is';\n\n// https://github.com/sindresorhus/is-plain-obj/blob/main/index.js\nexport function isPlainObject(item) {\n if (typeof item !== 'object' || item === null) {\n return false;\n }\n const prototype = Object.getPrototypeOf(item);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in item) && !(Symbol.iterator in item);\n}\nfunction deepClone(source) {\n if (/*#__PURE__*/React.isValidElement(source) || isValidElementType(source) || !isPlainObject(source)) {\n return source;\n }\n const output = {};\n Object.keys(source).forEach(key => {\n output[key] = deepClone(source[key]);\n });\n return output;\n}\n\n/**\n * Merge objects deeply.\n * It will shallow copy React elements.\n *\n * If `options.clone` is set to `false` the source object will be merged directly into the target object.\n *\n * @example\n * ```ts\n * deepmerge({ a: { b: 1 }, d: 2 }, { a: { c: 2 }, d: 4 });\n * // => { a: { b: 1, c: 2 }, d: 4 }\n * ````\n *\n * @param target The target object.\n * @param source The source object.\n * @param options The merge options.\n * @param options.clone Set to `false` to merge the source object directly into the target object.\n * @returns The merged object.\n */\nexport default function deepmerge(target, source, options = {\n clone: true\n}) {\n const output = options.clone ? {\n ...target\n } : target;\n if (isPlainObject(target) && isPlainObject(source)) {\n Object.keys(source).forEach(key => {\n if (/*#__PURE__*/React.isValidElement(source[key]) || isValidElementType(source[key])) {\n output[key] = source[key];\n } else if (isPlainObject(source[key]) &&\n // Avoid prototype pollution\n Object.prototype.hasOwnProperty.call(target, key) && isPlainObject(target[key])) {\n // Since `output` is a clone of `target` and we have narrowed `target` in this block we can cast to the same type.\n output[key] = deepmerge(target[key], source[key], options);\n } else if (options.clone) {\n output[key] = isPlainObject(source[key]) ? deepClone(source[key]) : source[key];\n } else {\n output[key] = source[key];\n }\n });\n }\n return output;\n}","// Sorted ASC by size. That's important.\n// It can't be configured as it's used statically for propTypes.\nexport const breakpointKeys = ['xs', 'sm', 'md', 'lg', 'xl'];\nconst sortBreakpointsValues = values => {\n const breakpointsAsArray = Object.keys(values).map(key => ({\n key,\n val: values[key]\n })) || [];\n // Sort in ascending order\n breakpointsAsArray.sort((breakpoint1, breakpoint2) => breakpoint1.val - breakpoint2.val);\n return breakpointsAsArray.reduce((acc, obj) => {\n return {\n ...acc,\n [obj.key]: obj.val\n };\n }, {});\n};\n\n// Keep in mind that @media is inclusive by the CSS specification.\nexport default function createBreakpoints(breakpoints) {\n const {\n // The breakpoint **start** at this value.\n // For instance with the first breakpoint xs: [xs, sm).\n values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n },\n unit = 'px',\n step = 5,\n ...other\n } = breakpoints;\n const sortedValues = sortBreakpointsValues(values);\n const keys = Object.keys(sortedValues);\n function up(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (min-width:${value}${unit})`;\n }\n function down(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (max-width:${value - step / 100}${unit})`;\n }\n function between(start, end) {\n const endIndex = keys.indexOf(end);\n return `@media (min-width:${typeof values[start] === 'number' ? values[start] : start}${unit}) and ` + `(max-width:${(endIndex !== -1 && typeof values[keys[endIndex]] === 'number' ? values[keys[endIndex]] : end) - step / 100}${unit})`;\n }\n function only(key) {\n if (keys.indexOf(key) + 1 < keys.length) {\n return between(key, keys[keys.indexOf(key) + 1]);\n }\n return up(key);\n }\n function not(key) {\n // handle first and last key separately, for better readability\n const keyIndex = keys.indexOf(key);\n if (keyIndex === 0) {\n return up(keys[1]);\n }\n if (keyIndex === keys.length - 1) {\n return down(keys[keyIndex]);\n }\n return between(key, keys[keys.indexOf(key) + 1]).replace('@media', '@media not all and');\n }\n return {\n keys,\n values: sortedValues,\n up,\n down,\n between,\n only,\n not,\n unit,\n ...other\n };\n}","const shape = {\n borderRadius: 4\n};\nexport default shape;","import PropTypes from 'prop-types';\nconst responsivePropType = process.env.NODE_ENV !== 'production' ? PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.object, PropTypes.array]) : {};\nexport default responsivePropType;","import deepmerge from '@mui/utils/deepmerge';\nfunction merge(acc, item) {\n if (!item) {\n return acc;\n }\n return deepmerge(acc, item, {\n clone: false // No need to clone deep, it's way faster.\n });\n}\nexport default merge;","import PropTypes from 'prop-types';\nimport deepmerge from '@mui/utils/deepmerge';\nimport merge from \"../merge/index.js\";\nimport { isCqShorthand, getContainerQuery } from \"../cssContainerQueries/index.js\";\n\n// The breakpoint **start** at this value.\n// For instance with the first breakpoint xs: [xs, sm[.\nexport const values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n};\nconst defaultBreakpoints = {\n // Sorted ASC by size. That's important.\n // It can't be configured as it's used statically for propTypes.\n keys: ['xs', 'sm', 'md', 'lg', 'xl'],\n up: key => `@media (min-width:${values[key]}px)`\n};\nconst defaultContainerQueries = {\n containerQueries: containerName => ({\n up: key => {\n let result = typeof key === 'number' ? key : values[key] || key;\n if (typeof result === 'number') {\n result = `${result}px`;\n }\n return containerName ? `@container ${containerName} (min-width:${result})` : `@container (min-width:${result})`;\n }\n })\n};\nexport function handleBreakpoints(props, propValue, styleFromPropValue) {\n const theme = props.theme || {};\n if (Array.isArray(propValue)) {\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n return propValue.reduce((acc, item, index) => {\n acc[themeBreakpoints.up(themeBreakpoints.keys[index])] = styleFromPropValue(propValue[index]);\n return acc;\n }, {});\n }\n if (typeof propValue === 'object') {\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n return Object.keys(propValue).reduce((acc, breakpoint) => {\n if (isCqShorthand(themeBreakpoints.keys, breakpoint)) {\n const containerKey = getContainerQuery(theme.containerQueries ? theme : defaultContainerQueries, breakpoint);\n if (containerKey) {\n acc[containerKey] = styleFromPropValue(propValue[breakpoint], breakpoint);\n }\n }\n // key is breakpoint\n else if (Object.keys(themeBreakpoints.values || values).includes(breakpoint)) {\n const mediaKey = themeBreakpoints.up(breakpoint);\n acc[mediaKey] = styleFromPropValue(propValue[breakpoint], breakpoint);\n } else {\n const cssKey = breakpoint;\n acc[cssKey] = propValue[cssKey];\n }\n return acc;\n }, {});\n }\n const output = styleFromPropValue(propValue);\n return output;\n}\nfunction breakpoints(styleFunction) {\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const newStyleFunction = props => {\n const theme = props.theme || {};\n const base = styleFunction(props);\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n const extended = themeBreakpoints.keys.reduce((acc, key) => {\n if (props[key]) {\n acc = acc || {};\n acc[themeBreakpoints.up(key)] = styleFunction({\n theme,\n ...props[key]\n });\n }\n return acc;\n }, null);\n return merge(base, extended);\n };\n newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? {\n ...styleFunction.propTypes,\n xs: PropTypes.object,\n sm: PropTypes.object,\n md: PropTypes.object,\n lg: PropTypes.object,\n xl: PropTypes.object\n } : {};\n newStyleFunction.filterProps = ['xs', 'sm', 'md', 'lg', 'xl', ...styleFunction.filterProps];\n return newStyleFunction;\n}\nexport function createEmptyBreakpointObject(breakpointsInput = {}) {\n const breakpointsInOrder = breakpointsInput.keys?.reduce((acc, key) => {\n const breakpointStyleKey = breakpointsInput.up(key);\n acc[breakpointStyleKey] = {};\n return acc;\n }, {});\n return breakpointsInOrder || {};\n}\nexport function removeUnusedBreakpoints(breakpointKeys, style) {\n return breakpointKeys.reduce((acc, key) => {\n const breakpointOutput = acc[key];\n const isBreakpointUnused = !breakpointOutput || Object.keys(breakpointOutput).length === 0;\n if (isBreakpointUnused) {\n delete acc[key];\n }\n return acc;\n }, style);\n}\nexport function mergeBreakpointsInOrder(breakpointsInput, ...styles) {\n const emptyBreakpoints = createEmptyBreakpointObject(breakpointsInput);\n const mergedOutput = [emptyBreakpoints, ...styles].reduce((prev, next) => deepmerge(prev, next), {});\n return removeUnusedBreakpoints(Object.keys(emptyBreakpoints), mergedOutput);\n}\n\n// compute base for responsive values; e.g.,\n// [1,2,3] => {xs: true, sm: true, md: true}\n// {xs: 1, sm: 2, md: 3} => {xs: true, sm: true, md: true}\nexport function computeBreakpointsBase(breakpointValues, themeBreakpoints) {\n // fixed value\n if (typeof breakpointValues !== 'object') {\n return {};\n }\n const base = {};\n const breakpointsKeys = Object.keys(themeBreakpoints);\n if (Array.isArray(breakpointValues)) {\n breakpointsKeys.forEach((breakpoint, i) => {\n if (i < breakpointValues.length) {\n base[breakpoint] = true;\n }\n });\n } else {\n breakpointsKeys.forEach(breakpoint => {\n if (breakpointValues[breakpoint] != null) {\n base[breakpoint] = true;\n }\n });\n }\n return base;\n}\nexport function resolveBreakpointValues({\n values: breakpointValues,\n breakpoints: themeBreakpoints,\n base: customBase\n}) {\n const base = customBase || computeBreakpointsBase(breakpointValues, themeBreakpoints);\n const keys = Object.keys(base);\n if (keys.length === 0) {\n return breakpointValues;\n }\n let previous;\n return keys.reduce((acc, breakpoint, i) => {\n if (Array.isArray(breakpointValues)) {\n acc[breakpoint] = breakpointValues[i] != null ? breakpointValues[i] : breakpointValues[previous];\n previous = i;\n } else if (typeof breakpointValues === 'object') {\n acc[breakpoint] = breakpointValues[breakpoint] != null ? breakpointValues[breakpoint] : breakpointValues[previous];\n previous = breakpoint;\n } else {\n acc[breakpoint] = breakpointValues;\n }\n return acc;\n }, {});\n}\nexport default breakpoints;","import _formatErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n/**\n * For using in `sx` prop to sort the breakpoint from low to high.\n * Note: this function does not work and will not support multiple units.\n * e.g. input: { '@container (min-width:300px)': '1rem', '@container (min-width:40rem)': '2rem' }\n * output: { '@container (min-width:40rem)': '2rem', '@container (min-width:300px)': '1rem' } // since 40 < 300 eventhough 40rem > 300px\n */\nexport function sortContainerQueries(theme, css) {\n if (!theme.containerQueries) {\n return css;\n }\n const sorted = Object.keys(css).filter(key => key.startsWith('@container')).sort((a, b) => {\n const regex = /min-width:\\s*([0-9.]+)/;\n return +(a.match(regex)?.[1] || 0) - +(b.match(regex)?.[1] || 0);\n });\n if (!sorted.length) {\n return css;\n }\n return sorted.reduce((acc, key) => {\n const value = css[key];\n delete acc[key];\n acc[key] = value;\n return acc;\n }, {\n ...css\n });\n}\nexport function isCqShorthand(breakpointKeys, value) {\n return value === '@' || value.startsWith('@') && (breakpointKeys.some(key => value.startsWith(`@${key}`)) || !!value.match(/^@\\d/));\n}\nexport function getContainerQuery(theme, shorthand) {\n const matches = shorthand.match(/^@([^/]+)?\\/?(.+)?$/);\n if (!matches) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The provided shorthand ${`(${shorthand})`} is invalid. The format should be \\`@<breakpoint | number>\\` or \\`@<breakpoint | number>/<container>\\`.\\n` + 'For example, `@sm` or `@600` or `@40rem/sidebar`.' : _formatErrorMessage(18, `(${shorthand})`));\n }\n return null;\n }\n const [, containerQuery, containerName] = matches;\n const value = Number.isNaN(+containerQuery) ? containerQuery || 0 : +containerQuery;\n return theme.containerQueries(containerName).up(value);\n}\nexport default function cssContainerQueries(themeInput) {\n const toContainerQuery = (mediaQuery, name) => mediaQuery.replace('@media', name ? `@container ${name}` : '@container');\n function attachCq(node, name) {\n node.up = (...args) => toContainerQuery(themeInput.breakpoints.up(...args), name);\n node.down = (...args) => toContainerQuery(themeInput.breakpoints.down(...args), name);\n node.between = (...args) => toContainerQuery(themeInput.breakpoints.between(...args), name);\n node.only = (...args) => toContainerQuery(themeInput.breakpoints.only(...args), name);\n node.not = (...args) => {\n const result = toContainerQuery(themeInput.breakpoints.not(...args), name);\n if (result.includes('not all and')) {\n // `@container` does not work with `not all and`, so need to invert the logic\n return result.replace('not all and ', '').replace('min-width:', 'width<').replace('max-width:', 'width>').replace('and', 'or');\n }\n return result;\n };\n }\n const node = {};\n const containerQueries = name => {\n attachCq(node, name);\n return node;\n };\n attachCq(containerQueries);\n return {\n ...themeInput,\n containerQueries\n };\n}","import _formatErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n// It should to be noted that this function isn't equivalent to `text-transform: capitalize`.\n//\n// A strict capitalization should uppercase the first letter of each word in the sentence.\n// We only handle the first word.\nexport default function capitalize(string) {\n if (typeof string !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'MUI: `capitalize(string)` expects a string argument.' : _formatErrorMessage(7));\n }\n return string.charAt(0).toUpperCase() + string.slice(1);\n}","import capitalize from '@mui/utils/capitalize';\nimport responsivePropType from \"../responsivePropType/index.js\";\nimport { handleBreakpoints } from \"../breakpoints/index.js\";\nexport function getPath(obj, path, checkVars = true) {\n if (!path || typeof path !== 'string') {\n return null;\n }\n\n // Check if CSS variables are used\n if (obj && obj.vars && checkVars) {\n const val = `vars.${path}`.split('.').reduce((acc, item) => acc && acc[item] ? acc[item] : null, obj);\n if (val != null) {\n return val;\n }\n }\n return path.split('.').reduce((acc, item) => {\n if (acc && acc[item] != null) {\n return acc[item];\n }\n return null;\n }, obj);\n}\nexport function getStyleValue(themeMapping, transform, propValueFinal, userValue = propValueFinal) {\n let value;\n if (typeof themeMapping === 'function') {\n value = themeMapping(propValueFinal);\n } else if (Array.isArray(themeMapping)) {\n value = themeMapping[propValueFinal] || userValue;\n } else {\n value = getPath(themeMapping, propValueFinal) || userValue;\n }\n if (transform) {\n value = transform(value, userValue, themeMapping);\n }\n return value;\n}\nfunction style(options) {\n const {\n prop,\n cssProperty = options.prop,\n themeKey,\n transform\n } = options;\n\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const fn = props => {\n if (props[prop] == null) {\n return null;\n }\n const propValue = props[prop];\n const theme = props.theme;\n const themeMapping = getPath(theme, themeKey) || {};\n const styleFromPropValue = propValueFinal => {\n let value = getStyleValue(themeMapping, transform, propValueFinal);\n if (propValueFinal === value && typeof propValueFinal === 'string') {\n // Haven't found value\n value = getStyleValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n }\n if (cssProperty === false) {\n return value;\n }\n return {\n [cssProperty]: value\n };\n };\n return handleBreakpoints(props, propValue, styleFromPropValue);\n };\n fn.propTypes = process.env.NODE_ENV !== 'production' ? {\n [prop]: responsivePropType\n } : {};\n fn.filterProps = [prop];\n return fn;\n}\nexport default style;","import responsivePropType from \"../responsivePropType/index.js\";\nimport { handleBreakpoints } from \"../breakpoints/index.js\";\nimport { getPath } from \"../style/index.js\";\nimport merge from \"../merge/index.js\";\nimport memoize from \"../memoize/index.js\";\nconst properties = {\n m: 'margin',\n p: 'padding'\n};\nconst directions = {\n t: 'Top',\n r: 'Right',\n b: 'Bottom',\n l: 'Left',\n x: ['Left', 'Right'],\n y: ['Top', 'Bottom']\n};\nconst aliases = {\n marginX: 'mx',\n marginY: 'my',\n paddingX: 'px',\n paddingY: 'py'\n};\n\n// memoize() impact:\n// From 300,000 ops/sec\n// To 350,000 ops/sec\nconst getCssProperties = memoize(prop => {\n // It's not a shorthand notation.\n if (prop.length > 2) {\n if (aliases[prop]) {\n prop = aliases[prop];\n } else {\n return [prop];\n }\n }\n const [a, b] = prop.split('');\n const property = properties[a];\n const direction = directions[b] || '';\n return Array.isArray(direction) ? direction.map(dir => property + dir) : [property + direction];\n});\nexport const marginKeys = ['m', 'mt', 'mr', 'mb', 'ml', 'mx', 'my', 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'marginInline', 'marginInlineStart', 'marginInlineEnd', 'marginBlock', 'marginBlockStart', 'marginBlockEnd'];\nexport const paddingKeys = ['p', 'pt', 'pr', 'pb', 'pl', 'px', 'py', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'paddingX', 'paddingY', 'paddingInline', 'paddingInlineStart', 'paddingInlineEnd', 'paddingBlock', 'paddingBlockStart', 'paddingBlockEnd'];\nconst spacingKeys = [...marginKeys, ...paddingKeys];\nexport function createUnaryUnit(theme, themeKey, defaultValue, propName) {\n const themeSpacing = getPath(theme, themeKey, true) ?? defaultValue;\n if (typeof themeSpacing === 'number' || typeof themeSpacing === 'string') {\n return val => {\n if (typeof val === 'string') {\n return val;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (typeof val !== 'number') {\n console.error(`MUI: Expected ${propName} argument to be a number or a string, got ${val}.`);\n }\n }\n if (typeof themeSpacing === 'string') {\n if (themeSpacing.startsWith('var(') && val === 0) {\n return 0;\n }\n if (themeSpacing.startsWith('var(') && val === 1) {\n return themeSpacing;\n }\n return `calc(${val} * ${themeSpacing})`;\n }\n return themeSpacing * val;\n };\n }\n if (Array.isArray(themeSpacing)) {\n return val => {\n if (typeof val === 'string') {\n return val;\n }\n const abs = Math.abs(val);\n if (process.env.NODE_ENV !== 'production') {\n if (!Number.isInteger(abs)) {\n console.error([`MUI: The \\`theme.${themeKey}\\` array type cannot be combined with non integer values.` + `You should either use an integer value that can be used as index, or define the \\`theme.${themeKey}\\` as a number.`].join('\\n'));\n } else if (abs > themeSpacing.length - 1) {\n console.error([`MUI: The value provided (${abs}) overflows.`, `The supported values are: ${JSON.stringify(themeSpacing)}.`, `${abs} > ${themeSpacing.length - 1}, you need to add the missing values.`].join('\\n'));\n }\n }\n const transformed = themeSpacing[abs];\n if (val >= 0) {\n return transformed;\n }\n if (typeof transformed === 'number') {\n return -transformed;\n }\n if (typeof transformed === 'string' && transformed.startsWith('var(')) {\n return `calc(-1 * ${transformed})`;\n }\n return `-${transformed}`;\n };\n }\n if (typeof themeSpacing === 'function') {\n return themeSpacing;\n }\n if (process.env.NODE_ENV !== 'production') {\n console.error([`MUI: The \\`theme.${themeKey}\\` value (${themeSpacing}) is invalid.`, 'It should be a number, an array or a function.'].join('\\n'));\n }\n return () => undefined;\n}\nexport function createUnarySpacing(theme) {\n return createUnaryUnit(theme, 'spacing', 8, 'spacing');\n}\nexport function getValue(transformer, propValue) {\n if (typeof propValue === 'string' || propValue == null) {\n return propValue;\n }\n return transformer(propValue);\n}\nexport function getStyleFromPropValue(cssProperties, transformer) {\n return propValue => cssProperties.reduce((acc, cssProperty) => {\n acc[cssProperty] = getValue(transformer, propValue);\n return acc;\n }, {});\n}\nfunction resolveCssProperty(props, keys, prop, transformer) {\n // Using a hash computation over an array iteration could be faster, but with only 28 items,\n // it's doesn't worth the bundle size.\n if (!keys.includes(prop)) {\n return null;\n }\n const cssProperties = getCssProperties(prop);\n const styleFromPropValue = getStyleFromPropValue(cssProperties, transformer);\n const propValue = props[prop];\n return handleBreakpoints(props, propValue, styleFromPropValue);\n}\nfunction style(props, keys) {\n const transformer = createUnarySpacing(props.theme);\n return Object.keys(props).map(prop => resolveCssProperty(props, keys, prop, transformer)).reduce(merge, {});\n}\nexport function margin(props) {\n return style(props, marginKeys);\n}\nmargin.propTypes = process.env.NODE_ENV !== 'production' ? marginKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nmargin.filterProps = marginKeys;\nexport function padding(props) {\n return style(props, paddingKeys);\n}\npadding.propTypes = process.env.NODE_ENV !== 'production' ? paddingKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\npadding.filterProps = paddingKeys;\nfunction spacing(props) {\n return style(props, spacingKeys);\n}\nspacing.propTypes = process.env.NODE_ENV !== 'production' ? spacingKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nspacing.filterProps = spacingKeys;\nexport default spacing;","export default function memoize(fn) {\n const cache = {};\n return arg => {\n if (cache[arg] === undefined) {\n cache[arg] = fn(arg);\n }\n return cache[arg];\n };\n}","import merge from \"../merge/index.js\";\nfunction compose(...styles) {\n const handlers = styles.reduce((acc, style) => {\n style.filterProps.forEach(prop => {\n acc[prop] = style;\n });\n return acc;\n }, {});\n\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const fn = props => {\n return Object.keys(props).reduce((acc, prop) => {\n if (handlers[prop]) {\n return merge(acc, handlers[prop](props));\n }\n return acc;\n }, {});\n };\n fn.propTypes = process.env.NODE_ENV !== 'production' ? styles.reduce((acc, style) => Object.assign(acc, style.propTypes), {}) : {};\n fn.filterProps = styles.reduce((acc, style) => acc.concat(style.filterProps), []);\n return fn;\n}\nexport default compose;","import responsivePropType from \"../responsivePropType/index.js\";\nimport style from \"../style/index.js\";\nimport compose from \"../compose/index.js\";\nimport { createUnaryUnit, getValue } from \"../spacing/index.js\";\nimport { handleBreakpoints } from \"../breakpoints/index.js\";\nexport function borderTransform(value) {\n if (typeof value !== 'number') {\n return value;\n }\n return `${value}px solid`;\n}\nfunction createBorderStyle(prop, transform) {\n return style({\n prop,\n themeKey: 'borders',\n transform\n });\n}\nexport const border = createBorderStyle('border', borderTransform);\nexport const borderTop = createBorderStyle('borderTop', borderTransform);\nexport const borderRight = createBorderStyle('borderRight', borderTransform);\nexport const borderBottom = createBorderStyle('borderBottom', borderTransform);\nexport const borderLeft = createBorderStyle('borderLeft', borderTransform);\nexport const borderColor = createBorderStyle('borderColor');\nexport const borderTopColor = createBorderStyle('borderTopColor');\nexport const borderRightColor = createBorderStyle('borderRightColor');\nexport const borderBottomColor = createBorderStyle('borderBottomColor');\nexport const borderLeftColor = createBorderStyle('borderLeftColor');\nexport const outline = createBorderStyle('outline', borderTransform);\nexport const outlineColor = createBorderStyle('outlineColor');\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const borderRadius = props => {\n if (props.borderRadius !== undefined && props.borderRadius !== null) {\n const transformer = createUnaryUnit(props.theme, 'shape.borderRadius', 4, 'borderRadius');\n const styleFromPropValue = propValue => ({\n borderRadius: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.borderRadius, styleFromPropValue);\n }\n return null;\n};\nborderRadius.propTypes = process.env.NODE_ENV !== 'production' ? {\n borderRadius: responsivePropType\n} : {};\nborderRadius.filterProps = ['borderRadius'];\nconst borders = compose(border, borderTop, borderRight, borderBottom, borderLeft, borderColor, borderTopColor, borderRightColor, borderBottomColor, borderLeftColor, borderRadius, outline, outlineColor);\nexport default borders;","import style from \"../style/index.js\";\nimport compose from \"../compose/index.js\";\nimport { createUnaryUnit, getValue } from \"../spacing/index.js\";\nimport { handleBreakpoints } from \"../breakpoints/index.js\";\nimport responsivePropType from \"../responsivePropType/index.js\";\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const gap = props => {\n if (props.gap !== undefined && props.gap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'gap');\n const styleFromPropValue = propValue => ({\n gap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.gap, styleFromPropValue);\n }\n return null;\n};\ngap.propTypes = process.env.NODE_ENV !== 'production' ? {\n gap: responsivePropType\n} : {};\ngap.filterProps = ['gap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const columnGap = props => {\n if (props.columnGap !== undefined && props.columnGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'columnGap');\n const styleFromPropValue = propValue => ({\n columnGap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.columnGap, styleFromPropValue);\n }\n return null;\n};\ncolumnGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n columnGap: responsivePropType\n} : {};\ncolumnGap.filterProps = ['columnGap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const rowGap = props => {\n if (props.rowGap !== undefined && props.rowGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'rowGap');\n const styleFromPropValue = propValue => ({\n rowGap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.rowGap, styleFromPropValue);\n }\n return null;\n};\nrowGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n rowGap: responsivePropType\n} : {};\nrowGap.filterProps = ['rowGap'];\nexport const gridColumn = style({\n prop: 'gridColumn'\n});\nexport const gridRow = style({\n prop: 'gridRow'\n});\nexport const gridAutoFlow = style({\n prop: 'gridAutoFlow'\n});\nexport const gridAutoColumns = style({\n prop: 'gridAutoColumns'\n});\nexport const gridAutoRows = style({\n prop: 'gridAutoRows'\n});\nexport const gridTemplateColumns = style({\n prop: 'gridTemplateColumns'\n});\nexport const gridTemplateRows = style({\n prop: 'gridTemplateRows'\n});\nexport const gridTemplateAreas = style({\n prop: 'gridTemplateAreas'\n});\nexport const gridArea = style({\n prop: 'gridArea'\n});\nconst grid = compose(gap, columnGap, rowGap, gridColumn, gridRow, gridAutoFlow, gridAutoColumns, gridAutoRows, gridTemplateColumns, gridTemplateRows, gridTemplateAreas, gridArea);\nexport default grid;","import style from \"../style/index.js\";\nimport compose from \"../compose/index.js\";\nexport function paletteTransform(value, userValue) {\n if (userValue === 'grey') {\n return userValue;\n }\n return value;\n}\nexport const color = style({\n prop: 'color',\n themeKey: 'palette',\n transform: paletteTransform\n});\nexport const bgcolor = style({\n prop: 'bgcolor',\n cssProperty: 'backgroundColor',\n themeKey: 'palette',\n transform: paletteTransform\n});\nexport const backgroundColor = style({\n prop: 'backgroundColor',\n themeKey: 'palette',\n transform: paletteTransform\n});\nconst palette = compose(color, bgcolor, backgroundColor);\nexport default palette;","import style from \"../style/index.js\";\nimport compose from \"../compose/index.js\";\nimport { handleBreakpoints, values as breakpointsValues } from \"../breakpoints/index.js\";\nexport function sizingTransform(value) {\n return value <= 1 && value !== 0 ? `${value * 100}%` : value;\n}\nexport const width = style({\n prop: 'width',\n transform: sizingTransform\n});\nexport const maxWidth = props => {\n if (props.maxWidth !== undefined && props.maxWidth !== null) {\n const styleFromPropValue = propValue => {\n const breakpoint = props.theme?.breakpoints?.values?.[propValue] || breakpointsValues[propValue];\n if (!breakpoint) {\n return {\n maxWidth: sizingTransform(propValue)\n };\n }\n if (props.theme?.breakpoints?.unit !== 'px') {\n return {\n maxWidth: `${breakpoint}${props.theme.breakpoints.unit}`\n };\n }\n return {\n maxWidth: breakpoint\n };\n };\n return handleBreakpoints(props, props.maxWidth, styleFromPropValue);\n }\n return null;\n};\nmaxWidth.filterProps = ['maxWidth'];\nexport const minWidth = style({\n prop: 'minWidth',\n transform: sizingTransform\n});\nexport const height = style({\n prop: 'height',\n transform: sizingTransform\n});\nexport const maxHeight = style({\n prop: 'maxHeight',\n transform: sizingTransform\n});\nexport const minHeight = style({\n prop: 'minHeight',\n transform: sizingTransform\n});\nexport const sizeWidth = style({\n prop: 'size',\n cssProperty: 'width',\n transform: sizingTransform\n});\nexport const sizeHeight = style({\n prop: 'size',\n cssProperty: 'height',\n transform: sizingTransform\n});\nexport const boxSizing = style({\n prop: 'boxSizing'\n});\nconst sizing = compose(width, maxWidth, minWidth, height, maxHeight, minHeight, boxSizing);\nexport default sizing;","import { padding, margin } from \"../spacing/index.js\";\nimport { borderRadius, borderTransform } from \"../borders/index.js\";\nimport { gap, rowGap, columnGap } from \"../cssGrid/index.js\";\nimport { paletteTransform } from \"../palette/index.js\";\nimport { maxWidth, sizingTransform } from \"../sizing/index.js\";\nconst defaultSxConfig = {\n // borders\n border: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderTop: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderRight: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderBottom: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderLeft: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderColor: {\n themeKey: 'palette'\n },\n borderTopColor: {\n themeKey: 'palette'\n },\n borderRightColor: {\n themeKey: 'palette'\n },\n borderBottomColor: {\n themeKey: 'palette'\n },\n borderLeftColor: {\n themeKey: 'palette'\n },\n outline: {\n themeKey: 'borders',\n transform: borderTransform\n },\n outlineColor: {\n themeKey: 'palette'\n },\n borderRadius: {\n themeKey: 'shape.borderRadius',\n style: borderRadius\n },\n // palette\n color: {\n themeKey: 'palette',\n transform: paletteTransform\n },\n bgcolor: {\n themeKey: 'palette',\n cssProperty: 'backgroundColor',\n transform: paletteTransform\n },\n backgroundColor: {\n themeKey: 'palette',\n transform: paletteTransform\n },\n // spacing\n p: {\n style: padding\n },\n pt: {\n style: padding\n },\n pr: {\n style: padding\n },\n pb: {\n style: padding\n },\n pl: {\n style: padding\n },\n px: {\n style: padding\n },\n py: {\n style: padding\n },\n padding: {\n style: padding\n },\n paddingTop: {\n style: padding\n },\n paddingRight: {\n style: padding\n },\n paddingBottom: {\n style: padding\n },\n paddingLeft: {\n style: padding\n },\n paddingX: {\n style: padding\n },\n paddingY: {\n style: padding\n },\n paddingInline: {\n style: padding\n },\n paddingInlineStart: {\n style: padding\n },\n paddingInlineEnd: {\n style: padding\n },\n paddingBlock: {\n style: padding\n },\n paddingBlockStart: {\n style: padding\n },\n paddingBlockEnd: {\n style: padding\n },\n m: {\n style: margin\n },\n mt: {\n style: margin\n },\n mr: {\n style: margin\n },\n mb: {\n style: margin\n },\n ml: {\n style: margin\n },\n mx: {\n style: margin\n },\n my: {\n style: margin\n },\n margin: {\n style: margin\n },\n marginTop: {\n style: margin\n },\n marginRight: {\n style: margin\n },\n marginBottom: {\n style: margin\n },\n marginLeft: {\n style: margin\n },\n marginX: {\n style: margin\n },\n marginY: {\n style: margin\n },\n marginInline: {\n style: margin\n },\n marginInlineStart: {\n style: margin\n },\n marginInlineEnd: {\n style: margin\n },\n marginBlock: {\n style: margin\n },\n marginBlockStart: {\n style: margin\n },\n marginBlockEnd: {\n style: margin\n },\n // display\n displayPrint: {\n cssProperty: false,\n transform: value => ({\n '@media print': {\n display: value\n }\n })\n },\n display: {},\n overflow: {},\n textOverflow: {},\n visibility: {},\n whiteSpace: {},\n // flexbox\n flexBasis: {},\n flexDirection: {},\n flexWrap: {},\n justifyContent: {},\n alignItems: {},\n alignContent: {},\n order: {},\n flex: {},\n flexGrow: {},\n flexShrink: {},\n alignSelf: {},\n justifyItems: {},\n justifySelf: {},\n // grid\n gap: {\n style: gap\n },\n rowGap: {\n style: rowGap\n },\n columnGap: {\n style: columnGap\n },\n gridColumn: {},\n gridRow: {},\n gridAutoFlow: {},\n gridAutoColumns: {},\n gridAutoRows: {},\n gridTemplateColumns: {},\n gridTemplateRows: {},\n gridTemplateAreas: {},\n gridArea: {},\n // positions\n position: {},\n zIndex: {\n themeKey: 'zIndex'\n },\n top: {},\n right: {},\n bottom: {},\n left: {},\n // shadows\n boxShadow: {\n themeKey: 'shadows'\n },\n // sizing\n width: {\n transform: sizingTransform\n },\n maxWidth: {\n style: maxWidth\n },\n minWidth: {\n transform: sizingTransform\n },\n height: {\n transform: sizingTransform\n },\n maxHeight: {\n transform: sizingTransform\n },\n minHeight: {\n transform: sizingTransform\n },\n boxSizing: {},\n // typography\n font: {\n themeKey: 'font'\n },\n fontFamily: {\n themeKey: 'typography'\n },\n fontSize: {\n themeKey: 'typography'\n },\n fontStyle: {\n themeKey: 'typography'\n },\n fontWeight: {\n themeKey: 'typography'\n },\n letterSpacing: {},\n textTransform: {},\n lineHeight: {},\n textAlign: {},\n typography: {\n cssProperty: false,\n themeKey: 'typography'\n }\n};\nexport default defaultSxConfig;","import capitalize from '@mui/utils/capitalize';\nimport merge from \"../merge/index.js\";\nimport { getPath, getStyleValue as getValue } from \"../style/index.js\";\nimport { handleBreakpoints, createEmptyBreakpointObject, removeUnusedBreakpoints } from \"../breakpoints/index.js\";\nimport { sortContainerQueries } from \"../cssContainerQueries/index.js\";\nimport defaultSxConfig from \"./defaultSxConfig.js\";\nfunction objectsHaveSameKeys(...objects) {\n const allKeys = objects.reduce((keys, object) => keys.concat(Object.keys(object)), []);\n const union = new Set(allKeys);\n return objects.every(object => union.size === Object.keys(object).length);\n}\nfunction callIfFn(maybeFn, arg) {\n return typeof maybeFn === 'function' ? maybeFn(arg) : maybeFn;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function unstable_createStyleFunctionSx() {\n function getThemeValue(prop, val, theme, config) {\n const props = {\n [prop]: val,\n theme\n };\n const options = config[prop];\n if (!options) {\n return {\n [prop]: val\n };\n }\n const {\n cssProperty = prop,\n themeKey,\n transform,\n style\n } = options;\n if (val == null) {\n return null;\n }\n\n // TODO v6: remove, see https://github.com/mui/material-ui/pull/38123\n if (themeKey === 'typography' && val === 'inherit') {\n return {\n [prop]: val\n };\n }\n const themeMapping = getPath(theme, themeKey) || {};\n if (style) {\n return style(props);\n }\n const styleFromPropValue = propValueFinal => {\n let value = getValue(themeMapping, transform, propValueFinal);\n if (propValueFinal === value && typeof propValueFinal === 'string') {\n // Haven't found value\n value = getValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n }\n if (cssProperty === false) {\n return value;\n }\n return {\n [cssProperty]: value\n };\n };\n return handleBreakpoints(props, val, styleFromPropValue);\n }\n function styleFunctionSx(props) {\n const {\n sx,\n theme = {}\n } = props || {};\n if (!sx) {\n return null; // Emotion & styled-components will neglect null\n }\n const config = theme.unstable_sxConfig ?? defaultSxConfig;\n\n /*\n * Receive `sxInput` as object or callback\n * and then recursively check keys & values to create media query object styles.\n * (the result will be used in `styled`)\n */\n function traverse(sxInput) {\n let sxObject = sxInput;\n if (typeof sxInput === 'function') {\n sxObject = sxInput(theme);\n } else if (typeof sxInput !== 'object') {\n // value\n return sxInput;\n }\n if (!sxObject) {\n return null;\n }\n const emptyBreakpoints = createEmptyBreakpointObject(theme.breakpoints);\n const breakpointsKeys = Object.keys(emptyBreakpoints);\n let css = emptyBreakpoints;\n Object.keys(sxObject).forEach(styleKey => {\n const value = callIfFn(sxObject[styleKey], theme);\n if (value !== null && value !== undefined) {\n if (typeof value === 'object') {\n if (config[styleKey]) {\n css = merge(css, getThemeValue(styleKey, value, theme, config));\n } else {\n const breakpointsValues = handleBreakpoints({\n theme\n }, value, x => ({\n [styleKey]: x\n }));\n if (objectsHaveSameKeys(breakpointsValues, value)) {\n css[styleKey] = styleFunctionSx({\n sx: value,\n theme\n });\n } else {\n css = merge(css, breakpointsValues);\n }\n }\n } else {\n css = merge(css, getThemeValue(styleKey, value, theme, config));\n }\n }\n });\n return sortContainerQueries(theme, removeUnusedBreakpoints(breakpointsKeys, css));\n }\n return Array.isArray(sx) ? sx.map(traverse) : traverse(sx);\n }\n return styleFunctionSx;\n}\nconst styleFunctionSx = unstable_createStyleFunctionSx();\nstyleFunctionSx.filterProps = ['sx'];\nexport default styleFunctionSx;","/**\n * A universal utility to style components with multiple color modes. Always use it from the theme object.\n * It works with:\n * - [Basic theme](https://mui.com/material-ui/customization/dark-mode/)\n * - [CSS theme variables](https://mui.com/material-ui/customization/css-theme-variables/overview/)\n * - Zero-runtime engine\n *\n * Tips: Use an array over object spread and place `theme.applyStyles()` last.\n *\n * With the styled function:\n * ✅ [{ background: '#e5e5e5' }, theme.applyStyles('dark', { background: '#1c1c1c' })]\n * 🚫 { background: '#e5e5e5', ...theme.applyStyles('dark', { background: '#1c1c1c' })}\n *\n * With the sx prop:\n * ✅ [{ background: '#e5e5e5' }, theme => theme.applyStyles('dark', { background: '#1c1c1c' })]\n * 🚫 { background: '#e5e5e5', ...theme => theme.applyStyles('dark', { background: '#1c1c1c' })}\n *\n * @example\n * 1. using with `styled`:\n * ```jsx\n * const Component = styled('div')(({ theme }) => [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ]);\n * ```\n *\n * @example\n * 2. using with `sx` prop:\n * ```jsx\n * <Box sx={[\n * { background: '#e5e5e5' },\n * theme => theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ]}\n * />\n * ```\n *\n * @example\n * 3. theming a component:\n * ```jsx\n * extendTheme({\n * components: {\n * MuiButton: {\n * styleOverrides: {\n * root: ({ theme }) => [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ],\n * },\n * }\n * }\n * })\n *```\n */\nexport default function applyStyles(key, styles) {\n // @ts-expect-error this is 'any' type\n const theme = this;\n if (theme.vars) {\n if (!theme.colorSchemes?.[key] || typeof theme.getColorSchemeSelector !== 'function') {\n return {};\n }\n // If CssVarsProvider is used as a provider, returns '*:where({selector}) &'\n let selector = theme.getColorSchemeSelector(key);\n if (selector === '&') {\n return styles;\n }\n if (selector.includes('data-') || selector.includes('.')) {\n // '*' is required as a workaround for Emotion issue (https://github.com/emotion-js/emotion/issues/2836)\n selector = `*:where(${selector.replace(/\\s*&$/, '')}) &`;\n }\n return {\n [selector]: styles\n };\n }\n if (theme.palette.mode === key) {\n return styles;\n }\n return {};\n}","'use client';\n\nimport * as React from 'react';\nimport { ThemeContext } from '@mui/styled-engine';\nfunction isObjectEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\nfunction useTheme(defaultTheme = null) {\n const contextTheme = React.useContext(ThemeContext);\n return !contextTheme || isObjectEmpty(contextTheme) ? defaultTheme : contextTheme;\n}\nexport default useTheme;","'use client';\n\nimport createTheme from \"../createTheme/index.js\";\nimport useThemeWithoutDefault from \"../useThemeWithoutDefault/index.js\";\nexport const systemDefaultTheme = createTheme();\nfunction useTheme(defaultTheme = systemDefaultTheme) {\n return useThemeWithoutDefault(defaultTheme);\n}\nexport default useTheme;","import deepmerge from '@mui/utils/deepmerge';\nimport createBreakpoints from \"../createBreakpoints/createBreakpoints.js\";\nimport cssContainerQueries from \"../cssContainerQueries/index.js\";\nimport shape from \"./shape.js\";\nimport createSpacing from \"./createSpacing.js\";\nimport styleFunctionSx from \"../styleFunctionSx/styleFunctionSx.js\";\nimport defaultSxConfig from \"../styleFunctionSx/defaultSxConfig.js\";\nimport applyStyles from \"./applyStyles.js\";\nfunction createTheme(options = {}, ...args) {\n const {\n breakpoints: breakpointsInput = {},\n palette: paletteInput = {},\n spacing: spacingInput,\n shape: shapeInput = {},\n ...other\n } = options;\n const breakpoints = createBreakpoints(breakpointsInput);\n const spacing = createSpacing(spacingInput);\n let muiTheme = deepmerge({\n breakpoints,\n direction: 'ltr',\n components: {},\n // Inject component definitions.\n palette: {\n mode: 'light',\n ...paletteInput\n },\n spacing,\n shape: {\n ...shape,\n ...shapeInput\n }\n }, other);\n muiTheme = cssContainerQueries(muiTheme);\n muiTheme.applyStyles = applyStyles;\n muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n muiTheme.unstable_sxConfig = {\n ...defaultSxConfig,\n ...other?.unstable_sxConfig\n };\n muiTheme.unstable_sx = function sx(props) {\n return styleFunctionSx({\n sx: props,\n theme: this\n });\n };\n return muiTheme;\n}\nexport default createTheme;","import { createUnarySpacing } from \"../spacing/index.js\";\n\n// The different signatures imply different meaning for their arguments that can't be expressed structurally.\n// We express the difference with variable names.\n\nexport default function createSpacing(spacingInput = 8,\n// Material Design layouts are visually balanced. Most measurements align to an 8dp grid, which aligns both spacing and the overall layout.\n// Smaller components, such as icons, can align to a 4dp grid.\n// https://m2.material.io/design/layout/understanding-layout.html\ntransform = createUnarySpacing({\n spacing: spacingInput\n})) {\n // Already transformed.\n if (spacingInput.mui) {\n return spacingInput;\n }\n const spacing = (...argsInput) => {\n if (process.env.NODE_ENV !== 'production') {\n if (!(argsInput.length <= 4)) {\n console.error(`MUI: Too many arguments provided, expected between 0 and 4, got ${argsInput.length}`);\n }\n }\n const args = argsInput.length === 0 ? [1] : argsInput;\n return args.map(argument => {\n const output = transform(argument);\n return typeof output === 'number' ? `${output}px` : output;\n }).join(' ');\n };\n spacing.mui = true;\n return spacing;\n}","import { isPlainObject } from '@mui/utils/deepmerge';\nimport defaultSxConfig from \"./defaultSxConfig.js\";\nconst splitProps = props => {\n const result = {\n systemProps: {},\n otherProps: {}\n };\n const config = props?.theme?.unstable_sxConfig ?? defaultSxConfig;\n Object.keys(props).forEach(prop => {\n if (config[prop]) {\n result.systemProps[prop] = props[prop];\n } else {\n result.otherProps[prop] = props[prop];\n }\n });\n return result;\n};\nexport default function extendSxProp(props) {\n const {\n sx: inSx,\n ...other\n } = props;\n const {\n systemProps,\n otherProps\n } = splitProps(other);\n let finalSx;\n if (Array.isArray(inSx)) {\n finalSx = [systemProps, ...inSx];\n } else if (typeof inSx === 'function') {\n finalSx = (...args) => {\n const result = inSx(...args);\n if (!isPlainObject(result)) {\n return systemProps;\n }\n return {\n ...systemProps,\n ...result\n };\n };\n } else {\n finalSx = {\n ...systemProps,\n ...inSx\n };\n }\n return {\n ...otherProps,\n sx: finalSx\n };\n}","const defaultGenerator = componentName => componentName;\nconst createClassNameGenerator = () => {\n let generate = defaultGenerator;\n return {\n configure(generator) {\n generate = generator;\n },\n generate(componentName) {\n return generate(componentName);\n },\n reset() {\n generate = defaultGenerator;\n }\n };\n};\nconst ClassNameGenerator = createClassNameGenerator();\nexport default ClassNameGenerator;","import ClassNameGenerator from \"../ClassNameGenerator/index.js\";\nexport const globalStateClasses = {\n active: 'active',\n checked: 'checked',\n completed: 'completed',\n disabled: 'disabled',\n error: 'error',\n expanded: 'expanded',\n focused: 'focused',\n focusVisible: 'focusVisible',\n open: 'open',\n readOnly: 'readOnly',\n required: 'required',\n selected: 'selected'\n};\nexport default function generateUtilityClass(componentName, slot, globalStatePrefix = 'Mui') {\n const globalStateClass = globalStateClasses[slot];\n return globalStateClass ? `${globalStatePrefix}-${globalStateClass}` : `${ClassNameGenerator.generate(componentName)}-${slot}`;\n}\nexport function isGlobalState(slot) {\n return globalStateClasses[slot] !== undefined;\n}","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nconst boxClasses = generateUtilityClasses('MuiBox', ['root']);\nexport default boxClasses;","'use client';\n\nimport PropTypes from 'prop-types';\nimport ClassNameGenerator from '@mui/utils/ClassNameGenerator';\nimport createBox from \"../createBox/index.js\";\nimport boxClasses from \"./boxClasses.js\";\nconst Box = createBox({\n defaultClassName: boxClasses.root,\n generateClassName: ClassNameGenerator.generate\n});\nprocess.env.NODE_ENV !== \"production\" ? Box.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * @ignore\n */\n children: PropTypes.node,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Box;","'use client';\n\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport styled from '@mui/styled-engine';\nimport styleFunctionSx, { extendSxProp } from \"../styleFunctionSx/index.js\";\nimport useTheme from \"../useTheme/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function createBox(options = {}) {\n const {\n themeId,\n defaultTheme,\n defaultClassName = 'MuiBox-root',\n generateClassName\n } = options;\n const BoxRoot = styled('div', {\n shouldForwardProp: prop => prop !== 'theme' && prop !== 'sx' && prop !== 'as'\n })(styleFunctionSx);\n const Box = /*#__PURE__*/React.forwardRef(function Box(inProps, ref) {\n const theme = useTheme(defaultTheme);\n const {\n className,\n component = 'div',\n ...other\n } = extendSxProp(inProps);\n return /*#__PURE__*/_jsx(BoxRoot, {\n as: component,\n ref: ref,\n className: clsx(className, generateClassName ? generateClassName(defaultClassName) : defaultClassName),\n theme: themeId ? theme[themeId] || theme : theme,\n ...other\n });\n });\n return Box;\n}","/**\n * @mui/styled-engine v7.1.0\n *\n * @license MIT\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use client';\n\n/* eslint-disable no-underscore-dangle */\nimport emStyled from '@emotion/styled';\nimport { serializeStyles as emSerializeStyles } from '@emotion/serialize';\nexport default function styled(tag, options) {\n const stylesFactory = emStyled(tag, options);\n if (process.env.NODE_ENV !== 'production') {\n return (...styles) => {\n const component = typeof tag === 'string' ? `\"${tag}\"` : 'component';\n if (styles.length === 0) {\n console.error([`MUI: Seems like you called \\`styled(${component})()\\` without a \\`style\\` argument.`, 'You must provide a `styles` argument: `styled(\"div\")(styleYouForgotToPass)`.'].join('\\n'));\n } else if (styles.some(style => style === undefined)) {\n console.error(`MUI: the styled(${component})(...args) API requires all its args to be defined.`);\n }\n return stylesFactory(...styles);\n };\n }\n return stylesFactory;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function internal_mutateStyles(tag, processor) {\n // Emotion attaches all the styles as `__emotion_styles`.\n // Ref: https://github.com/emotion-js/emotion/blob/16d971d0da229596d6bcc39d282ba9753c9ee7cf/packages/styled/src/base.js#L186\n if (Array.isArray(tag.__emotion_styles)) {\n tag.__emotion_styles = processor(tag.__emotion_styles);\n }\n}\n\n// Emotion only accepts an array, but we want to avoid allocations\nconst wrapper = [];\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function internal_serializeStyles(styles) {\n wrapper[0] = styles;\n return emSerializeStyles(wrapper);\n}\nexport { ThemeContext, keyframes, css } from '@emotion/react';\nexport { default as StyledEngineProvider } from \"./StyledEngineProvider/index.js\";\nexport { default as GlobalStyles } from \"./GlobalStyles/index.js\";","import generateUtilityClass from \"../generateUtilityClass/index.js\";\nexport default function generateUtilityClasses(componentName, slots, globalStatePrefix = 'Mui') {\n const result = {};\n slots.forEach(slot => {\n result[slot] = generateUtilityClass(componentName, slot, globalStatePrefix);\n });\n return result;\n}","import { TextField, TextFieldProps } from \"@mui/material\";\r\n\r\nconst TemplateTextField: React.FC<Omit<TextFieldProps, \"outlined\">> = (\r\n props\r\n) => {\r\n return <TextField {...props} slotProps={{ inputLabel: { shrink: true } }} />;\r\n};\r\n\r\nexport default TemplateTextField;\r\n","import { Grid2 } from \"@mui/material\";\r\nimport TemplateTextField from \"./FormFields/TemplateTextField\";\r\nimport Datefield from \"./FormFields/Datefield\";\r\nimport DatetimeField from \"./FormFields/DatetimeField\";\r\nimport ComboBox from \"./FormFields/ComboBox\";\r\nimport CheckBox from \"./FormFields/CheckBox\";\r\nimport { DATE_FORMAT, DATE_TIME_FORMAT } from \"../../../../util/constants\";\r\nimport { isNumeric } from \"../../../../util/AppUtils\";\r\nimport { FormElementFieldProps } from \"../DataEntryTypes\";\r\n\r\nconst FormElementField: React.FC<FormElementFieldProps> = (\r\n element: FormElementFieldProps\r\n) => {\r\n if (element?.fieldInfo) {\r\n const props = element.fieldInfo;\r\n const formManager = element?.formManager || null;\r\n const formActions = element?.formActions || null;\r\n const formValues = element?.formValues || null;\r\n const fieldName: any = element?.fieldInfo?.fieldName || null;\r\n const fieldType = element?.fieldInfo?.fieldType || null;\r\n if (!(props && formManager && formValues && fieldName && fieldType)) {\r\n return <></>;\r\n }\r\n return (props?.hidden === undefined || !props?.hidden) &&\r\n !element.hiddenFields.includes(fieldName) ? (\r\n <Grid2\r\n size={\r\n props?.formProps?.fieldSize || {\r\n lg: 12,\r\n md: 12,\r\n sm: 12,\r\n }\r\n }\r\n sx={{\r\n padding: 1,\r\n width: \"100%\",\r\n }}\r\n >\r\n {fieldType === \"text\" || fieldType === \"number\" ? (\r\n <TemplateTextField\r\n fullWidth\r\n type={fieldType}\r\n disabled={\r\n props?.disabled || element.disabledFields.includes(fieldName)\r\n ? true\r\n : false\r\n }\r\n hidden={props?.hidden || false}\r\n label={props?.fieldLabel}\r\n value={formValues[fieldName]}\r\n onChange={(event) => {\r\n let newValue = null;\r\n if (event.target.value != \"\") {\r\n if (fieldType === \"number\" && isNumeric(event.target.value)) {\r\n newValue = Number(event.target.value);\r\n } else {\r\n newValue = event.target.value;\r\n }\r\n }\r\n formManager.setValue(fieldName, newValue);\r\n if (props?.formProps?.onValueChangeCallBack) {\r\n props?.formProps?.onValueChangeCallBack(\r\n newValue,\r\n formManager,\r\n formActions\r\n );\r\n }\r\n }}\r\n sx={props?.formProps?.style}\r\n error={formManager.formState.errors[fieldName] != undefined}\r\n helperText={formManager?.formState?.errors[\r\n fieldName\r\n ]?.message?.toString()}\r\n />\r\n ) : props?.fieldType === \"date\" ? (\r\n <Datefield\r\n format={props?.dateFormat || DATE_FORMAT}\r\n sx={props?.formProps?.style || { width: \"100%\" }}\r\n disabled={\r\n props?.disabled || element.disabledFields.includes(fieldName)\r\n ? true\r\n : false\r\n }\r\n label={props?.fieldLabel}\r\n onChangeCallBack={(v: any) => {\r\n formManager.setValue(fieldName, v);\r\n if (props?.formProps?.onValueChangeCallBack) {\r\n props?.formProps?.onValueChangeCallBack(\r\n v,\r\n formManager,\r\n formActions\r\n );\r\n }\r\n }}\r\n value={formValues[fieldName]}\r\n error={formManager.formState.errors[fieldName] != undefined}\r\n errorMessage={formManager?.formState?.errors[\r\n fieldName\r\n ]?.message?.toString()}\r\n />\r\n ) : props?.fieldType === \"datetime\" ? (\r\n <DatetimeField\r\n format={props?.dateFormat || DATE_TIME_FORMAT}\r\n sx={props?.formProps?.style || { width: \"100%\" }}\r\n disabled={\r\n props?.disabled || element.disabledFields.includes(fieldName)\r\n ? true\r\n : false\r\n }\r\n label={props?.fieldLabel}\r\n onChangeCallBack={(v: any) => {\r\n formManager.setValue(fieldName, v);\r\n if (props?.formProps?.onValueChangeCallBack) {\r\n props?.formProps?.onValueChangeCallBack(\r\n v,\r\n formManager,\r\n formActions\r\n );\r\n }\r\n }}\r\n value={formValues[fieldName]}\r\n error={formManager.formState.errors[fieldName] != undefined}\r\n errorMessage={formManager?.formState?.errors[\r\n fieldName\r\n ]?.message?.toString()}\r\n />\r\n ) : props?.fieldType === \"checkbox\" ? (\r\n <CheckBox\r\n label={props?.fieldLabel}\r\n onChangeCallBack={(v: any) => {\r\n formManager.setValue(fieldName, v);\r\n if (props?.formProps?.onValueChangeCallBack) {\r\n props?.formProps?.onValueChangeCallBack(\r\n v,\r\n formManager,\r\n formActions\r\n );\r\n }\r\n }}\r\n value={formValues[fieldName]}\r\n checkedValue={props?.checkedValue || \"true\"}\r\n unCheckedValue={props?.unCheckedValue || \"false\"}\r\n disabled={\r\n props?.disabled || element.disabledFields.includes(fieldName)\r\n ? true\r\n : false\r\n }\r\n sx={props?.formProps?.style}\r\n />\r\n ) : props?.fieldType === \"combobox\" ? (\r\n <ComboBox\r\n sx={props?.formProps?.style || { width: \"100%\" }}\r\n label={props?.fieldLabel}\r\n disabled={\r\n props?.disabled || element.disabledFields.includes(fieldName)\r\n ? true\r\n : false\r\n }\r\n onChangeCallBack={(v: any, selectedRecord: any) => {\r\n let newValue = null;\r\n if (v) {\r\n newValue = v + \"\";\r\n }\r\n formManager.setValue(fieldName, newValue);\r\n if (props?.formProps?.onValueChangeCallBack) {\r\n props?.formProps?.onValueChangeCallBack(\r\n newValue,\r\n formManager,\r\n formActions,\r\n selectedRecord\r\n );\r\n }\r\n }}\r\n options={props?.options || []}\r\n displayField={props?.optionDisplayField || \"\"}\r\n valueField={props?.optionValueField || \"\"}\r\n value={formValues[fieldName]}\r\n errorMessage={formManager?.formState?.errors[\r\n fieldName\r\n ]?.message?.toString()}\r\n />\r\n ) : (\r\n <>Unknown field type</>\r\n )}\r\n </Grid2>\r\n ) : (\r\n <></>\r\n );\r\n } else {\r\n return <></>;\r\n }\r\n};\r\n\r\nexport default FormElementField;\r\n","import { Button } from \"@mui/material\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { RecordAction } from \"../DataEntryTypes\";\r\nimport useSession from \"../../../../hooks/UseSession\";\r\nimport { useConfirmationWindow } from \"../../../../hooks/UseConfirmationWindow\";\r\n\r\nconst FormAction: React.FC<RecordAction> = (action: RecordAction) => {\r\n const session = useSession();\r\n const { ConfirmationWindow, setOpen: setConfirmationWindowState } =\r\n useConfirmationWindow({\r\n body: action?.confirmationMessage || \"\",\r\n title: \"Confirmation\",\r\n onConfirmationCallBk: () => {\r\n action?.actionFn(action?.record);\r\n },\r\n });\r\n if (\r\n action?.authority === undefined ||\r\n action?.authority === null ||\r\n session.isUserAuthorized(action.authority)\r\n ) {\r\n return (\r\n <>\r\n <ConfirmationWindow />\r\n <Button\r\n variant={action?.formActionProps?.actionButtonVariant}\r\n color={action?.formActionProps?.actionButtonColor}\r\n onClick={() => {\r\n if (action?.actionFn) {\r\n if (action?.preActionValidation) {\r\n if (!action.preActionValidation(action.record)) {\r\n return;\r\n }\r\n }\r\n if (action?.isConfirmationRequired === true) {\r\n setConfirmationWindowState(true);\r\n } else {\r\n action?.actionFn(action.record);\r\n }\r\n }\r\n }}\r\n >\r\n {action?.icon ? (\r\n <FontAwesomeIcon\r\n icon={action.icon}\r\n style={{ marginRight: 5, marginLeft: 5 }}\r\n />\r\n ) : (\r\n <></>\r\n )}\r\n <div>{action?.label}</div>\r\n </Button>\r\n </>\r\n );\r\n } else {\r\n return <></>;\r\n }\r\n};\r\n\r\nexport default FormAction;\r\n","import { Grid2 } from \"@mui/material\";\r\nimport FormElementField from \"./FormElementField\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport FormAction from \"./FormAction\";\r\nimport {\r\n FormElementGroupProps,\r\n FormElementProps,\r\n RecordAction,\r\n} from \"../DataEntryTypes\";\r\n\r\nconst FormElementGroup: React.FC<FormElementGroupProps> = (\r\n props: FormElementGroupProps\r\n) => {\r\n return (\r\n <>\r\n <Grid2 container sx={props?.style} alignItems=\"flex-start\">\r\n {props?.label ? (\r\n <Grid2\r\n size={12}\r\n sx={{ padding: 1, fontWeight: \"bold\", display: \"flex\" }}\r\n >\r\n {props?.icon ? (\r\n <>\r\n <FontAwesomeIcon\r\n icon={props.icon}\r\n style={{ marginRight: 5, marginLeft: 5 }}\r\n />\r\n <div>{props.label}</div>\r\n </>\r\n ) : (\r\n <>{props.label}</>\r\n )}\r\n </Grid2>\r\n ) : (\r\n <></>\r\n )}\r\n {props?.elements\r\n ? props.elements.map((element: FormElementProps) => {\r\n if (element.type === \"group\") {\r\n return (\r\n <FormElementGroup\r\n {...element.props}\r\n formManager={props.formManager}\r\n formValues={props.formValues}\r\n formActions={props.formActions}\r\n hiddenFields={props.hiddenFields}\r\n disabledFields={props.disabledFields}\r\n />\r\n );\r\n } else if (element.type === \"field\" && element.mode === \"props\") {\r\n return (\r\n <FormElementField\r\n fieldInfo={element.props}\r\n formManager={props.formManager}\r\n formValues={props.formValues}\r\n formActions={props.formActions}\r\n hiddenFields={props.hiddenFields}\r\n disabledFields={props.disabledFields}\r\n />\r\n );\r\n } else if (element.type === \"field\" && element.mode === \"node\") {\r\n return (\r\n <Grid2\r\n size={\r\n element?.props?.formProps?.fieldSize || {\r\n lg: 3,\r\n md: 6,\r\n sm: 12,\r\n }\r\n }\r\n sx={{ padding: 1, width: \"100%\" }}\r\n >\r\n <element.node\r\n formManager={props.formManager}\r\n formValues={props.formValues}\r\n formActions={props.formActions}\r\n />\r\n </Grid2>\r\n );\r\n }\r\n })\r\n : null}\r\n\r\n {props?.actions ? (\r\n <Grid2 size={{ sm: 12 }} sx={{ padding: 1 }}>\r\n {props.actions.map((action: RecordAction) => {\r\n return <FormAction {...action} record={props.formValues} />;\r\n })}\r\n </Grid2>\r\n ) : (\r\n <></>\r\n )}\r\n </Grid2>\r\n </>\r\n );\r\n};\r\n\r\nexport default FormElementGroup;\r\n","import { Box } from \"@mui/system\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport * as z from \"zod\";\r\nimport { useForm } from \"react-hook-form\";\r\nimport { zodResolver } from \"@hookform/resolvers/zod\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport { Button, Grid2 } from \"@mui/material\";\r\nimport { toast } from \"react-toastify\";\r\nimport FormElementGroup from \"./FormElementGroup\";\r\nimport FormElementField from \"./FormElementField\";\r\nimport FormAction from \"./FormAction\";\r\nimport { constructValidationSchema, getAllFields } from \"../DataEntryUtil\";\r\nimport {\r\n FormElementProps,\r\n RecordAction,\r\n TemplateFormProps,\r\n} from \"../DataEntryTypes\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\n\r\nconst TemplateForm: React.FC<TemplateFormProps> = (\r\n props: TemplateFormProps\r\n) => {\r\n const fields = getAllFields(props.elements);\r\n const [hiddenFields, setHiddenFields] = useState<string[]>([]);\r\n const [disabledFields, setDisabledFields] = useState<string[]>([]);\r\n const formSchema = z.object(constructValidationSchema(fields));\r\n type FormData = z.infer<typeof formSchema>;\r\n const formManager = useForm<FormData>({\r\n resolver: zodResolver(formSchema),\r\n });\r\n const formValues = formManager.watch();\r\n const pathParameters = useParams();\r\n const formRouteRecordIdParamName: any = props?.formRouteRecordIdParamName;\r\n\r\n const loadRecord = async () => {\r\n let idToLoad = null;\r\n if (props?.recordIdToEdit) {\r\n idToLoad = props.recordIdToEdit;\r\n } else if (\r\n formRouteRecordIdParamName &&\r\n pathParameters[formRouteRecordIdParamName]\r\n ) {\r\n idToLoad = pathParameters[formRouteRecordIdParamName];\r\n }\r\n if (idToLoad) {\r\n const retrievedRecord: any = await props.apiActions.loadRecordById(\r\n idToLoad\r\n );\r\n if (retrievedRecord) {\r\n formManager.reset({ ...retrievedRecord });\r\n }\r\n }\r\n };\r\n\r\n const saveRecord = async (record: any) => {\r\n if (props?.preSaveValidation && !props.preSaveValidation(record)) {\r\n return;\r\n }\r\n if (record) {\r\n const savedRecord: any = await props.apiActions.saveRecord(record);\r\n if (savedRecord) {\r\n formManager.reset({ ...savedRecord });\r\n if (props?.formSavedSuccessfullyCallBk) {\r\n props.formSavedSuccessfullyCallBk(savedRecord);\r\n }\r\n if (props?.formCloseCallBk) {\r\n props.formCloseCallBk();\r\n }\r\n }\r\n }\r\n };\r\n\r\n const formActions = {\r\n setFieldValue: (fieldName: string, fieldValue: any) => {\r\n formManager.setValue(fieldName, fieldValue);\r\n },\r\n hideField: (fieldName: string) => {\r\n setHiddenFields((oldValues) => {\r\n const newValues = [...oldValues, fieldName];\r\n return newValues;\r\n });\r\n },\r\n showField: (fieldName: string) => {\r\n setHiddenFields((oldValues) => {\r\n const newValues = oldValues.filter((x) => x !== fieldName);\r\n return newValues;\r\n });\r\n },\r\n disableField: (fieldName: string) => {\r\n setDisabledFields((oldValues) => {\r\n const newValues = [...oldValues, fieldName];\r\n return newValues;\r\n });\r\n },\r\n enableField: (fieldName: string) => {\r\n setDisabledFields((oldValues) => {\r\n const newValues = oldValues.filter((x) => x !== fieldName);\r\n return newValues;\r\n });\r\n },\r\n };\r\n\r\n useEffect(() => {\r\n loadRecord();\r\n }, [props?.recordIdToEdit]);\r\n\r\n return (\r\n <>\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n flex: 1,\r\n width: \"100%\",\r\n height: \"fit-content\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n overflow: \"auto\",\r\n }}\r\n >\r\n <Grid2 sx={{ width: \"100%\" }} container>\r\n {props.elements.map((formElement: FormElementProps) => {\r\n if (formElement.type === \"group\") {\r\n return (\r\n <FormElementGroup\r\n {...formElement.props}\r\n formManager={formManager}\r\n formValues={formValues}\r\n formActions={formActions}\r\n hiddenFields={hiddenFields}\r\n disabledFields={disabledFields}\r\n />\r\n );\r\n } else if (\r\n formElement.type === \"field\" &&\r\n formElement.mode === \"props\"\r\n ) {\r\n return (\r\n <FormElementField\r\n fieldInfo={formElement.props}\r\n formManager={formManager}\r\n formValues={formValues}\r\n formActions={formActions}\r\n hiddenFields={hiddenFields}\r\n disabledFields={disabledFields}\r\n />\r\n );\r\n } else if (\r\n formElement.type === \"field\" &&\r\n formElement.mode === \"node\"\r\n ) {\r\n return (\r\n <Grid2\r\n size={\r\n formElement?.props?.formProps?.fieldSize || {\r\n lg: 3,\r\n md: 6,\r\n xs: 12,\r\n }\r\n }\r\n sx={{ padding: 1, width: \"100%\" }}\r\n >\r\n <formElement.node\r\n formManager={formManager}\r\n formValues={formValues}\r\n />\r\n </Grid2>\r\n );\r\n }\r\n })}\r\n </Grid2>\r\n </Box>\r\n\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n width: \"100%\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-start\",\r\n }}\r\n >\r\n {props?.actions ? (\r\n props.actions.map((action: RecordAction) => {\r\n if (action?.formActionProps?.enabled === true) {\r\n return <FormAction {...action} record={formValues} />;\r\n } else {\r\n return <></>;\r\n }\r\n })\r\n ) : (\r\n <></>\r\n )}\r\n <div style={{ flex: 1 }}></div>\r\n <Button\r\n variant={\r\n props?.saveButtonSpecs?.actionButtonVariant\r\n ? props.saveButtonSpecs.actionButtonVariant\r\n : \"contained\"\r\n }\r\n sx={{ m: 1 }}\r\n startIcon={\r\n props?.saveButtonSpecs?.icon ? (\r\n <FontAwesomeIcon icon={props.saveButtonSpecs.icon} />\r\n ) : null\r\n }\r\n color={\r\n props?.saveButtonSpecs?.actionButtonColor\r\n ? props.saveButtonSpecs.actionButtonColor\r\n : \"primary\"\r\n }\r\n onClick={formManager.handleSubmit(\r\n (values) => {\r\n console.log(\"form values\", values);\r\n saveRecord(values);\r\n },\r\n (errors) => {\r\n toast.error(\r\n \"Form Data is not valid, make sure you have all field with valid data\"\r\n );\r\n console.log(\"form validation error\", errors);\r\n }\r\n )}\r\n >\r\n {props?.saveButtonSpecs?.label || \"save\"}\r\n </Button>\r\n <Button\r\n variant={\r\n props?.cancelButtonSpecs?.actionButtonVariant\r\n ? props.cancelButtonSpecs.actionButtonVariant\r\n : \"contained\"\r\n }\r\n startIcon={\r\n props?.cancelButtonSpecs?.icon ? (\r\n <FontAwesomeIcon icon={props.cancelButtonSpecs.icon} />\r\n ) : null\r\n }\r\n color={\r\n props?.cancelButtonSpecs?.actionButtonColor\r\n ? props.cancelButtonSpecs.actionButtonColor\r\n : \"error\"\r\n }\r\n sx={{ m: 1 }}\r\n onClick={() => {\r\n if (props?.formCloseCallBk) {\r\n props.formCloseCallBk();\r\n }\r\n formManager.reset({});\r\n }}\r\n >\r\n {props?.cancelButtonSpecs?.label || \"cancel\"}\r\n </Button>\r\n </Box>\r\n </>\r\n );\r\n};\r\n\r\nexport default TemplateForm;\r\n","import { useEffect, useState } from \"react\";\r\nimport {\r\n AppBar,\r\n Box,\r\n IconButton,\r\n Modal,\r\n Paper,\r\n Toolbar,\r\n Typography,\r\n} from \"@mui/material\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\n\r\nexport interface TemplateWindowProp {\r\n height?: any;\r\n width?: any;\r\n minWidth?: any;\r\n minHeight?: any;\r\n windowIcon?: any;\r\n windowTitle?: string;\r\n onCloseCallBack?: any;\r\n}\r\n\r\ninterface WindowProps {\r\n children?: React.ReactNode;\r\n}\r\n\r\nexport const useWindow = (props: TemplateWindowProp) => {\r\n const [windowState, setWindowState] = useState(false);\r\n\r\n const Window: React.FC<WindowProps> = (windowProps: WindowProps) => {\r\n return (\r\n <Modal\r\n open={windowState}\r\n sx={{ zIndex: (theme) => theme.zIndex.drawer }}\r\n onClose={() => {\r\n if (!windowState && props?.onCloseCallBack) {\r\n props.onCloseCallBack();\r\n }\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n position: \"absolute\",\r\n top: \"50%\",\r\n left: \"50%\",\r\n maxHeight: \"90%\",\r\n transform: \"translate(-50%, -50%)\",\r\n height: props?.height || \"80%\",\r\n width: props?.width || \"90%\",\r\n minWidth: props.minWidth || 400,\r\n minHeight: props.minHeight || 200,\r\n overflow: \"hidden\",\r\n bgcolor: \"modalBackground.main\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-start\",\r\n }}\r\n >\r\n <AppBar position=\"static\">\r\n <Toolbar variant=\"dense\">\r\n <FontAwesomeIcon\r\n icon={props?.windowIcon || \"window-maximize\"}\r\n style={{ marginRight: 5 }}\r\n />\r\n <Typography variant=\"h6\" color=\"inherit\" component=\"div\">\r\n {props?.windowTitle || \"window\"}\r\n </Typography>\r\n <div style={{ flexGrow: 1 }}></div>\r\n <IconButton\r\n onClick={() => {\r\n setWindowState(false);\r\n if (\r\n props.onCloseCallBack != undefined &&\r\n props.onCloseCallBack != null\r\n ) {\r\n props.onCloseCallBack();\r\n }\r\n }}\r\n color=\"secondary\"\r\n >\r\n <FontAwesomeIcon icon=\"xmark-square\" />\r\n </IconButton>\r\n </Toolbar>\r\n </AppBar>\r\n <Paper\r\n sx={{\r\n // flexGrow: 1,\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n padding: 1,\r\n // justifyContent: \"center\",\r\n overflow: \"hidden\",\r\n }}\r\n >\r\n {windowProps?.children}\r\n </Paper>\r\n </Box>\r\n </Modal>\r\n );\r\n };\r\n return { windowState, setWindowState, Window };\r\n};\r\n","import {\r\n DataGridPremium,\r\n GridActionsCellItem,\r\n GridActionsCellItemProps,\r\n GridColumnOrderChangeParams,\r\n GridColumnResizeParams,\r\n GridColumnVisibilityModel,\r\n GridEventListener,\r\n GridExpandMoreIcon,\r\n GridPinnedColumnFields,\r\n GridRowGroupingModel,\r\n GridRowModes,\r\n GridRowModesModel,\r\n GridRowParams,\r\n GridRowSelectionModel,\r\n} from \"@mui/x-data-grid-premium\";\r\nimport { TemplateGridColDef, TemplateGridProps } from \"../DataEntryTypes\";\r\nimport TemplateGridTopBar from \"./TemplateGridTopBar\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { z } from \"zod\";\r\nimport {\r\n constructGridColumnsFromFields,\r\n constructValidationSchema,\r\n getAllFields,\r\n} from \"../DataEntryUtil\";\r\nimport { toast } from \"react-toastify\";\r\nimport {\r\n Accordion,\r\n AccordionDetails,\r\n AccordionSummary,\r\n Box,\r\n Divider,\r\n IconButton,\r\n Tooltip,\r\n Typography,\r\n} from \"@mui/material\";\r\nimport { capitalizeFirstLetter, isNumber } from \"../../../../util/AppUtils\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport TemplateGridRecordAction from \"./TemplateGridRecordAction\";\r\nimport TemplateForm from \"../TemplateDataForm/TemplateForm\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { RootState } from \"../../../../redux/store\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport useSession from \"../../../../hooks/UseSession\";\r\nimport { useConfirmationWindow } from \"../../../../hooks/UseConfirmationWindow\";\r\nimport { useWindow } from \"../../../../hooks/UseWindow\";\r\nlet currentNewRecordIndex = -1;\r\n\r\ninterface GridState {\r\n columnVisibilityModel?: GridColumnVisibilityModel;\r\n columnOrder?: string[];\r\n columnWidths?: { [key: string]: number };\r\n columnGroupingModel?: GridRowGroupingModel;\r\n pinnedColumns?: GridPinnedColumnFields;\r\n}\r\n\r\nconst loadGridState = (gridStateKey: string): GridState => {\r\n try {\r\n const saved = localStorage.getItem(gridStateKey);\r\n return saved ? JSON.parse(saved) : {};\r\n } catch (e) {\r\n console.error(\"Failed to load grid state\", e);\r\n return {};\r\n }\r\n};\r\n\r\nconst saveGridState = (gridStateKey: string, statePart: GridState) => {\r\n const current = loadGridState(gridStateKey);\r\n localStorage.setItem(\r\n gridStateKey,\r\n JSON.stringify({ ...current, ...statePart })\r\n );\r\n};\r\n\r\nconst PIN_FIXED_COLUMNS = [\"__check__\", \"actions\"];\r\n\r\nconst TemplateGrid: React.FC<TemplateGridProps> = (props) => {\r\n const { t } = useTranslation();\r\n const fields = getAllFields(props.formElements);\r\n const hiddenFields = [];\r\n const savedState = React.useMemo<GridState>(\r\n () => (props?.gridStateKey ? loadGridState(props.gridStateKey) : {}),\r\n []\r\n );\r\n for (const field of fields) {\r\n if (field?.gridProps?.hidden === true) {\r\n hiddenFields.push(field.fieldName);\r\n }\r\n }\r\n let initialVisibilityState: GridColumnVisibilityModel = {};\r\n if (savedState?.columnVisibilityModel) {\r\n initialVisibilityState = savedState.columnVisibilityModel;\r\n const existingFields = Object.keys(initialVisibilityState);\r\n for (const field of hiddenFields) {\r\n if (!existingFields.includes(field)) {\r\n initialVisibilityState[field] = false;\r\n }\r\n }\r\n } else {\r\n for (const field of hiddenFields) {\r\n initialVisibilityState[field] = false;\r\n }\r\n }\r\n\r\n const themeDirection = useSelector(\r\n (state: RootState) => state.AppLayout.appDirection\r\n );\r\n\r\n const clearGridState = () => {\r\n if (props?.gridStateKey) {\r\n localStorage.removeItem(props.gridStateKey);\r\n }\r\n setColumnVisibilityModel({});\r\n setColumnOrder([]);\r\n setColumnWidths({});\r\n setGridRowGroupingModel([]);\r\n setPinnedColumns({\r\n left: [...(themeDirection === \"ltr\" ? PIN_FIXED_COLUMNS : [])],\r\n right: [...(themeDirection === \"rtl\" ? PIN_FIXED_COLUMNS : [])],\r\n });\r\n };\r\n const [columnVisibilityModel, setColumnVisibilityModel] =\r\n React.useState<GridColumnVisibilityModel>(initialVisibilityState);\r\n const [columnOrder, setColumnOrder] = React.useState<string[]>(\r\n savedState.columnOrder || []\r\n );\r\n const [columnWidths, setColumnWidths] = React.useState<{\r\n [key: string]: number;\r\n }>(savedState.columnWidths || {});\r\n const [gridRowGroupingModel, setGridRowGroupingModel] =\r\n useState<GridRowGroupingModel>(savedState.columnGroupingModel || []);\r\n let newLeft = savedState?.pinnedColumns?.left || [];\r\n newLeft = newLeft.filter(\r\n (record: any) => !PIN_FIXED_COLUMNS.includes(record)\r\n );\r\n let newRight = savedState?.pinnedColumns?.right || [] || [];\r\n newRight = newRight.filter(\r\n (record: any) => !PIN_FIXED_COLUMNS.includes(record)\r\n );\r\n\r\n const [pinnedColumns, setPinnedColumns] = useState<GridPinnedColumnFields>({\r\n left: [...(themeDirection === \"ltr\" ? PIN_FIXED_COLUMNS : []), ...newLeft],\r\n right: [\r\n ...(themeDirection === \"rtl\" ? PIN_FIXED_COLUMNS : []),\r\n ...newRight,\r\n ],\r\n });\r\n\r\n const session = useSession();\r\n const navigate = useNavigate();\r\n const [recordToDelete, setRecordToDelete] = useState<any>(null);\r\n const [recordToEdit, setRecordToEdit] = useState<any>(null);\r\n const [rowModesModel, setRowModesModel] = useState<GridRowModesModel>({});\r\n\r\n const [rowSelectionModel, setRowSelectionModel] =\r\n useState<GridRowSelectionModel>({ ids: new Set(), type: \"include\" });\r\n let keyColumnName: string = \"id\";\r\n if (props?.keyColumnName) {\r\n keyColumnName = props?.keyColumnName;\r\n }\r\n const setData = props.setData;\r\n const validationSchema = z.object(constructValidationSchema(fields));\r\n const generatedColumns = constructGridColumnsFromFields(\r\n fields,\r\n props?.editMode?.editMode === \"row\" || false,\r\n t\r\n );\r\n let isEditAllowed = true;\r\n if (props?.editAction?.authority) {\r\n isEditAllowed = session.isUserAuthorized(props.editAction.authority);\r\n }\r\n let isDeleteAllowed = true;\r\n if (props?.deleteAction?.authority) {\r\n isDeleteAllowed = session.isUserAuthorized(props.deleteAction.authority);\r\n }\r\n\r\n const handleRowModesModelChange = (newModel: GridRowModesModel) => {\r\n setRowModesModel(newModel);\r\n };\r\n\r\n const handlePinnedColumnsChange = (newModel: GridPinnedColumnFields) => {\r\n let newLeft = newModel?.left || [];\r\n newLeft = newLeft.filter(\r\n (record: any) => !PIN_FIXED_COLUMNS.includes(record)\r\n );\r\n let newRight = newModel?.right || [];\r\n newRight = newRight.filter(\r\n (record: any) => !PIN_FIXED_COLUMNS.includes(record)\r\n );\r\n const newPinedColumns: GridPinnedColumnFields = {\r\n left: [\r\n ...(themeDirection === \"ltr\" ? PIN_FIXED_COLUMNS : []),\r\n ...newLeft,\r\n ],\r\n right: [\r\n ...(themeDirection === \"rtl\" ? PIN_FIXED_COLUMNS : []),\r\n ...newRight,\r\n ],\r\n };\r\n setPinnedColumns(newPinedColumns);\r\n if (props?.gridStateKey) {\r\n saveGridState(props.gridStateKey, { pinnedColumns: newPinedColumns });\r\n }\r\n };\r\n\r\n const handleDeleteRecord = async () => {\r\n let result = true;\r\n if (!(recordToDelete && recordToDelete?.isNew === true)) {\r\n result = await props.apiActions.deleteRecordById(\r\n recordToDelete[keyColumnName]\r\n );\r\n }\r\n if (result) {\r\n if (props?.deleteAction?.postActionCallBack) {\r\n await props.deleteAction.postActionCallBack(recordToDelete);\r\n }\r\n\r\n setData((oldData: any) => {\r\n const newData = oldData.filter(\r\n (record: any) =>\r\n record[keyColumnName] != recordToDelete[keyColumnName]\r\n );\r\n return newData;\r\n });\r\n }\r\n };\r\n\r\n const { ConfirmationWindow, setOpen: setConfirmationWindowOpened } =\r\n useConfirmationWindow({\r\n title: \"Confirmation\",\r\n body: \"Are you sure you want to delete this record ?\",\r\n onConfirmationCallBk: handleDeleteRecord,\r\n });\r\n\r\n let formModalHeight = undefined;\r\n let formModalWidth = undefined;\r\n let formModalMinHeight = undefined;\r\n let formModalMinWidth = undefined;\r\n let formModalIcon = undefined;\r\n let formModalTitle = undefined;\r\n\r\n if (props?.editMode?.editMode === \"modal\") {\r\n formModalHeight = props?.editMode?.specs?.modalHeight || \"fit-content\";\r\n formModalWidth = props?.editMode?.specs?.modalWidth || \"300\";\r\n formModalMinHeight = props?.editMode?.specs?.modalMinHeight;\r\n formModalMinWidth = props?.editMode?.specs?.modalMinWidth;\r\n formModalIcon = props?.editMode?.specs?.modalIcon || \"window\";\r\n formModalTitle = props?.editMode?.specs?.modalTitle || \"Record Form\";\r\n }\r\n\r\n const { Window: FormWindow, setWindowState: setFormWindowState } = useWindow({\r\n height: formModalHeight,\r\n minHeight: formModalMinHeight,\r\n minWidth: formModalMinWidth,\r\n onCloseCallBack: () => {\r\n props.apiActions.reloadData(props?.gridLoadParametersValues);\r\n },\r\n width: formModalWidth,\r\n windowIcon: formModalIcon,\r\n windowTitle: formModalTitle,\r\n });\r\n\r\n const handleCreateNewRecord = () => {\r\n if (props?.editMode?.editMode === \"form\") {\r\n navigate(props.editMode.specs.formRoute);\r\n } else if (props?.editMode?.editMode === \"modal\") {\r\n setFormWindowState(true);\r\n } else if (props?.editMode?.editMode === \"row\") {\r\n currentNewRecordIndex = currentNewRecordIndex - 1;\r\n const newRecord: any = {};\r\n newRecord[keyColumnName] = currentNewRecordIndex;\r\n newRecord.isNew = true;\r\n for (const gridColumn of generatedColumns) {\r\n if (\r\n gridColumn?.type != \"actions\" &&\r\n gridColumn?.field != keyColumnName\r\n ) {\r\n if (gridColumn?.field) {\r\n newRecord[gridColumn.field] = null;\r\n }\r\n }\r\n }\r\n setData((oldRows: any) => [newRecord, ...oldRows]);\r\n setRowModesModel((oldModel: any) => ({\r\n ...oldModel,\r\n [currentNewRecordIndex]: { mode: GridRowModes.Edit },\r\n }));\r\n }\r\n };\r\n\r\n const handleEditRecord = async (record: any) => {\r\n if (record) {\r\n setRecordToEdit(record);\r\n if (props.editMode.editMode === \"form\") {\r\n navigate(props.editMode.specs.formRoute + \"/\" + record[keyColumnName]);\r\n } else if (props.editMode.editMode === \"modal\") {\r\n setFormWindowState(true);\r\n } else if (props?.editMode?.editMode === \"row\") {\r\n const id = record[keyColumnName];\r\n setRowModesModel({\r\n ...rowModesModel,\r\n [id]: { mode: GridRowModes.Edit },\r\n });\r\n }\r\n }\r\n };\r\n\r\n const validateRecord = (record: any) => {\r\n try {\r\n validationSchema.parse(record);\r\n } catch (err) {\r\n console.log(\"validateRecord err\", err);\r\n let errorMessage: any = null;\r\n if (err instanceof z.ZodError) {\r\n errorMessage = err.errors\r\n .map(\r\n (error) => \"Error in field (\" + error.path + \") : \" + error.message\r\n )\r\n .join(\",\");\r\n } else {\r\n errorMessage = \"invalid record data\";\r\n }\r\n return errorMessage;\r\n }\r\n };\r\n\r\n const handleSaveRowClick = (record: any) => {\r\n const id = record[keyColumnName];\r\n setRowModesModel({\r\n ...rowModesModel,\r\n [id]: { mode: GridRowModes.View },\r\n });\r\n };\r\n\r\n const processRowUpdate = async (record: any) => {\r\n if (props.editMode.editMode === \"row\") {\r\n let savedRecord: any = null;\r\n const errorMessage = validateRecord(record);\r\n if (errorMessage) {\r\n const errors = errorMessage.split(\",\");\r\n toast.error(\r\n <div style={{}}>\r\n {errors.map((error: any) => (\r\n <>\r\n <div>{error}</div>\r\n <Divider />\r\n </>\r\n ))}\r\n </div>\r\n );\r\n throw new Error(errorMessage);\r\n }\r\n if (props?.editAction?.preActionValidation) {\r\n if (!props.editAction.preActionValidation(record)) {\r\n throw new Error(\"error on the configured presave validation\");\r\n }\r\n }\r\n const requestObject: any = { ...record };\r\n if (\r\n record[keyColumnName] &&\r\n isNumber(record[keyColumnName]) &&\r\n Number(record[keyColumnName]) < 0\r\n ) {\r\n requestObject[keyColumnName] = null;\r\n }\r\n savedRecord = await props.apiActions.saveRecord(requestObject);\r\n if (savedRecord == null) {\r\n throw new Error(\r\n \"Failed to process your request, contact your administrator\"\r\n );\r\n }\r\n if (props?.editAction?.postActionCallBack) {\r\n await props.editAction.postActionCallBack(record);\r\n }\r\n if (record?.isNew === true) {\r\n setData((oldData: any) => {\r\n const newData = oldData.filter(\r\n (x: any) => x[keyColumnName] !== record[keyColumnName]\r\n );\r\n return [savedRecord, ...newData];\r\n });\r\n }\r\n if (\r\n props?.editMode?.reloadAfterSave === true &&\r\n props?.apiActions?.reloadData\r\n ) {\r\n props?.apiActions?.reloadData(props?.gridLoadParametersValues);\r\n }\r\n return savedRecord;\r\n }\r\n };\r\n\r\n const handleCancelRowEditClick = (record: any) => {\r\n const id = record[keyColumnName];\r\n if (id && isNumber(id) && id < 0) {\r\n setRowModesModel({\r\n ...rowModesModel,\r\n [id]: { mode: GridRowModes.View, ignoreModifications: true },\r\n });\r\n setData((oldData: any) => {\r\n const newData = oldData.filter(\r\n (record: any) => record[keyColumnName] != id\r\n );\r\n return newData;\r\n });\r\n } else {\r\n setRowModesModel({\r\n ...rowModesModel,\r\n [id]: { mode: GridRowModes.View, ignoreModifications: true },\r\n });\r\n }\r\n };\r\n\r\n const getActionColumnActions = (params: GridRowParams<any>) => {\r\n const record: any = params.row;\r\n const actions: Array<React.ReactElement<GridActionsCellItemProps>> = [];\r\n if (props?.editMode?.editMode != \"none\") {\r\n if (\r\n props?.disableDefaultAction === undefined ||\r\n !props.disableDefaultAction\r\n ) {\r\n const isInEditMode: boolean =\r\n rowModesModel[record[keyColumnName]]?.mode === GridRowModes.Edit;\r\n if (props.editMode.editMode === \"row\" && isInEditMode) {\r\n if (isEditAllowed) {\r\n actions.push(\r\n <GridActionsCellItem\r\n icon={<FontAwesomeIcon icon=\"save\" />}\r\n label={t(\"SAVE_BTN_LABEL\")}\r\n onClick={() => {\r\n handleSaveRowClick(record);\r\n }}\r\n />\r\n );\r\n actions.push(\r\n <GridActionsCellItem\r\n icon={<FontAwesomeIcon icon=\"cancel\" />}\r\n label={t(\"CANCEL_BTN_LABEL\")}\r\n onClick={() => {\r\n handleCancelRowEditClick(record);\r\n }}\r\n color=\"inherit\"\r\n />\r\n );\r\n }\r\n } else {\r\n if (props?.editAction && props?.editAction?.isEnabled === true) {\r\n let isEditActionVisibleForRecord = true;\r\n if (props?.editAction?.isActionVisibleForRecord) {\r\n isEditActionVisibleForRecord =\r\n props?.editAction?.isActionVisibleForRecord(record);\r\n }\r\n let isActionEditDisabledForRecord = false;\r\n if (props?.editAction?.isActionDisabledForRecord) {\r\n isActionEditDisabledForRecord =\r\n props?.editAction?.isActionDisabledForRecord(record);\r\n }\r\n if (isEditAllowed && isEditActionVisibleForRecord) {\r\n actions.push(\r\n <GridActionsCellItem\r\n disabled={isActionEditDisabledForRecord}\r\n icon={\r\n <Tooltip title={t(\"EDIT_BTN_LABEL\")}>\r\n <FontAwesomeIcon\r\n icon={\"edit\"}\r\n style={{\r\n color: isActionEditDisabledForRecord\r\n ? \"gray\"\r\n : undefined,\r\n }}\r\n />\r\n </Tooltip>\r\n }\r\n showInMenu={\r\n props?.editAction?.gridActionProps?.showInMenu || false\r\n }\r\n label={t(\"EDIT_BTN_LABEL\")}\r\n className=\"textPrimary\"\r\n color=\"inherit\"\r\n onClick={() => {\r\n if (isEditAllowed && !isActionEditDisabledForRecord) {\r\n handleEditRecord(record);\r\n }\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n if (props?.deleteAction && props?.deleteAction?.isEnabled === true) {\r\n let isDeleteActionVisibleForRecord = true;\r\n if (props?.deleteAction?.isActionVisibleForRecord) {\r\n isDeleteActionVisibleForRecord =\r\n props?.deleteAction?.isActionVisibleForRecord(record);\r\n }\r\n let isDeleteActionDisabledForRecord = false;\r\n if (props?.deleteAction?.isActionDisabledForRecord) {\r\n isDeleteActionDisabledForRecord =\r\n props?.deleteAction?.isActionDisabledForRecord(record);\r\n }\r\n if (isDeleteAllowed && isDeleteActionVisibleForRecord) {\r\n actions.push(\r\n <GridActionsCellItem\r\n disabled={isDeleteActionDisabledForRecord}\r\n icon={\r\n <Tooltip title={t(\"DELETE_BTN_LABEL\")}>\r\n <FontAwesomeIcon\r\n icon={\"trash\"}\r\n style={{\r\n color: isDeleteActionDisabledForRecord\r\n ? \"gray\"\r\n : undefined,\r\n }}\r\n />\r\n </Tooltip>\r\n }\r\n showInMenu={\r\n props?.deleteAction?.gridActionProps?.showInMenu || false\r\n }\r\n label={t(\"DELETE_BTN_LABEL\")}\r\n className=\"textPrimary\"\r\n color=\"inherit\"\r\n onClick={() => {\r\n if (isDeleteAllowed && !isDeleteActionDisabledForRecord) {\r\n if (props?.deleteAction?.preActionValidation) {\r\n if (!props.deleteAction.preActionValidation(record)) {\r\n return;\r\n }\r\n }\r\n setRecordToDelete(record);\r\n setConfirmationWindowOpened(true);\r\n }\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (props?.rowActions) {\r\n for (const rowAction of props.rowActions) {\r\n if (\r\n !(\r\n rowAction?.gridActionProps?.multiRecord &&\r\n rowAction?.gridActionProps?.multiRecord === true\r\n )\r\n ) {\r\n actions.push(\r\n <TemplateGridRecordAction\r\n {...rowAction}\r\n record={record}\r\n reloadData={async () => {\r\n props.apiActions.reloadData(props?.gridLoadParametersValues);\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n }\r\n\r\n return actions;\r\n };\r\n\r\n const actionColumn: TemplateGridColDef = {\r\n type: \"actions\",\r\n field: \"actions\",\r\n headerName: \"\",\r\n headerAlign: \"center\",\r\n width:\r\n (props?.rowActions ? props.rowActions.length * 30 : 0) +\r\n (props?.editAction && props?.editAction?.isEnabled ? 30 : 0) +\r\n (props?.deleteAction && props?.deleteAction?.isEnabled ? 30 : 0),\r\n getActions: getActionColumnActions,\r\n };\r\n\r\n let structuredColumns: Array<TemplateGridColDef> = [];\r\n if (\r\n props?.disableDefaultAction === undefined ||\r\n !props.disableDefaultAction ||\r\n (props?.rowActions && props?.rowActions.length > 0)\r\n ) {\r\n structuredColumns.push(actionColumn);\r\n }\r\n\r\n structuredColumns = [...structuredColumns, ...generatedColumns];\r\n const handleRowSelection = (gridSelectionModel: GridRowSelectionModel) => {\r\n setRowSelectionModel(gridSelectionModel);\r\n };\r\n useEffect(() => {\r\n if (props?.autoLoad === undefined || props.autoLoad === true) {\r\n props.apiActions.reloadData(props?.gridLoadParametersValues);\r\n }\r\n }, []);\r\n\r\n const handleColumnVisibilityChange = (model: GridColumnVisibilityModel) => {\r\n setColumnVisibilityModel(model);\r\n if (props?.gridStateKey) {\r\n saveGridState(props.gridStateKey, { columnVisibilityModel: model });\r\n }\r\n };\r\n\r\n const handleColumnOrderChange: GridEventListener<\"columnOrderChange\"> = (\r\n params: GridColumnOrderChangeParams\r\n ) => {\r\n const { column, targetIndex } = params;\r\n setColumnOrder((prevOrder) => {\r\n const currentOrder = prevOrder.length\r\n ? [...prevOrder]\r\n : structuredColumns.map((col) => col.field);\r\n const fromIndex = currentOrder.indexOf(column.field);\r\n if (fromIndex === -1) return currentOrder;\r\n\r\n currentOrder.splice(fromIndex, 1); // remove\r\n currentOrder.splice(targetIndex, 0, column.field); // insert at new index\r\n\r\n if (props?.gridStateKey) {\r\n saveGridState(props.gridStateKey, { columnOrder: currentOrder });\r\n }\r\n\r\n return currentOrder;\r\n });\r\n };\r\n\r\n const handleRowGroupChange = (model: GridRowGroupingModel) => {\r\n setGridRowGroupingModel(model);\r\n if (props?.gridStateKey) {\r\n saveGridState(props.gridStateKey, { columnGroupingModel: model });\r\n }\r\n };\r\n\r\n const handleColumnWidthChange: GridEventListener<\"columnWidthChange\"> = (\r\n params: GridColumnResizeParams\r\n ) => {\r\n const updatedWidths = {\r\n ...columnWidths,\r\n [params.colDef.field]: params.width,\r\n };\r\n setColumnWidths(updatedWidths);\r\n if (props?.gridStateKey) {\r\n saveGridState(props.gridStateKey, { columnWidths: updatedWidths });\r\n }\r\n };\r\n\r\n const adjustedColumns: Array<TemplateGridColDef> = React.useMemo(() => {\r\n const baseCols = structuredColumns.map((col) => ({\r\n ...col,\r\n width: columnWidths[col.field] || col.width,\r\n }));\r\n\r\n // Reorder based on saved columnOrder\r\n if (columnOrder.length) {\r\n const fieldToCol = new Map(baseCols.map((col) => [col.field, col]));\r\n return columnOrder.map((field) => fieldToCol.get(field)!).filter(Boolean);\r\n }\r\n\r\n return baseCols;\r\n }, [columnOrder, columnWidths, structuredColumns]);\r\n return (\r\n <>\r\n <ConfirmationWindow />\r\n {props?.editMode?.editMode === \"modal\" ? (\r\n <FormWindow>\r\n {props?.editMode?.specs?.formComponent ? (\r\n <props.editMode.specs.formComponent\r\n recordIdToEdit={\r\n recordToEdit ? recordToEdit[keyColumnName] : undefined\r\n }\r\n formCloseCallBk={() => {\r\n setFormWindowState(false);\r\n props.apiActions.reloadData(props?.gridLoadParametersValues);\r\n }}\r\n />\r\n ) : (\r\n <TemplateForm\r\n recordIdToEdit={\r\n recordToEdit ? recordToEdit[keyColumnName] : undefined\r\n }\r\n formCloseCallBk={() => {\r\n setFormWindowState(false);\r\n props.apiActions.reloadData(props?.gridLoadParametersValues);\r\n }}\r\n elements={props.formElements}\r\n apiActions={props.apiActions}\r\n editAuthorityKey={props?.editAction?.authority}\r\n formSavedSuccessfullyCallBk={\r\n props?.editAction?.postActionCallBack\r\n }\r\n preSaveValidation={props?.editAction?.preActionValidation}\r\n actions={props?.rowActions}\r\n />\r\n )}\r\n </FormWindow>\r\n ) : (\r\n <></>\r\n )}\r\n {props?.hideInfoBar === undefined && !props?.hideInfoBar ? (\r\n <Box sx={{ display: \"flex\" }}>\r\n {props?.hideBackButton === undefined && !props?.hideBackButton ? (\r\n <IconButton\r\n onClick={() => {\r\n navigate(\"-1\", { replace: true });\r\n }}\r\n >\r\n <FontAwesomeIcon icon=\"arrow-left\" />\r\n </IconButton>\r\n ) : (\r\n <></>\r\n )}\r\n <Box\r\n sx={{\r\n flex: 1,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n {props?.girdIcon ? (\r\n <FontAwesomeIcon\r\n icon={props.girdIcon}\r\n style={{ marginRight: 5, marginLeft: 5 }}\r\n />\r\n ) : (\r\n <></>\r\n )}\r\n <Typography variant=\"h5\">\r\n {props?.gridTitle\r\n ? capitalizeFirstLetter(t(props?.gridTitle))\r\n : \"\"}\r\n </Typography>\r\n </Box>\r\n </Box>\r\n ) : (\r\n <></>\r\n )}\r\n\r\n {props?.gridLoadParameters &&\r\n props?.gridLoadParametersValues &&\r\n props?.setGridLoadParametersValues ? (\r\n <Accordion defaultExpanded>\r\n <AccordionSummary expandIcon={<GridExpandMoreIcon />}>\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n <FontAwesomeIcon\r\n style={{ marginLeft: 5, marginRight: 5 }}\r\n icon=\"search\"\r\n />\r\n <Typography component=\"span\">Filters</Typography>\r\n </Box>\r\n </AccordionSummary>\r\n <AccordionDetails>\r\n <Box>\r\n <TemplateForm\r\n saveButtonSpecs={{\r\n label: t(\"SEARCH_BTN_LABEL\"),\r\n icon: \"search\",\r\n actionButtonVariant: \"outlined\",\r\n actionButtonColor: \"success\",\r\n }}\r\n cancelButtonSpecs={{\r\n label: t(\"RESET_BTN_LABEL\"),\r\n icon: \"eraser\",\r\n actionButtonVariant: \"outlined\",\r\n actionButtonColor: \"error\",\r\n }}\r\n apiActions={{\r\n deleteRecordById: async () => {\r\n return true;\r\n },\r\n saveRecord: async (params) => {\r\n if (params != undefined) {\r\n props.setGridLoadParametersValues(params);\r\n } else {\r\n props.setGridLoadParametersValues({});\r\n }\r\n props.apiActions.reloadData(params);\r\n },\r\n reloadData: async () => {},\r\n loadRecordById: async () => {},\r\n }}\r\n elements={props.gridLoadParameters}\r\n />\r\n </Box>\r\n </AccordionDetails>\r\n </Accordion>\r\n ) : (\r\n <></>\r\n )}\r\n\r\n <DataGridPremium\r\n {...props?.muiProps}\r\n slots={{ toolbar: TemplateGridTopBar }}\r\n slotProps={{\r\n toolbar: {\r\n templateProps: {\r\n ...props,\r\n rowSelectionModel: rowSelectionModel,\r\n data: props?.data,\r\n },\r\n handleCreateNewRecord,\r\n clearGridState,\r\n } as any,\r\n }}\r\n getRowId={(record: any) => {\r\n return record[keyColumnName];\r\n }}\r\n showToolbar={true}\r\n rows={props?.data}\r\n columns={adjustedColumns}\r\n checkboxSelection\r\n editMode=\"row\"\r\n rowModesModel={\r\n props.editMode.editMode == \"row\" ? rowModesModel : undefined\r\n }\r\n onRowModesModelChange={\r\n props.editMode.editMode == \"row\"\r\n ? handleRowModesModelChange\r\n : undefined\r\n }\r\n rowGroupingColumnMode=\"multiple\"\r\n processRowUpdate={processRowUpdate}\r\n rowSelectionModel={rowSelectionModel}\r\n onRowSelectionModelChange={handleRowSelection}\r\n columnVisibilityModel={columnVisibilityModel}\r\n onColumnVisibilityModelChange={handleColumnVisibilityChange}\r\n onColumnOrderChange={handleColumnOrderChange}\r\n onColumnWidthChange={handleColumnWidthChange}\r\n rowGroupingModel={gridRowGroupingModel}\r\n onRowGroupingModelChange={(model: GridRowGroupingModel) => {\r\n handleRowGroupChange(model);\r\n }}\r\n pinnedColumns={pinnedColumns}\r\n onPinnedColumnsChange={handlePinnedColumnsChange}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport default TemplateGrid;\r\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\n\r\nexport interface CommonStoresInterface {\r\n stores: { [key: string]: StoreMetaData };\r\n storeKeys: Array<String>;\r\n isAutoLoadLoaded: boolean;\r\n}\r\n\r\ninterface setStoreDataProps {\r\n storeKey: string;\r\n data: Array<any>;\r\n}\r\n\r\nexport interface StoreMetaData {\r\n url: string;\r\n data: Array<any>;\r\n autoLoad: boolean;\r\n authority?: string;\r\n}\r\n\r\nexport const commonStoresInitialState: CommonStoresInterface = {\r\n stores: {},\r\n storeKeys: [],\r\n isAutoLoadLoaded: false,\r\n};\r\n\r\nconst commonStoreSlice = createSlice({\r\n name: \"loadingMask\",\r\n initialState: commonStoresInitialState,\r\n reducers: {\r\n setStoresMetaData: (state, action) => {\r\n state.stores = action.payload;\r\n state.storeKeys = Object.keys(action.payload);\r\n },\r\n setStoreData: (state, action: PayloadAction<setStoreDataProps>) => {\r\n state.stores[action.payload.storeKey].data = action.payload.data;\r\n },\r\n setAutoLoadLoaded: () => {\r\n state.isAutoLoadLoaded = true;\r\n },\r\n },\r\n});\r\n\r\nexport const { setStoreData, setStoresMetaData, setAutoLoadLoaded } =\r\n commonStoreSlice.actions;\r\nexport default commonStoreSlice.reducer;\r\n","import { useDispatch, useSelector } from \"react-redux\";\r\nimport useSession from \"./UseSession\";\r\nimport useAxios from \"./useAxios\";\r\nimport { setStoreData } from \"../redux/features/common/CommonStoreSlice\";\r\n\r\nexport type ApiActionsProps = {\r\n findAll?: string;\r\n commonStoreKey?: string;\r\n setData?: any;\r\n findById?: string;\r\n findByIdParamName?: string;\r\n save?: string;\r\n deleteById?: string;\r\n deleteByIdParamName?: string;\r\n};\r\n\r\nexport type ApiActions = {\r\n reloadData: (params?: any) => Promise<void>;\r\n saveRecord: (record: any) => Promise<any | null>;\r\n loadRecordById: (recordId: any) => Promise<any>;\r\n deleteRecordById: (recordId: any) => Promise<boolean>;\r\n};\r\n\r\nconst useApiActions: (apiActionsProps: ApiActionsProps) => ApiActions = (\r\n apiActionsProps: ApiActionsProps\r\n) => {\r\n const CommonStores = useSelector((state: any) => state.commonStores.stores);\r\n const dispatch = useDispatch();\r\n const session = useSession();\r\n const { handleGetRequest, handlePostRequest, handleDeleteRequest } =\r\n useAxios();\r\n const reloadData = async (params?: any) => {\r\n if (apiActionsProps?.commonStoreKey) {\r\n const storeKeys = Object.keys(CommonStores);\r\n for (const storeKey of storeKeys) {\r\n if (storeKey === apiActionsProps.commonStoreKey) {\r\n if (\r\n (CommonStores[storeKey]?.authority === undefined ||\r\n CommonStores[storeKey]?.authority === null ||\r\n session.isUserAuthorized(CommonStores[storeKey]?.authority)) &&\r\n CommonStores[storeKey]?.url != \"\"\r\n ) {\r\n await handleGetRequest({\r\n endPointURI: CommonStores[storeKey].url,\r\n showMask: false,\r\n successCallBkFn: (response: any) => {\r\n dispatch(setStoreData({ storeKey, data: response.data }));\r\n apiActionsProps.setData(response.data);\r\n },\r\n failureCallBkFn: () => {\r\n dispatch(setStoreData({ storeKey, data: [] }));\r\n apiActionsProps.setData([]);\r\n },\r\n });\r\n break;\r\n }\r\n }\r\n }\r\n } else if (apiActionsProps?.findAll) {\r\n await handleGetRequest({\r\n endPointURI: apiActionsProps.findAll,\r\n showMask: true,\r\n parameters: params || {},\r\n successCallBkFn: (response: any) => {\r\n apiActionsProps.setData(response.data);\r\n },\r\n });\r\n }\r\n };\r\n const saveRecord = async (record: any) => {\r\n let savedRecord = null;\r\n if (apiActionsProps?.save) {\r\n await handlePostRequest({\r\n endPointURI: apiActionsProps.save,\r\n data: record,\r\n showMask: true,\r\n successCallBkFn: (response: any) => {\r\n savedRecord = response.data;\r\n },\r\n });\r\n }\r\n return savedRecord;\r\n };\r\n const loadRecordById = async (recordId: any) => {\r\n let record: any = null;\r\n if (apiActionsProps?.findById) {\r\n const parameters: any = {};\r\n const keyParameterName = apiActionsProps?.findByIdParamName || \"id\";\r\n parameters[keyParameterName] = recordId;\r\n await handleGetRequest({\r\n endPointURI: apiActionsProps.findById,\r\n showMask: true,\r\n parameters,\r\n successCallBkFn: (response: any) => {\r\n record = response.data;\r\n },\r\n });\r\n }\r\n return record;\r\n };\r\n const deleteRecordById = async (recordId: any) => {\r\n let result = true;\r\n if (apiActionsProps?.deleteById) {\r\n const parameters: any = {};\r\n const keyParameterName = apiActionsProps?.deleteByIdParamName || \"id\";\r\n parameters[keyParameterName] = recordId;\r\n await handleDeleteRequest({\r\n endPointURI: apiActionsProps.deleteById,\r\n showMask: true,\r\n parameters,\r\n successCallBkFn: () => {\r\n result = true;\r\n },\r\n failureCallBkFn: () => {\r\n result = false;\r\n },\r\n });\r\n }\r\n return result;\r\n };\r\n return { reloadData, loadRecordById, saveRecord, deleteRecordById };\r\n};\r\n\r\nexport default useApiActions;\r\n","import * as React from \"react\";\r\nimport List from \"@mui/material/List\";\r\nimport Card from \"@mui/material/Card\";\r\nimport CardHeader from \"@mui/material/CardHeader\";\r\nimport ListItem from \"@mui/material/ListItem\";\r\nimport ListItemText from \"@mui/material/ListItemText\";\r\nimport ListItemIcon from \"@mui/material/ListItemIcon\";\r\nimport Checkbox from \"@mui/material/Checkbox\";\r\nimport Button from \"@mui/material/Button\";\r\nimport Divider from \"@mui/material/Divider\";\r\nimport { Box, Grid2, ListItemButton } from \"@mui/material\";\r\nimport TemplateTextField from \"./DataEntryTemplates/TemplateDataForm/FormFields/TemplateTextField\";\r\n\r\nfunction not(a, b) {\r\n return a.filter((value) => b.indexOf(value) === -1);\r\n}\r\n\r\nfunction intersection(a, b) {\r\n return a.filter((value) => b.indexOf(value) !== -1);\r\n}\r\n\r\nfunction union(a, b) {\r\n return [...a, ...not(b, a)];\r\n}\r\n\r\nexport type TransferListProps = {\r\n valueField: string;\r\n displayField: string;\r\n options: Array<any>;\r\n selectedOptions: Array<any>;\r\n setSelection: any;\r\n};\r\n\r\nconst TransferList: React.FC<TransferListProps> = ({\r\n valueField = \"id\",\r\n displayField = \"name\",\r\n options = [],\r\n selectedOptions = [],\r\n setSelection,\r\n}) => {\r\n const [checked, setChecked] = React.useState([]);\r\n const [left, setLeft] = React.useState(options);\r\n const [right, setRight] = React.useState(selectedOptions);\r\n\r\n const [leftFilterValue, setLeftFilterValue] = React.useState<string>(\"\");\r\n const [rightFilterValue, setRightFilterValue] = React.useState<string>(\"\");\r\n\r\n const leftChecked = intersection(checked, left);\r\n const rightChecked = intersection(checked, right);\r\n\r\n const handleToggle = (value) => () => {\r\n const currentIndex = checked.indexOf(value);\r\n const newChecked = [...checked];\r\n\r\n if (currentIndex === -1) {\r\n newChecked.push(value);\r\n } else {\r\n newChecked.splice(currentIndex, 1);\r\n }\r\n\r\n setChecked(newChecked);\r\n };\r\n\r\n const numberOfChecked = (items) => intersection(checked, items).length;\r\n\r\n const handleToggleAll = (items) => () => {\r\n if (numberOfChecked(items) === items.length) {\r\n setChecked(not(checked, items));\r\n } else {\r\n setChecked(union(checked, items));\r\n }\r\n };\r\n\r\n const handleCheckedRight = () => {\r\n setRight((oldState) => {\r\n let newState = right.concat(leftChecked);\r\n setSelection(newState);\r\n return newState;\r\n });\r\n setLeft(not(left, leftChecked));\r\n setChecked(not(checked, leftChecked));\r\n };\r\n\r\n const handleCheckedLeft = () => {\r\n setLeft(left.concat(rightChecked));\r\n setRight((oldState) => {\r\n let newState = not(right, rightChecked);\r\n setSelection(newState);\r\n return newState;\r\n });\r\n setChecked(not(checked, rightChecked));\r\n };\r\n\r\n const customList = (\r\n title: string,\r\n unfilteredItems: Array<any>,\r\n side: \"left\" | \"right\"\r\n ) => {\r\n const items = unfilteredItems.filter((option: any) => {\r\n if (option[displayField]) {\r\n const value: string = option[displayField];\r\n if (\r\n side === \"left\" &&\r\n value\r\n .toLocaleLowerCase()\r\n .includes(leftFilterValue.toLocaleLowerCase())\r\n ) {\r\n return true;\r\n } else if (\r\n side === \"right\" &&\r\n value\r\n .toLocaleLowerCase()\r\n .includes(rightFilterValue.toLocaleLowerCase())\r\n ) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n });\r\n return (\r\n <Card sx={{ height: \"100%\" }}>\r\n <CardHeader\r\n sx={{ px: 2, py: 1 }}\r\n avatar={\r\n <Checkbox\r\n onClick={handleToggleAll(items)}\r\n checked={\r\n numberOfChecked(items) === items.length && items.length !== 0\r\n }\r\n indeterminate={\r\n numberOfChecked(items) !== items.length &&\r\n numberOfChecked(items) !== 0\r\n }\r\n disabled={items.length === 0}\r\n inputProps={{\r\n \"aria-label\": \"all items selected\",\r\n }}\r\n />\r\n }\r\n title={title}\r\n subheader={`${numberOfChecked(unfilteredItems)} / ${\r\n unfilteredItems.length\r\n } Selected`}\r\n />\r\n <Box sx={{ width: \"100%\", padding: 1 }}>\r\n <TemplateTextField\r\n fullWidth\r\n label=\"search\"\r\n value={side === \"left\" ? leftFilterValue : rightFilterValue}\r\n onChange={(event) => {\r\n if (side === \"left\") {\r\n setLeftFilterValue(event.target.value);\r\n } else {\r\n setRightFilterValue(event.target.value);\r\n }\r\n }}\r\n />\r\n </Box>\r\n <Divider />\r\n <List\r\n sx={{\r\n width: \"100%\",\r\n height: \"100%\",\r\n bgcolor: \"secondary\",\r\n overflow: \"auto\",\r\n }}\r\n dense\r\n component=\"div\"\r\n role=\"list\"\r\n >\r\n {items.map((value) => {\r\n const labelId = `transfer-list-all-item-${value[valueField]}-label`;\r\n\r\n return (\r\n <ListItemButton\r\n key={value[valueField]}\r\n role=\"listitem\"\r\n onClick={handleToggle(value)}\r\n sx={{ cursor: \"pointer\" }} \r\n >\r\n <ListItemIcon>\r\n <Checkbox\r\n checked={checked.indexOf(value) !== -1}\r\n tabIndex={-1}\r\n disableRipple\r\n />\r\n </ListItemIcon>\r\n <ListItemText\r\n id={value[valueField]}\r\n primary={value[displayField]}\r\n />\r\n </ListItemButton>\r\n );\r\n })}\r\n </List>\r\n </Card>\r\n );\r\n };\r\n return (\r\n <Grid2\r\n container\r\n spacing={2}\r\n sx={{\r\n flexGrow: 1,\r\n overflow: \"auto\",\r\n margin: 1,\r\n display: \"flex\",\r\n width: \"100%\",\r\n }}\r\n justifyContent=\"center\"\r\n alignItems=\"center\"\r\n >\r\n <Grid2 sx={{ height: \"100%\", flex: 1 }}>\r\n {customList(\"Available Items\", left, \"left\")}\r\n </Grid2>\r\n <Grid2>\r\n <Grid2 container direction=\"column\" alignItems=\"center\">\r\n <Button\r\n sx={{ my: 0.5 }}\r\n variant=\"outlined\"\r\n size=\"small\"\r\n onClick={handleCheckedRight}\r\n disabled={leftChecked.length === 0}\r\n aria-label=\"move selected right\"\r\n >\r\n >\r\n </Button>\r\n <Button\r\n sx={{ my: 0.5 }}\r\n variant=\"outlined\"\r\n size=\"small\"\r\n onClick={handleCheckedLeft}\r\n disabled={rightChecked.length === 0}\r\n aria-label=\"move selected left\"\r\n >\r\n <\r\n </Button>\r\n </Grid2>\r\n </Grid2>\r\n <Grid2 sx={{ height: \"100%\", flex: 1 }}>\r\n {customList(\"Currently Selected\", right, \"right\")}\r\n </Grid2>\r\n </Grid2>\r\n );\r\n};\r\n\r\nexport default TransferList;\r\n","import { PieChart } from \"@mui/x-charts/PieChart\";\r\nimport { WidgetProps } from \"../TemplateDashboard\";\r\n\r\nconst TemplatePieChart: React.FC<WidgetProps> = (props) => {\r\n // construct data object\r\n const chartData = props.data.map((record: any, index: any) => {\r\n return {\r\n id: index,\r\n value: record[props.valueField],\r\n label: record[props.labelField] + \"\",\r\n };\r\n });\r\n console.log(\"chartData\", chartData);\r\n return (\r\n <PieChart\r\n series={[\r\n {\r\n data: chartData,\r\n },\r\n ]}\r\n />\r\n );\r\n};\r\n\r\nexport default TemplatePieChart;\r\n","import { BarChart } from \"@mui/x-charts\";\r\nimport { WidgetProps } from \"../TemplateDashboard\";\r\n\r\nconst TemplateBarChart: React.FC<WidgetProps> = (props) => {\r\n return (\r\n <BarChart\r\n dataset={props.data}\r\n xAxis={[{ dataKey: props.valueField, scaleType: \"band\" }]}\r\n series={props.labelField?.split(\",\").map((labelField) => {\r\n return { dataKey: labelField, label: labelField };\r\n })}\r\n />\r\n );\r\n};\r\n\r\nexport default TemplateBarChart;\r\n","import { LineChart } from \"@mui/x-charts\";\r\nimport { WidgetProps } from \"../TemplateDashboard\";\r\n\r\nconst TemplateLineChart: React.FC<WidgetProps> = (props) => {\r\n return (\r\n <LineChart\r\n dataset={props.data}\r\n xAxis={[{ dataKey: props.valueField, scaleType: \"band\" }]}\r\n series={props.labelField?.split(\",\").map((labelField) => {\r\n return { dataKey: labelField, label: labelField };\r\n })}\r\n />\r\n );\r\n};\r\n\r\nexport default TemplateLineChart;\r\n","import { Gauge } from \"@mui/x-charts\";\r\nimport { SingleRecordWidgetProps } from \"../TemplateDashboard\";\r\nimport { Typography } from \"@mui/material\";\r\n\r\nconst TemplateGauge: React.FC<SingleRecordWidgetProps> = (props: any) => {\r\n return (\r\n <>\r\n <Typography sx={{ fontSize: 16, fontWeight: \"bold\" }}>\r\n {props.widgetTitle} - {props.record[props.labelField]}\r\n </Typography>\r\n <Gauge width={200} height={200} value={props.record[props.valueField]} />\r\n </>\r\n );\r\n};\r\n\r\nexport default TemplateGauge;\r\n","import { Box, Paper, Typography } from \"@mui/material\";\r\nimport { SingleRecordWidgetProps } from \"../TemplateDashboard\";\r\n\r\nconst TemplateDataCard: React.FC<SingleRecordWidgetProps> = (props: any) => {\r\n return (\r\n <Paper\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n height: 150,\r\n padding: 1,\r\n flexGrow: 1,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n width: \"100%\",\r\n justifyContent: \"space-evenly\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <Typography sx={{ fontSize: 16, fontWeight: \"bold\" }}>\r\n {props.widgetTitle}\r\n </Typography>\r\n </Box>\r\n <Box\r\n sx={{\r\n flex: 1,\r\n display: \"flex\",\r\n width: \"100%\",\r\n justifyContent: \"space-evenly\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n {/* <div>left</div> */}\r\n <div>{`${props.record[props.labelField]} : ${\r\n props.record[props.valueField]\r\n }`}</div>\r\n {/* <div>right</div> */}\r\n </Box>\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n width: \"100%\",\r\n justifyContent: \"space-evenly\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n {/* <div>left</div>\r\n <div>center</div>\r\n <div>right</div> */}\r\n </Box>\r\n </Paper>\r\n );\r\n};\r\n\r\nexport default TemplateDataCard;\r\n","import * as React from \"react\";\r\nimport LinearProgress, {\r\n LinearProgressProps,\r\n} from \"@mui/material/LinearProgress\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport Box from \"@mui/material/Box\";\r\nimport { SingleRecordWidgetProps } from \"../TemplateDashboard\";\r\n\r\nfunction LinearProgressWithLabel(\r\n props: LinearProgressProps & { value: number }\r\n) {\r\n return (\r\n <Box sx={{ display: \"flex\", alignItems: \"center\" }}>\r\n <Box sx={{ width: \"100%\", mr: 1 }}>\r\n <LinearProgress variant=\"determinate\" {...props} />\r\n </Box>\r\n <Box sx={{ minWidth: 35 }}>\r\n <Typography\r\n variant=\"body2\"\r\n sx={{ color: \"text.secondary\" }}\r\n >{`${Math.round(props.value)}%`}</Typography>\r\n </Box>\r\n </Box>\r\n );\r\n}\r\n\r\nconst TemplateLineProgress: React.FC<SingleRecordWidgetProps> = (\r\n props: any\r\n) => {\r\n return (\r\n <Box sx={{ width: \"100%\" }}>\r\n <Typography sx={{ fontSize: 16, fontWeight: \"bold\" }}>\r\n {props.widgetTitle} - {props.record[props.labelField]}\r\n </Typography>\r\n <LinearProgressWithLabel value={props.record[props.valueField]} />\r\n </Box>\r\n );\r\n};\r\n\r\nexport default TemplateLineProgress;\r\n","import Grid from \"@mui/material/Grid2\";\r\nimport TemplatePieChart from \"./charts/TemplatePieChart\";\r\nimport TemplateBarChart from \"./charts/TemplateBarChart\";\r\nimport TemplateLineChart from \"./charts/TemplateLineChart\";\r\nimport TemplateGauge from \"./charts/TemplateGauge\";\r\nimport TemplateDataCard from \"./charts/TemplateDataCard\";\r\nimport TemplateLineProgress from \"./charts/TemplateLineProgress\";\r\nimport { Typography } from \"@mui/material\";\r\n\r\ninterface WidgetContainerProps {\r\n children: React.ReactNode;\r\n widgetType: \"Line\" | \"Bar\" | \"Pie\" | \"Card\" | \"Gauge\" | \"Progress\";\r\n}\r\n\r\nexport interface WidgetProps {\r\n widgetTitle?: string;\r\n widgetType: \"Line\" | \"Bar\" | \"Pie\" | \"Card\" | \"Gauge\" | \"Progress\";\r\n data: any;\r\n valueField: string; //x-axis field in case of line/bar chart\r\n labelField: string; //y-axis field in case of line/bar chart, it can also be a comma separated string for multiple series\r\n}\r\n\r\nexport interface SingleRecordWidgetProps {\r\n widgetTitle?: string;\r\n record: object;\r\n valueField: string;\r\n labelField: string;\r\n}\r\n\r\nexport interface DashboardProps {\r\n dashboardTitle: string;\r\n dashboardWidgets: Array<WidgetProps>;\r\n}\r\n\r\nconst WidgetContainer: React.FC<WidgetContainerProps> = ({\r\n children,\r\n widgetType,\r\n}) => {\r\n return (\r\n <Grid\r\n size={{ xs: 12, sm: 6, md: 4 }}\r\n sx={{\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n padding: 1,\r\n display: \"flex\",\r\n flexDirection: widgetType != \"Card\" ? \"column\" : undefined,\r\n height: 300,\r\n }}\r\n >\r\n {children}\r\n </Grid>\r\n );\r\n};\r\n\r\nconst TemplateDashboard: React.FC<DashboardProps> = (props) => {\r\n return (\r\n <>\r\n <Typography sx={{ fontSize: 20, fontWeight: \"bold\" }}>\r\n {props.dashboardTitle}\r\n </Typography>\r\n <Grid\r\n container\r\n sx={{\r\n flexGrow: 1,\r\n width: \"100%\",\r\n overflowY: \"auto\",\r\n padding: 2,\r\n }}\r\n >\r\n {props.dashboardWidgets.map((widgetProps: any, index: any) => {\r\n if (\r\n widgetProps.widgetType === \"Card\" ||\r\n widgetProps.widgetType === \"Gauge\" ||\r\n widgetProps.widgetType === \"Progress\"\r\n ) {\r\n return (\r\n <>\r\n {widgetProps.data.map((record: any, index: any) => {\r\n const singleRecordWidgetProps: SingleRecordWidgetProps = {\r\n widgetTitle: widgetProps.widgetTitle,\r\n record,\r\n labelField: widgetProps.labelField,\r\n valueField: widgetProps.valueField,\r\n };\r\n return (\r\n <WidgetContainer\r\n key={index}\r\n widgetType={widgetProps.widgetType}\r\n >\r\n {widgetProps.widgetType === \"Card\" ? (\r\n <TemplateDataCard {...singleRecordWidgetProps} />\r\n ) : null}\r\n {widgetProps.widgetType === \"Gauge\" ? (\r\n <TemplateGauge {...singleRecordWidgetProps} />\r\n ) : null}\r\n {widgetProps.widgetType === \"Progress\" ? (\r\n <TemplateLineProgress {...singleRecordWidgetProps} />\r\n ) : null}\r\n </WidgetContainer>\r\n );\r\n })}\r\n </>\r\n );\r\n } else {\r\n return (\r\n <WidgetContainer key={index} widgetType={widgetProps.widgetType}>\r\n {widgetProps.widgetType === \"Pie\" ? (\r\n <TemplatePieChart {...widgetProps} />\r\n ) : null}\r\n {widgetProps.widgetType === \"Line\" ? (\r\n <TemplateLineChart {...widgetProps} />\r\n ) : null}\r\n {widgetProps.widgetType === \"Bar\" ? (\r\n <TemplateBarChart {...widgetProps} />\r\n ) : null}\r\n </WidgetContainer>\r\n );\r\n }\r\n })}\r\n </Grid>\r\n </>\r\n );\r\n};\r\n\r\nexport default TemplateDashboard;\r\n","import { useState } from \"react\";\r\nimport { Box, Button } from \"@mui/material\";\r\nimport { toast } from \"react-toastify\";\r\nimport { useAxios } from \"../../hooks\";\r\nimport { TransferList } from \"../templates\";\r\n\r\ntype RoleAuthoritiesFormProps = {\r\n roleId: number;\r\n availableAuthorities: Array<any>;\r\n currentRoleAuthorities: Array<any>;\r\n closeModalFn: () => void;\r\n};\r\n\r\nconst RoleAuthoritiesForm: React.FC<RoleAuthoritiesFormProps> = (props) => {\r\n const [selectedOptions, setSelectedOptions] = useState([\r\n ...props.currentRoleAuthorities,\r\n ]);\r\n const { handlePostRequest } = useAxios();\r\n const saveRoleAuthorities = async () => {\r\n await handlePostRequest({\r\n endPointURI: \"api/v1/admin/role/authorities\",\r\n showMask: true,\r\n parameters: { roleId: props.roleId },\r\n data: selectedOptions,\r\n successCallBkFn: () => {\r\n toast.success(\"Your request has been proccesed successfully\");\r\n if (props.closeModalFn) {\r\n props.closeModalFn();\r\n }\r\n },\r\n });\r\n };\r\n return (\r\n <>\r\n <TransferList\r\n displayField=\"authorityName\"\r\n options={props.availableAuthorities}\r\n valueField=\"id\"\r\n selectedOptions={selectedOptions}\r\n setSelection={setSelectedOptions}\r\n />\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-end\",\r\n width: \"100%\",\r\n }}\r\n >\r\n <Button\r\n variant=\"contained\"\r\n onClick={saveRoleAuthorities}\r\n sx={{ marginRight: 1, marginLeft: 1 }}\r\n >\r\n Save\r\n </Button>\r\n <Button variant=\"contained\" color=\"error\" onClick={props.closeModalFn}>\r\n Cancel\r\n </Button>\r\n </Box>\r\n </>\r\n );\r\n};\r\n\r\nexport default RoleAuthoritiesForm;\r\n","import Home from \"../components/common/Home\";\r\nimport { ADMINISTRATION_ROUTES } from \"./administration\";\r\nimport { SystemRoute } from \"./types\";\r\n\r\nexport const SYSTEM_ROUTES: Array<SystemRoute> = [\r\n {\r\n path: \"/\",\r\n component: Home,\r\n },\r\n ...ADMINISTRATION_ROUTES,\r\n];\r\n","import { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { Box } from \"@mui/material\";\r\n\r\nconst Home: React.FC = () => {\r\n return (\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n flex: 1,\r\n fontSize: 24,\r\n fontWeight: \"bold\",\r\n }}\r\n >\r\n <img src=\"logo.png\" style={{ margin: 5 }} />\r\n <div>Welcome to Ezzsteel Flat Product Management System</div>\r\n <div style={{ fontSize: 16 }}>\r\n Use side menu [\r\n <FontAwesomeIcon\r\n icon=\"bars\"\r\n style={{ marginLeft: 10, marginRight: 10 }}\r\n />\r\n ] to navigate to your authorized system modules\r\n </div>\r\n </Box>\r\n );\r\n};\r\n\r\nexport default Home;\r\n","import { SystemRoute } from \"../types\";\r\nimport { adminRoutes } from \"./adminRoutes\";\r\n\r\nexport const ADMINISTRATION_ROUTES: Array<SystemRoute> = [...adminRoutes];\r\n","import { SystemRoute } from \"../types\";\r\n\r\nimport AuthorityGrid from \"../../components/admin/AuthorityGrid\";\r\nimport BluePrintGrid from \"../../components/admin/BluePrintGrid\";\r\nimport BluePrintPageGrid from \"../../components/admin/BluePrintPageGrid\";\r\nimport BluePrintPointGrid from \"../../components/admin/BluePrintPointGrid\";\r\nimport DashboardGrid from \"../../components/admin/DashboardGrid\";\r\nimport DashboardWidgetGrid from \"../../components/admin/DashboardWidgetGrid\";\r\nimport DataQueryGrid from \"../../components/admin/DataQueryGrid\";\r\nimport DataQueryParameterGrid from \"../../components/admin/DataQueryParameterGrid\";\r\nimport DatasourceConnectionGrid from \"../../components/admin/DatasourceConnectionGrid\";\r\nimport EmployeeGrid from \"../../components/admin/EmployeeGrid\";\r\nimport EntityParameterGrid from \"../../components/admin/EntityParameterGrid\";\r\nimport ExcelUploaderDetailGrid from \"../../components/admin/ExcelUploaderDetailGrid\";\r\nimport ExcelUploaderHeaderGrid from \"../../components/admin/ExcelUploaderHeaderGrid\";\r\nimport LookupGrid from \"../../components/admin/LookupGrid\";\r\nimport MailAttachmentGrid from \"../../components/admin/MailAttachmentGrid\";\r\nimport MailBodyGrid from \"../../components/admin/MailBodyGrid\";\r\nimport MailNotificationQueueGrid from \"../../components/admin/MailNotificationQueueGrid\";\r\nimport MailRecipientGrid from \"../../components/admin/MailRecipientGrid\";\r\nimport MailTemplateGrid from \"../../components/admin/MailTemplateGrid\";\r\nimport NewTableGrid from \"../../components/admin/NewTableGrid\";\r\nimport NotificationGrid from \"../../components/admin/NotificationGrid\";\r\nimport NotificationQueueGrid from \"../../components/admin/NotificationQueueGrid\";\r\nimport OrganizationGrid from \"../../components/admin/OrganizationGrid\";\r\nimport OrganizationApplicationGrid from \"../../components/admin/OrganizationApplicationGrid\";\r\nimport OrganizationRankGrid from \"../../components/admin/OrganizationRankGrid\";\r\nimport OrganizationUnitGrid from \"../../components/admin/OrganizationUnitGrid\";\r\nimport OrganizationUserGrid from \"../../components/admin/OrganizationUserGrid\";\r\nimport OrganizationUserRoleGrid from \"../../components/admin/OrganizationUserRoleGrid\";\r\nimport ReportGrid from \"../../components/admin/ReportGrid\";\r\nimport ReportParameterGrid from \"../../components/admin/ReportParameterGrid\";\r\nimport RoleGrid from \"../../components/admin/RoleGrid\";\r\nimport RoleAuthorityGrid from \"../../components/admin/RoleAuthorityGrid\";\r\nimport UserAccountGrid from \"../../components/admin/UserAccountGrid\";\r\nimport UserRequestGrid from \"../../components/admin/UserRequestGrid\";\r\nimport WidgetGrid from \"../../components/admin/WidgetGrid\";\r\nimport WorkflowDocumentGrid from \"../../components/admin/WorkflowDocumentGrid\";\r\nimport WorkflowDocumentActionGrid from \"../../components/admin/WorkflowDocumentActionGrid\";\r\nimport WorkflowDocumentActionHistoryGrid from \"../../components/admin/WorkflowDocumentActionHistoryGrid\";\r\nimport WorkflowDocumentActionMailGrid from \"../../components/admin/WorkflowDocumentActionMailGrid\";\r\nimport WorkflowDocumentMailLogGrid from \"../../components/admin/WorkflowDocumentMailLogGrid\";\r\nimport WorkflowDocumentStatusGrid from \"../../components/admin/WorkflowDocumentStatusGrid\";\r\nimport AttachmentGrid from \"../../components/admin/AttachmentGrid\";\r\nexport const adminRoutes: Array<SystemRoute> = [\r\n {\r\n path: \"admin/attachments\",\r\n component: AttachmentGrid,\r\n authority: \"ATTACHMENT_VIEW\",\r\n },\r\n {\r\n path: \"admin/authorities\",\r\n component: AuthorityGrid,\r\n authority: \"AUTHORITY_VIEW\",\r\n },\r\n {\r\n path: \"admin/blueprints\",\r\n component: BluePrintGrid,\r\n authority: \"BLUE_PRINT_VIEW\",\r\n },\r\n {\r\n path: \"admin/blueprintpages\",\r\n component: BluePrintPageGrid,\r\n authority: \"BLUE_PRINT_PAGE_VIEW\",\r\n },\r\n {\r\n path: \"admin/blueprintpoints\",\r\n component: BluePrintPointGrid,\r\n authority: \"BLUE_PRINT_POINT_VIEW\",\r\n },\r\n {\r\n path: \"admin/dashboards\",\r\n component: DashboardGrid,\r\n authority: \"DASHBOARD_VIEW\",\r\n },\r\n {\r\n path: \"admin/dashboardwidgets\",\r\n component: DashboardWidgetGrid,\r\n authority: \"DASHBOARD_WIDGET_VIEW\",\r\n },\r\n {\r\n path: \"admin/dataqueries\",\r\n component: DataQueryGrid,\r\n authority: \"DATA_QUERY_VIEW\",\r\n },\r\n {\r\n path: \"admin/dataqueryparameters\",\r\n component: DataQueryParameterGrid,\r\n authority: \"DATA_QUERY_PARAMETER_VIEW\",\r\n },\r\n {\r\n path: \"admin/datasourceconnections\",\r\n component: DatasourceConnectionGrid,\r\n authority: \"DATASOURCE_CONNECTION_VIEW\",\r\n },\r\n {\r\n path: \"admin/employees\",\r\n component: EmployeeGrid,\r\n authority: \"EMPLOYEE_VIEW\",\r\n },\r\n {\r\n path: \"admin/entityparameters\",\r\n component: EntityParameterGrid,\r\n authority: \"ENTITY_PARAMETER_VIEW\",\r\n },\r\n {\r\n path: \"admin/exceluploaderdetails\",\r\n component: ExcelUploaderDetailGrid,\r\n authority: \"EXCEL_UPLOADER_DETAIL_VIEW\",\r\n },\r\n {\r\n path: \"admin/exceluploaderheaders\",\r\n component: ExcelUploaderHeaderGrid,\r\n authority: \"EXCEL_UPLOADER_HEADER_VIEW\",\r\n },\r\n {\r\n path: \"admin/lookups\",\r\n component: LookupGrid,\r\n authority: \"LOOKUP_VIEW\",\r\n },\r\n {\r\n path: \"admin/mailattachments\",\r\n component: MailAttachmentGrid,\r\n authority: \"MAIL_ATTACHMENT_VIEW\",\r\n },\r\n {\r\n path: \"admin/mailbodies\",\r\n component: MailBodyGrid,\r\n authority: \"MAIL_BODY_VIEW\",\r\n },\r\n {\r\n path: \"admin/mailnotificationqueues\",\r\n component: MailNotificationQueueGrid,\r\n authority: \"MAIL_NOTIFICATION_QUEUE_VIEW\",\r\n },\r\n {\r\n path: \"admin/mailrecipients\",\r\n component: MailRecipientGrid,\r\n authority: \"MAIL_RECIPIENT_VIEW\",\r\n },\r\n {\r\n path: \"admin/mailtemplates\",\r\n component: MailTemplateGrid,\r\n authority: \"MAIL_TEMPLATE_VIEW\",\r\n },\r\n {\r\n path: \"admin/newtables\",\r\n component: NewTableGrid,\r\n authority: \"NEW_TABLE_VIEW\",\r\n },\r\n {\r\n path: \"admin/notifications\",\r\n component: NotificationGrid,\r\n authority: \"NOTIFICATION_VIEW\",\r\n },\r\n {\r\n path: \"admin/notificationqueues\",\r\n component: NotificationQueueGrid,\r\n authority: \"NOTIFICATION_QUEUE_VIEW\",\r\n },\r\n {\r\n path: \"admin/organizations\",\r\n component: OrganizationGrid,\r\n authority: \"ORGANIZATION_VIEW\",\r\n },\r\n {\r\n path: \"admin/organizationapplications\",\r\n component: OrganizationApplicationGrid,\r\n authority: \"ORGANIZATION_APPLICATION_VIEW\",\r\n },\r\n {\r\n path: \"admin/organizationranks\",\r\n component: OrganizationRankGrid,\r\n authority: \"ORGANIZATION_RANK_VIEW\",\r\n },\r\n {\r\n path: \"admin/organizationunits\",\r\n component: OrganizationUnitGrid,\r\n authority: \"ORGANIZATION_UNIT_VIEW\",\r\n },\r\n {\r\n path: \"admin/organizationusers\",\r\n component: OrganizationUserGrid,\r\n authority: \"ORGANIZATION_USER_VIEW\",\r\n },\r\n {\r\n path: \"admin/organizationuserroles\",\r\n component: OrganizationUserRoleGrid,\r\n authority: \"ORGANIZATION_USER_ROLE_VIEW\",\r\n },\r\n {\r\n path: \"admin/reports\",\r\n component: ReportGrid,\r\n authority: \"REPORT_VIEW\",\r\n },\r\n {\r\n path: \"admin/reportparameters\",\r\n component: ReportParameterGrid,\r\n authority: \"REPORT_PARAMETER_VIEW\",\r\n },\r\n {\r\n path: \"admin/roles\",\r\n component: RoleGrid,\r\n authority: \"ROLE_VIEW\",\r\n },\r\n {\r\n path: \"admin/roleauthorities\",\r\n component: RoleAuthorityGrid,\r\n authority: \"ROLE_AUTHORITY_VIEW\",\r\n },\r\n {\r\n path: \"admin/useraccounts\",\r\n component: UserAccountGrid,\r\n authority: \"USER_ACCOUNT_VIEW\",\r\n },\r\n {\r\n path: \"admin/userrequests\",\r\n component: UserRequestGrid,\r\n authority: \"USER_REQUEST_VIEW\",\r\n },\r\n {\r\n path: \"admin/widgets\",\r\n component: WidgetGrid,\r\n authority: \"WIDGET_VIEW\",\r\n },\r\n {\r\n path: \"admin/workflowdocuments\",\r\n component: WorkflowDocumentGrid,\r\n authority: \"WORKFLOW_DOCUMENT_VIEW\",\r\n },\r\n {\r\n path: \"admin/workflowdocumentactions\",\r\n component: WorkflowDocumentActionGrid,\r\n authority: \"WORKFLOW_DOCUMENT_ACTION_VIEW\",\r\n },\r\n {\r\n path: \"admin/workflowdocumentactionhistories\",\r\n component: WorkflowDocumentActionHistoryGrid,\r\n authority: \"WORKFLOW_DOCUMENT_ACTION_HISTORY_VIEW\",\r\n },\r\n {\r\n path: \"admin/workflowdocumentactionmails\",\r\n component: WorkflowDocumentActionMailGrid,\r\n authority: \"WORKFLOW_DOCUMENT_ACTION_MAIL_VIEW\",\r\n },\r\n {\r\n path: \"admin/workflowdocumentmaillogs\",\r\n component: WorkflowDocumentMailLogGrid,\r\n authority: \"WORKFLOW_DOCUMENT_MAIL_LOG_VIEW\",\r\n },\r\n {\r\n path: \"admin/workflowdocumentstatuses\",\r\n component: WorkflowDocumentStatusGrid,\r\n authority: \"WORKFLOW_DOCUMENT_STATUS_VIEW\",\r\n },\r\n];\r\n\r\n// import { adminRoutes } from \"./adminRoutes\";\r\n// [...adminRoutes]\r\n","import { useState } from \"react\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\n\r\n\r\nconst AttachmentGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/attachment/all\",\r\n deleteById: \"api/v1/admin/attachment\",\r\n save: \"api/v1/admin/attachment\",\r\n findById: \"api/v1/admin/attachment\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ATTACHMENT_ATTACHMENT_NUMBER\",\r\n fieldName: \"attachmentNumber\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ATTACHMENT_ATTACHMENT_SIZE\",\r\n fieldName: \"attachmentSize\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ATTACHMENT_ATTACHMENT_TYPE\",\r\n fieldName: \"attachmentType\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ATTACHMENT_CATEGORY\",\r\n fieldName: \"category\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ATTACHMENT_DOC_TYPE\",\r\n fieldName: \"docType\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ATTACHMENT_FILE_NAME\",\r\n fieldName: \"fileName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ATTACHMENT_REF_KEY\",\r\n fieldName: \"refKey\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ATTACHMENT_REMARK\",\r\n fieldName: \"remark\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"ATTACHMENT_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"ATTACHMENT_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"ATTACHMENT_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default AttachmentGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst AuthorityGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n commonStoreKey: \"SystemAuthorities\",\r\n deleteById: \"api/v1/admin/authority\",\r\n save: \"api/v1/admin/authority\",\r\n findById: \"api/v1/admin/authority\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"AUTHORITY_AUTHORITY_CODE\",\r\n fieldName: \"authorityCode\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"AUTHORITY_AUTHORITY_DESCRIPTION\",\r\n fieldName: \"authorityDescription\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"AUTHORITY_AUTHORITY_NAME\",\r\n fieldName: \"authorityName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"AUTHORITY_IS_ACTIVE\",\r\n fieldName: \"isActive\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"AUTHORITY_ORGANIZATION_APPLICATION_ID\",\r\n fieldName: \"organizationApplicationId\",\r\n required: false,\r\n fieldType: \"text\",\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\", reloadAfterSave: true }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"AUTHORITY_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"AUTHORITY_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"AUTHORITY_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default AuthorityGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst BluePrintGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/blueprint/all\",\r\n deleteById: \"api/v1/admin/blueprint\",\r\n save: \"api/v1/admin/blueprint\",\r\n findById: \"api/v1/admin/blueprint\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"BLUE_PRINT_BLUE_PRINT_CODE\",\r\n fieldName: \"bluePrintCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"BLUE_PRINT_QUERY_ID\",\r\n fieldName: \"queryId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"BLUE_PRINT_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"BLUE_PRINT_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"BLUE_PRINT_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default BluePrintGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst BluePrintPageGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/blueprintpage/all\",\r\n deleteById: \"api/v1/admin/blueprintpage\",\r\n save: \"api/v1/admin/blueprintpage\",\r\n findById: \"api/v1/admin/blueprintpage\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"BLUE_PRINT_PAGE_BLUE_PRINT_ID\",\r\n fieldName: \"bluePrintId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"BLUE_PRINT_PAGE_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"BLUE_PRINT_PAGE_PAGE_NAME\",\r\n fieldName: \"pageName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"BLUE_PRINT_PAGE_PAGE_ORDER\",\r\n fieldName: \"pageOrder\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"BLUE_PRINT_PAGE_QUERY_ID\",\r\n fieldName: \"queryId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"BLUE_PRINT_PAGE_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"BLUE_PRINT_PAGE_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"BLUE_PRINT_PAGE_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default BluePrintPageGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst BluePrintPointGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/blueprintpoint/all\",\r\n deleteById: \"api/v1/admin/blueprintpoint\",\r\n save: \"api/v1/admin/blueprintpoint\",\r\n findById: \"api/v1/admin/blueprintpoint\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"BLUE_PRINT_POINT_BLUE_PRINT_PAGE_ID\",\r\n fieldName: \"bluePrintPageId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"BLUE_PRINT_POINT_FONT_SIZE\",\r\n fieldName: \"fontSize\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"BLUE_PRINT_POINT_POINT_CODE\",\r\n fieldName: \"pointCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"BLUE_PRINT_POINT_X\",\r\n fieldName: \"x\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"BLUE_PRINT_POINT_Y\",\r\n fieldName: \"y\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"BLUE_PRINT_POINT_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"BLUE_PRINT_POINT_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"BLUE_PRINT_POINT_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default BluePrintPointGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst DashboardGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/dashboard/all\",\r\n deleteById: \"api/v1/admin/dashboard\",\r\n save: \"api/v1/admin/dashboard\",\r\n findById: \"api/v1/admin/dashboard\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DASHBOARD_DASHBOARD_CODE\",\r\n fieldName: \"dashboardCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DASHBOARD_DASHBOARD_NAME\",\r\n fieldName: \"dashboardName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DASHBOARD_DASHBOARD_TITLE\",\r\n fieldName: \"dashboardTitle\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DASHBOARD_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DASHBOARD_LOAD_WIDGETS_INDIVIDUALLY\",\r\n fieldName: \"loadWidgetsIndividually\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DASHBOARD_NUMBER_OF_COLUMNS\",\r\n fieldName: \"numberOfColumns\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"DASHBOARD_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"DASHBOARD_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"DASHBOARD_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default DashboardGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst DashboardWidgetGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/dashboardwidget/all\",\r\n deleteById: \"api/v1/admin/dashboardwidget\",\r\n save: \"api/v1/admin/dashboardwidget\",\r\n findById: \"api/v1/admin/dashboardwidget\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DASHBOARD_WIDGET_DASHBOARD_ID\",\r\n fieldName: \"dashboardId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DASHBOARD_WIDGET_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DASHBOARD_WIDGET_WIDGET_ID\",\r\n fieldName: \"widgetId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DASHBOARD_WIDGET_WIDGET_ORDER\",\r\n fieldName: \"widgetOrder\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"DASHBOARD_WIDGET_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"DASHBOARD_WIDGET_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"DASHBOARD_WIDGET_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default DashboardWidgetGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst DataQueryGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n commonStoreKey: \"SystemDataQueries\",\r\n deleteById: \"api/v1/admin/dataquery\",\r\n save: \"api/v1/admin/dataquery\",\r\n findById: \"api/v1/admin/dataquery\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATA_QUERY_DATASOURCE_CON_ID\",\r\n fieldName: \"datasourceConId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATA_QUERY_QUERY_NAME\",\r\n fieldName: \"queryName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATA_QUERY_QUERY_STR\",\r\n fieldName: \"queryStr\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATA_QUERY_USE_SYS_CON\",\r\n fieldName: \"useSysCon\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\", reloadAfterSave: true }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"DATA_QUERY_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"DATA_QUERY_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"DATA_QUERY_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default DataQueryGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst DataQueryParameterGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/dataqueryparameter/all\",\r\n deleteById: \"api/v1/admin/dataqueryparameter\",\r\n save: \"api/v1/admin/dataqueryparameter\",\r\n findById: \"api/v1/admin/dataqueryparameter\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATA_QUERY_PARAMETER_DATA_QUERY_ID\",\r\n fieldName: \"dataQueryId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATA_QUERY_PARAMETER_DEFAULT_VALUE\",\r\n fieldName: \"defaultValue\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATA_QUERY_PARAMETER_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATA_QUERY_PARAMETER_ENTITY_PARAMETER_ID\",\r\n fieldName: \"entityParameterId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATA_QUERY_PARAMETER_HIDDEN\",\r\n fieldName: \"hidden\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATA_QUERY_PARAMETER_MANDATORY\",\r\n fieldName: \"mandatory\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"DATA_QUERY_PARAMETER_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"DATA_QUERY_PARAMETER_EDIT\" }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"DATA_QUERY_PARAMETER_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default DataQueryParameterGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst DatasourceConnectionGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n commonStoreKey: \"SystemDataSources\",\r\n deleteById: \"api/v1/admin/datasourceconnection\",\r\n save: \"api/v1/admin/datasourceconnection\",\r\n findById: \"api/v1/admin/datasourceconnection\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATASOURCE_CONNECTION_CONNECTION_NAME\",\r\n fieldName: \"connectionName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATASOURCE_CONNECTION_DATASOURCE_PASSWORD\",\r\n fieldName: \"datasourcePassword\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATASOURCE_CONNECTION_DATASOURCE_TYPE\",\r\n fieldName: \"datasourceType\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATASOURCE_CONNECTION_DATASOURCE_URL\",\r\n fieldName: \"datasourceUrl\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATASOURCE_CONNECTION_DATASOURCE_USERNAME\",\r\n fieldName: \"datasourceUsername\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"DATASOURCE_CONNECTION_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\", reloadAfterSave: true }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"DATASOURCE_CONNECTION_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"DATASOURCE_CONNECTION_EDIT\" }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"DATASOURCE_CONNECTION_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default DatasourceConnectionGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst EmployeeGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/employee/all\",\r\n deleteById: \"api/v1/admin/employee\",\r\n save: \"api/v1/admin/employee\",\r\n findById: \"api/v1/admin/employee\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"EMPLOYEE_EMAIL\",\r\n fieldName: \"email\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"EMPLOYEE_EMPLOYEE_NAME\",\r\n fieldName: \"employeeName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"EMPLOYEE_EMPLOYEE_NUMBER\",\r\n fieldName: \"employeeNumber\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"EMPLOYEE_MOBILE_NUMBER\",\r\n fieldName: \"mobileNumber\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"EMPLOYEE_ORGANIZATION_RANK_ID\",\r\n fieldName: \"organizationRankId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"EMPLOYEE_ORGANIZATION_UNIT_ID\",\r\n fieldName: \"organizationUnitId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"EMPLOYEE_USER_ACCOUNT_ID\",\r\n fieldName: \"userAccountId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"EMPLOYEE_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"EMPLOYEE_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"EMPLOYEE_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default EmployeeGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst EntityParameterGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n commonStoreKey: \"SystemEntityParameters\",\r\n deleteById: \"api/v1/admin/entityparameter\",\r\n save: \"api/v1/admin/entityparameter\",\r\n findById: \"api/v1/admin/entityparameter\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ENTITY_PARAMETER_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ENTITY_PARAMETER_PARAMETER_CODE\",\r\n fieldName: \"parameterCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ENTITY_PARAMETER_PARAMETER_DATA_QUERY_ID\",\r\n fieldName: \"parameterDataQueryId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ENTITY_PARAMETER_PARAMETER_DATASET\",\r\n fieldName: \"parameterDataset\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ENTITY_PARAMETER_PARAMETER_DISPLAY_FIELD\",\r\n fieldName: \"parameterDisplayField\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ENTITY_PARAMETER_PARAMETER_LABEL\",\r\n fieldName: \"parameterLabel\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ENTITY_PARAMETER_PARAMETER_TYPE\",\r\n fieldName: \"parameterType\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ENTITY_PARAMETER_PARAMETER_VALUE_FIELD\",\r\n fieldName: \"parameterValueField\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ENTITY_PARAMETER_PARAMETER_VALUE_FORMAT\",\r\n fieldName: \"parameterValueFormat\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\", reloadAfterSave: true }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"ENTITY_PARAMETER_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"ENTITY_PARAMETER_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"ENTITY_PARAMETER_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default EntityParameterGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst ExcelUploaderDetailGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/exceluploaderdetail/all\",\r\n deleteById: \"api/v1/admin/exceluploaderdetail\",\r\n save: \"api/v1/admin/exceluploaderdetail\",\r\n findById: \"api/v1/admin/exceluploaderdetail\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"EXCEL_UPLOADER_DETAIL_COLUMN_INDEX\",\r\n fieldName: \"columnIndex\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"EXCEL_UPLOADER_DETAIL_EXCEL_UPLOADER_HEADER_ID\",\r\n fieldName: \"excelUploaderHeaderId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"EXCEL_UPLOADER_DETAIL_LOOKUP_QUERY_ID\",\r\n fieldName: \"lookupQueryId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"EXCEL_UPLOADER_DETAIL_TABLE_FIELD\",\r\n fieldName: \"tableField\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"EXCEL_UPLOADER_DETAIL_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"EXCEL_UPLOADER_DETAIL_EDIT\" }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"EXCEL_UPLOADER_DETAIL_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default ExcelUploaderDetailGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst ExcelUploaderHeaderGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/exceluploaderheader/all\",\r\n deleteById: \"api/v1/admin/exceluploaderheader\",\r\n save: \"api/v1/admin/exceluploaderheader\",\r\n findById: \"api/v1/admin/exceluploaderheader\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"EXCEL_UPLOADER_HEADER_UPLOADER_CONNECTION_ID\",\r\n fieldName: \"uploaderConnectionId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"EXCEL_UPLOADER_HEADER_UPLOADER_DATABASE_NAME\",\r\n fieldName: \"uploaderDatabaseName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"EXCEL_UPLOADER_HEADER_UPLOADER_NAME\",\r\n fieldName: \"uploaderName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"EXCEL_UPLOADER_HEADER_UPLOADER_TABLE_NAME\",\r\n fieldName: \"uploaderTableName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"EXCEL_UPLOADER_HEADER_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"EXCEL_UPLOADER_HEADER_EDIT\" }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"EXCEL_UPLOADER_HEADER_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default ExcelUploaderHeaderGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst LookupGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/lookup/all\",\r\n deleteById: \"api/v1/admin/lookup\",\r\n save: \"api/v1/admin/lookup\",\r\n findById: \"api/v1/admin/lookup\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"LOOKUP_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"LOOKUP_LOOKUP_AR_DISPLAY\",\r\n fieldName: \"lookupArDisplay\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"LOOKUP_LOOKUP_EN_DISPLAY\",\r\n fieldName: \"lookupEnDisplay\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"LOOKUP_LOOKUP_TYPE\",\r\n fieldName: \"lookupType\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"LOOKUP_LOOKUP_VALUE\",\r\n fieldName: \"lookupValue\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"LOOKUP_ORG_CODE\",\r\n fieldName: \"orgCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"LOOKUP_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"LOOKUP_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"LOOKUP_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default LookupGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst MailAttachmentGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/mailattachment/all\",\r\n deleteById: \"api/v1/admin/mailattachment\",\r\n save: \"api/v1/admin/mailattachment\",\r\n findById: \"api/v1/admin/mailattachment\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_ATTACHMENT_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_ATTACHMENT_MAIL_TEMPLATE_ID\",\r\n fieldName: \"mailTemplateId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_ATTACHMENT_REPORT_ID\",\r\n fieldName: \"reportId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"MAIL_ATTACHMENT_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"MAIL_ATTACHMENT_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"MAIL_ATTACHMENT_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default MailAttachmentGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst MailBodyGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/mailbody/all\",\r\n deleteById: \"api/v1/admin/mailbody\",\r\n save: \"api/v1/admin/mailbody\",\r\n findById: \"api/v1/admin/mailbody\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_BODY_BODY_CONTENT\",\r\n fieldName: \"bodyContent\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_BODY_BODY_CONTENT_DATA_QUERY_ID\",\r\n fieldName: \"bodyContentDataQueryId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_BODY_BODY_ORDER\",\r\n fieldName: \"bodyOrder\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_BODY_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_BODY_IS_MAIN\",\r\n fieldName: \"isMain\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_BODY_MAIL_TEMPLATE_ID\",\r\n fieldName: \"mailTemplateId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_BODY_PRINT_FOR_EACH_RECORD\",\r\n fieldName: \"printForEachRecord\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"MAIL_BODY_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"MAIL_BODY_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"MAIL_BODY_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default MailBodyGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst MailNotificationQueueGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/mailnotificationqueue/all\",\r\n deleteById: \"api/v1/admin/mailnotificationqueue\",\r\n save: \"api/v1/admin/mailnotificationqueue\",\r\n findById: \"api/v1/admin/mailnotificationqueue\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_NOTIFICATION_QUEUE_CUSTOM_MAIL_ATTACHED_REPORT_ID\",\r\n fieldName: \"customMailAttachedReportId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_NOTIFICATION_QUEUE_CUSTOM_MAIL_BODY\",\r\n fieldName: \"customMailBody\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_NOTIFICATION_QUEUE_CUSTOM_MAIL_SUBJECT\",\r\n fieldName: \"customMailSubject\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_NOTIFICATION_QUEUE_CUSTOM_RECIPIENTS\",\r\n fieldName: \"customRecipients\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_NOTIFICATION_QUEUE_IS_NOTIFIED\",\r\n fieldName: \"isNotified\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_NOTIFICATION_QUEUE_MAIL_PARAMETERS\",\r\n fieldName: \"mailParameters\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_NOTIFICATION_QUEUE_MAIL_TEMPLATE_ID\",\r\n fieldName: \"mailTemplateId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_NOTIFICATION_QUEUE_NOTIFICATION_MESSAGE\",\r\n fieldName: \"notificationMessage\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_NOTIFICATION_QUEUE_NOTIFICATION_TIME\",\r\n fieldName: \"notificationTime\",\r\n required: false,\r\n fieldType: \"datetime\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"MAIL_NOTIFICATION_QUEUE_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"MAIL_NOTIFICATION_QUEUE_EDIT\",\r\n }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"MAIL_NOTIFICATION_QUEUE_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default MailNotificationQueueGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst MailRecipientGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/mailrecipient/all\",\r\n deleteById: \"api/v1/admin/mailrecipient\",\r\n save: \"api/v1/admin/mailrecipient\",\r\n findById: \"api/v1/admin/mailrecipient\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_RECIPIENT_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_RECIPIENT_MAIL_TEMPLATE_ID\",\r\n fieldName: \"mailTemplateId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_RECIPIENT_RECIPIENT_MAIL\",\r\n fieldName: \"recipientMail\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_RECIPIENT_RECIPIENT_TYPE\",\r\n fieldName: \"recipientType\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"MAIL_RECIPIENT_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"MAIL_RECIPIENT_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"MAIL_RECIPIENT_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default MailRecipientGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst MailTemplateGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/mailtemplate/all\",\r\n deleteById: \"api/v1/admin/mailtemplate\",\r\n save: \"api/v1/admin/mailtemplate\",\r\n findById: \"api/v1/admin/mailtemplate\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_TEMPLATE_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_TEMPLATE_MAIL_CC_DATA_QUERY_ID\",\r\n fieldName: \"mailCcDataQueryId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_TEMPLATE_MAIL_SUBJECT\",\r\n fieldName: \"mailSubject\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_TEMPLATE_MAIL_TEMPLATE_CODE\",\r\n fieldName: \"mailTemplateCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_TEMPLATE_MAIL_TEMPLATE_NAME\",\r\n fieldName: \"mailTemplateName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_TEMPLATE_MAIL_TO_DATA_QUERY_ID\",\r\n fieldName: \"mailToDataQueryId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_TEMPLATE_PERIOD_TYPE\",\r\n fieldName: \"periodType\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_TEMPLATE_PERIOD_VALUE\",\r\n fieldName: \"periodValue\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_TEMPLATE_PERIODICAL\",\r\n fieldName: \"periodical\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_TEMPLATE_START_SENDING_AT\",\r\n fieldName: \"startSendingAt\",\r\n required: false,\r\n fieldType: \"datetime\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"MAIL_TEMPLATE_SUBJECT_DATA_QUERY_ID\",\r\n fieldName: \"subjectDataQueryId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"MAIL_TEMPLATE_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"MAIL_TEMPLATE_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"MAIL_TEMPLATE_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default MailTemplateGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst NewTableGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/newtable/all\",\r\n deleteById: \"api/v1/admin/newtable\",\r\n save: \"api/v1/admin/newtable\",\r\n findById: \"api/v1/admin/newtable\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"NEW_TABLE_TEST_DATE\",\r\n fieldName: \"testDate\",\r\n required: false,\r\n fieldType: \"date\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"NEW_TABLE_TEST_LONG\",\r\n fieldName: \"testLong\",\r\n required: false,\r\n fieldType: \"number\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"NEW_TABLE_TEST_DECIMAL\",\r\n fieldName: \"testDecimal\",\r\n required: false,\r\n fieldType: \"number\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"NEW_TABLE_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"NEW_TABLE_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"NEW_TABLE_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default NewTableGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst NotificationGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/notification/all\",\r\n deleteById: \"api/v1/admin/notification\",\r\n save: \"api/v1/admin/notification\",\r\n findById: \"api/v1/admin/notification\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"NOTIFICATION_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"NOTIFICATION_NOTIFICATION_ACTION_KEY\",\r\n fieldName: \"notificationActionKey\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"NOTIFICATION_NOTIFICATION_ACTION_PAYLOAD\",\r\n fieldName: \"notificationActionPayload\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"NOTIFICATION_NOTIFICATION_CODE\",\r\n fieldName: \"notificationCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"NOTIFICATION_NOTIFICATION_ICON\",\r\n fieldName: \"notificationIcon\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"NOTIFICATION_NOTIFICATION_QUERY_ID\",\r\n fieldName: \"notificationQueryId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"NOTIFICATION_NOTIFICATION_TEXT\",\r\n fieldName: \"notificationText\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"NOTIFICATION_USERS_TO_NOTIFY_QUERY_ID\",\r\n fieldName: \"usersToNotifyQueryId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"NOTIFICATION_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"NOTIFICATION_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"NOTIFICATION_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default NotificationGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst NotificationQueueGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/notificationqueue/all\",\r\n deleteById: \"api/v1/admin/notificationqueue\",\r\n save: \"api/v1/admin/notificationqueue\",\r\n findById: \"api/v1/admin/notificationqueue\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"NOTIFICATION_QUEUE_CUSTOM_NOTIFICATION_ACTION_KEY\",\r\n fieldName: \"customNotificationActionKey\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"NOTIFICATION_QUEUE_CUSTOM_NOTIFICATION_ACTION_PAYLOAD\",\r\n fieldName: \"customNotificationActionPayload\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"NOTIFICATION_QUEUE_CUSTOM_NOTIFICATION_ICON\",\r\n fieldName: \"customNotificationIcon\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"NOTIFICATION_QUEUE_CUSTOM_NOTIFICATION_TEXT\",\r\n fieldName: \"customNotificationText\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"NOTIFICATION_QUEUE_IS_NOTIFIED\",\r\n fieldName: \"isNotified\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"NOTIFICATION_QUEUE_NOTIFICATION_CODE\",\r\n fieldName: \"notificationCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"NOTIFICATION_QUEUE_NOTIFICATION_PARAMS\",\r\n fieldName: \"notificationParams\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"NOTIFICATION_QUEUE_NOTIFIED_TIME\",\r\n fieldName: \"notifiedTime\",\r\n required: false,\r\n fieldType: \"datetime\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"NOTIFICATION_QUEUE_USERNAME\",\r\n fieldName: \"username\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"NOTIFICATION_QUEUE_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"NOTIFICATION_QUEUE_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"NOTIFICATION_QUEUE_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default NotificationQueueGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst OrganizationGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/organization/all\",\r\n deleteById: \"api/v1/admin/organization\",\r\n save: \"api/v1/admin/organization\",\r\n findById: \"api/v1/admin/organization\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_ORGANIZATION_CODE\",\r\n fieldName: \"organizationCode\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_IS_ACTIVE\",\r\n fieldName: \"isActive\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_ORGANIZATION_NAME\",\r\n fieldName: \"organizationName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"organizationCode\"}\r\n gridTitle=\"ORGANIZATION_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"ORGANIZATION_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"ORGANIZATION_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default OrganizationGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst OrganizationApplicationGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/organizationapplication/all\",\r\n deleteById: \"api/v1/admin/organizationapplication\",\r\n save: \"api/v1/admin/organizationapplication\",\r\n findById: \"api/v1/admin/organizationapplication\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_APPLICATION_APPLICATION_CODE\",\r\n fieldName: \"applicationCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_APPLICATION_APPLICATION_DESCRIPTION\",\r\n fieldName: \"applicationDescription\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_APPLICATION_APPLICATION_NAME\",\r\n fieldName: \"applicationName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_APPLICATION_IS_ACTIVE\",\r\n fieldName: \"isActive\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"ORGANIZATION_APPLICATION_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"ORGANIZATION_APPLICATION_EDIT\",\r\n }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"ORGANIZATION_APPLICATION_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default OrganizationApplicationGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst OrganizationRankGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/organizationrank/all\",\r\n deleteById: \"api/v1/admin/organizationrank\",\r\n save: \"api/v1/admin/organizationrank\",\r\n findById: \"api/v1/admin/organizationrank\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_RANK_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_RANK_ORGANIZATION_CODE\",\r\n fieldName: \"organizationCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_RANK_RANK_CODE\",\r\n fieldName: \"rankCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_RANK_RANK_NAME\",\r\n fieldName: \"rankName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_RANK_RANK_ORDER\",\r\n fieldName: \"rankOrder\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"ORGANIZATION_RANK_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"ORGANIZATION_RANK_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"ORGANIZATION_RANK_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default OrganizationRankGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst OrganizationUnitGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/organizationunit/all\",\r\n deleteById: \"api/v1/admin/organizationunit\",\r\n save: \"api/v1/admin/organizationunit\",\r\n findById: \"api/v1/admin/organizationunit\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_UNIT_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_UNIT_ORGANIZATION_CODE\",\r\n fieldName: \"organizationCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_UNIT_ORGANIZATION_UNIT_AR_NAME\",\r\n fieldName: \"organizationUnitArName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_UNIT_ORGANIZATION_UNIT_EN_NAME\",\r\n fieldName: \"organizationUnitEnName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_UNIT_ORGANIZATION_UNIT_PARENT_ID\",\r\n fieldName: \"organizationUnitParentId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"ORGANIZATION_UNIT_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"ORGANIZATION_UNIT_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"ORGANIZATION_UNIT_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default OrganizationUnitGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst OrganizationUserGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/organizationuser/all\",\r\n deleteById: \"api/v1/admin/organizationuser\",\r\n save: \"api/v1/admin/organizationuser\",\r\n findById: \"api/v1/admin/organizationuser\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_USER_IS_ACTIVE\",\r\n fieldName: \"isActive\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_USER_IS_DEFAULT\",\r\n fieldName: \"isDefault\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_USER_ORGANIZATION_CODE\",\r\n fieldName: \"organizationCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_USER_USERNAME\",\r\n fieldName: \"username\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"ORGANIZATION_USER_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"ORGANIZATION_USER_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"ORGANIZATION_USER_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default OrganizationUserGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst OrganizationUserRoleGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/organizationuserrole/all\",\r\n deleteById: \"api/v1/admin/organizationuserrole\",\r\n save: \"api/v1/admin/organizationuserrole\",\r\n findById: \"api/v1/admin/organizationuserrole\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_USER_ROLE_END_DATE\",\r\n fieldName: \"endDate\",\r\n required: false,\r\n fieldType: \"datetime\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_USER_ROLE_IS_ACTIVE\",\r\n fieldName: \"isActive\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_USER_ROLE_ORGANIZATION_CODE\",\r\n fieldName: \"organizationCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_USER_ROLE_ROLE_ID\",\r\n fieldName: \"roleId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_USER_ROLE_START_DATE\",\r\n fieldName: \"startDate\",\r\n required: false,\r\n fieldType: \"datetime\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ORGANIZATION_USER_ROLE_USERNAME\",\r\n fieldName: \"username\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"ORGANIZATION_USER_ROLE_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"ORGANIZATION_USER_ROLE_EDIT\" }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"ORGANIZATION_USER_ROLE_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default OrganizationUserRoleGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst ReportGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/report/all\",\r\n deleteById: \"api/v1/admin/report\",\r\n save: \"api/v1/admin/report\",\r\n findById: \"api/v1/admin/report\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_DATASOURCE_CON_ID\",\r\n fieldName: \"datasourceConId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_REPORT_BLUE_PRINT_ID\",\r\n fieldName: \"reportBluePrintId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_REPORT_CATEGORY\",\r\n fieldName: \"reportCategory\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_REPORT_CODE\",\r\n fieldName: \"reportCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_REPORT_EXCEL_DATA_QUERY_ID\",\r\n fieldName: \"reportExcelDataQueryId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_REPORT_EXPORT_NAME\",\r\n fieldName: \"reportExportName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_REPORT_JASPER_NAME\",\r\n fieldName: \"reportJasperName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_REPORT_JASPER_PATH\",\r\n fieldName: \"reportJasperPath\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_REPORT_MENU_CODE\",\r\n fieldName: \"reportMenuCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_REPORT_NAME\",\r\n fieldName: \"reportName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_REPORT_TYPE\",\r\n fieldName: \"reportType\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_USE_SYS_DATASOURCE\",\r\n fieldName: \"useSysDatasource\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"REPORT_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"REPORT_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"REPORT_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default ReportGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst ReportParameterGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/reportparameter/all\",\r\n deleteById: \"api/v1/admin/reportparameter\",\r\n save: \"api/v1/admin/reportparameter\",\r\n findById: \"api/v1/admin/reportparameter\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_PARAMETER_DEFAULT_VALUE\",\r\n fieldName: \"defaultValue\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_PARAMETER_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_PARAMETER_ENTITY_PARAMETER_ID\",\r\n fieldName: \"entityParameterId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_PARAMETER_HIDDEN\",\r\n fieldName: \"hidden\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_PARAMETER_MANDATORY\",\r\n fieldName: \"mandatory\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"REPORT_PARAMETER_REPORT_ID\",\r\n fieldName: \"reportId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"REPORT_PARAMETER_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"REPORT_PARAMETER_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"REPORT_PARAMETER_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default ReportParameterGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\nimport { useAxios, useWindow } from \"../../hooks\";\r\nimport RoleAuthoritiesForm from \"./RoleAuthoritiesForm\";\r\n\r\nconst RoleGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n commonStoreKey: \"SystemRoles\",\r\n deleteById: \"api/v1/admin/role\",\r\n save: \"api/v1/admin/role\",\r\n findById: \"api/v1/admin/role\",\r\n setData: setData,\r\n });\r\n const [selectedRole, setSelectedRole] = useState<any>(null);\r\n const { handleGetRequest } = useAxios();\r\n const [selectedRoleAuthorities, setSelectedRoleAuthorities] = useState<any>(\r\n []\r\n );\r\n const [\r\n selectedRoleAvailableAuthorities,\r\n setSelectedRoleAvailableAuthorities,\r\n ] = useState<any>([]);\r\n const {\r\n Window: RoleAuthoritiesWindow,\r\n setWindowState: setRoleAuthorirtiesWindowOpen,\r\n } = useWindow({\r\n width: \"50%\",\r\n windowIcon: \"key\",\r\n windowTitle: \"Role Authorities\",\r\n });\r\n const loadRoleAuthorities = async (data: any) => {\r\n await handleGetRequest({\r\n endPointURI: \"api/v1/admin/role/authorities\",\r\n showMask: true,\r\n parameters: {\r\n roleId: data.id,\r\n },\r\n successCallBkFn: (response: any) => {\r\n setRoleAuthorirtiesWindowOpen(true);\r\n setSelectedRoleAuthorities(response.data.selectedAuthorities);\r\n setSelectedRoleAvailableAuthorities(response.data.availableAuthorities);\r\n },\r\n });\r\n };\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ROLE_ROLE_NAME\",\r\n fieldName: \"roleName\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ROLE_DESCRIPTION\",\r\n fieldName: \"description\",\r\n required: true,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ROLE_IS_ACTIVE\",\r\n fieldName: \"isActive\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ROLE_ORGANIZATION_APPLICATION_ID\",\r\n fieldName: \"organizationApplicationId\",\r\n required: false,\r\n fieldType: \"text\",\r\n gridProps: {\r\n hidden: true,\r\n },\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <>\r\n <RoleAuthoritiesWindow>\r\n <RoleAuthoritiesForm\r\n roleId={selectedRole?.id}\r\n availableAuthorities={selectedRoleAvailableAuthorities}\r\n currentRoleAuthorities={selectedRoleAuthorities}\r\n closeModalFn={() => {\r\n setRoleAuthorirtiesWindowOpen(false);\r\n }}\r\n />\r\n </RoleAuthoritiesWindow>\r\n <TemplateGrid\r\n rowActions={[\r\n {\r\n icon: \"key\",\r\n label: \"authorities\",\r\n actionFn: async (data) => {\r\n setSelectedRole(data);\r\n loadRoleAuthorities(data);\r\n },\r\n },\r\n ]}\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\", reloadAfterSave: true }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"ROLE_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"ROLE_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"ROLE_DELETE\" }}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport default RoleGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst RoleAuthorityGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/roleauthority/all\",\r\n deleteById: \"api/v1/admin/roleauthority\",\r\n save: \"api/v1/admin/roleauthority\",\r\n findById: \"api/v1/admin/roleauthority\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ROLE_AUTHORITY_AUTHORITY_ID\",\r\n fieldName: \"authorityId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ROLE_AUTHORITY_IS_ACTIVE\",\r\n fieldName: \"isActive\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"ROLE_AUTHORITY_ROLE_ID\",\r\n fieldName: \"roleId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"ROLE_AUTHORITY_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"ROLE_AUTHORITY_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"ROLE_AUTHORITY_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default RoleAuthorityGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst UserAccountGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/useraccount/all\",\r\n deleteById: \"api/v1/admin/useraccount\",\r\n save: \"api/v1/admin/useraccount\",\r\n findById: \"api/v1/admin/useraccount\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"USER_ACCOUNT_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"USER_ACCOUNT_PASSWORD\",\r\n fieldName: \"password\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"USER_ACCOUNT_USERNAME\",\r\n fieldName: \"username\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"USER_ACCOUNT_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"USER_ACCOUNT_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"USER_ACCOUNT_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default UserAccountGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst UserRequestGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/userrequest/all\",\r\n deleteById: \"api/v1/admin/userrequest\",\r\n save: \"api/v1/admin/userrequest\",\r\n findById: \"api/v1/admin/userrequest\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"USER_REQUEST_IS_NOTIFIED\",\r\n fieldName: \"isNotified\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"USER_REQUEST_MAILS_TO_NOTIFY\",\r\n fieldName: \"mailsToNotify\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"USER_REQUEST_NOTIFICATION_MESSAGE\",\r\n fieldName: \"notificationMessage\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"USER_REQUEST_NOTIFICATION_TIME\",\r\n fieldName: \"notificationTime\",\r\n required: false,\r\n fieldType: \"datetime\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"USER_REQUEST_NOTIFICATION_TYPE\",\r\n fieldName: \"notificationType\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"USER_REQUEST_NOTIFY_USER\",\r\n fieldName: \"notifyUser\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"USER_REQUEST_REPORT_CODE\",\r\n fieldName: \"reportCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"USER_REQUEST_REPORT_PARAMETERS\",\r\n fieldName: \"reportParameters\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"USER_REQUEST_REQUEST_TYPE\",\r\n fieldName: \"requestType\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"USER_REQUEST_STATUS\",\r\n fieldName: \"status\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"USER_REQUEST_STATUS_MESSAGE\",\r\n fieldName: \"statusMessage\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"USER_REQUEST_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"USER_REQUEST_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"USER_REQUEST_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default UserRequestGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst WidgetGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/widget/all\",\r\n deleteById: \"api/v1/admin/widget\",\r\n save: \"api/v1/admin/widget\",\r\n findById: \"api/v1/admin/widget\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_DATA_QUERY_ID\",\r\n fieldName: \"dataQueryId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_HEIGHT\",\r\n fieldName: \"height\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_HORIZONTAL_AXIS_FIELD\",\r\n fieldName: \"horizontalAxisField\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_HORIZONTAL_AXIS_LABEL\",\r\n fieldName: \"horizontalAxisLabel\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_ICON\",\r\n fieldName: \"icon\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_SERIES_KEYS\",\r\n fieldName: \"seriesKeys\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_TITLE\",\r\n fieldName: \"title\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_VERTICAL_AXIS_FIELD\",\r\n fieldName: \"verticalAxisField\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_VERTICAL_AXIS_LABEL\",\r\n fieldName: \"verticalAxisLabel\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_WIDGET_DESCRIPTION\",\r\n fieldName: \"widgetDescription\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_WIDGET_NAME\",\r\n fieldName: \"widgetName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_WIDGET_TYPE\",\r\n fieldName: \"widgetType\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WIDGET_WIDTH\",\r\n fieldName: \"width\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"WIDGET_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"WIDGET_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"WIDGET_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default WidgetGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst WorkflowDocumentGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/workflowdocument/all\",\r\n deleteById: \"api/v1/admin/workflowdocument\",\r\n save: \"api/v1/admin/workflowdocument\",\r\n findById: \"api/v1/admin/workflowdocument\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_APP_NOTIFICATION_ICON\",\r\n fieldName: \"appNotificationIcon\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_APP_NOTIFICATION_STYLE\",\r\n fieldName: \"appNotificationStyle\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_APP_VIEW_ROUTE\",\r\n fieldName: \"appViewRoute\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_DOCUMENT_CODE\",\r\n fieldName: \"documentCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_DOCUMENT_CON_ID\",\r\n fieldName: \"documentConId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_DOCUMENT_DATABASE_NAME\",\r\n fieldName: \"documentDatabaseName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_DOCUMENT_DATABASE_TABLE\",\r\n fieldName: \"documentDatabaseTable\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_DOCUMENT_ID_FIELD\",\r\n fieldName: \"documentIdField\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_DOCUMENT_NAME\",\r\n fieldName: \"documentName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_DOCUMENT_NUMBER_FIELD\",\r\n fieldName: \"documentNumberField\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_DOCUMENT_REPORT_ID\",\r\n fieldName: \"documentReportId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_DOCUMENT_STATUS_FIELD\",\r\n fieldName: \"documentStatusField\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_APPROVAL_ALLOWED\",\r\n fieldName: \"mailApprovalAllowed\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ORG_CODE\",\r\n fieldName: \"orgCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_USE_SYSTEM_CON\",\r\n fieldName: \"useSystemCon\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"WORKFLOW_DOCUMENT_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{ isEnabled: true, authority: \"WORKFLOW_DOCUMENT_EDIT\" }}\r\n deleteAction={{ isEnabled: true, authority: \"WORKFLOW_DOCUMENT_DELETE\" }}\r\n />\r\n );\r\n};\r\n\r\nexport default WorkflowDocumentGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst WorkflowDocumentActionGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/workflowdocumentaction/all\",\r\n deleteById: \"api/v1/admin/workflowdocumentaction\",\r\n save: \"api/v1/admin/workflowdocumentaction\",\r\n findById: \"api/v1/admin/workflowdocumentaction\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_DOCUMENT_ACTION_CODE\",\r\n fieldName: \"documentActionCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_DOCUMENT_ACTION_NAME\",\r\n fieldName: \"documentActionName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_NEXT_DOCUMENT_STATUS_ID\",\r\n fieldName: \"nextDocumentStatusId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_POST_ACTION_ENDPOINT\",\r\n fieldName: \"postActionEndpoint\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_PRE_ACTION_ENDPOINT\",\r\n fieldName: \"preActionEndpoint\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_REQUIRE_COMMENT\",\r\n fieldName: \"requireComment\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_WORKFLOW_DOCUMENT_ID\",\r\n fieldName: \"workflowDocumentId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"WORKFLOW_DOCUMENT_ACTION_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"WORKFLOW_DOCUMENT_ACTION_EDIT\",\r\n }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"WORKFLOW_DOCUMENT_ACTION_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default WorkflowDocumentActionGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst WorkflowDocumentActionHistoryGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/workflowdocumentactionhistory/all\",\r\n deleteById: \"api/v1/admin/workflowdocumentactionhistory\",\r\n save: \"api/v1/admin/workflowdocumentactionhistory\",\r\n findById: \"api/v1/admin/workflowdocumentactionhistory\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_HISTORY_ACTION_BY\",\r\n fieldName: \"actionBy\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_HISTORY_ACTION_COMMENT\",\r\n fieldName: \"actionComment\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_HISTORY_ACTION_METHOD\",\r\n fieldName: \"actionMethod\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_HISTORY_ACTION_TIME\",\r\n fieldName: \"actionTime\",\r\n required: false,\r\n fieldType: \"datetime\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_HISTORY_DOCUMENT_ACTION_ID\",\r\n fieldName: \"documentActionId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_HISTORY_DOCUMENT_REF_ID\",\r\n fieldName: \"documentRefId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_HISTORY_WORKFLOW_DOCUMENT_ID\",\r\n fieldName: \"workflowDocumentId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"WORKFLOW_DOCUMENT_ACTION_HISTORY_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"WORKFLOW_DOCUMENT_ACTION_HISTORY_EDIT\",\r\n }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"WORKFLOW_DOCUMENT_ACTION_HISTORY_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default WorkflowDocumentActionHistoryGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst WorkflowDocumentActionMailGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/workflowdocumentactionmail/all\",\r\n deleteById: \"api/v1/admin/workflowdocumentactionmail\",\r\n save: \"api/v1/admin/workflowdocumentactionmail\",\r\n findById: \"api/v1/admin/workflowdocumentactionmail\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_MAIL_DOCUMENT_ACTION_ID\",\r\n fieldName: \"documentActionId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_MAIL_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_ACTION_MAIL_MAIL_TEMPLATE_ID\",\r\n fieldName: \"mailTemplateId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"WORKFLOW_DOCUMENT_ACTION_MAIL_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"WORKFLOW_DOCUMENT_ACTION_MAIL_EDIT\",\r\n }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"WORKFLOW_DOCUMENT_ACTION_MAIL_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default WorkflowDocumentActionMailGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst WorkflowDocumentMailLogGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/workflowdocumentmaillog/all\",\r\n deleteById: \"api/v1/admin/workflowdocumentmaillog\",\r\n save: \"api/v1/admin/workflowdocumentmaillog\",\r\n findById: \"api/v1/admin/workflowdocumentmaillog\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_GRAPH_API_MSG_ID\",\r\n fieldName: \"graphApiMsgId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_IS_PROCESSED\",\r\n fieldName: \"isProcessed\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_MAIL_ACTION_CODE\",\r\n fieldName: \"mailActionCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_MAIL_BODY_CONTENT\",\r\n fieldName: \"mailBodyContent\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_MAIL_FROM\",\r\n fieldName: \"mailFrom\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_MAIL_SUBJECT\",\r\n fieldName: \"mailSubject\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_PROCESS_MESSAGE\",\r\n fieldName: \"processMessage\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_PROCESS_TIME\",\r\n fieldName: \"processTime\",\r\n required: false,\r\n fieldType: \"datetime\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_REF_DOC_ID\",\r\n fieldName: \"refDocId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_MAIL_LOG_WORKFLOW_DOCUMENT_ID\",\r\n fieldName: \"workflowDocumentId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"WORKFLOW_DOCUMENT_MAIL_LOG_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"WORKFLOW_DOCUMENT_MAIL_LOG_EDIT\",\r\n }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"WORKFLOW_DOCUMENT_MAIL_LOG_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default WorkflowDocumentMailLogGrid;\r\n","import { useState } from \"react\";\r\nimport TemplateGrid from \"../templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid\";\r\nimport useApiActions from \"../../hooks/useApiActions\";\r\nimport { FormElementProps } from \"../templates/DataEntryTemplates/DataEntryTypes\";\r\n\r\nconst WorkflowDocumentStatusGrid: React.FC = () => {\r\n const [data, setData] = useState([]);\r\n const apiActions = useApiActions({\r\n findAll: \"api/v1/admin/workflowdocumentstatus/all\",\r\n deleteById: \"api/v1/admin/workflowdocumentstatus\",\r\n save: \"api/v1/admin/workflowdocumentstatus\",\r\n findById: \"api/v1/admin/workflowdocumentstatus\",\r\n setData: setData,\r\n });\r\n\r\n const formElements: Array<FormElementProps> = [\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_STATUS_DOCUMENT_STATUS_CODE\",\r\n fieldName: \"documentStatusCode\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_STATUS_DOCUMENT_STATUS_NAME\",\r\n fieldName: \"documentStatusName\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_STATUS_DOCUMENT_STATUS_ORDER\",\r\n fieldName: \"documentStatusOrder\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_STATUS_ENABLED\",\r\n fieldName: \"enabled\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_STATUS_IS_ZERO_STATE\",\r\n fieldName: \"isZeroState\",\r\n required: false,\r\n fieldType: \"checkbox\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_STATUS_NEXT_ACTION_TAKERS_QUERY_ID\",\r\n fieldName: \"nextActionTakersQueryId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_STATUS_NEXT_ACTIONS_QUERY_ID\",\r\n fieldName: \"nextActionsQueryId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n {\r\n type: \"field\",\r\n mode: \"props\",\r\n props: {\r\n fieldLabel: \"WORKFLOW_DOCUMENT_STATUS_WORKFLOW_DOCUMENT_ID\",\r\n fieldName: \"workflowDocumentId\",\r\n required: false,\r\n fieldType: \"text\",\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <TemplateGrid\r\n apiActions={apiActions}\r\n data={data}\r\n setData={setData}\r\n editMode={{ editMode: \"row\" }}\r\n formElements={formElements}\r\n keyColumnName={\"id\"}\r\n gridTitle=\"WORKFLOW_DOCUMENT_STATUS_PLURAL\"\r\n girdIcon=\"table-cells\"\r\n editAction={{\r\n isEnabled: true,\r\n authority: \"WORKFLOW_DOCUMENT_STATUS_EDIT\",\r\n }}\r\n deleteAction={{\r\n isEnabled: true,\r\n authority: \"WORKFLOW_DOCUMENT_STATUS_DELETE\",\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default WorkflowDocumentStatusGrid;\r\n","import { Box } from \"@mui/material\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { CacheProvider } from \"@emotion/react\";\r\nimport { Route, Routes } from \"react-router-dom\";\r\nimport { RootState } from \"../redux/store\";\r\nimport { cacheLtr, cacheRtl } from \"../components/common/LayoutHandlers\";\r\nimport { SYSTEM_ROUTES } from \"../routes\";\r\nimport { SystemRoute } from \"../routes/types\";\r\n\r\nconst MainContent: React.FC = () => {\r\n const AppLayoutState = useSelector((state: RootState) => state.AppLayout);\r\n const AppInfo = useSelector((state: RootState) => state.AppInfo.value);\r\n const businessRoutes = useSelector(\r\n (state: RootState) => state.AppInfo.value.businessRoutes\r\n );\r\n return (\r\n <CacheProvider\r\n value={AppLayoutState.appDirection === \"ltr\" ? cacheLtr : cacheRtl}\r\n >\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n // alignItems: \"center\",\r\n justifyContent: \"flex-start\",\r\n flex: 1,\r\n overflow: \"hidden\",\r\n padding: 3,\r\n }}\r\n >\r\n <Routes>\r\n {AppInfo.enableAdministrationModule\r\n ? SYSTEM_ROUTES.map((route: SystemRoute, index) => {\r\n return (\r\n <Route\r\n key={\"adm\" + index}\r\n path={route.path}\r\n Component={route.component}\r\n />\r\n );\r\n })\r\n : null}\r\n {businessRoutes.map((route: SystemRoute, index) => {\r\n return (\r\n <Route\r\n key={\"bs\" + index}\r\n path={route.path}\r\n Component={route.component}\r\n />\r\n );\r\n })}\r\n </Routes>\r\n </Box>\r\n </CacheProvider>\r\n );\r\n};\r\n\r\nexport default MainContent;\r\n","import { styled } from \"@mui/material/styles\";\r\nimport { grey } from \"@mui/material/colors\";\r\nimport SwipeableDrawer from \"@mui/material/SwipeableDrawer\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Box, Typography } from \"@mui/material\";\r\nimport { RootState } from \"../redux/store\";\r\nimport { AppLayoutActions } from \"../redux/features/common/AppLayoutSlice\";\r\nimport NavigationTree from \"./NavigationTree\";\r\n\r\nconst drawerBleeding = 56;\r\n\r\ninterface Props {\r\n /**\r\n * Injected by the documentation to work in an iframe.\r\n * You won't need it on your project.\r\n */\r\n window?: () => Window;\r\n}\r\n\r\nconst Puller = styled(\"div\")(({ theme }) => ({\r\n width: 30,\r\n height: 6,\r\n margin: 10,\r\n backgroundColor: grey[300],\r\n borderRadius: 3,\r\n // position: \"absolute\",\r\n top: 8,\r\n // left: \"calc(50% - 15px)\",\r\n ...theme.applyStyles(\"dark\", {\r\n backgroundColor: grey[900],\r\n }),\r\n}));\r\n\r\nexport default function MobileDrawer(props: Props) {\r\n const { window } = props;\r\n const AppLayout = useSelector((state: RootState) => state.AppLayout);\r\n const AppInfo = useSelector((state: RootState) => state.AppInfo.value);\r\n const dispatch = useDispatch();\r\n const toggleDrawer = (newState: boolean) => {\r\n dispatch(AppLayoutActions.setSideBarState(newState));\r\n };\r\n // This is used only for the example\r\n const container =\r\n window !== undefined ? () => window().document.body : undefined;\r\n\r\n return (\r\n <SwipeableDrawer\r\n container={container}\r\n anchor=\"bottom\"\r\n open={AppLayout.sideBarOpened}\r\n onClose={() => {\r\n toggleDrawer(false);\r\n }}\r\n onOpen={() => {\r\n toggleDrawer(true);\r\n }}\r\n swipeAreaWidth={drawerBleeding}\r\n disableSwipeToOpen={false}\r\n ModalProps={{\r\n keepMounted: true,\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n height: \"100%\",\r\n overflow: \"hidden\",\r\n }}\r\n >\r\n <Puller />\r\n <Box\r\n sx={{\r\n flexGrow: 1,\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n width: \"99%\",\r\n overflowY: \"auto\",\r\n }}\r\n >\r\n <NavigationTree />\r\n </Box>\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-around\",\r\n marginTop: 1,\r\n width: \"100%\",\r\n }}\r\n >\r\n <Typography sx={{ fontSize: 12 }} color=\"textDisabled\">\r\n {AppInfo.appName}\r\n </Typography>\r\n <Typography sx={{ fontSize: 12 }} color=\"textDisabled\">\r\n V.{AppInfo.appVersion}\r\n </Typography>\r\n </Box>\r\n </Box>\r\n </SwipeableDrawer>\r\n );\r\n}\r\n","import { useSelector } from \"react-redux\";\r\nimport { RootState } from \"../../redux/store\";\r\nimport { Backdrop, CircularProgress } from \"@mui/material\";\r\n\r\nconst LoadingMask: React.FC = () => {\r\n const loadingMask = useSelector(\r\n (state: RootState) => state.loadingMask.value\r\n );\r\n return (\r\n <Backdrop\r\n sx={{ color: \"#fff\", zIndex: (theme) => theme.zIndex.drawer + 1 }}\r\n open={loadingMask.isOpened}\r\n >\r\n <CircularProgress color=\"inherit\" />\r\n </Backdrop>\r\n );\r\n};\r\n\r\nexport default LoadingMask;\r\n","import {\r\n Box,\r\n Button,\r\n CircularProgress,\r\n createTheme,\r\n Paper,\r\n TextField,\r\n Typography,\r\n} from \"@mui/material\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { ThemeProvider } from \"@emotion/react\";\r\nimport { useEffect, useState } from \"react\";\r\nimport axios from \"axios\";\r\nimport { toast } from \"react-toastify\";\r\nimport { RootState } from \"../../redux/store\";\r\nimport { UserSessionActions } from \"../../redux/features/common/UserSessionSlice\";\r\nimport { DARK_THEME_INITIAL_MAIN_COLOR, DARK_THEME_INITIAL_SECANDARY_COLOR } from \"../../util\";\r\n\r\nconst Login: React.FC = () => {\r\n const appInfo = useSelector((state: RootState) => state.AppInfo.value);\r\n const [username, setUsername] = useState(\"\");\r\n const [password, setPassword] = useState(\"\");\r\n const [isLoginInProcess, setIsLoginInProcess] = useState(false);\r\n const UserSessionState = useSelector(\r\n (state: RootState) => state.UserSession.value\r\n );\r\n const dispatch = useDispatch();\r\n const handleLogin = async () => {\r\n if (username == null || username == \"\") {\r\n toast.error(\"username is required to proceed\");\r\n return;\r\n }\r\n if (password == null || password == \"\") {\r\n toast.error(\"password is required to proceed\");\r\n return;\r\n }\r\n setIsLoginInProcess(true);\r\n let response: any = null;\r\n try {\r\n response = await axios.post(\r\n `${appInfo.apiBaseUrl}/api/auth/login`,\r\n {\r\n username,\r\n password,\r\n },\r\n {\r\n withCredentials: true,\r\n }\r\n );\r\n if (response.data != null && response.data !== \"\") {\r\n setIsLoginInProcess(false);\r\n const UserSession = {\r\n isAuthenticated: true,\r\n authorities: response.data.authorities,\r\n userProfile: response.data,\r\n };\r\n dispatch(UserSessionActions.setAuthenticated(UserSession));\r\n }\r\n } catch (e: any) {\r\n setIsLoginInProcess(false);\r\n toast.error(\r\n e?.response?.data ||\r\n \"failed to authenticate, contact your administrator\"\r\n );\r\n }\r\n };\r\n const userSession = useSelector(\r\n (state: RootState) => state.UserSession.value\r\n );\r\n const loginTheme = createTheme({\r\n components: {\r\n MuiCssBaseline: {\r\n styleOverrides: `\r\n /* Custom Scrollbar */\r\n * {\r\n scrollbar-width: thin;\r\n scrollbar-color: ${\r\n appInfo.appTheme?.dark?.primaryColor ||\r\n DARK_THEME_INITIAL_MAIN_COLOR\r\n } #121212;\r\n }\r\n \r\n /* Webkit Browsers */\r\n *::-webkit-scrollbar {\r\n width: 12px;\r\n height: 10px;\r\n } \r\n `,\r\n },\r\n },\r\n palette: {\r\n mode: \"dark\",\r\n primary: {\r\n main:\r\n appInfo.appTheme?.dark?.primaryColor || DARK_THEME_INITIAL_MAIN_COLOR,\r\n },\r\n secondary: {\r\n main:\r\n appInfo.appTheme?.dark?.secondaryColor ||\r\n DARK_THEME_INITIAL_SECANDARY_COLOR,\r\n },\r\n },\r\n });\r\n const checkUserSession = async () => {\r\n if (appInfo?.apiBaseUrl) {\r\n if (userSession.isAuthenticated == null) {\r\n try {\r\n let response = await axios.get(\r\n `${appInfo.apiBaseUrl}/api/auth/userInfo`,\r\n {\r\n withCredentials: true,\r\n }\r\n );\r\n if (response != null && response.data != null) {\r\n const UserSession = {\r\n isAuthenticated: true,\r\n authorities: response.data.authorities,\r\n userProfile: response.data,\r\n };\r\n dispatch(UserSessionActions.setAuthenticated(UserSession));\r\n } else {\r\n dispatch(UserSessionActions.setUnAuthenticated());\r\n }\r\n } catch (error) {\r\n dispatch(UserSessionActions.setUnAuthenticated());\r\n }\r\n }\r\n }\r\n };\r\n useEffect(() => {\r\n checkUserSession();\r\n }, [appInfo]);\r\n return (\r\n <ThemeProvider theme={loginTheme}>\r\n <Paper\r\n sx={{\r\n display: \"flex\",\r\n height: \"100vh\",\r\n width: \"100%\",\r\n borderRadius: 0,\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n {UserSessionState.isAuthenticated == false ? (\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n <img src={appInfo?.appLogo} width={150} height={150} />\r\n <Typography sx={{ m: 1 }} variant=\"h4\" color=\"textSecondary\">\r\n {appInfo?.appName}\r\n </Typography>\r\n <Typography\r\n sx={{\r\n paddingRight: 1,\r\n width: \"100%\",\r\n textAlign: \"right\",\r\n fontSize: 10,\r\n }}\r\n variant=\"caption\"\r\n color=\"textSecondary\"\r\n >\r\n V.{appInfo.appVersion}\r\n </Typography>\r\n <TextField\r\n label=\"username\"\r\n sx={{ width: 300, m: 1 }}\r\n value={username}\r\n onChange={(event) => {\r\n setUsername(event.target.value);\r\n }}\r\n onKeyDown={(event) => {\r\n if (event.key === \"Enter\") {\r\n handleLogin();\r\n }\r\n }}\r\n />\r\n <TextField\r\n label=\"password\"\r\n sx={{ width: 300, m: 1 }}\r\n value={password}\r\n type=\"password\"\r\n onChange={(event) => {\r\n setPassword(event.target.value);\r\n }}\r\n onKeyDown={(event) => {\r\n if (event.key === \"Enter\") {\r\n handleLogin();\r\n }\r\n }}\r\n />\r\n <Button\r\n loading={isLoginInProcess}\r\n onClick={handleLogin}\r\n variant=\"contained\"\r\n color=\"primary\"\r\n sx={{ m: 1 }}\r\n >\r\n login\r\n </Button>\r\n </Box>\r\n ) : (\r\n <>\r\n <CircularProgress sx={{ marginRight: 1 }} />\r\n <div>You will be redirected shortly ... please wait</div>\r\n </>\r\n )}\r\n </Paper>\r\n </ThemeProvider>\r\n );\r\n};\r\n\r\nexport default Login;\r\n","import { styled, useTheme } from \"@mui/material/styles\";\r\nimport CssBaseline from \"@mui/material/CssBaseline\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport TopBar from \"./TopBar\";\r\nimport { DrawerHeader } from \"./DrawerHeader\";\r\nimport SideBar from \"./SideBar\";\r\nimport MainContent from \"./MainContent\";\r\nimport { BrowserRouter } from \"react-router-dom\";\r\nimport MobileDrawer from \"./MobileDrawer\";\r\nimport { ToastContainer } from \"react-toastify\";\r\nimport { useEffect, useState } from \"react\";\r\nimport useLoadingMask from \"../hooks/useLoadingMask\";\r\nimport { useIsMobile } from \"../hooks/UseMobile\";\r\nimport useSession from \"../hooks/UseSession\";\r\nimport useAxios from \"../hooks/useAxios\";\r\nimport { DRAWER_WIDTH } from \"../redux/features/common/AppLayoutSlice\";\r\nimport { UserSessionProps } from \"../redux/features/common/UserSessionSlice\";\r\nimport LoadingMask from \"../components/common/LoadingMask\";\r\nimport Login from \"../components/common/Login\";\r\nimport { setStoreData } from \"../redux/features/common/CommonStoreSlice\";\r\n\r\nconst Main = styled(\"main\", {\r\n shouldForwardProp: (prop) => prop !== \"open\",\r\n})<{\r\n open?: boolean;\r\n}>(({ theme: any, open }) => {\r\n const AppLayout = useSelector((state: any) => state.AppLayout);\r\n const dispatch = useDispatch();\r\n const { show, hide } = useLoadingMask();\r\n const commonStores = useSelector((state: any) => state.commonStores);\r\n const [isAutoLoadLoaded, setAutoLoadLoaded] = useState<boolean>(false);\r\n const theme = useTheme();\r\n const isMobile = useIsMobile();\r\n const { isUserAuthorized } = useSession();\r\n\r\n // loadCommonStores\r\n const { handleGetRequest } = useAxios();\r\n const loadCommonStores = async () => {\r\n debugger;\r\n if (!isAutoLoadLoaded) { \r\n setAutoLoadLoaded(true);\r\n show(\"Loading ... please wait\");\r\n const stores = commonStores.stores;\r\n const storeKeys = commonStores.storeKeys;\r\n for (let storeKey of storeKeys) {\r\n if (\r\n (stores[storeKey]?.authority === undefined ||\r\n stores[storeKey]?.authority === null ||\r\n isUserAuthorized(stores[storeKey]?.authority)) &&\r\n stores[storeKey]?.url != \"\" &&\r\n stores[storeKey].autoLoad === true\r\n ) {\r\n await handleGetRequest({\r\n endPointURI: stores[storeKey].url,\r\n showMask: false,\r\n successCallBkFn: (response) => {\r\n dispatch(setStoreData({ storeKey, data: response.data }));\r\n },\r\n failureCallBkFn: () => {\r\n dispatch(setStoreData({ storeKey, data: [] }));\r\n },\r\n });\r\n }\r\n }\r\n hide();\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (commonStores.storeKeys) {\r\n loadCommonStores();\r\n }\r\n }, [commonStores.storeKeys]);\r\n\r\n return {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n overflow: \"hidden\",\r\n flexGrow: 1,\r\n width: !isMobile && open ? `calc(100% - ${DRAWER_WIDTH}px)` : \"100%\",\r\n direction: AppLayout.appDirection,\r\n justifyContent: \"flex-start\",\r\n transition:\r\n open === true\r\n ? theme.transitions.create([\"margin\", \"width\"], {\r\n easing: theme.transitions.easing.easeOut,\r\n duration: theme.transitions.duration.enteringScreen,\r\n })\r\n : theme.transitions.create([\"margin\", \"width\"], {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.leavingScreen,\r\n }),\r\n marginLeft:\r\n !isMobile && AppLayout.appDirection === \"ltr\" && open === true\r\n ? DRAWER_WIDTH + \"px\"\r\n : 0,\r\n marginRight:\r\n !isMobile && AppLayout.appDirection === \"rtl\" && open === true\r\n ? DRAWER_WIDTH + \"px\"\r\n : 0,\r\n };\r\n});\r\n\r\nexport default function Layout() {\r\n const AppLayoutState = useSelector((state: any) => state.AppLayout);\r\n const isMobile = useIsMobile();\r\n const UserSession: UserSessionProps = useSelector(\r\n (state: any) => state.UserSession\r\n );\r\n return (\r\n <BrowserRouter>\r\n <ToastContainer draggable={true} position=\"bottom-center\" />\r\n <LoadingMask />\r\n {UserSession.value.isAuthenticated === true ? (\r\n <Main open={AppLayoutState.sideBarOpened}>\r\n <CssBaseline />\r\n <TopBar />\r\n {!isMobile ? <SideBar /> : null}\r\n {isMobile ? <MobileDrawer /> : null}\r\n <DrawerHeader />\r\n <MainContent />\r\n </Main>\r\n ) : (\r\n <Login />\r\n )}\r\n </BrowserRouter>\r\n );\r\n}\r\n","import { createSlice, Reducer } from \"@reduxjs/toolkit\";\r\nimport { SystemRoute } from \"../../../routes/types\";\r\nimport { ExtendedTreeItemProps } from \"../../../navigationItems\";\r\nimport { StoreMetaData } from \"./CommonStoreSlice\";\r\n\r\nexport type AppInfo = {\r\n documentTitle: string | null;\r\n apiBaseUrl: string | null;\r\n appName: string | null;\r\n appVersion: string | null;\r\n appLogo: any | null;\r\n businessRoutes: Array<SystemRoute>;\r\n businessNavigationItems: Array<ExtendedTreeItemProps>;\r\n businessReduxReducers: { [key: string]: Reducer<any> };\r\n businessCommonStoresMetaData: { [key: string]: StoreMetaData };\r\n muiPremiumKey: string;\r\n enableAdministrationModule: boolean;\r\n appTheme?: {\r\n light: { primaryColor: string; secondaryColor: string };\r\n dark: { primaryColor: string; secondaryColor: string };\r\n };\r\n};\r\n\r\nexport type AppInfoProp = {\r\n value: AppInfo;\r\n};\r\n\r\nconst initialState: AppInfoProp = {\r\n value: {\r\n documentTitle: null,\r\n apiBaseUrl: null,\r\n appName: null,\r\n appVersion: null,\r\n appLogo: null,\r\n muiPremiumKey: null,\r\n enableAdministrationModule: false,\r\n businessRoutes: [],\r\n businessNavigationItems: [],\r\n businessReduxReducers: {},\r\n businessCommonStoresMetaData: {},\r\n appTheme: {\r\n light: { primaryColor: \"#37505C\", secondaryColor: \"#ff6d00\" },\r\n dark: { primaryColor: \"#ea690e\", secondaryColor: \"#74776B\" },\r\n },\r\n },\r\n};\r\n\r\nconst AppInfoSlice = createSlice({\r\n name: \"AppInfo\",\r\n initialState: initialState,\r\n reducers: {\r\n setAppInfo: (state, action) => {\r\n state.value = action.payload;\r\n },\r\n },\r\n});\r\n\r\nexport const AppInfoActions = AppInfoSlice.actions;\r\nexport default AppInfoSlice.reducer;\r\n","import { CommonStoresInterface } from \"../common/CommonStoreSlice\";\r\n\r\nexport const ADMINISTRATION_STORES: CommonStoresInterface = {\r\n SystemDataSourceType: {\r\n autoLoad: false,\r\n data: [{ value: \"Mysql\" }, { value: \"Oracle\" }, { value: \"DB2\" }],\r\n url: \"\",\r\n },\r\n SystemParameterTypes: {\r\n autoLoad: false,\r\n url: \"\",\r\n data: [\r\n { value: \"datetime\" },\r\n { value: \"date\" },\r\n { value: \"text\" },\r\n { value: \"number\" },\r\n { value: \"droplist\" },\r\n ],\r\n },\r\n SystemReportTypes: {\r\n autoLoad: false,\r\n url: \"\",\r\n data: [{ value: \"Excel\" }, { value: \"Jasper\" }, { value: \"Blueprint\" }],\r\n },\r\n SystemWidgetTypes: {\r\n autoLoad: false,\r\n url: \"\",\r\n data: [\r\n { name: \"LineChart\" },\r\n { name: \"ColumnChart\" },\r\n { name: \"PieChart\" },\r\n { name: \"Card\" },\r\n { name: \"CircularProgress\" },\r\n { name: \"LinearProgress\" },\r\n ],\r\n },\r\n SystemMailRecipientTypes: {\r\n autoLoad: false,\r\n url: \"\",\r\n data: [{ name: \"To\" }, { name: \"CC\" }],\r\n },\r\n SystemDataSources: {\r\n autoLoad: true,\r\n data: [],\r\n authority: \"DEVELOPMENT_ADMIN\",\r\n url: \"api/v1/admin/datasourceconnection/all\",\r\n },\r\n SystemDataQueries: {\r\n autoLoad: true,\r\n data: [],\r\n authority: \"DEVELOPMENT_ADMIN\",\r\n url: \"api/v1/admin/dataquery/all\",\r\n },\r\n SystemEntityParameters: {\r\n autoLoad: true,\r\n data: [],\r\n authority: \"DEVELOPMENT_ADMIN\",\r\n url: \"api/v1/admin/entityparameter/all\",\r\n },\r\n SystemAuthorities: {\r\n autoLoad: true,\r\n data: [],\r\n authority: \"DEVELOPMENT_ADMIN\",\r\n url: \"api/v1/admin/authority/all\",\r\n },\r\n SystemRoles: {\r\n autoLoad: true,\r\n data: [],\r\n authority: \"DEVELOPMENT_ADMIN\",\r\n url: \"api/v1/admin/role/all\",\r\n },\r\n};\r\n","import { useDispatch, useSelector } from \"react-redux\";\r\nimport { createTheme, ThemeOptions } from \"@mui/material\";\r\nimport { ThemeProvider } from \"@emotion/react\";\r\nimport React, { useEffect } from \"react\";\r\nimport Layout from \"../layout/Layout\";\r\nimport { AppInfo, AppInfoActions } from \"../redux/features/common/AppInfoSlice\";\r\nimport { LicenseInfo } from \"@mui/x-license\";\r\nimport {\r\n DARK_THEME_INITIAL_MAIN_COLOR,\r\n DARK_THEME_INITIAL_SECANDARY_COLOR,\r\n LIGHT_THEME_INITIAL_MAIN_COLOR,\r\n LIGHT_THEME_INITIAL_SECANDARY_COLOR,\r\n} from \"../util\";\r\nimport { setStoresMetaData } from \"../redux/features/common/CommonStoreSlice\";\r\nimport { ADMINISTRATION_STORES } from \"../redux/features/administration/AdministrationStoresMetaData\";\r\n\r\nconst App: React.FC<AppInfo> = (props: AppInfo) => {\r\n const dispatch = useDispatch();\r\n LicenseInfo.setLicenseKey(props.muiPremiumKey);\r\n const LightThemeOptions: ThemeOptions = {\r\n components: {\r\n MuiCssBaseline: {\r\n styleOverrides: `\r\n /* Custom Scrollbar */\r\n * {\r\n scrollbar-width: thin;\r\n scrollbar-color: ${\r\n props.appTheme?.light?.primaryColor ||\r\n LIGHT_THEME_INITIAL_MAIN_COLOR\r\n } #ffffff;\r\n }\r\n \r\n /* Webkit Browsers */\r\n *::-webkit-scrollbar {\r\n width: 12px;\r\n height: 10px;\r\n } \r\n `,\r\n },\r\n },\r\n palette: {\r\n mode: \"light\",\r\n primary: {\r\n main:\r\n props.appTheme?.light?.primaryColor || LIGHT_THEME_INITIAL_MAIN_COLOR,\r\n },\r\n secondary: {\r\n main:\r\n props.appTheme?.light?.secondaryColor ||\r\n LIGHT_THEME_INITIAL_SECANDARY_COLOR,\r\n },\r\n background: {\r\n default: \"#f5f5f5\",\r\n paper: \"#f5f5f5\",\r\n },\r\n },\r\n };\r\n const DarkThemeOptions: ThemeOptions = {\r\n components: {\r\n MuiCssBaseline: {\r\n styleOverrides: `\r\n /* Custom Scrollbar */\r\n * {\r\n scrollbar-width: thin;\r\n scrollbar-color: ${\r\n props.appTheme?.dark?.primaryColor || DARK_THEME_INITIAL_MAIN_COLOR\r\n } #121212;\r\n }\r\n \r\n /* Webkit Browsers */\r\n *::-webkit-scrollbar {\r\n width: 12px;\r\n height: 10px;\r\n } \r\n `,\r\n },\r\n },\r\n palette: {\r\n mode: \"dark\",\r\n primary: {\r\n main:\r\n props.appTheme?.dark?.primaryColor || DARK_THEME_INITIAL_MAIN_COLOR,\r\n },\r\n secondary: {\r\n main:\r\n props.appTheme?.dark?.secondaryColor ||\r\n DARK_THEME_INITIAL_SECANDARY_COLOR,\r\n },\r\n },\r\n };\r\n\r\n let commonStores = {};\r\n if (props.enableAdministrationModule) {\r\n commonStores = { ...ADMINISTRATION_STORES };\r\n }\r\n if (props.businessCommonStoresMetaData) {\r\n commonStores = {\r\n ...commonStores,\r\n ...props.businessCommonStoresMetaData,\r\n };\r\n } \r\n dispatch(setStoresMetaData(commonStores));\r\n const AppLayoutState = useSelector((state: any) => state.AppLayout);\r\n let themeOptions = { ...LightThemeOptions };\r\n if (AppLayoutState.themeMode === \"dark\") {\r\n themeOptions = { ...DarkThemeOptions };\r\n }\r\n const theme = createTheme({\r\n direction: AppLayoutState.appDirection,\r\n ...themeOptions,\r\n });\r\n useEffect(() => {\r\n document.title = props.documentTitle;\r\n dispatch(AppInfoActions.setAppInfo(props));\r\n }, []);\r\n return (\r\n <ThemeProvider theme={theme}>\r\n <Layout />\r\n </ThemeProvider>\r\n );\r\n};\r\n\r\nexport default App;\r\n","import { Provider } from \"react-redux\";\r\nimport { library } from \"@fortawesome/fontawesome-svg-core\";\r\nimport { fab } from \"@fortawesome/free-brands-svg-icons\";\r\nimport { far } from \"@fortawesome/free-regular-svg-icons\";\r\nimport { fas } from \"@fortawesome/free-solid-svg-icons\";\r\nimport \"../styles/index.css\";\r\nimport \"react-toastify/dist/ReactToastify.css\";\r\nimport App from \"./App\";\r\nimport { AppInfo } from \"../redux/features/common/AppInfoSlice\";\r\nimport AppLayoutReducer from \"../redux/features/common/AppLayoutSlice\";\r\nimport UserSessionReducer from \"../redux/features/common/UserSessionSlice\";\r\nimport LoadingMaskReducer from \"../redux/features/common/LoadingMaskSlice\";\r\nimport CommonStoreReducer from \"../redux/features/common/CommonStoreSlice\";\r\nimport AppInfoReducer from \"../redux/features/common/AppInfoSlice\";\r\nimport { configureStore } from \"@reduxjs/toolkit\";\r\n\r\nlibrary.add(fab);\r\nlibrary.add(far);\r\nlibrary.add(fas);\r\n\r\nexport const BaseApp: React.FC<AppInfo> = (props) => {\r\n const systemReducers = {\r\n AppLayout: AppLayoutReducer,\r\n UserSession: UserSessionReducer,\r\n loadingMask: LoadingMaskReducer,\r\n commonStores: CommonStoreReducer,\r\n AppInfo: AppInfoReducer,\r\n ...props.businessReduxReducers,\r\n };\r\n const store = configureStore({\r\n reducer: systemReducers,\r\n });\r\n // let csInitialState: CommonStoresInterface = {};\r\n // if (props.enableAdministrationModule) {\r\n // for (let adminStoreKey of Object.keys(ADMINISTRATION_STORES)) {\r\n // csInitialState[adminStoreKey] = ADMINISTRATION_STORES[adminStoreKey];\r\n // addCommonStore(adminStoreKey, ADMINISTRATION_STORES[adminStoreKey]);\r\n // }\r\n // }\r\n // if (props?.businessCommonStoresMetaData) {\r\n // for (let businessStoreKey of Object.keys(\r\n // props.businessCommonStoresMetaData\r\n // )) {\r\n // csInitialState[businessStoreKey] =\r\n // props.businessCommonStoresMetaData[businessStoreKey];\r\n // addCommonStore(\r\n // businessStoreKey,\r\n // props.businessCommonStoresMetaData[businessStoreKey]\r\n // );\r\n // }\r\n // }\r\n\r\n return (\r\n <Provider store={store}>\r\n <App {...props} />\r\n </Provider>\r\n );\r\n};\r\n"],"names":["css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","useIsMobile","breakpoint","isMobile","setIsMobile","useState","window","innerWidth","useEffect","handleResize","addEventListener","removeEventListener","DRAWER_WIDTH","initialState","sideBarOpened","themeMode","localStorage","getItem","appDirection","AppLayoutSlice","createSlice","name","reducers","toggleSideBarState","state","setSideBarState","action","payload","setThemeMode","setAppDirection","AppLayoutActions","actions","AppLayoutReducer","reducer","loadingMaskSlice","value","isOpened","message","showLoadingMask","hideLoadingMask","LoadingMaskReducer","useLoadingMask","dispatch","useDispatch","show","hide","useAxios","mask","apiBaseUrl","useSelector","AppInfo","axiosInstance","axios","create","baseURL","timeout","withCredentials","defaults","interceptors","response","use","error","status","toast","autoClose","data","handleGetRequest","async","props","endPointURI","parameters","undefined","showMask","loadingMessage","get","params","successCallBkFn","failureCallBkFn","handlePostRequest","post","handleDeleteRequest","delete","HandleDownloadHTTPPostPDF","responseType","UserSessionSlice","isAuthenticated","authorities","userProfile","setAuthenticated","setUnAuthenticated","UserSessionActions","UserSessionReducer","resources","en","translation","common","ar","i18n","initReactI18next","init","lng","fallbackLng","AppBar","styled","MuiAppBar","shouldForwardProp","prop","theme","AppLayout","transition","transitions","easing","sharp","duration","leavingScreen","variants","open","width","marginLeft","marginRight","easeOut","enteringScreen","TopBar","UserSession","_jsx","position","children","_jsxs","Toolbar","IconButton","color","onClick","edge","sx","mr","ml","display","FontAwesomeIcon","icon","Avatar","src","appLogo","Typography","variant","noWrap","component","flex","appName","setItem","jsx","prefix","iconName","nextLanguage","language","changeLanguage","username","console","log","rotation","DrawerHeader","alignItems","mixins","toolbar","justifyContent","r","e","t","f","n","Array","isArray","o","length","clsx","arguments","useSession","isUserAuthorized","authorityCode","grantedAuthority","authority","findNavigationItemById","id","nodes","node","found","NavigationItems","label","actionPayload","path","DotIcon","Box","height","borderRadius","bgcolor","verticalAlign","zIndex","mx","StyledTreeItemRoot","TreeItem2Root","palette","grey","treeItemClasses","groupTransition","spacing","applyStyles","CustomTreeItemContent","TreeItem2Content","flexDirection","marginBottom","marginTop","padding","paddingRight","primary","dark","main","content","left","top","backgroundColor","alpha","contrastText","AnimatedCollapse","animated","Collapse","TransitionComponent","useSpring","to","opacity","in","transform","StyledTreeItemLabelText","fontWeight","CustomLabel","expandable","other","useTranslation","appLayoutState","jsxs","TreeItem2Label","fontSize","isExpandable","reactChildren","some","Boolean","CustomTreeItem","React","forwardRef","itemId","disabled","getRootProps","getContentProps","getIconContainerProps","getCheckboxProps","getLabelProps","getGroupTransitionProps","getDragAndDropOverlayProps","publicAPI","useTreeItem2","rootRef","item","TreeItem2Provider","className","expanded","selected","focused","TreeItem2IconContainer","TreeItem2Icon","TreeItem2Checkbox","TreeItem2DragAndDropOverlay","NavigationTree","navigate","useNavigate","filterData","filter","map","mergedNavigationItems","enableAdministrationModule","push","businessNavigationItems","authoriedNavigationItems","RichTreeView","items","onItemClick","event","navigationItem","flexGrow","maxWidth","direction","maxHeight","overflowY","overflowX","slots","SideBar","useTheme","Drawer","flexShrink","boxSizing","anchor","textAlign","appVersion","Divider","cacheRtl","createCache","key","stylisPlugins","prefixer","rtlPlugin","cacheLtr","useConfirmationWindow","setOpen","ConfirmationWindow","Dialog","DialogTitle","title","DialogContent","DialogContentText","body","DialogActions","Button","onConfirmationCallBk","autoFocus","TemplateGridMultiRecordAction","rowAction","session","confirmationMessage","actionFn","recordsToProcessActionOn","recordIdsToProcessActionOn","reloadData","isActionAllowed","_Fragment","preActionValidation","record","isConfirmationRequired","formActionProps","actionButtonVariant","size","actionButtonColor","Fragment","DATE_FORMAT","DATE_TIME_FORMAT","LIGHT_THEME_INITIAL_MAIN_COLOR","LIGHT_THEME_INITIAL_SECANDARY_COLOR","DARK_THEME_INITIAL_MAIN_COLOR","DARK_THEME_INITIAL_SECANDARY_COLOR","Datefield","LocalizationProvider","dateAdapter","AdapterMoment","DatePicker","moment","format","onChange","momentValue","v","isValid","onChangeCallBack","slotProps","textField","InputLabelProps","shrink","required","errorMessage","helperText","DatetimeField","DateTimePicker","ComboBox","AppLayoutState","Autocomplete","option","options","valueField","getValue","newValue","clearOnBlur","handleHomeEndKeys","getOptionLabel","displayField","renderOption","props1","popper","Popper","renderInput","TextField","CheckBox","FormControlLabel","control","Checkbox","checked","checkedValue","target","unCheckedValue","generateDateTimeColumn","colDef","renderEditCell","api","setEditCellValue","field","valueParser","row","column","valueFormatter","generateComboColumn","valueGetter","renderCell","find","selectedRecord","generateCheckBoxColumn","getElementFields","element","fields","mode","elements","childElement","getAllFields","constructValidationSchema","validationSchemaObj","fieldName","fieldType","z","number","required_error","invalid_type_error","optional","nullable","string","min","StyledQuickFilter","QuickFilter","StyledToolbarButton","ToolbarButton","ownerState","gridArea","pointerEvents","StyledTextField","TemplateGridTopBar","isCreationAuthorized","templateProps","editAction","gridSelection","rowSelectionModel","keyColumnName","sRecords","sRecordIds","ids","selectedId","x","selectedRecords","selectedRecordIds","getGridSelection","Set","editMode","handleCreateNewRecord","rowActions","gridActionProps","multiRecord","apiActions","gridLoadParametersValues","tBar","Tooltip","ColumnsPanelTrigger","render","GridViewColumnIcon","FilterPanelTrigger","Badge","badgeContent","filterCount","GridFilterListIcon","gridStateKey","clearGridState","orientation","flexItem","ExportExcel","MenuItem","QuickFilterTrigger","triggerProps","enterDelay","QuickFilterControl","controlProps","inputRef","placeholder","input","startAdornment","InputAdornment","endAdornment","QuickFilterClear","isNumber","isNaN","isNumeric","trim","Number","capitalizeFirstLetter","str","charAt","toUpperCase","slice","TemplateGridRecordAction","iconStyle","getActionIconStyleForRecord","isActionVisibleForRecord","isActionDisabledForRecord","GridActionsCellItem","showInMenu","formatMuiErrorMessage","code","args","url","URL","forEach","arg","searchParams","append","process","env","NODE_ENV","reactIsModule","exports","b","Symbol","for","c","d","g","h","k","l","m","p","q","w","y","a","u","$$typeof","A","reactIs_production_min","AsyncMode","ConcurrentMode","ContextConsumer","Element","ForwardRef","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","require$$0","hasSymbol","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_ASYNC_MODE_TYPE","REACT_CONCURRENT_MODE_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_BLOCK_TYPE","REACT_FUNDAMENTAL_TYPE","REACT_RESPONDER_TYPE","REACT_SCOPE_TYPE","object","$$typeofType","ContextProvider","Memo","hasWarnedAboutDeprecatedIsAsyncMode","reactIs_development","isPortal","getOwnPropertySymbols","Object","hasOwnProperty","prototype","propIsEnumerable","propertyIsEnumerable","objectAssign","assign","test1","String","getOwnPropertyNames","test2","i","fromCharCode","join","test3","split","letter","keys","err","shouldUseNative","source","from","symbols","val","TypeError","toObject","s","call","ReactPropTypesSecret_1","has","Function","bind","printWarning","ReactPropTypesSecret","loggedTypeFailures","require$$1","text","Error","checkPropTypes","typeSpecs","values","location","componentName","getStack","typeSpecName","ex","stack","resetWarningCache","checkPropTypes_1","ReactIs","require$$2","require$$3","require$$4","emptyFunctionThatReturnsNull","factoryWithTypeCheckers","isValidElement","throwOnDirectAccess","ITERATOR_SYMBOL","iterator","ANONYMOUS","ReactPropTypes","array","createPrimitiveTypeChecker","bigint","bool","func","symbol","any","createChainableTypeChecker","arrayOf","typeChecker","propName","propFullName","PropTypeError","propValue","getPropType","elementType","instanceOf","expectedClass","expectedClassName","constructor","isNode","objectOf","propType","oneOf","expectedValues","is","valuesString","JSON","stringify","getPreciseType","oneOfType","arrayOfTypeCheckers","checker","getPostfixForTypeWarning","expectedTypes","checkerResult","expectedType","shape","shapeTypes","invalidValidatorError","exact","allKeys","this","validate","manualPropTypeCallCache","manualPropTypeWarningCount","checkType","isRequired","secret","cacheKey","chainedCheckType","every","iteratorFn","maybeIterable","getIteratorFn","step","entries","next","done","entry","RegExp","isSymbol","Date","PropTypes","emptyFunction","emptyFunctionWithReset","factoryWithThrowingShims","shim","getShim","propTypesModule","REACT_CONSUMER_TYPE","REACT_VIEW_TRANSITION_TYPE","REACT_CLIENT_REFERENCE","reactIs_production","SuspenseList","isSuspenseList","getModuleId","isPlainObject","getPrototypeOf","toStringTag","deepClone","output","deepmerge","clone","createBreakpoints","breakpoints","xs","sm","md","lg","xl","unit","sortedValues","breakpointsAsArray","sort","breakpoint1","breakpoint2","reduce","acc","obj","sortBreakpointsValues","up","down","between","start","end","endIndex","indexOf","only","not","keyIndex","replace","responsivePropType","merge","defaultBreakpoints","defaultContainerQueries","containerQueries","containerName","result","handleBreakpoints","styleFromPropValue","themeBreakpoints","index","breakpointKeys","startsWith","match","containerKey","shorthand","matches","_formatErrorMessage","containerQuery","getContainerQuery","includes","cssKey","capitalize","getPath","checkVars","vars","getStyleValue","themeMapping","propValueFinal","userValue","cssProperty","themeKey","fn","propTypes","filterProps","properties","directions","aliases","marginX","marginY","paddingX","paddingY","getCssProperties","cache","memoize","property","dir","marginKeys","paddingKeys","spacingKeys","createUnaryUnit","defaultValue","themeSpacing","abs","Math","isInteger","transformed","createUnarySpacing","transformer","resolveCssProperty","cssProperties","getStyleFromPropValue","margin","compose","styles","handlers","concat","borderTransform","createBorderStyle","border","borderTop","borderRight","borderBottom","borderLeft","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","outline","outlineColor","gap","columnGap","rowGap","paletteTransform","sizingTransform","breakpointsValues","minWidth","minHeight","defaultSxConfig","pt","pr","pb","pl","px","py","paddingTop","paddingBottom","paddingLeft","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd","mt","mb","my","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd","displayPrint","overflow","textOverflow","visibility","whiteSpace","flexBasis","flexWrap","alignContent","order","alignSelf","justifyItems","justifySelf","gridColumn","gridRow","gridAutoFlow","gridAutoColumns","gridAutoRows","gridTemplateColumns","gridTemplateRows","gridTemplateAreas","right","bottom","boxShadow","font","fontFamily","fontStyle","letterSpacing","textTransform","lineHeight","typography","styleFunctionSx","getThemeValue","config","unstable_sxConfig","traverse","sxInput","sxObject","emptyBreakpoints","breakpointsInput","breakpointsInOrder","createEmptyBreakpointObject","breakpointsKeys","styleKey","maybeFn","objects","union","objectsHaveSameKeys","sorted","regex","sortContainerQueries","breakpointOutput","removeUnusedBreakpoints","unstable_createStyleFunctionSx","colorSchemes","getColorSchemeSelector","selector","defaultTheme","contextTheme","useContext","ThemeContext","systemDefaultTheme","paletteInput","spacingInput","shapeInput","mui","argsInput","argument","createSpacing","muiTheme","components","themeInput","toContainerQuery","mediaQuery","attachCq","cssContainerQueries","unstable_sx","createTheme","extendSxProp","inSx","systemProps","otherProps","splitProps","finalSx","defaultGenerator","ClassNameGenerator","generate","configure","generator","reset","createClassNameGenerator","globalStateClasses","active","completed","focusVisible","readOnly","themeId","defaultClassName","generateClassName","BoxRoot","tag","stylesFactory","emStyled","inProps","useThemeWithoutDefault","as","createBox","globalStatePrefix","slot","globalStateClass","generateUtilityClass","generateUtilityClasses","root","TemplateTextField","inputLabel","FormElementField","fieldInfo","formManager","formActions","formValues","hidden","hiddenFields","Grid2","formProps","fieldSize","fullWidth","disabledFields","fieldLabel","setValue","onValueChangeCallBack","formState","errors","toString","dateFormat","optionDisplayField","optionValueField","FormAction","setConfirmationWindowState","FormElementGroup","container","TemplateForm","setHiddenFields","setDisabledFields","formSchema","useForm","resolver","zodResolver","watch","pathParameters","useParams","formRouteRecordIdParamName","setFieldValue","fieldValue","hideField","oldValues","showField","disableField","enableField","idToLoad","recordIdToEdit","retrievedRecord","loadRecordById","loadRecord","formElement","enabled","saveButtonSpecs","startIcon","handleSubmit","preSaveValidation","savedRecord","saveRecord","formSavedSuccessfullyCallBk","formCloseCallBk","cancelButtonSpecs","useWindow","windowState","setWindowState","Window","windowProps","Modal","drawer","onClose","onCloseCallBack","windowIcon","windowTitle","Paper","currentNewRecordIndex","loadGridState","saved","parse","saveGridState","statePart","current","PIN_FIXED_COLUMNS","TemplateGrid","formElements","savedState","useMemo","gridProps","initialVisibilityState","columnVisibilityModel","existingFields","themeDirection","setColumnVisibilityModel","columnOrder","setColumnOrder","columnWidths","setColumnWidths","gridRowGroupingModel","setGridRowGroupingModel","columnGroupingModel","newLeft","pinnedColumns","newRight","setPinnedColumns","recordToDelete","setRecordToDelete","recordToEdit","setRecordToEdit","rowModesModel","setRowModesModel","setRowSelectionModel","setData","validationSchema","generatedColumns","isDefaultEditable","columns","tableField","muiProps","editable","headerName","headerAlign","align","searchable","constructGridColumnsFromFields","isEditAllowed","isDeleteAllowed","deleteAction","setConfirmationWindowOpened","isNew","deleteRecordById","postActionCallBack","oldData","formModalHeight","formModalWidth","formModalMinHeight","formModalMinWidth","formModalIcon","formModalTitle","specs","modalHeight","modalWidth","modalMinHeight","modalMinWidth","modalIcon","modalTitle","FormWindow","setFormWindowState","actionColumn","isEnabled","getActions","disableDefaultAction","isInEditMode","GridRowModes","Edit","View","handleSaveRowClick","ignoreModifications","newData","handleCancelRowEditClick","isEditActionVisibleForRecord","isActionEditDisabledForRecord","formRoute","handleEditRecord","isDeleteActionVisibleForRecord","isDeleteActionDisabledForRecord","structuredColumns","autoLoad","adjustedColumns","baseCols","col","fieldToCol","Map","formComponent","editAuthorityKey","hideInfoBar","hideBackButton","girdIcon","gridTitle","gridLoadParameters","setGridLoadParametersValues","Accordion","defaultExpanded","AccordionSummary","expandIcon","GridExpandMoreIcon","AccordionDetails","DataGridPremium","newRecord","oldRows","oldModel","removeItem","getRowId","showToolbar","rows","checkboxSelection","onRowModesModelChange","newModel","rowGroupingColumnMode","processRowUpdate","ZodError","validateRecord","requestObject","reloadAfterSave","onRowSelectionModelChange","gridSelectionModel","onColumnVisibilityModelChange","model","onColumnOrderChange","targetIndex","prevOrder","currentOrder","fromIndex","splice","onColumnWidthChange","updatedWidths","rowGroupingModel","onRowGroupingModelChange","handleRowGroupChange","onPinnedColumnsChange","newPinedColumns","commonStoreSlice","stores","storeKeys","isAutoLoadLoaded","setStoresMetaData","setStoreData","storeKey","setAutoLoadLoaded","CommonStoreReducer","useApiActions","apiActionsProps","CommonStores","commonStores","commonStoreKey","findAll","recordId","findById","findByIdParamName","save","deleteById","deleteByIdParamName","intersection","TransferList","selectedOptions","setSelection","setChecked","setLeft","setRight","leftFilterValue","setLeftFilterValue","rightFilterValue","setRightFilterValue","leftChecked","rightChecked","handleToggle","currentIndex","newChecked","numberOfChecked","handleToggleAll","customList","unfilteredItems","side","toLocaleLowerCase","Card","CardHeader","avatar","indeterminate","inputProps","subheader","List","dense","role","ListItemButton","cursor","ListItemIcon","tabIndex","disableRipple","ListItemText","oldState","newState","TemplatePieChart","chartData","labelField","PieChart","series","TemplateBarChart","BarChart","dataset","xAxis","dataKey","scaleType","TemplateLineChart","LineChart","TemplateGauge","widgetTitle","Gauge","TemplateDataCard","LinearProgressWithLabel","LinearProgress","round","TemplateLineProgress","WidgetContainer","widgetType","Grid","RoleAuthoritiesForm","setSelectedOptions","currentRoleAuthorities","availableAuthorities","roleId","success","closeModalFn","SYSTEM_ROUTES","selectedRole","setSelectedRole","selectedRoleAuthorities","setSelectedRoleAuthorities","selectedRoleAvailableAuthorities","setSelectedRoleAvailableAuthorities","RoleAuthoritiesWindow","setRoleAuthorirtiesWindowOpen","selectedAuthorities","loadRoleAuthorities","MainContent","businessRoutes","CacheProvider","Routes","route","Route","Component","Puller","MobileDrawer","toggleDrawer","SwipeableDrawer","onOpen","swipeAreaWidth","disableSwipeToOpen","ModalProps","keepMounted","LoadingMask","loadingMask","Backdrop","CircularProgress","Login","appInfo","setUsername","password","setPassword","isLoginInProcess","setIsLoginInProcess","UserSessionState","handleLogin","userSession","loginTheme","MuiCssBaseline","styleOverrides","appTheme","primaryColor","secondary","secondaryColor","checkUserSession","ThemeProvider","onKeyDown","loading","Main","loadCommonStores","Layout","BrowserRouter","ToastContainer","draggable","CssBaseline","AppInfoSlice","documentTitle","muiPremiumKey","businessReduxReducers","businessCommonStoresMetaData","light","setAppInfo","AppInfoActions","AppInfoReducer","ADMINISTRATION_STORES","SystemDataSourceType","SystemParameterTypes","SystemReportTypes","SystemWidgetTypes","SystemMailRecipientTypes","SystemDataSources","SystemDataQueries","SystemEntityParameters","SystemAuthorities","SystemRoles","App","LicenseInfo","setLicenseKey","LightThemeOptions","background","default","paper","DarkThemeOptions","themeOptions","library","add","fab","far","fas","systemReducers","store","configureStore","Provider","dashboardTitle","dashboardWidgets","widgetProps","singleRecordWidgetProps","test"],"mappings":"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AASA,IAkEX,OACE58B,EAACyB,IAAAu5B,GACC,CAAApmB,WAAYA,EACZvY,KAAMA,EACNugC,QAASA,EACTroB,SAAU,CAAEA,SAAU,OACtB0mB,aArE0C,CAC5C,CACEnjC,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,qCACZxkB,UAAW,cACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,qCACZxkB,UAAW,eACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,+BACZxkB,UAAW,UACXxD,UAAU,EACVyD,UAAW,aAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,2CACZxkB,UAAW,oBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,8BACZxkB,UAAW,SACXxD,UAAU,EACVyD,UAAW,aAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,iCACZxkB,UAAW,YACXxD,UAAU,EACVyD,UAAW,cAYbuB,cAAe,KACfitB,UAAU,8BACVD,SAAS,cACTntB,WAAY,CAAEurB,WAAW,EAAM17B,UAAW,6BAC1Co6B,aAAc,CACZsB,WAAW,EACX17B,UAAW,kCTHfA,UAAW,6BAEb,CACES,KAAM,8BACN3C,UUvFuC,KACzC,MAAOhF,EAAMugC,GAAWnkC,EAAAA,SAAS,IAC3Bmc,EAAasvB,GAAc,CAC/BI,eAAgB,oBAChBM,WAAY,oCACZD,KAAM,oCACNF,SAAU,oCACV7H,QAASA,IAkEX,OACE58B,EAACyB,IAAAu5B,GACC,CAAApmB,WAAYA,EACZvY,KAAMA,EACNugC,QAASA,EACTroB,SAAU,CAAEA,SAAU,MAAOguB,iBAAiB,GAC9CtH,aArE0C,CAC5C,CACEnjC,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,wCACZxkB,UAAW,iBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM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/BK,QAAS,yCACTK,WAAY,qCACZD,KAAM,qCACNF,SAAU,qCACV7H,QAASA,IAgGX,OACE58B,EAACyB,IAAAu5B,IACCpmB,WAAYA,EACZvY,KAAMA,EACNugC,QAASA,EACTroB,SAAU,CAAEA,SAAU,OACtB0mB,aAnG0C,CAC5C,CACEnjC,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,yDACZxkB,UAAW,6BACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,2CACZxkB,UAAW,iBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,8CACZxkB,UAAW,oBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,4CACZxkB,UAAW,mBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,sCACZxkB,UAAW,aACXxD,UAAU,EACVyD,UAAW,aAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,0CACZxkB,UAAW,iBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,2CACZxkB,UAAW,iBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,+CACZxkB,UAAW,sBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,4CACZxkB,UAAW,mBACXxD,UAAU,EACVyD,UAAW,cAYbuB,cAAe,KACfitB,UAAU,iCACVD,SAAS,cACTntB,WAAY,CACVurB,WAAW,EACX17B,UAAW,gCAEbo6B,aAAc,CACZsB,WAAW,EACX17B,UAAW,qClBSfA,UAAW,gCAEb,CACES,KAAM,uBACN3C,UmBpIgC,KAClC,MAAOhF,EAAMugC,GAAWnkC,EAA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KAAMA,EACNugC,QAASA,EACTroB,SAAU,CAAEA,SAAU,OACtB0mB,aAvH0C,CAC5C,CACEnjC,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,2BACZxkB,UAAW,aACXxD,UAAU,EACVyD,UAAW,aAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,+BACZxkB,UAAW,gBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,oCACZxkB,UAAW,sBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,iCACZxkB,UAAW,mBACXxD,UAAU,EACVyD,UAAW,aAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,iCACZxkB,UAAW,mBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,2BACZxkB,UAAW,aACXxD,UAAU,EACVyD,UAAW,aAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,2BACZxkB,UAAW,aACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,iCACZxkB,UAAW,mBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,4BACZxkB,UAAW,cACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,sBACZxkB,UAAW,SACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,8BACZxkB,UAAW,gBACXxD,UAAU,EACVyD,UAAW,UAYbuB,cAAe,KACfitB,UAAU,sBACVD,SAAS,cACTntB,WAAY,CAAEurB,WAAW,EAAM17B,UAAW,qBAC1Co6B,aAAc,CAAEsB,WAAW,EAAM17B,UAAW,0BnC+E9CA,UAAW,qBAEb,CACES,KAAM,gBACN3C,UoCzNyB,KAC3B,MAAOhF,EAAMugC,GAAWnkC,EAAAA,SAAS,IAC3Bmc,EAAasvB,GAAc,CAC/BK,QAAS,0BACTK,WAAY,sBACZD,KAAM,sBACNF,SAAU,sBACV7H,QAASA,IAkJX,OACE58B,EAAAA,IAACg7B,GAAY,CACXpmB,WAAYA,EACZvY,KAAMA,EACNugC,QAASA,EACTroB,SAAU,CAAEA,SAAU,OACtB0mB,aArJ0C,CAC5C,CACEnjC,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,uBACZxkB,UAAW,cACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,iBACZxkB,UAAW,UACXxD,UAAU,EACVyD,UAAW,aAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,gBACZxkB,UAAW,SACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,+BACZxkB,UAAW,sBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,+BACZxkB,UAAW,sBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,cACZxkB,UAAW,OACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,qBACZxkB,UAAW,aACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,eACZxkB,UAAW,QACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,6BACZxkB,UAAW,oBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,6BACZxkB,UAAW,oBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,4BACZxkB,UAAW,oBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,qBACZxkB,UAAW,aACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,qBACZxkB,UAAW,aACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,eACZxkB,UAAW,QACXxD,UAAU,EACVyD,UAAW,UAYbuB,cAAe,KACfitB,UAAU,gBACVD,SAAS,cACTntB,WAAY,CAAEurB,WAAW,EAAM17B,UAAW,eAC1Co6B,aAAc,CAAEsB,WAAW,EAAM17B,UAAW,oBpCsD9CA,UAAW,eAEb,CACES,KAAM,0BACN3C,UqC9NmC,KACrC,MAAOhF,EAAMugC,GAAWnkC,EAAAA,SAAS,IAC3Bmc,EAAasvB,GAAc,CAC/BK,QAAS,oCACTK,WAAY,gCACZD,KAAM,gCACNF,SAAU,gCACV7H,QAASA,IA4JX,OACE58B,EAAAA,IAACg7B,GAAY,CACXpmB,WAAYA,EACZvY,KAAMA,EACNugC,QAASA,EACTroB,SAAU,CAAEA,SAAU,OACtB0mB,aA/J0C,CAC5C,CACEnjC,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,0CACZxkB,UAAW,sBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,2CACZxkB,UAAW,uBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,mCACZxkB,UAAW,eACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,kCACZxkB,UAAW,eACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,oCACZxkB,UAAW,gBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,2CACZxkB,UAAW,uBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,4CACZxkB,UAAW,wBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,sCACZxkB,UAAW,kBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,kCACZxkB,UAAW,eACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,0CACZxkB,UAAW,sBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,uCACZxkB,UAAW,mBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,0CACZxkB,UAAW,sBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,0CACZxkB,UAAW,sBACXxD,UAAU,EACVyD,UAAW,aAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,6BACZxkB,UAAW,UACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,mCACZxkB,UAAW,eACXxD,UAAU,EACVyD,UAAW,cAYbuB,cAAe,KACfitB,UAAU,2BACVD,SAAS,cACTntB,WAAY,CAAEurB,WAAW,EAAM17B,UAAW,0BAC1Co6B,aAAc,CAAEsB,WAAW,EAAM17B,UAAW,+BrCiD9CA,UAAW,0BAEb,CACES,KAAM,gCACN3C,UsCnOyC,KAC3C,MAAOhF,EAAMugC,GAAWnkC,EAAAA,SAAS,IAC3Bmc,EAAasvB,GAAc,CAC/BK,QAAS,0CACTK,WAAY,sCACZD,KAAM,sCACNF,SAAU,sCACV7H,QAASA,IA4EX,OACE58B,EAACyB,IAAAu5B,IACCpmB,WAAYA,EACZvY,KAAMA,EACNugC,QAASA,EACTroB,SAAU,CAAEA,SAAU,OACtB0mB,aA/E0C,CAC5C,CACEnjC,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,gDACZxkB,UAAW,qBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,gDACZxkB,UAAW,qBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,mDACZxkB,UAAW,uBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,gDACZxkB,UAAW,qBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,+CACZxkB,UAAW,oBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,2CACZxkB,UAAW,iBACXxD,UAAU,EACVyD,UAAW,aAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,gDACZxkB,UAAW,qBACXxD,UAAU,EACVyD,UAAW,UAYbuB,cAAe,KACfitB,UAAU,kCACVD,SAAS,cACTntB,WAAY,CACVurB,WAAW,EACX17B,UAAW,iCAEbo6B,aAAc,CACZsB,WAAW,EACX17B,UAAW,sCtCiIfA,UAAW,iCAEb,CACES,KAAM,wCACN3C,UuCxOgD,KAClD,MAAOhF,EAAMugC,GAAWnkC,EAAAA,SAAS,IAC3Bmc,EAAasvB,GAAc,CAC/BK,QAAS,iDACTK,WAAY,6CACZD,KAAM,6CACNF,SAAU,6CACV7H,QAASA,IA4EX,OACE58B,EAACyB,IAAAu5B,IACCpmB,WAAYA,EACZvY,KAAMA,EACNugC,QAASA,EACTroB,SAAU,CAAEA,SAAU,OACtB0mB,aA/E0C,CAC5C,CACEnjC,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,6CACZxkB,UAAW,WACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,kDACZxkB,UAAW,gBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,iDACZxkB,UAAW,eACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,+CACZxkB,UAAW,aACXxD,UAAU,EACVyD,UAAW,aAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,sDACZxkB,UAAW,mBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,mDACZxkB,UAAW,gBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,wDACZxkB,UAAW,qBACXxD,UAAU,EACVyD,UAAW,UAYbuB,cAAe,KACfitB,UAAU,0CACVD,SAAS,cACTntB,WAAY,CACVurB,WAAW,EACX17B,UAAW,yCAEbo6B,aAAc,CACZsB,WAAW,EACX17B,UAAW,8CvCsIfA,UAAW,yCAEb,CACES,KAAM,oCACN3C,UwC7O6C,KAC/C,MAAOhF,EAAMugC,GAAWnkC,EAAAA,SAAS,IAC3Bmc,EAAasvB,GAAc,CAC/BK,QAAS,8CACTK,WAAY,0CACZD,KAAM,0CACNF,SAAU,0CACV7H,QAASA,IAoCX,OACE58B,EAACyB,IAAAu5B,IACCpmB,WAAYA,EACZvY,KAAMA,EACNugC,QAASA,EACTroB,SAAU,CAAEA,SAAU,OACtB0mB,aAvC0C,CAC5C,CACEnjC,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,mDACZxkB,UAAW,mBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,wCACZxkB,UAAW,UACXxD,UAAU,EACVyD,UAAW,aAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,iDACZxkB,UAAW,iBACXxD,UAAU,EACVyD,UAAW,UAYbuB,cAAe,KACfitB,UAAU,uCACVD,SAAS,cACTntB,WAAY,CACVurB,WAAW,EACX17B,UAAW,sCAEbo6B,aAAc,CACZsB,WAAW,EACX17B,UAAW,2CxCmLfA,UAAW,sCAEb,CACES,KAAM,iCACN3C,UyClP0C,KAC5C,MAAOhF,EAAMugC,GAAWnkC,EAAAA,SAAS,IAC3Bmc,EAAasvB,GAAc,CAC/BK,QAAS,2CACTK,WAAY,uCACZD,KAAM,uCACNF,SAAU,uCACV7H,QAASA,IA0GX,OACE58B,EAACyB,IAAAu5B,IACCpmB,WAAYA,EACZvY,KAAMA,EACNugC,QAASA,EACTroB,SAAU,CAAEA,SAAU,OACtB0mB,aA7G0C,CAC5C,CACEnjC,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,8CACZxkB,UAAW,gBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,0CACZxkB,UAAW,cACXxD,UAAU,EACVyD,UAAW,aAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,8CACZxkB,UAAW,iBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,+CACZxkB,UAAW,kBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,uCACZxkB,UAAW,WACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,0CACZxkB,UAAW,cACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,6CACZxkB,UAAW,iBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,0CACZxkB,UAAW,cACXxD,UAAU,EACVyD,UAAW,aAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,wCACZxkB,UAAW,WACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,kDACZxkB,UAAW,qBACXxD,UAAU,EACVyD,UAAW,UAYbuB,cAAe,KACfitB,UAAU,oCACVD,SAAS,cACTntB,WAAY,CACVurB,WAAW,EACX17B,UAAW,mCAEbo6B,aAAc,CACZsB,WAAW,EACX17B,UAAW,wCzCkHfA,UAAW,mCAEb,CACES,KAAM,iCACN3C,U0CvPyC,KAC3C,MAAOhF,EAAMugC,GAAWnkC,EAAAA,SAAS,IAC3Bmc,EAAasvB,GAAc,CAC/BK,QAAS,0CACTK,WAAY,sCACZD,KAAM,sCACNF,SAAU,sCACV7H,QAASA,IAsFX,OACE58B,EAACyB,IAAAu5B,IACCpmB,WAAYA,EACZvY,KAAMA,EACNugC,QAASA,EACTroB,SAAU,CAAEA,SAAU,OACtB0mB,aAzF0C,CAC5C,CACEnjC,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,gDACZxkB,UAAW,qBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,gDACZxkB,UAAW,qBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,iDACZxkB,UAAW,sBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,mCACZxkB,UAAW,UACXxD,UAAU,EACVyD,UAAW,aAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,yCACZxkB,UAAW,cACXxD,UAAU,EACVyD,UAAW,aAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,uDACZxkB,UAAW,0BACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,iDACZxkB,UAAW,qBACXxD,UAAU,EACVyD,UAAW,SAGf,CACExa,KAAM,QACNia,KAAM,QACNvV,MAAO,CACLq6B,WAAY,gDACZxkB,UAAW,qBACXxD,UAAU,EACVyD,UAAW,UAYbuB,cAAe,KACfitB,UAAU,kCACVD,SAAS,cACTntB,WAAY,CACVurB,WAAW,EACX17B,UAAW,iCAEbo6B,aAAc,CACZsB,WAAW,EACX17B,UAAW,sC1C2IfA,UAAW,oC2CpPTwmC,GAAwB,KAC5B,MAAM56B,EAAiB9T,EAAWA,aAAEzB,GAAqBA,EAAMoF,YACzD1D,EAAUD,EAAAA,aAAazB,GAAqBA,EAAM0B,QAAQf,QAC1DyvC,EAAiB3uC,EAAAA,aACpBzB,GAAqBA,EAAM0B,QAAQf,MAAMyvC,iBAE5C,OACEhqC,EAACyB,IAAAwoC,EAAaA,cACZ,CAAA1vC,MAAuC,QAAhC4U,EAAe7V,aAAyBiS,GAAWN,YAE1DjL,EAACyB,IAAAyC,EAAGA,IACF,CAAAzD,GAAI,CACFG,QAAS,OACTuE,cAAe,SAEf5C,eAAgB,aAChBjB,KAAM,EACN0tB,SAAU,SACV1pB,QAAS,GACVpF,SAEDC,EAAAA,KAAC+pC,EAAAA,OACE,CAAAhqC,SAAA,CAAA5E,EAAQkO,2BACL4/B,GAAc9/B,KAAI,CAAC6gC,EAAoB5hB,IAEnCvoB,MAACoqC,EAAAA,MAAK,CAEJpmC,KAAMmmC,EAAMnmC,KACZqmC,UAAWF,EAAM9oC,WAFZ,MAAQknB,KAMnB,KACHyhB,EAAe1gC,KAAI,CAAC6gC,EAAoB5hB,IAErCvoB,MAACoqC,EAAAA,MAAK,CAEJpmC,KAAMmmC,EAAMnmC,KACZqmC,UAAWF,EAAM9oC,WAFZ,KAAOknB,aC1BtB+hB,GAAS3rC,EAAAA,OAAO,MAAPA,EAAc,EAAGI,YAAa,CAC3CU,MAAO,GACP0E,OAAQ,EACRwnB,OAAQ,GACR7lB,gBAAiBlB,GAAIA,KAAC,KACtBR,aAAc,EAEdyB,IAAK,KAEF9G,EAAMiG,YAAY,OAAQ,CAC3Bc,gBAAiBlB,GAAIA,KAAC,WAIF,SAAA2lC,GAAa/tC,GACnC,MAAM9D,OAAEA,GAAW8D,EACbwC,EAAY3D,EAAWA,aAAEzB,GAAqBA,EAAMoF,YACpD1D,EAAUD,EAAAA,aAAazB,GAAqBA,EAAM0B,QAAQf,QAC1DO,EAAWC,EAAAA,cACXyvC,EAAgBpD,IACpBtsC,EAASZ,GAAiBL,gBAAgButC,KAGtC3P,OACO96B,IAAXjE,EAAuB,IAAMA,IAASjB,SAASuU,UAAOrP,EAExD,OACEqD,MAACyqC,GAAe,CACdhT,UAAWA,EACX5sB,OAAO,SACPrL,KAAMR,EAAU9F,cAChBihC,QAAS,KACPqQ,GAAa,IAEfE,OAAQ,KACNF,GAAa,IAEfG,eA/CiB,GAgDjBC,oBAAoB,EACpBC,WAAY,CACVC,aAAa,GACd5qC,SAEDC,EAAAA,KAAC+D,EAAGA,IACF,CAAAzD,GAAI,CACFG,QAAS,OACTuE,cAAe,SACf/C,WAAY,SACZ+B,OAAQ,OACR6qB,SAAU,UAGZ9uB,SAAA,CAAAF,EAAAA,IAACsqC,GAAS,CAAA,GACVtqC,MAACkE,MAAG,CACFzD,GAAI,CACFwJ,SAAU,EACVrJ,QAAS,OACT2B,eAAgB,SAChB9C,MAAO,MACP4K,UAAW,QAGbnK,SAAAF,MAACiJ,GAAiB,CAAA,KAEpB9I,EAAC8G,KAAA/C,MACC,CAAAzD,GAAI,CACFG,QAAS,OACTwB,WAAY,SACZG,eAAgB,eAChB8C,UAAW,EACX5F,MAAO,QACRS,SAAA,CAEDF,MAACkB,EAAUA,WAAA,CAACT,GAAI,CAAE0G,SAAU,IAAM7G,MAAM,eAAcJ,SACnD5E,EAAQiG,UAEXpB,OAACe,EAAAA,WAAW,CAAAT,GAAI,CAAE0G,SAAU,IAAM7G,MAAM,eACnCJ,SAAA,CAAA,KAAA5E,EAAQyP,qBAMvB,CClGA,MAAMggC,GAAwB,KAC5B,MAAMC,EAAc3vC,EAAAA,aACjBzB,GAAqBA,EAAMoxC,YAAYzwC,QAE1C,OACEyF,MAACirC,EAAAA,UACCxqC,GAAI,CAAEH,MAAO,OAAQiE,OAASxF,GAAUA,EAAMwF,OAAO21B,OAAS,GAC9D16B,KAAMwrC,EAAYxwC,kBAElBwF,MAACkrC,EAAAA,kBAAiB5qC,MAAM,eCKxB6qC,GAAkB,KACtB,MAAMC,EAAU/vC,EAAAA,aAAazB,GAAqBA,EAAM0B,QAAQf,SACzDwH,EAAUspC,GAAe5yC,EAAAA,SAAS,KAClC6yC,EAAUC,GAAe9yC,EAAAA,SAAS,KAClC+yC,EAAkBC,GAAuBhzC,EAAAA,UAAS,GACnDizC,EAAmBrwC,EAAAA,aACtBzB,GAAqBA,EAAMmG,YAAYxF,QAEpCO,EAAWC,EAAAA,cACX4wC,EAAcpvC,UAClB,GAAgB,MAAZwF,GAAgC,IAAZA,EAEtB,YADA5F,EAAKA,MAACF,MAAM,mCAGd,GAAgB,MAAZqvC,GAAgC,IAAZA,EAEtB,YADAnvC,EAAKA,MAACF,MAAM,mCAGdwvC,GAAoB,GACpB,IAAI1vC,EAAgB,KACpB,IAWE,GAVAA,QAAiBP,EAAM2B,KACrB,GAAGiuC,EAAQhwC,4BACX,CACE2G,WACAupC,YAEF,CACE1vC,iBAAiB,IAGA,MAAjBG,EAASM,MAAkC,KAAlBN,EAASM,KAAa,CACjDovC,GAAoB,GACpB,MAAM1rC,EAAc,CAClBtC,iBAAiB,EACjBC,YAAa3B,EAASM,KAAKqB,YAC3BC,YAAa5B,EAASM,MAExBvB,EAASgD,GAAmBF,iBAAiBmC,KAE/C,MAAO0C,GACPgpC,GAAoB,GACpBtvC,EAAAA,MAAMF,MACJwG,GAAG1G,UAAUM,MACX,wDAIFuvC,EAAcvwC,EAAAA,aACjBzB,GAAqBA,EAAMmG,YAAYxF,QAEpCsxC,EAAalY,EAAAA,YAAY,CAC7BP,WAAY,CACV0Y,eAAgB,CACdC,eAAgB,+GAKZX,EAAQY,UAAUvmC,MAAMwmC,cACxBt+B,qKAYRhJ,QAAS,CACPoN,KAAM,OACNvM,QAAS,CACPE,KACE0lC,EAAQY,UAAUvmC,MAAMwmC,cAAgBt+B,IAE5Cu+B,UAAW,CACTxmC,KACE0lC,EAAQY,UAAUvmC,MAAM0mC,gBACxBv+B,OAiCR,OAHAhV,EAAAA,WAAU,KA1Be2D,WACvB,GAAI6uC,GAAShwC,YACwB,MAA/BwwC,EAAYnuC,gBACd,IACE,IAAI1B,QAAiBP,EAAMsB,IACzB,GAAGsuC,EAAQhwC,+BACX,CACEQ,iBAAiB,IAGrB,GAAgB,MAAZG,GAAqC,MAAjBA,EAASM,KAAc,CAC7C,MAAM0D,EAAc,CAClBtC,iBAAiB,EACjBC,YAAa3B,EAASM,KAAKqB,YAC3BC,YAAa5B,EAASM,MAExBvB,EAASgD,GAAmBF,iBAAiBmC,SAE7CjF,EAASgD,GAAmBD,sBAE9B,MAAO5B,GACPnB,EAASgD,GAAmBD,wBAMlCuuC,KACC,CAAChB,IAEFprC,EAAAyB,IAAC4qC,gBAAa,CAACttC,MAAO8sC,EAAU3rC,SAC9BF,EAACyB,IAAA84B,QACC,CAAA95B,GAAI,CACFG,QAAS,OACTuD,OAAQ,QACR1E,MAAO,OACP2E,aAAc,EACdhC,WAAY,SACZG,eAAgB,UACjBrC,SAEoC,GAApCwrC,EAAiBjuC,gBAChB0C,OAAC+D,EAAAA,IAAG,CACFzD,GAAI,CACFG,QAAS,OACTuE,cAAe,SACf/C,WAAY,SACZG,eAAgB,UAGlBrC,SAAA,CAAAF,EAAAyB,IAAA,MAAA,CAAKT,IAAKoqC,GAASnqC,QAASxB,MAAO,IAAK0E,OAAQ,MAChDnE,EAAAA,IAACkB,EAAAA,WAAU,CAACT,GAAI,CAAEyY,EAAG,GAAK/X,QAAQ,KAAKb,MAAM,yBAC1C8qC,GAAS7pC,UAEZpB,OAACe,EAAUA,WAAA,CACTT,GAAI,CACF8E,aAAc,EACd9F,MAAO,OACPqL,UAAW,QACX3D,SAAU,IAEZhG,QAAQ,UACRb,MAAM,gBAEHJ,SAAA,CAAA,KAAAkrC,EAAQrgC,cAEb/K,EAAAyB,IAAC0O,EAASA,UACR,CAAArM,MAAM,WACNrD,GAAI,CAAEhB,MAAO,IAAKyZ,EAAG,GACrB3e,MAAOwH,EACPqM,SAAWrE,IACTshC,EAAYthC,EAAM2G,OAAOnW,QAE3B+xC,UAAYviC,IACQ,UAAdA,EAAMoB,KACRwgC,OAIN3rC,EAACyB,IAAA0O,aACCrM,MAAM,WACNrD,GAAI,CAAEhB,MAAO,IAAKyZ,EAAG,GACrB3e,MAAO+wC,EACPxzC,KAAK,WACLsW,SAAWrE,IACTwhC,EAAYxhC,EAAM2G,OAAOnW,QAE3B+xC,UAAYviC,IACQ,UAAdA,EAAMoB,KACRwgC,OAIN3rC,EAAAyB,IAACyK,SAAM,CACLqgC,QAASf,EACTjrC,QAASorC,EACTxqC,QAAQ,YACRb,MAAM,UACNG,GAAI,CAAEyY,EAAG,GAGFhZ,SAAA,aAGXC,EAAAA,KACE2M,EAAAQ,SAAA,CAAApN,SAAA,CAAAF,EAAAA,IAACkrC,EAAAA,iBAAgB,CAACzqC,GAAI,CAAEd,YAAa,KACrCK,EAAyDyB,IAAA,MAAA,CAAAvB,SAAA,2DC5L/DssC,GAAO7tC,EAAMA,OAAC,OAAQ,CAC1BE,kBAAoBC,GAAkB,SAATA,GADlBH,EAIV,EAAGI,MAAOoiB,EAAK3hB,WAChB,MAAMR,EAAY3D,EAAWA,aAAEzB,GAAeA,EAAMoF,YAC9ClE,EAAWC,EAAAA,eACXC,KAAEA,EAAIC,KAAEA,GAASJ,KACjBwpC,EAAehpC,EAAWA,aAAEzB,GAAeA,EAAMyqC,gBAChDT,EAAkBI,GAAqBvrC,EAAAA,UAAkB,GAC1DsG,EAAQ0L,EAAAA,WACRlS,EAAWF,MACX+K,iBAAEA,GAAqBD,MAGvB7G,iBAAEA,GAAqBpB,KAsC7B,OANAtC,EAAAA,WAAU,KACJyrC,EAAaV,WAhCMpnC,WAEvB,IAAKqnC,EAAkB,CACrBI,GAAkB,GAClBhpC,EAAK,2BACL,MAAM0oC,EAASW,EAAaX,OACtBC,EAAYU,EAAaV,UAC/B,IAAK,IAAII,KAAYJ,OAEgBhnC,IAAhC+mC,EAAOK,IAAWxgC,WACe,OAAhCmgC,EAAOK,IAAWxgC,YAClBH,EAAiBsgC,EAAOK,IAAWxgC,YACZ,IAAzBmgC,EAAOK,IAAWjsB,MACY,IAA9B4rB,EAAOK,GAAU5D,gBAEX7jC,EAAiB,CACrBG,YAAainC,EAAOK,GAAUjsB,IAC9Blb,UAAU,EACVI,gBAAkBjB,IAChBjB,EAASgpC,GAAa,CAAEC,WAAU1nC,KAAMN,EAASM,SAEnDY,gBAAiB,KACfnC,EAASgpC,GAAa,CAAEC,WAAU1nC,KAAM,SAKhDpB,MAMAwxC,KAED,CAACpI,EAAaV,YAEV,CACL/iC,QAAS,OACTuE,cAAe,SACf6pB,SAAU,SACV/kB,SAAU,EACVxK,OAAQlH,GAAYiH,EAAO,qBAAmC,OAC9D2K,UAAWnL,EAAU1F,aACrBiJ,eAAgB,aAChBtD,YACW,IAATO,EACIT,EAAMG,YAAYzD,OAAO,CAAC,SAAU,SAAU,CAC5C0D,OAAQJ,EAAMG,YAAYC,OAAOS,QACjCP,SAAUN,EAAMG,YAAYG,SAASQ,iBAEvCd,EAAMG,YAAYzD,OAAO,CAAC,SAAU,SAAU,CAC5C0D,OAAQJ,EAAMG,YAAYC,OAAOC,MACjCC,SAAUN,EAAMG,YAAYG,SAASC,gBAE7CI,WACGnH,GAAuC,QAA3ByG,EAAU1F,eAAmC,IAATkG,EAE7C,EADAxG,GAAe,KAErB2G,YACGpH,GAAuC,QAA3ByG,EAAU1F,eAAmC,IAATkG,EAE7C,EADAxG,GAAe,SAKX,SAAU0zC,KACtB,MAAMv9B,EAAiB9T,EAAWA,aAAEzB,GAAeA,EAAMoF,YACnDzG,EAAWF,KACX0H,EAAgC1E,EAAWA,aAC9CzB,GAAeA,EAAMmG,cAExB,OACEI,OAACwsC,EAAaA,cAAA,CAAAzsC,SAAA,CACZF,MAAC4sC,EAAcA,eAAA,CAACC,WAAW,EAAM5sC,SAAS,kBAC1CD,MAAC+qC,GAAW,KAC2B,IAAtChrC,EAAYxF,MAAMkD,gBACjB0C,OAACqsC,GAAI,CAAChtC,KAAM2P,EAAejW,cAAagH,SAAA,CACtCF,EAAAA,IAAC8sC,EAAW,CAAA,GACZ9sC,EAAAA,IAACF,OACCvH,EAAyB,KAAdyH,EAAAA,IAACwK,OACbjS,EAAWyH,EAAAA,IAACuqC,OAAkB,KAC/BvqC,EAAAA,IAACmC,GAAY,CAAA,GACbnC,EAACyB,IAAAsoC,UAGH/pC,EAAAA,IAACmrC,SAIT,CCpGA,MAoBM4B,GAAevzC,EAAAA,YAAY,CAC/BC,KAAM,UACNR,aAtBgC,CAChCsB,MAAO,CACLyyC,cAAe,KACf5xC,WAAY,KACZmG,QAAS,KACTwJ,WAAY,KACZ9J,QAAS,KACTgsC,cAAe,KACfzjC,4BAA4B,EAC5BwgC,eAAgB,GAChBtgC,wBAAyB,GACzBwjC,sBAAuB,CAAE,EACzBC,6BAA8B,CAAE,EAChCnB,SAAU,CACRoB,MAAO,CAAEnB,aAAc,UAAWE,eAAgB,WAClD1mC,KAAM,CAAEwmC,aAAc,UAAWE,eAAgB,cAQrDzyC,SAAU,CACR2zC,WAAY,CAACzzC,EAAOE,KAClBF,EAAMW,MAAQT,EAAOC,YAKduzC,GAAiBP,GAAa5yC,QAC3C,IAAeozC,GAAAR,GAAa1yC,QCxDrB,MAAMmzC,GAA+C,CAC1DC,qBAAsB,CACpBtN,UAAU,EACV9jC,KAAM,CAAC,CAAE9B,MAAO,SAAW,CAAEA,MAAO,UAAY,CAAEA,MAAO,QACzDud,IAAK,IAEP41B,qBAAsB,CACpBvN,UAAU,EACVroB,IAAK,GACLzb,KAAM,CACJ,CAAE9B,MAAO,YACT,CAAEA,MAAO,QACT,CAAEA,MAAO,QACT,CAAEA,MAAO,UACT,CAAEA,MAAO,cAGbozC,kBAAmB,CACjBxN,UAAU,EACVroB,IAAK,GACLzb,KAAM,CAAC,CAAE9B,MAAO,SAAW,CAAEA,MAAO,UAAY,CAAEA,MAAO,eAE3DqzC,kBAAmB,CACjBzN,UAAU,EACVroB,IAAK,GACLzb,KAAM,CACJ,CAAE5C,KAAM,aACR,CAAEA,KAAM,eACR,CAAEA,KAAM,YACR,CAAEA,KAAM,QACR,CAAEA,KAAM,oBACR,CAAEA,KAAM,oBAGZo0C,yBAA0B,CACxB1N,UAAU,EACVroB,IAAK,GACLzb,KAAM,CAAC,CAAE5C,KAAM,MAAQ,CAAEA,KAAM,QAEjCq0C,kBAAmB,CACjB3N,UAAU,EACV9jC,KAAM,GACNkH,UAAW,oBACXuU,IAAK,yCAEPi2B,kBAAmB,CACjB5N,UAAU,EACV9jC,KAAM,GACNkH,UAAW,oBACXuU,IAAK,8BAEPk2B,uBAAwB,CACtB7N,UAAU,EACV9jC,KAAM,GACNkH,UAAW,oBACXuU,IAAK,oCAEPm2B,kBAAmB,CACjB9N,UAAU,EACV9jC,KAAM,GACNkH,UAAW,oBACXuU,IAAK,8BAEPo2B,YAAa,CACX/N,UAAU,EACV9jC,KAAM,GACNkH,UAAW,oBACXuU,IAAK,0BCrDHq2B,GAA0B3xC,IAC9B,MAAM1B,EAAWC,EAAAA,cACjBqzC,eAAYC,cAAc7xC,EAAMywC,eAChC,MAAMqB,EAAkC,CACtClb,WAAY,CACV0Y,eAAgB,CACdC,eAAgB,+GAKZvvC,EAAMwvC,UAAUoB,OAAOnB,cACvBx+B,qKAYR9I,QAAS,CACPoN,KAAM,QACNvM,QAAS,CACPE,KACElJ,EAAMwvC,UAAUoB,OAAOnB,cAAgBx+B,IAE3Cy+B,UAAW,CACTxmC,KACElJ,EAAMwvC,UAAUoB,OAAOjB,gBACvBz+B,IAEJ6gC,WAAY,CACVC,QAAS,UACTC,MAAO,aAIPC,EAAiC,CACrCtb,WAAY,CACV0Y,eAAgB,CACdC,eAAgB,+GAKZvvC,EAAMwvC,UAAUvmC,MAAMwmC,cAAgBt+B,qKAY9ChJ,QAAS,CACPoN,KAAM,OACNvM,QAAS,CACPE,KACElJ,EAAMwvC,UAAUvmC,MAAMwmC,cAAgBt+B,IAE1Cu+B,UAAW,CACTxmC,KACElJ,EAAMwvC,UAAUvmC,MAAM0mC,gBACtBv+B,MAKR,IAAIy2B,EAAe,CAAE,EACjB7nC,EAAMgN,6BACR66B,EAAe,IAAKmJ,KAElBhxC,EAAM2wC,+BACR9I,EAAe,IACVA,KACA7nC,EAAM2wC,+BAGbryC,EAAS+oC,GAAkBQ,IAC3B,MAAMl1B,EAAiB9T,EAAWA,aAAEzB,GAAeA,EAAMoF,YACzD,IAAI2vC,EAAe,IAAKL,GACS,SAA7Bn/B,EAAehW,YACjBw1C,EAAe,IAAKD,IAEtB,MAAM3vC,EAAQ40B,EAAAA,YAAY,CACxBxpB,UAAWgF,EAAe7V,gBACvBq1C,IAML,OAJA/1C,EAAAA,WAAU,KACRnB,SAASoU,MAAQrP,EAAMwwC,cACvBlyC,EAASwyC,GAAeD,WAAW7wC,MAClC,IAEDwD,EAAAyB,IAAC4qC,gBAAa,CAACttC,MAAOA,EAAKmB,SACzBF,MAAC0sC,GAAS,CAAA,MCrGhBkC,EAAAA,QAAQC,IAAIC,EAAAA,KACZF,EAAAA,QAAQC,IAAIE,EAAAA,KACZH,EAAAA,QAAQC,IAAIG,EAAAA,qNAE+BxyC,IACzC,MAAMyyC,EAAiB,CACrBjwC,UAAW5E,GACX2F,YAAahC,GACbitC,YAAapwC,GACbypC,aAAcJ,GACd3oC,QAASiyC,MACN/wC,EAAM0wC,uBAELgC,EAAQC,EAAAA,eAAe,CAC3B90C,QAAS40C,IAsBX,OACEjvC,MAACovC,EAAAA,SAAQ,CAACF,MAAOA,EACfhvC,SAAAF,EAAAyB,IAAC0sC,GAAQ,IAAA3xC,sXxDCsCA,GAEjD2D,OAAA2M,EAAAA,SAAA,CAAA5M,SAAA,CACEF,EAAAA,IAACkB,EAAUA,WAAC,CAAAT,GAAI,CAAE0G,SAAU,GAAIR,WAAY,QACzCzG,SAAA1D,EAAM6yC,iBAETrvC,MAAC4oC,EACC,CAAAnR,WACA,EAAAh3B,GAAI,CACFwJ,SAAU,EACVxK,MAAO,OACP4K,UAAW,OACX/E,QAAS,GAGVpF,SAAA1D,EAAM8yC,iBAAiBhmC,KAAI,CAACimC,EAAkBhnB,IAEhB,SAA3BgnB,EAAY5G,YACe,UAA3B4G,EAAY5G,YACe,aAA3B4G,EAAY5G,WAGV3oC,EAAAyB,IAAAqL,WAAA,CAAA5M,SACGqvC,EAAYlzC,KAAKiN,KAAI,CAAC0D,EAAaub,KAClC,MAAMinB,EAAmD,CACvDrH,YAAaoH,EAAYpH,YACzBn7B,SACAu6B,WAAYgI,EAAYhI,WACxBh4B,WAAYggC,EAAYhgC,YAE1B,OACEpP,EAAAA,KAACuoC,GAAe,CAEdC,WAAY4G,EAAY5G,qBAEI,SAA3B4G,EAAY5G,WACX3oC,EAACyB,IAAA4mC,GAAqB,IAAAmH,IACpB,KACwB,UAA3BD,EAAY5G,WACX3oC,EAAAA,IAACkoC,GAAa,IAAKsH,IACjB,KACwB,aAA3BD,EAAY5G,WACX3oC,EAAAyB,IAACgnC,GAAoB,IAAK+G,IACxB,OAXCjnB,QAmBbpoB,EAAAA,KAACuoC,GAAe,CAAaC,WAAY4G,EAAY5G,qBACvB,QAA3B4G,EAAY5G,WACX3oC,EAACyB,IAAA4lC,GAAqB,IAAAkI,IACpB,KACwB,SAA3BA,EAAY5G,WACX3oC,EAAAA,IAACgoC,GAAiB,IAAKuH,IACrB,KACwB,QAA3BA,EAAY5G,WACX3oC,EAAAyB,IAACimC,GAAgB,IAAK6H,IACpB,OATgBhnB,oT/D1G9B,SAAwBvR,GAC5B,MAAO,QAAQy4B,KAAKz4B,EACtB","x_google_ignoreList":[0,13,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77]}
|