@asaleh37/ui-base 25.6.1 → 25.6.2-0.1

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.
Files changed (160) hide show
  1. package/.github/workflows/publish-npm.yml +31 -0
  2. package/README.md +51 -51
  3. package/dist/index.js +1 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/index.mjs +1 -1
  6. package/dist/index.mjs.map +1 -1
  7. package/eslint.config.js +29 -29
  8. package/index.html +13 -13
  9. package/package.json +120 -120
  10. package/rollup.config-1748377725725.cjs +50 -50
  11. package/rollup.config.js +45 -45
  12. package/src/components/App.tsx +123 -123
  13. package/src/components/BaseApp.tsx +53 -53
  14. package/src/components/administration/admin/OrgMemberRoleForm.tsx +83 -83
  15. package/src/components/administration/admin/OrganizationApplicationModuleGrid.tsx +107 -107
  16. package/src/components/administration/admin/OrganizationGrid.tsx +82 -82
  17. package/src/components/administration/admin/OrganizationMemberGrid.tsx +176 -176
  18. package/src/components/administration/admin/OrganizationMemberRoleGrid.tsx +87 -87
  19. package/src/components/administration/admin/OrganizationRankGrid.tsx +133 -133
  20. package/src/components/administration/admin/OrganizationUnitGrid.tsx +143 -143
  21. package/src/components/administration/admin/OrganizationUnitTypeGrid.tsx +108 -108
  22. package/src/components/administration/admin/PersonGrid.tsx +231 -231
  23. package/src/components/administration/admin/RoleAuthoritiesForm.tsx +82 -82
  24. package/src/components/administration/admin/SystemApplicationAuthorityGrid.tsx +126 -126
  25. package/src/components/administration/admin/SystemApplicationGrid.tsx +83 -83
  26. package/src/components/administration/admin/SystemApplicationModuleGrid.tsx +96 -96
  27. package/src/components/administration/admin/SystemApplicationRoleAuthorityGrid.tsx +67 -67
  28. package/src/components/administration/admin/SystemApplicationRoleGrid.tsx +116 -116
  29. package/src/components/administration/dev/AttachmentConfigGrid.tsx +223 -223
  30. package/src/components/administration/dev/AttachmentGrid.tsx +172 -172
  31. package/src/components/administration/dev/BluePrintGrid.tsx +129 -129
  32. package/src/components/administration/dev/DashboardGrid.tsx +173 -173
  33. package/src/components/administration/dev/DashboardWidgetGrid.tsx +164 -164
  34. package/src/components/administration/dev/DataQueryGrid.tsx +206 -206
  35. package/src/components/administration/dev/DataQueryParameterGrid.tsx +191 -191
  36. package/src/components/administration/dev/DataQueryParametersForm.tsx +84 -84
  37. package/src/components/administration/dev/DatasourceConnectionGrid.tsx +150 -150
  38. package/src/components/administration/dev/EntityParameterGrid.tsx +279 -279
  39. package/src/components/administration/dev/LookupGrid.tsx +120 -120
  40. package/src/components/administration/dev/MailAttachmentGrid.tsx +155 -155
  41. package/src/components/administration/dev/MailBodyGrid.tsx +216 -216
  42. package/src/components/administration/dev/MailNotificationQueueGrid.tsx +245 -245
  43. package/src/components/administration/dev/MailRecipientGrid.tsx +169 -169
  44. package/src/components/administration/dev/MailSenderConfigGrid.tsx +478 -478
  45. package/src/components/administration/dev/MailTemplateGrid.tsx +384 -384
  46. package/src/components/administration/dev/NotificationGrid.tsx +432 -432
  47. package/src/components/administration/dev/NotificationQueueGrid.tsx +222 -222
  48. package/src/components/administration/dev/ReportGrid.tsx +506 -506
  49. package/src/components/administration/dev/ReportParameterGrid.tsx +186 -186
  50. package/src/components/administration/dev/ReportParametersForm.tsx +84 -84
  51. package/src/components/administration/dev/WidgetGrid.tsx +431 -431
  52. package/src/components/administration/dev/WorkflowDocumentActionGrid.tsx +264 -264
  53. package/src/components/administration/dev/WorkflowDocumentActionHistoryGrid.tsx +172 -172
  54. package/src/components/administration/dev/WorkflowDocumentActionMailGrid.tsx +161 -161
  55. package/src/components/administration/dev/WorkflowDocumentGrid.tsx +377 -377
  56. package/src/components/administration/dev/WorkflowDocumentMailLogGrid.tsx +218 -218
  57. package/src/components/administration/dev/WorkflowDocumentStatusGrid.tsx +243 -243
  58. package/src/components/common/ChangeOrgForm.tsx +81 -81
  59. package/src/components/common/Home.tsx +43 -43
  60. package/src/components/common/LanguageSwitcher.tsx +25 -25
  61. package/src/components/common/LayoutHandlers.tsx +11 -11
  62. package/src/components/common/LoadingMask.tsx +24 -24
  63. package/src/components/common/Login.tsx +214 -214
  64. package/src/components/common/MyNotificationsPanel.tsx +103 -103
  65. package/src/components/common/NotificationItem.tsx +138 -138
  66. package/src/components/index.ts +9 -9
  67. package/src/components/templates/DataEntryTemplates/DataEntryTypes.ts +324 -324
  68. package/src/components/templates/DataEntryTemplates/DataEntryUtil.ts +248 -248
  69. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormAction.tsx +60 -60
  70. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormElementField.tsx +231 -231
  71. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormElementGroup.tsx +106 -106
  72. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/CheckBox.tsx +64 -64
  73. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/ComboBox.tsx +93 -93
  74. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/Datefield.tsx +65 -65
  75. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/DatetimeField.tsx +64 -64
  76. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/FiltersPanel.tsx +237 -237
  77. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/SystemLookupCombobox.tsx +55 -55
  78. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/TemplateTextField.tsx +17 -17
  79. package/src/components/templates/DataEntryTemplates/TemplateDataForm/TemplateForm.tsx +387 -387
  80. package/src/components/templates/DataEntryTemplates/TemplateDataGrid/DataGridColumnsUtil.tsx +189 -189
  81. package/src/components/templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid.tsx +998 -998
  82. package/src/components/templates/DataEntryTemplates/TemplateDataGrid/TemplateGridMultiRecordAction.tsx +89 -89
  83. package/src/components/templates/DataEntryTemplates/TemplateDataGrid/TemplateGridRecordAction.tsx +95 -95
  84. package/src/components/templates/DataEntryTemplates/TemplateDataGrid/TemplateGridTopBar.tsx +227 -227
  85. package/src/components/templates/TransferList.tsx +257 -257
  86. package/src/components/templates/Window/ConfirmationWindow.tsx +55 -55
  87. package/src/components/templates/attachment/AttachmentCard.tsx +141 -141
  88. package/src/components/templates/attachment/AttachmentImageViewer.tsx +45 -45
  89. package/src/components/templates/attachment/AttachmentPanel.tsx +271 -271
  90. package/src/components/templates/index.ts +33 -33
  91. package/src/components/templates/report/ExcelReportViewer.tsx +71 -71
  92. package/src/components/templates/report/ReportViewer.tsx +382 -382
  93. package/src/components/templates/visuals/DashboardRouteView.tsx +9 -9
  94. package/src/components/templates/visuals/DashboardViewer.tsx +148 -148
  95. package/src/components/templates/visuals/WidgetViewer.tsx +198 -198
  96. package/src/components/templates/visuals/charts/TemplateBarChart.tsx +23 -23
  97. package/src/components/templates/visuals/charts/TemplateDataCard.tsx +35 -35
  98. package/src/components/templates/visuals/charts/TemplateGauge.tsx +21 -21
  99. package/src/components/templates/visuals/charts/TemplateLineChart.tsx +22 -22
  100. package/src/components/templates/visuals/charts/TemplateLineProgress.tsx +42 -42
  101. package/src/components/templates/visuals/charts/TemplatePieChart.tsx +24 -24
  102. package/src/components/templates/workflow/WorkflowDocumentPanel.tsx +606 -606
  103. package/src/components/templates/workflow/WorkflowDocumentTimeLine.tsx +140 -140
  104. package/src/components/templates/workflow/WorkflowRouteComponent.tsx +14 -14
  105. package/src/hooks/UseConfirmationWindow.tsx +54 -54
  106. package/src/hooks/UseMobile.tsx +13 -13
  107. package/src/hooks/UseSession.tsx +40 -40
  108. package/src/hooks/UseWindow.tsx +107 -107
  109. package/src/hooks/index.ts +7 -7
  110. package/src/hooks/useApiActions.ts +124 -124
  111. package/src/hooks/useAxios.tsx +316 -316
  112. package/src/hooks/useInterval.tsx +23 -23
  113. package/src/hooks/useLoadingMask.tsx +16 -16
  114. package/src/hooks/useLookupGridColumn.tsx +35 -35
  115. package/src/index.ts +4 -4
  116. package/src/layout/DrawerHeader.tsx +10 -10
  117. package/src/layout/Layout.tsx +90 -90
  118. package/src/layout/MainContent.tsx +114 -114
  119. package/src/layout/MobileDrawer.tsx +103 -103
  120. package/src/layout/NavigationTree.tsx +295 -295
  121. package/src/layout/NotificationButton.tsx +207 -207
  122. package/src/layout/RouteWrapper.tsx +36 -36
  123. package/src/layout/SideBar.tsx +85 -85
  124. package/src/layout/TopBar.tsx +215 -215
  125. package/src/locales/arabic/adminLocalsAr.json +93 -93
  126. package/src/locales/arabic/common.json +44 -44
  127. package/src/locales/arabic/devLocalsAr.json +317 -317
  128. package/src/locales/arabic/index.ts +9 -9
  129. package/src/locales/english/adminLocalsEn.json +96 -96
  130. package/src/locales/english/common.json +43 -43
  131. package/src/locales/english/devLocalsEn.json +318 -318
  132. package/src/locales/english/index.ts +9 -9
  133. package/src/locales/i18n.ts +8 -8
  134. package/src/locales/index.ts +9 -9
  135. package/src/main.tsx +23 -23
  136. package/src/navigationItems/Administration/adminNavigationItems.tsx +222 -222
  137. package/src/navigationItems/Administration/index.tsx +16 -16
  138. package/src/navigationItems/common/CommonNavigationItems.tsx +12 -12
  139. package/src/navigationItems/common/index.tsx +7 -7
  140. package/src/navigationItems/index.tsx +34 -34
  141. package/src/redux/features/administration/AdministrationStoresMetaData.ts +126 -126
  142. package/src/redux/features/common/AppInfoSlice.ts +63 -63
  143. package/src/redux/features/common/AppLayoutSlice.ts +29 -29
  144. package/src/redux/features/common/CommonStoreSlice.ts +44 -44
  145. package/src/redux/features/common/LoadingMaskSlice.ts +30 -30
  146. package/src/redux/features/common/SideBarSlice.ts +27 -27
  147. package/src/redux/features/common/UserSessionSlice.ts +54 -54
  148. package/src/redux/store.ts +29 -29
  149. package/src/routes/administration/adminRoutes.tsx +99 -99
  150. package/src/routes/administration/devRoutes.tsx +129 -129
  151. package/src/routes/administration/index.ts +8 -8
  152. package/src/routes/index.ts +11 -11
  153. package/src/routes/types/index.ts +5 -5
  154. package/src/styles/index.css +19 -19
  155. package/src/types/index.ts +8 -8
  156. package/src/util/AppUtils.ts +53 -53
  157. package/src/util/constants.ts +6 -6
  158. package/src/util/index.ts +2 -2
  159. package/tsconfig.json +135 -135
  160. package/vite.config.ts +36 -36
@@ -1,215 +1,215 @@
1
- import {
2
- Avatar,
3
- Box,
4
- IconButton,
5
- styled,
6
- Tooltip,
7
- Typography,
8
- } from "@mui/material";
9
- import MuiAppBar, { AppBarProps as MuiAppBarProps } from "@mui/material/AppBar";
10
- import Toolbar from "@mui/material/Toolbar";
11
- import { useDispatch, useSelector } from "react-redux";
12
- import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
13
- import { useIsMobile } from "../hooks/UseMobile";
14
- import {
15
- AppLayoutActions,
16
- DRAWER_WIDTH,
17
- } from "../redux/features/common/AppLayoutSlice";
18
- import useAxios from "../hooks/useAxios";
19
- import { UserSessionActions } from "../redux/features/common/UserSessionSlice";
20
- import i18n, { changeLanguage } from "../locales/i18n";
21
- import { useSession, useWindow } from "../hooks";
22
- import ChangeOrgForm from "../components/common/ChangeOrgForm";
23
- import { toggleSideBarState } from "../redux/features/common/SideBarSlice";
24
- import AttachmentImageViewer from "../components/templates/attachment/AttachmentImageViewer";
25
- import NotificationButton from "./NotificationButton";
26
-
27
- interface AppBarProps extends MuiAppBarProps {
28
- open?: boolean;
29
- }
30
-
31
- const AppBar = styled(MuiAppBar, {
32
- shouldForwardProp: (prop) => prop !== "open",
33
- })<AppBarProps>(({ theme }) => {
34
- const AppLayout = useSelector((state: any) => state.AppLayout);
35
- const isMobile = useIsMobile();
36
- return {
37
- transition: theme.transitions.create(["margin", "width"], {
38
- easing: theme.transitions.easing.sharp,
39
- duration: theme.transitions.duration.leavingScreen,
40
- }),
41
- variants: [
42
- {
43
- props: ({ open }) => open,
44
- style: {
45
- width: !isMobile ? `calc(100% - ${DRAWER_WIDTH}px)` : undefined,
46
- marginLeft:
47
- !isMobile && AppLayout.appDirection === "ltr"
48
- ? `${DRAWER_WIDTH}px`
49
- : undefined,
50
- marginRight:
51
- !isMobile && AppLayout.appDirection === "rtl"
52
- ? `${DRAWER_WIDTH}px`
53
- : undefined,
54
- transition: theme.transitions.create(["margin", "width"], {
55
- easing: theme.transitions.easing.easeOut,
56
- duration: theme.transitions.duration.enteringScreen,
57
- }),
58
- },
59
- },
60
- ],
61
- };
62
- });
63
-
64
- const TopBar: React.FC = () => {
65
- const { Window: ChangeOrgWindow, setWindowState: setChangeOrgWindowState } =
66
- useWindow({
67
- windowTitle: "Change Current Organization",
68
- windowIcon: "globe",
69
- width: "fit-content",
70
- height: "fit-content",
71
- });
72
- const AppInfo = useSelector((state: any) => state.AppInfo.value);
73
- const AppLayout = useSelector((state: any) => state.AppLayout);
74
- const SideBarState = useSelector((state: any) => state.SideBar);
75
- const { UserSession } = useSession();
76
- const currentOrganization = UserSession.value.currentOrganization;
77
- const { handleGetRequest } = useAxios();
78
- const isMobile = useIsMobile();
79
- const dispatch = useDispatch();
80
- const handleLogout = async () => {
81
- try {
82
- await handleGetRequest({ endPointURI: "api/auth/logout" });
83
- } catch (error) {}
84
- dispatch(UserSessionActions.setUnAuthenticated());
85
- };
86
- const toggleSideBar = () => {
87
- dispatch(toggleSideBarState());
88
- };
89
- return (
90
- <>
91
- <ChangeOrgWindow>
92
- <ChangeOrgForm
93
- successChangeCallBackFn={() => {
94
- setChangeOrgWindowState(false);
95
- }}
96
- />
97
- </ChangeOrgWindow>
98
- <AppBar position="fixed" open={SideBarState.isOpened}>
99
- <Toolbar>
100
- <IconButton
101
- color="inherit"
102
- aria-label="open drawer"
103
- onClick={toggleSideBar}
104
- edge="start"
105
- sx={[
106
- {
107
- mr: AppLayout.appDirection === "ltr" ? 2 : undefined,
108
- ml: AppLayout.appDirection === "rtl" ? 2 : undefined,
109
- },
110
- SideBarState.isOpened && { display: "none" },
111
- ]}
112
- >
113
- <FontAwesomeIcon icon="bars" />
114
- </IconButton>
115
- <Avatar
116
- src={AppInfo.appLogo}
117
- sx={{ marginRight: 1, marginLeft: 1 }}
118
- />
119
- <Typography variant="h6" noWrap component="div" sx={{ flex: 1 }}>
120
- {isMobile
121
- ? ""
122
- : `${AppInfo.appName} - ${
123
- AppLayout.appDirection === "ltr"
124
- ? currentOrganization?.organizationEnName
125
- : currentOrganization?.organizationArName
126
- }`}
127
- </Typography>
128
- <Tooltip
129
- title={
130
- AppLayout.themeMode === "light"
131
- ? "Switch Theme to Dark"
132
- : "Switch Theme to Light"
133
- }
134
- >
135
- <IconButton
136
- color="inherit"
137
- onClick={() => {
138
- dispatch(
139
- AppLayoutActions.setThemeMode(
140
- AppLayout.themeMode === "light" ? "dark" : "light"
141
- )
142
- );
143
- localStorage.setItem(
144
- "themeMode",
145
- AppLayout.themeMode === "light" ? "dark" : "light"
146
- );
147
- }}
148
- >
149
- {AppLayout.themeMode === "light" ? (
150
- <FontAwesomeIcon icon="moon" />
151
- ) : (
152
- <FontAwesomeIcon icon={{ prefix: "far", iconName: "sun" }} />
153
- )}
154
- </IconButton>
155
- </Tooltip>
156
- <Tooltip
157
- title={
158
- i18n.language === "ar"
159
- ? "Change Language To English"
160
- : "Change Language To Arabic"
161
- }
162
- >
163
- <IconButton
164
- color="inherit"
165
- onClick={() => {
166
- let nextLanguage = i18n.language === "ar" ? "en" : "ar";
167
- changeLanguage(nextLanguage);
168
- dispatch(
169
- AppLayoutActions.setAppDirection(
170
- nextLanguage === "ar" ? "rtl" : "ltr"
171
- )
172
- );
173
- }}
174
- >
175
- <FontAwesomeIcon icon="language" />
176
- </IconButton>
177
- </Tooltip>
178
- {UserSession.value?.userOrganizations &&
179
- UserSession.value?.userOrganizations.length > 1 ? (
180
- <Tooltip title="Change Current Organization">
181
- <IconButton
182
- color="inherit"
183
- onClick={() => {
184
- setChangeOrgWindowState(true);
185
- }}
186
- >
187
- <FontAwesomeIcon icon="globe" />
188
- </IconButton>
189
- </Tooltip>
190
- ) : (
191
- <></>
192
- )}
193
-
194
- <NotificationButton />
195
- <AttachmentImageViewer
196
- showAsAvatar={true}
197
- attachmentCode="EMPLOYEE_PHOTOS"
198
- refKey={UserSession.value?.id + ""}
199
- />
200
- <div style={{ marginLeft: 5, marginRight: 5 }}>
201
- {isMobile ? "" : UserSession.value?.username}
202
- </div>
203
- <IconButton color="inherit" onClick={handleLogout}>
204
- <FontAwesomeIcon
205
- rotation={AppLayout.appDirection === "rtl" ? 180 : undefined}
206
- icon="arrow-right-from-bracket"
207
- />
208
- </IconButton>
209
- </Toolbar>
210
- </AppBar>
211
- </>
212
- );
213
- };
214
-
215
- export default TopBar;
1
+ import {
2
+ Avatar,
3
+ Box,
4
+ IconButton,
5
+ styled,
6
+ Tooltip,
7
+ Typography,
8
+ } from "@mui/material";
9
+ import MuiAppBar, { AppBarProps as MuiAppBarProps } from "@mui/material/AppBar";
10
+ import Toolbar from "@mui/material/Toolbar";
11
+ import { useDispatch, useSelector } from "react-redux";
12
+ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
13
+ import { useIsMobile } from "../hooks/UseMobile";
14
+ import {
15
+ AppLayoutActions,
16
+ DRAWER_WIDTH,
17
+ } from "../redux/features/common/AppLayoutSlice";
18
+ import useAxios from "../hooks/useAxios";
19
+ import { UserSessionActions } from "../redux/features/common/UserSessionSlice";
20
+ import i18n, { changeLanguage } from "../locales/i18n";
21
+ import { useSession, useWindow } from "../hooks";
22
+ import ChangeOrgForm from "../components/common/ChangeOrgForm";
23
+ import { toggleSideBarState } from "../redux/features/common/SideBarSlice";
24
+ import AttachmentImageViewer from "../components/templates/attachment/AttachmentImageViewer";
25
+ import NotificationButton from "./NotificationButton";
26
+
27
+ interface AppBarProps extends MuiAppBarProps {
28
+ open?: boolean;
29
+ }
30
+
31
+ const AppBar = styled(MuiAppBar, {
32
+ shouldForwardProp: (prop) => prop !== "open",
33
+ })<AppBarProps>(({ theme }) => {
34
+ const AppLayout = useSelector((state: any) => state.AppLayout);
35
+ const isMobile = useIsMobile();
36
+ return {
37
+ transition: theme.transitions.create(["margin", "width"], {
38
+ easing: theme.transitions.easing.sharp,
39
+ duration: theme.transitions.duration.leavingScreen,
40
+ }),
41
+ variants: [
42
+ {
43
+ props: ({ open }) => open,
44
+ style: {
45
+ width: !isMobile ? `calc(100% - ${DRAWER_WIDTH}px)` : undefined,
46
+ marginLeft:
47
+ !isMobile && AppLayout.appDirection === "ltr"
48
+ ? `${DRAWER_WIDTH}px`
49
+ : undefined,
50
+ marginRight:
51
+ !isMobile && AppLayout.appDirection === "rtl"
52
+ ? `${DRAWER_WIDTH}px`
53
+ : undefined,
54
+ transition: theme.transitions.create(["margin", "width"], {
55
+ easing: theme.transitions.easing.easeOut,
56
+ duration: theme.transitions.duration.enteringScreen,
57
+ }),
58
+ },
59
+ },
60
+ ],
61
+ };
62
+ });
63
+
64
+ const TopBar: React.FC = () => {
65
+ const { Window: ChangeOrgWindow, setWindowState: setChangeOrgWindowState } =
66
+ useWindow({
67
+ windowTitle: "Change Current Organization",
68
+ windowIcon: "globe",
69
+ width: "fit-content",
70
+ height: "fit-content",
71
+ });
72
+ const AppInfo = useSelector((state: any) => state.AppInfo.value);
73
+ const AppLayout = useSelector((state: any) => state.AppLayout);
74
+ const SideBarState = useSelector((state: any) => state.SideBar);
75
+ const { UserSession } = useSession();
76
+ const currentOrganization = UserSession.value.currentOrganization;
77
+ const { handleGetRequest } = useAxios();
78
+ const isMobile = useIsMobile();
79
+ const dispatch = useDispatch();
80
+ const handleLogout = async () => {
81
+ try {
82
+ await handleGetRequest({ endPointURI: "api/auth/logout" });
83
+ } catch (error) {}
84
+ dispatch(UserSessionActions.setUnAuthenticated());
85
+ };
86
+ const toggleSideBar = () => {
87
+ dispatch(toggleSideBarState());
88
+ };
89
+ return (
90
+ <>
91
+ <ChangeOrgWindow>
92
+ <ChangeOrgForm
93
+ successChangeCallBackFn={() => {
94
+ setChangeOrgWindowState(false);
95
+ }}
96
+ />
97
+ </ChangeOrgWindow>
98
+ <AppBar position="fixed" open={SideBarState.isOpened}>
99
+ <Toolbar>
100
+ <IconButton
101
+ color="inherit"
102
+ aria-label="open drawer"
103
+ onClick={toggleSideBar}
104
+ edge="start"
105
+ sx={[
106
+ {
107
+ mr: AppLayout.appDirection === "ltr" ? 2 : undefined,
108
+ ml: AppLayout.appDirection === "rtl" ? 2 : undefined,
109
+ },
110
+ SideBarState.isOpened && { display: "none" },
111
+ ]}
112
+ >
113
+ <FontAwesomeIcon icon="bars" />
114
+ </IconButton>
115
+ <Avatar
116
+ src={AppInfo.appLogo}
117
+ sx={{ marginRight: 1, marginLeft: 1 }}
118
+ />
119
+ <Typography variant="h6" noWrap component="div" sx={{ flex: 1 }}>
120
+ {isMobile
121
+ ? ""
122
+ : `${AppInfo.appName} - ${
123
+ AppLayout.appDirection === "ltr"
124
+ ? currentOrganization?.organizationEnName
125
+ : currentOrganization?.organizationArName
126
+ }`}
127
+ </Typography>
128
+ <Tooltip
129
+ title={
130
+ AppLayout.themeMode === "light"
131
+ ? "Switch Theme to Dark"
132
+ : "Switch Theme to Light"
133
+ }
134
+ >
135
+ <IconButton
136
+ color="inherit"
137
+ onClick={() => {
138
+ dispatch(
139
+ AppLayoutActions.setThemeMode(
140
+ AppLayout.themeMode === "light" ? "dark" : "light"
141
+ )
142
+ );
143
+ localStorage.setItem(
144
+ "themeMode",
145
+ AppLayout.themeMode === "light" ? "dark" : "light"
146
+ );
147
+ }}
148
+ >
149
+ {AppLayout.themeMode === "light" ? (
150
+ <FontAwesomeIcon icon="moon" />
151
+ ) : (
152
+ <FontAwesomeIcon icon={{ prefix: "far", iconName: "sun" }} />
153
+ )}
154
+ </IconButton>
155
+ </Tooltip>
156
+ <Tooltip
157
+ title={
158
+ i18n.language === "ar"
159
+ ? "Change Language To English"
160
+ : "Change Language To Arabic"
161
+ }
162
+ >
163
+ <IconButton
164
+ color="inherit"
165
+ onClick={() => {
166
+ let nextLanguage = i18n.language === "ar" ? "en" : "ar";
167
+ changeLanguage(nextLanguage);
168
+ dispatch(
169
+ AppLayoutActions.setAppDirection(
170
+ nextLanguage === "ar" ? "rtl" : "ltr"
171
+ )
172
+ );
173
+ }}
174
+ >
175
+ <FontAwesomeIcon icon="language" />
176
+ </IconButton>
177
+ </Tooltip>
178
+ {UserSession.value?.userOrganizations &&
179
+ UserSession.value?.userOrganizations.length > 1 ? (
180
+ <Tooltip title="Change Current Organization">
181
+ <IconButton
182
+ color="inherit"
183
+ onClick={() => {
184
+ setChangeOrgWindowState(true);
185
+ }}
186
+ >
187
+ <FontAwesomeIcon icon="globe" />
188
+ </IconButton>
189
+ </Tooltip>
190
+ ) : (
191
+ <></>
192
+ )}
193
+
194
+ <NotificationButton />
195
+ <AttachmentImageViewer
196
+ showAsAvatar={true}
197
+ attachmentCode="EMPLOYEE_PHOTOS"
198
+ refKey={UserSession.value?.id + ""}
199
+ />
200
+ <div style={{ marginLeft: 5, marginRight: 5 }}>
201
+ {isMobile ? "" : UserSession.value?.username}
202
+ </div>
203
+ <IconButton color="inherit" onClick={handleLogout}>
204
+ <FontAwesomeIcon
205
+ rotation={AppLayout.appDirection === "rtl" ? 180 : undefined}
206
+ icon="arrow-right-from-bracket"
207
+ />
208
+ </IconButton>
209
+ </Toolbar>
210
+ </AppBar>
211
+ </>
212
+ );
213
+ };
214
+
215
+ export default TopBar;
@@ -1,93 +1,93 @@
1
- {
2
- "admin": "admin",
3
- "ORGANIZATION_SINGULAR": "organization",
4
- "ORGANIZATION_PLURAL": "organizations",
5
- "ORGANIZATION_IS_ACTIVE": "Is active",
6
- "ORGANIZATION_ORGANIZATION_AR_NAME": "Organization ar name",
7
- "ORGANIZATION_ORGANIZATION_CODE": "Organization code",
8
- "ORGANIZATION_ORGANIZATION_EN_NAME": "Organization en name",
9
- "ORGANIZATION_MEMBER_SINGULAR": "organizationmember",
10
- "ORGANIZATION_MEMBER_PLURAL": "organizationmembers",
11
- "ORGANIZATION_MEMBER_IS_ACTIVE": "Is active",
12
- "ORGANIZATION_MEMBER_IS_DEFAULT": "Is default",
13
- "ORGANIZATION_MEMBER_ORGANIZATION_ID": "Organization id",
14
- "ORGANIZATION_MEMBER_ORGANIZATION_RANK_ID": "Organization rank id",
15
- "ORGANIZATION_MEMBER_ORGANIZATION_UNIT_ID": "Organization unit id",
16
- "ORGANIZATION_MEMBER_PERSON_ID": "Person id",
17
- "ORGANIZATION_MEMBER_ROLE_SINGULAR": "organizationmemberrole",
18
- "ORGANIZATION_MEMBER_ROLE_PLURAL": "organizationmemberroles",
19
- "ORGANIZATION_MEMBER_ROLE_IS_ACTIVE": "Is active",
20
- "ORGANIZATION_MEMBER_ROLE_END_DATE": "End date",
21
- "ORGANIZATION_MEMBER_ROLE_ORGANIZATION_MEMBER_ID": "Organization member id",
22
- "ORGANIZATION_MEMBER_ROLE_START_DATE": "Start date",
23
- "ORGANIZATION_MEMBER_ROLE_SYSTEM_APPLICATION_ROLE_ID": "System application role id",
24
- "ORGANIZATION_RANK_SINGULAR": "organizationrank",
25
- "ORGANIZATION_RANK_PLURAL": "organizationranks",
26
- "ORGANIZATION_RANK_ENABLED": "Enabled",
27
- "ORGANIZATION_RANK_ORGANIZATION_ID": "Organization id",
28
- "ORGANIZATION_RANK_RANK_ORDER": "Rank order",
29
- "ORGANIZATION_RANK_RANK_AR_NAME": "Rank ar name",
30
- "ORGANIZATION_RANK_RANK_CODE": "Rank code",
31
- "ORGANIZATION_RANK_RANK_EN_NAME": "Rank en name",
32
- "ORGANIZATION_UNIT_SINGULAR": "organizationunit",
33
- "ORGANIZATION_UNIT_PLURAL": "organizationunits",
34
- "ORGANIZATION_UNIT_ENABLED": "Enabled",
35
- "ORGANIZATION_UNIT_ORGANIZATION_ID": "Organization id",
36
- "ORGANIZATION_UNIT_ORGANIZATION_UNIT_PARENT_ID": "Organization unit parent id",
37
- "ORGANIZATION_UNIT_ORGANIZATION_UNIT_TYPE_ID": "Organization unit type id",
38
- "ORGANIZATION_UNIT_ORGANIZATION_UNIT_AR_NAME": "Organization unit ar name",
39
- "ORGANIZATION_UNIT_ORGANIZATION_UNIT_EN_NAME": "Organization unit en name",
40
- "ORGANIZATION_UNIT_TYPE_SINGULAR": "organizationunittype",
41
- "ORGANIZATION_UNIT_TYPE_PLURAL": "organizationunittypes",
42
- "ORGANIZATION_UNIT_TYPE_IS_ACTIVE": "Is active",
43
- "ORGANIZATION_UNIT_TYPE_ORGANIZATION_ID": "Organization id",
44
- "ORGANIZATION_UNIT_TYPE_ORGANIZATION_UNIT_TYPE_ORDER": "Organization unit type order",
45
- "ORGANIZATION_UNIT_TYPE_UNIT_TYPE_AR_NAME": "Unit type ar name",
46
- "ORGANIZATION_UNIT_TYPE_UNIT_TYPE_CODE": "Unit type code",
47
- "ORGANIZATION_UNIT_TYPE_UNIT_TYPE_EN_NAME": "Unit type en name",
48
- "PERSON_SINGULAR": "person",
49
- "PERSON_PLURAL": "persons",
50
- "PERSON_EMAIL": "Email",
51
- "PERSON_EMPLOYEE_AR_NAME": "Employee ar name",
52
- "PERSON_EMPLOYEE_EN_NAME": "Employee en name",
53
- "PERSON_EMPLOYEE_NUMBER": "Employee number",
54
- "PERSON_MOBILE_NUMBER": "Mobile number",
55
- "PERSON_PASSWORD": "Password",
56
- "PERSON_USERNAME": "Username",
57
- "SYSTEM_APPLICATION_SINGULAR": "systemapplication",
58
- "SYSTEM_APPLICATION_PLURAL": "systemapplications",
59
- "SYSTEM_APPLICATION_IS_ACTIVE": "Is active",
60
- "SYSTEM_APPLICATION_APPLICATION_CODE": "Application code",
61
- "SYSTEM_APPLICATION_APPLICATION_DESCRIPTION": "Application description",
62
- "SYSTEM_APPLICATION_APPLICATION_NAME": "Application name",
63
- "SYSTEM_APPLICATION_AUTHORITY_SINGULAR": "systemapplicationauthority",
64
- "SYSTEM_APPLICATION_AUTHORITY_PLURAL": "systemapplicationauthorities",
65
- "SYSTEM_APPLICATION_AUTHORITY_IS_ACTIVE": "Is active",
66
- "SYSTEM_APPLICATION_AUTHORITY_SYSTEM_APPLICATION_ID": "System application id",
67
- "SYSTEM_APPLICATION_AUTHORITY_SYSTEM_MODULE_ID": "System module id",
68
- "SYSTEM_APPLICATION_AUTHORITY_AUTHORITY_CODE": "Authority code",
69
- "SYSTEM_APPLICATION_AUTHORITY_AUTHORITY_DESCRIPTION": "Authority description",
70
- "SYSTEM_APPLICATION_MODULE_SINGULAR": "systemapplicationmodule",
71
- "SYSTEM_APPLICATION_MODULE_PLURAL": "systemapplicationmodules",
72
- "SYSTEM_APPLICATION_MODULE_MODULE_DESCRIPTION": "Module description",
73
- "SYSTEM_APPLICATION_MODULE_MODULE_NAME": "Module name",
74
- "SYSTEM_APPLICATION_MODULE_SYSTEM_APPLICATION_ID": "System application id",
75
- "SYSTEM_APPLICATION_ROLE_SINGULAR": "systemapplicationrole",
76
- "SYSTEM_APPLICATION_ROLE_PLURAL": "systemapplicationroles",
77
- "SYSTEM_APPLICATION_ROLE_IS_ACTIVE": "Is active",
78
- "SYSTEM_APPLICATION_ROLE_SYSTEM_APPLICATION_ID": "System application id",
79
- "SYSTEM_APPLICATION_ROLE_ROLE_DESCRIPTION": "Role description",
80
- "SYSTEM_APPLICATION_ROLE_ROLE_NAME": "Role name",
81
- "SYSTEM_APPLICATION_ROLE_AUTHORITY_SINGULAR": "systemapplicationroleauthority",
82
- "SYSTEM_APPLICATION_ROLE_AUTHORITY_PLURAL": "systemapplicationroleauthorities",
83
- "SYSTEM_APPLICATION_ROLE_AUTHORITY_IS_ACTIVE": "Is active",
84
- "SYSTEM_APPLICATION_ROLE_AUTHORITY_SYSTEM_APPLICATION_AUTHORITY_ID": "System application authority id",
85
- "SYSTEM_APPLICATION_ROLE_AUTHORITY_SYSTEM_APPLICATION_ROLE_ID": "System application role id",
86
- "ORGANIZATION_APPLICATION_MODULE_SINGULAR": "organizationapplicationmodule",
87
- "ORGANIZATION_APPLICATION_MODULE_PLURAL": "organizationapplicationmodules",
88
- "ORGANIZATION_APPLICATION_MODULE_EXPIRATION_DATE": "Expiration date",
89
- "ORGANIZATION_APPLICATION_MODULE_IS_ACTIVE": "Is active",
90
- "ORGANIZATION_APPLICATION_MODULE_ORGANIZATION_ID": "Organization id",
91
- "ORGANIZATION_APPLICATION_MODULE_SUBSCRIPTION_DATE": "Subscription date",
92
- "ORGANIZATION_APPLICATION_MODULE_SYSTEM_APPLICATION_MODULE_ID": "System application module id"
93
- }
1
+ {
2
+ "admin": "admin",
3
+ "ORGANIZATION_SINGULAR": "organization",
4
+ "ORGANIZATION_PLURAL": "organizations",
5
+ "ORGANIZATION_IS_ACTIVE": "Is active",
6
+ "ORGANIZATION_ORGANIZATION_AR_NAME": "Organization ar name",
7
+ "ORGANIZATION_ORGANIZATION_CODE": "Organization code",
8
+ "ORGANIZATION_ORGANIZATION_EN_NAME": "Organization en name",
9
+ "ORGANIZATION_MEMBER_SINGULAR": "organizationmember",
10
+ "ORGANIZATION_MEMBER_PLURAL": "organizationmembers",
11
+ "ORGANIZATION_MEMBER_IS_ACTIVE": "Is active",
12
+ "ORGANIZATION_MEMBER_IS_DEFAULT": "Is default",
13
+ "ORGANIZATION_MEMBER_ORGANIZATION_ID": "Organization id",
14
+ "ORGANIZATION_MEMBER_ORGANIZATION_RANK_ID": "Organization rank id",
15
+ "ORGANIZATION_MEMBER_ORGANIZATION_UNIT_ID": "Organization unit id",
16
+ "ORGANIZATION_MEMBER_PERSON_ID": "Person id",
17
+ "ORGANIZATION_MEMBER_ROLE_SINGULAR": "organizationmemberrole",
18
+ "ORGANIZATION_MEMBER_ROLE_PLURAL": "organizationmemberroles",
19
+ "ORGANIZATION_MEMBER_ROLE_IS_ACTIVE": "Is active",
20
+ "ORGANIZATION_MEMBER_ROLE_END_DATE": "End date",
21
+ "ORGANIZATION_MEMBER_ROLE_ORGANIZATION_MEMBER_ID": "Organization member id",
22
+ "ORGANIZATION_MEMBER_ROLE_START_DATE": "Start date",
23
+ "ORGANIZATION_MEMBER_ROLE_SYSTEM_APPLICATION_ROLE_ID": "System application role id",
24
+ "ORGANIZATION_RANK_SINGULAR": "organizationrank",
25
+ "ORGANIZATION_RANK_PLURAL": "organizationranks",
26
+ "ORGANIZATION_RANK_ENABLED": "Enabled",
27
+ "ORGANIZATION_RANK_ORGANIZATION_ID": "Organization id",
28
+ "ORGANIZATION_RANK_RANK_ORDER": "Rank order",
29
+ "ORGANIZATION_RANK_RANK_AR_NAME": "Rank ar name",
30
+ "ORGANIZATION_RANK_RANK_CODE": "Rank code",
31
+ "ORGANIZATION_RANK_RANK_EN_NAME": "Rank en name",
32
+ "ORGANIZATION_UNIT_SINGULAR": "organizationunit",
33
+ "ORGANIZATION_UNIT_PLURAL": "organizationunits",
34
+ "ORGANIZATION_UNIT_ENABLED": "Enabled",
35
+ "ORGANIZATION_UNIT_ORGANIZATION_ID": "Organization id",
36
+ "ORGANIZATION_UNIT_ORGANIZATION_UNIT_PARENT_ID": "Organization unit parent id",
37
+ "ORGANIZATION_UNIT_ORGANIZATION_UNIT_TYPE_ID": "Organization unit type id",
38
+ "ORGANIZATION_UNIT_ORGANIZATION_UNIT_AR_NAME": "Organization unit ar name",
39
+ "ORGANIZATION_UNIT_ORGANIZATION_UNIT_EN_NAME": "Organization unit en name",
40
+ "ORGANIZATION_UNIT_TYPE_SINGULAR": "organizationunittype",
41
+ "ORGANIZATION_UNIT_TYPE_PLURAL": "organizationunittypes",
42
+ "ORGANIZATION_UNIT_TYPE_IS_ACTIVE": "Is active",
43
+ "ORGANIZATION_UNIT_TYPE_ORGANIZATION_ID": "Organization id",
44
+ "ORGANIZATION_UNIT_TYPE_ORGANIZATION_UNIT_TYPE_ORDER": "Organization unit type order",
45
+ "ORGANIZATION_UNIT_TYPE_UNIT_TYPE_AR_NAME": "Unit type ar name",
46
+ "ORGANIZATION_UNIT_TYPE_UNIT_TYPE_CODE": "Unit type code",
47
+ "ORGANIZATION_UNIT_TYPE_UNIT_TYPE_EN_NAME": "Unit type en name",
48
+ "PERSON_SINGULAR": "person",
49
+ "PERSON_PLURAL": "persons",
50
+ "PERSON_EMAIL": "Email",
51
+ "PERSON_EMPLOYEE_AR_NAME": "Employee ar name",
52
+ "PERSON_EMPLOYEE_EN_NAME": "Employee en name",
53
+ "PERSON_EMPLOYEE_NUMBER": "Employee number",
54
+ "PERSON_MOBILE_NUMBER": "Mobile number",
55
+ "PERSON_PASSWORD": "Password",
56
+ "PERSON_USERNAME": "Username",
57
+ "SYSTEM_APPLICATION_SINGULAR": "systemapplication",
58
+ "SYSTEM_APPLICATION_PLURAL": "systemapplications",
59
+ "SYSTEM_APPLICATION_IS_ACTIVE": "Is active",
60
+ "SYSTEM_APPLICATION_APPLICATION_CODE": "Application code",
61
+ "SYSTEM_APPLICATION_APPLICATION_DESCRIPTION": "Application description",
62
+ "SYSTEM_APPLICATION_APPLICATION_NAME": "Application name",
63
+ "SYSTEM_APPLICATION_AUTHORITY_SINGULAR": "systemapplicationauthority",
64
+ "SYSTEM_APPLICATION_AUTHORITY_PLURAL": "systemapplicationauthorities",
65
+ "SYSTEM_APPLICATION_AUTHORITY_IS_ACTIVE": "Is active",
66
+ "SYSTEM_APPLICATION_AUTHORITY_SYSTEM_APPLICATION_ID": "System application id",
67
+ "SYSTEM_APPLICATION_AUTHORITY_SYSTEM_MODULE_ID": "System module id",
68
+ "SYSTEM_APPLICATION_AUTHORITY_AUTHORITY_CODE": "Authority code",
69
+ "SYSTEM_APPLICATION_AUTHORITY_AUTHORITY_DESCRIPTION": "Authority description",
70
+ "SYSTEM_APPLICATION_MODULE_SINGULAR": "systemapplicationmodule",
71
+ "SYSTEM_APPLICATION_MODULE_PLURAL": "systemapplicationmodules",
72
+ "SYSTEM_APPLICATION_MODULE_MODULE_DESCRIPTION": "Module description",
73
+ "SYSTEM_APPLICATION_MODULE_MODULE_NAME": "Module name",
74
+ "SYSTEM_APPLICATION_MODULE_SYSTEM_APPLICATION_ID": "System application id",
75
+ "SYSTEM_APPLICATION_ROLE_SINGULAR": "systemapplicationrole",
76
+ "SYSTEM_APPLICATION_ROLE_PLURAL": "systemapplicationroles",
77
+ "SYSTEM_APPLICATION_ROLE_IS_ACTIVE": "Is active",
78
+ "SYSTEM_APPLICATION_ROLE_SYSTEM_APPLICATION_ID": "System application id",
79
+ "SYSTEM_APPLICATION_ROLE_ROLE_DESCRIPTION": "Role description",
80
+ "SYSTEM_APPLICATION_ROLE_ROLE_NAME": "Role name",
81
+ "SYSTEM_APPLICATION_ROLE_AUTHORITY_SINGULAR": "systemapplicationroleauthority",
82
+ "SYSTEM_APPLICATION_ROLE_AUTHORITY_PLURAL": "systemapplicationroleauthorities",
83
+ "SYSTEM_APPLICATION_ROLE_AUTHORITY_IS_ACTIVE": "Is active",
84
+ "SYSTEM_APPLICATION_ROLE_AUTHORITY_SYSTEM_APPLICATION_AUTHORITY_ID": "System application authority id",
85
+ "SYSTEM_APPLICATION_ROLE_AUTHORITY_SYSTEM_APPLICATION_ROLE_ID": "System application role id",
86
+ "ORGANIZATION_APPLICATION_MODULE_SINGULAR": "organizationapplicationmodule",
87
+ "ORGANIZATION_APPLICATION_MODULE_PLURAL": "organizationapplicationmodules",
88
+ "ORGANIZATION_APPLICATION_MODULE_EXPIRATION_DATE": "Expiration date",
89
+ "ORGANIZATION_APPLICATION_MODULE_IS_ACTIVE": "Is active",
90
+ "ORGANIZATION_APPLICATION_MODULE_ORGANIZATION_ID": "Organization id",
91
+ "ORGANIZATION_APPLICATION_MODULE_SUBSCRIPTION_DATE": "Subscription date",
92
+ "ORGANIZATION_APPLICATION_MODULE_SYSTEM_APPLICATION_MODULE_ID": "System application module id"
93
+ }