ui-soxo-bootstrap-core 2.4.24 → 2.4.25-dev.10

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 (36) hide show
  1. package/.github/workflows/npm-publish.yml +37 -15
  2. package/core/components/extra-info/extra-info-details.js +109 -126
  3. package/core/components/landing-api/landing-api.js +22 -30
  4. package/core/lib/Store.js +20 -18
  5. package/core/lib/components/index.js +4 -1
  6. package/core/lib/components/sidemenu/sidemenu.js +153 -256
  7. package/core/lib/components/sidemenu/sidemenu.scss +39 -26
  8. package/core/lib/elements/basic/rangepicker/rangepicker.js +118 -29
  9. package/core/lib/elements/basic/switch/switch.js +34 -24
  10. package/core/lib/hooks/index.js +2 -12
  11. package/core/lib/hooks/use-otp-timer.js +99 -0
  12. package/core/lib/pages/login/login.js +255 -139
  13. package/core/lib/pages/login/login.scss +140 -32
  14. package/core/models/dashboard/dashboard.js +14 -0
  15. package/core/models/doctor/components/doctor-add/doctor-add.js +403 -0
  16. package/core/models/doctor/components/doctor-add/doctor-add.scss +32 -0
  17. package/core/models/menus/components/menu-add/menu-add.js +230 -268
  18. package/core/models/menus/components/menu-lists/menu-lists.js +126 -89
  19. package/core/models/menus/components/menu-lists/menu-lists.scss +9 -0
  20. package/core/models/menus/menus.js +247 -267
  21. package/core/models/roles/components/role-add/role-add.js +269 -227
  22. package/core/models/roles/components/role-list/role-list.js +8 -6
  23. package/core/models/roles/roles.js +182 -174
  24. package/core/models/staff/components/staff-add/staff-add.js +352 -0
  25. package/core/models/staff/components/staff-add/staff-add.scss +0 -0
  26. package/core/models/users/components/user-add/user-add.js +686 -364
  27. package/core/models/users/components/user-add/user-edit.js +90 -0
  28. package/core/models/users/users.js +318 -165
  29. package/core/modules/index.js +5 -8
  30. package/core/modules/reporting/components/index.js +5 -0
  31. package/core/modules/reporting/components/reporting-dashboard/reporting-dashboard.js +65 -2
  32. package/core/modules/steps/action-buttons.js +79 -0
  33. package/core/modules/steps/steps.js +553 -0
  34. package/core/modules/steps/steps.scss +158 -0
  35. package/core/modules/steps/timeline.js +49 -0
  36. package/package.json +2 -2
@@ -1,137 +1,89 @@
1
1
  /**
2
2
  *
3
3
  * Sidemenu component
4
- *
4
+ *
5
5
  * @author Ashique Mohammed
6
- * @co-author Sneha
7
- *
8
- *
6
+ * @co-author Sneha
7
+ *
8
+ *
9
9
  */
10
10
 
11
- import React, { useState, useEffect, useContext } from "react";
11
+ import React, { useState, useEffect, useContext } from 'react';
12
12
 
13
- import { animationControls, motion, useAnimation } from "framer-motion";
13
+ import { animationControls, motion, useAnimation } from 'framer-motion';
14
14
 
15
- import { GlobalContext } from "./../../Store";
15
+ import { GlobalContext } from './../../Store';
16
16
 
17
- import { Menu, message, Skeleton, Space } from "antd";
17
+ import { Menu, message, Skeleton, Space, Popover } from 'antd';
18
18
 
19
- import FirebaseUtils from "./../../utils/firebase.utils";
19
+ import FirebaseUtils from './../../utils/firebase.utils';
20
20
 
21
- import { useHistory } from "react-router-dom";
21
+ import { useHistory } from 'react-router-dom';
22
22
 
23
23
  import { useTranslation, Trans } from 'react-i18next';
24
24
 
25
- import { Menus } from "../../models"
26
-
27
-
25
+ import { Menus } from '../../models';
28
26
 
29
-
30
- import "./sidemenu.scss";
27
+ import './sidemenu.scss';
31
28
 
32
29
  const { SubMenu } = Menu;
33
30
 
34
-
35
31
  /**
36
- *
37
- * @param {*} collapsed
38
- * @param {*} icon
39
- * @param {*} caption
40
- * @returns
32
+ *
33
+ * @param {*} collapsed
34
+ * @param {*} icon
35
+ * @param {*} caption
36
+ * @returns
41
37
  */
42
38
  function CollapsedIconMenu({ menu, collapsed, icon, caption }) {
43
-
44
-
45
-
46
39
  // Import t and i18n from useTranslation
47
40
  const { t, i18n } = useTranslation();
48
41
  const { state } = useContext(GlobalContext);
49
-
50
-
51
-
42
+ const menuText = t(caption);
52
43
  return (
53
-
54
44
  <>
55
-
56
- {/* If value of collapsed is false show caption & icon else hiding caption and showing only icon*/}
57
- {!collapsed ? (
58
-
59
- <div
60
-
61
- className="menu-collapsed" >
62
-
63
- <div>
64
-
65
- {
66
- menu && menu.image_path ?
67
- <img style={{ width: '25px' }} src={menu.image_path}></img>
68
- :
69
- <i className={`fa-solid fas ${icon}`} />
70
- }
71
-
45
+ <Popover content={menuText} placement="right">
46
+ {/* If value of collapsed is false show caption & icon else hiding caption and showing only icon*/}
47
+ {!collapsed ? (
48
+ <div className="menu-collapsed">
49
+ <div>
50
+ {menu && menu.image_path ? <img style={{ width: '25px' }} src={menu.image_path}></img> : <i className={`fa-solid fas ${icon}`} />}
51
+ </div>
52
+
53
+ <div style={{ color: state.theme.colors.leftSectionColor }}>
54
+ <span className="caption">
55
+ {/* {caption} */}
56
+ {/* <Trans i18nKey="Appointments"></Trans> */}
57
+ {t(`${caption}`)}
58
+ </span>
59
+ </div>
72
60
  </div>
61
+ ) : (
62
+ <div className="menu-collapsed">
63
+ <span className="anticon">
64
+ {menu && menu.image_path ? <img style={{ width: '25px' }} src={menu.image_path}></img> : <i className={`fa-solid fas ${icon}`} />}
65
+ </span>
73
66
 
74
- <div style={{ color: state.theme.colors.leftSectionColor }}>
75
-
76
- <span className="caption">
77
-
78
- {/* {caption} */}
79
- {/* <Trans i18nKey="Appointments"></Trans> */}
67
+ <span style={{ color: state.theme.colors.colorPrimaryText, paddingLeft: '6px' }}>
68
+ {/* <>{caption}</> */}
80
69
  {t(`${caption}`)}
81
-
82
70
  </span>
83
-
84
71
  </div>
85
-
86
- </div>
87
-
88
- ) : (
89
-
90
- <div
91
-
92
- className="menu-collapsed">
93
-
94
- <span className="anticon">
95
-
96
- {
97
- menu && menu.image_path ?
98
- <img style={{ width: '25px' }} src={menu.image_path}></img>
99
- :
100
- <i className={`fa-solid fas ${icon}`} />
101
- }
102
-
103
- </span>
104
-
105
- <span style={{ color: state.theme.colors.colorPrimaryText,paddingLeft: '6px' }}>
106
-
107
- {/* <>{caption}</> */}
108
- {t(`${caption}`)}
109
-
110
- </span>
111
-
112
- </div>
113
-
114
- )}
115
-
72
+ )}
73
+ </Popover>
116
74
  </>
117
-
118
- )
119
-
75
+ );
120
76
  }
121
77
 
122
- export default function SideMenu({
123
- loading,
124
- modules = [],
125
- callback,
126
- appSettings,
127
- collapsed,
128
- }) {
129
- const { brandLogo, footerLogo, renderCustomHeader = () => { } } = appSettings;
78
+ export default function SideMenu({ loading, modules = [], callback, appSettings, collapsed }) {
79
+ const { brandLogo, footerLogo, renderCustomHeader = () => {} } = appSettings;
130
80
 
131
- let history = useHistory();
81
+ let history = useHistory();
132
82
 
133
- const [selected, setSelected] = useState([1]);
83
+ // const [selected, setSelected] = useState([1]);
134
84
 
85
+ const [selectedKeys, setSelectedKeys] = useState([]);
86
+ const [openKeys, setOpenKeys] = useState([]);
135
87
  const [menu, setMenu] = useState({});
136
88
 
137
89
  const { user = { locations: [] }, dispatch, state } = useContext(GlobalContext);
@@ -147,11 +99,16 @@ export default function SideMenu({
147
99
  // }
148
100
  }, [user]);
149
101
 
102
+ // Keep current menu item selected after reload or navigation
103
+ useEffect(() => {
104
+ const currentPath = history.location.pathname;
105
+ setSelectedKeys([currentPath]);
106
+ }, [history.location.pathname]);
107
+
150
108
  /**
151
109
  * Logout Function
152
110
  */
153
111
  async function handleLogout() {
154
-
155
112
  let dbPtrValue = appSettings.headers.db_ptr;
156
113
  const isEnvThemeTrue = process.env.REACT_APP_THEME === 'true';
157
114
 
@@ -162,11 +119,9 @@ export default function SideMenu({
162
119
 
163
120
  // localStorage.clear();
164
121
 
165
- if (process.env.REACT_APP_PRIMARY_BACKEND === "SQL") {
166
-
122
+ if (process.env.REACT_APP_PRIMARY_BACKEND === 'SQL') {
167
123
  // const result = Users.logout()
168
124
  localStorage.clear();
169
-
170
125
 
171
126
  localStorage.setItem('db_ptr', dbPtrValue);
172
127
 
@@ -176,16 +131,16 @@ export default function SideMenu({
176
131
  ...{ loggedCheckDone: true },
177
132
  };
178
133
 
179
- dispatch({ type: "user", payload: userInfo });
134
+ dispatch({ type: 'user', payload: userInfo });
180
135
 
181
- history.push("/login");
136
+ history.push('/login');
182
137
 
183
- message.success("You have logged out successfully.");
138
+ message.success('You have logged out successfully.');
184
139
  } else {
185
140
  FirebaseUtils.logout().then(() => {
186
- history.push("/login");
141
+ history.push('/login');
187
142
 
188
- message.success("You have logged out successfully.");
143
+ message.success('You have logged out successfully.');
189
144
  });
190
145
  }
191
146
  }
@@ -194,15 +149,38 @@ export default function SideMenu({
194
149
  * Menu Click Function
195
150
  */
196
151
 
152
+ // const onMenuClick = (menu, index) => {
153
+ // setSelected([index]);
154
+
155
+ // history.push(menu.path);
156
+
157
+ // setMenu(menu);
158
+
159
+ // callback();
160
+ // };
161
+
197
162
  const onMenuClick = (menu, index) => {
198
- setSelected([index]);
163
+ const key = menu.path || `menu-${menu.id || index}`;
164
+ const parentKey = menu.parentKey;
199
165
 
200
- history.push(menu.path);
166
+ // Keep submenu highlighted
167
+ setSelectedKeys([key]);
168
+
169
+ // Keep parent open
170
+ if (parentKey) {
171
+ setOpenKeys([parentKey]);
172
+ }
201
173
 
174
+ history.push(menu.path);
202
175
  setMenu(menu);
203
176
 
204
- callback();
177
+ if (callback) callback();
178
+ };
179
+
180
+ const onOpenChange = (keys) => {
181
+ setOpenKeys(keys);
205
182
  };
183
+
206
184
  /**
207
185
  * Function renders the footer logo
208
186
  *
@@ -210,15 +188,14 @@ export default function SideMenu({
210
188
  */
211
189
  function renderFooter(footerLogo) {
212
190
  return (
213
- <div className={`sidebar-footer ${!collapsed ? "open" : "close"}`}>
214
- <img className="footer-logo" src={footerLogo} alt={"footer-logo"} />
191
+ <div className={`sidebar-footer ${!collapsed ? 'open' : 'close'}`}>
192
+ <img className="footer-logo" src={footerLogo} alt={'footer-logo'} />
215
193
  </div>
216
194
  );
217
195
  }
218
196
 
219
197
  let icon;
220
198
 
221
-
222
199
  let index = 0;
223
200
 
224
201
  useEffect(() => {
@@ -227,7 +204,6 @@ export default function SideMenu({
227
204
  // document.documentElement.style.setProperty('--custom-text-color', state.theme.colors.colorText);
228
205
  }, [state.theme]);
229
206
 
230
-
231
207
  return (
232
208
  <div className="sidemenu">
233
209
  {loading ? (
@@ -235,16 +211,19 @@ export default function SideMenu({
235
211
  <Skeleton.Avatar />
236
212
  <Skeleton.Button />
237
213
  {/* <Skeleton.Input /> */}
238
- </Space>) :
239
-
240
- <div className="intro" style={{ backgroundColor: state.theme.colors.leftSectionBackground ,borderBottom: `2px solid ${state.theme.colors.borderColor}`}}>
214
+ </Space>
215
+ ) : (
216
+ <div
217
+ className="intro"
218
+ style={{ backgroundColor: state.theme.colors.leftSectionBackground, borderBottom: `2px solid ${state.theme.colors.borderColor}` }}
219
+ >
241
220
  {/* Logo Bar */}
242
221
  <div className="logo-wrapper">
243
222
  {/* Changing the size of logo bar according to the value of collapsed */}
244
223
  <img
245
- className={`sidemenu-brand-logo ${!collapsed ? "open" : "close"}`}
224
+ className={`sidemenu-brand-logo ${!collapsed ? 'open' : 'close'}`}
246
225
  onClick={() => {
247
- history.push("/");
226
+ history.push('/');
248
227
  }}
249
228
  src={brandLogo}
250
229
  alt="Logo"
@@ -255,25 +234,26 @@ export default function SideMenu({
255
234
  {/* If value of collapsed is true show version else not showing */}
256
235
 
257
236
  {!collapsed && process.env.REACT_APP_package_version && (
258
- <small style={{
259
-
260
- color: state.theme.colors.leftSectionColor,
261
- }}>{process.env.REACT_APP_package_version}</small>
262
- )}
237
+ <small
238
+ style={{
239
+ color: state.theme.colors.leftSectionColor,
240
+ }}
241
+ >
242
+ {process.env.REACT_APP_package_version}
243
+ </small>
244
+ )}
263
245
  </div>
264
246
  {/* Logo Bar Ends */}
265
247
 
266
248
  {/* If value of collapsed is true render header else not rendering */}
267
249
 
268
- {!collapsed ? renderCustomHeader() : ""}
269
-
250
+ {!collapsed ? renderCustomHeader() : ''}
270
251
  </div>
271
- }
252
+ )}
272
253
 
273
254
  {/* Intro Component */}
274
255
  {/* Intro Component Ends */}
275
256
 
276
-
277
257
  {/* Search for Queries */}
278
258
 
279
259
  {/* <div className="menu-search">
@@ -285,15 +265,11 @@ export default function SideMenu({
285
265
 
286
266
  {/* Search for Queries Ends */}
287
267
 
288
- <div className={`menu-item ${!collapsed ? "open" : "close"}`} style={{ backgroundColor: state.theme.colors.leftSectionBackground}}>
289
-
268
+ <div className={`menu-item ${!collapsed ? 'open' : 'close'}`} style={{ backgroundColor: state.theme.colors.leftSectionBackground }}>
290
269
  {loading ? (
291
270
  <></>
292
271
  ) : (
293
-
294
-
295
272
  <Menu
296
-
297
273
  // selectedKeys={[selected]}
298
274
  // style={{ width: 256 }}
299
275
  // defaultSelectedKeys={selected}
@@ -301,10 +277,12 @@ export default function SideMenu({
301
277
  inlineCollapsed={collapsed}
302
278
  mode="inline"
303
279
  theme={process.env.REACT_APP_THEME}
304
- style={{ backgroundColor: state.theme.colors.leftSectionBackground ,color:state.theme.colors.leftSectionColor}}
305
- // theme={''}
280
+ selectedKeys={selectedKeys}
281
+ openKeys={openKeys}
282
+ onOpenChange={onOpenChange}
283
+ style={{ backgroundColor: state.theme.colors.leftSectionBackground, color: state.theme.colors.leftSectionColor }}
284
+ // theme={''}
306
285
  >
307
-
308
286
  {/* <Menu.Item
309
287
  onClick={() => {
310
288
  setSelected([1]);
@@ -324,7 +302,6 @@ export default function SideMenu({
324
302
  />
325
303
  </Menu.Item> */}
326
304
 
327
-
328
305
  {/* {
329
306
  Menus.screenMenus(modules).map((menu, index) => {
330
307
 
@@ -332,7 +309,7 @@ export default function SideMenu({
332
309
  })
333
310
  } */}
334
311
 
335
- {Menus.screenMenus(modules, "order")
312
+ {Menus.screenMenus(modules, 'order')
336
313
 
337
314
  .filter((record) => {
338
315
  icon = record;
@@ -354,207 +331,133 @@ export default function SideMenu({
354
331
  .map((menu, index) => {
355
332
  // return <MenuItem menu={menu} index={index} />
356
333
 
357
- let sub_menus =
358
- menu && menu.sub_menus
359
- ? Menus.screenMenus(menu.sub_menus)
360
- : [];
334
+ let sub_menus = menu && menu.sub_menus ? Menus.screenMenus(menu.sub_menus) : [];
361
335
 
362
336
  if (menu && sub_menus && sub_menus.length) {
363
-
364
337
  let randomIndex = parseInt(Math.random() * 10000000000);
365
338
 
366
339
  return (
367
-
368
340
  <SubMenu
369
-
370
341
  className="popup"
371
- style={{ color:state.theme.colors.leftSectionColor}}
372
-
373
- key={`first-level-${randomIndex}-${menu.caption}`}
342
+ style={{ color: state.theme.colors.leftSectionColor }}
343
+ // key={`first-level-${randomIndex}-${menu.caption}`}
374
344
 
345
+ key={menu.path || menu.caption}
375
346
  title={
376
-
377
347
  <>
378
-
379
348
  <CollapsedIconMenu
380
-
381
349
  menu={menu}
382
-
383
350
  caption={menu.caption}
384
-
385
351
  icon={menu.icon_name || 'fa-solid fas fa-user'}
386
-
387
-
388
352
  collapsed={collapsed}
389
-
390
353
  />
391
-
392
-
393
-
394
354
  </>
395
-
396
355
  }
397
-
398
356
  >
399
357
  {sub_menus.map((submenu, innerIndex) => {
400
358
  let randomIndex = parseInt(Math.random() * 10000000000);
401
359
 
402
- let third_menus =
403
- submenu && submenu.sub_menus
404
- ? Menus.screenMenus(submenu.sub_menus)
405
- : [];
360
+ let third_menus = submenu && submenu.sub_menus ? Menus.screenMenus(submenu.sub_menus) : [];
406
361
 
407
362
  if (third_menus && third_menus.length) {
408
363
  return (
409
364
  <SubMenu
410
-
411
365
  className="popup"
366
+ // key={`second-level-${randomIndex}-${submenu.id}`}
412
367
 
413
- key={`second-level-${randomIndex}-${submenu.id}`}
414
-
368
+ key={submenu.path || submenu.caption}
415
369
  title={
416
-
417
370
  <span>
418
-
419
371
  <CollapsedIconMenu
420
-
421
372
  menu={menu}
422
-
423
373
  caption={submenu.caption}
424
-
425
374
  icon={submenu.icon_name || 'fa-solid fas fa-user'}
426
-
427
375
  collapsed={collapsed}
428
-
429
376
  />
430
-
431
-
432
377
  </span>
433
378
  }
434
379
  >
435
380
  {third_menus.map((menu) => {
436
- let randomIndex = parseInt(
437
- Math.random() * 10000000000
438
- );
381
+ let randomIndex = parseInt(Math.random() * 10000000000);
439
382
 
440
383
  return (
441
384
  <Menu.Item
385
+ // onClick={() => {
386
+ // onMenuClick(menu, index);
387
+ // }}
442
388
  onClick={() => {
443
- onMenuClick(menu, index);
389
+ onMenuClick({ ...menu, parentKey: submenu.path || submenu.caption }, index);
444
390
  }}
445
- key={`second-level-${randomIndex}-${index}`}
446
- >
391
+ // key={`second-level-${randomIndex}-${index}`}
447
392
 
393
+ key={menu.path || menu.caption}
394
+ >
448
395
  <CollapsedIconMenu
449
-
450
396
  menu={menu}
451
-
452
397
  caption={menu.caption}
453
-
454
398
  icon={menu.icon_name || 'fa-solid fas fa-user'}
455
-
456
-
457
399
  collapsed={collapsed}
458
-
459
400
  />
460
-
461
401
  </Menu.Item>
462
402
  );
463
403
  })}
464
404
  </SubMenu>
465
405
  );
466
406
  } else {
467
- let randomIndex = parseInt(
468
- Math.random() * 10000000000
469
- );
407
+ let randomIndex = parseInt(Math.random() * 10000000000);
470
408
 
471
409
  return (
472
410
  <Menu.Item
411
+ // onClick={() => {
412
+ // onMenuClick(submenu, index);
413
+ // }}
473
414
  onClick={() => {
474
- onMenuClick(submenu, index);
415
+ onMenuClick({ ...submenu, parentKey: menu.path || menu.caption }, index);
475
416
  }}
476
- key={`first-level-${randomIndex}-${innerIndex}`}
417
+ // key={`first-level-${randomIndex}-${innerIndex}`}
418
+ key={submenu.path || submenu.caption}
477
419
  >
478
-
479
420
  <CollapsedIconMenu
480
-
481
421
  menu={menu}
482
-
483
422
  caption={submenu.caption}
484
-
485
423
  icon={submenu.icon_name || 'fa-solid fas fa-user'}
486
-
487
-
488
424
  collapsed={collapsed}
489
-
490
425
  />
491
-
492
426
  </Menu.Item>
493
-
494
427
  );
495
-
496
428
  }
497
-
498
429
  })}
499
-
500
430
  </SubMenu>
501
-
502
431
  );
503
432
  } else {
504
433
  let randomIndex = parseInt(Math.random() * 10000000000);
505
434
 
506
435
  return (
507
-
508
436
  <Menu.Item
437
+ // onClick={() => {
438
+ // onMenuClick(menu, index);
439
+ // }}
440
+
509
441
  onClick={() => {
510
- onMenuClick(menu, index);
442
+ onMenuClick({ ...menu, parentKey: menu.path || menu.caption }, index);
511
443
  }}
512
- key={`${menu.id}-${randomIndex}`}
444
+ // key={`${menu.id}-${randomIndex}`}
445
+ key={menu.path || menu.caption}
513
446
  >
514
-
515
- <CollapsedIconMenu
516
-
517
- menu={menu}
518
-
519
- caption={menu.caption}
520
-
521
- icon={menu.icon_name || 'fa-solid fas fa-user'}
522
-
523
-
524
- collapsed={collapsed}
525
-
526
- />
527
-
528
-
447
+ <CollapsedIconMenu menu={menu} caption={menu.caption} icon={menu.icon_name || 'fa-solid fas fa-user'} collapsed={collapsed} />
529
448
  </Menu.Item>
530
-
531
449
  );
532
450
  }
533
451
  })}
534
452
 
535
-
536
- {
537
- loading ? <div class="skeleton-wrapper"></div> : <Menu.Item onClick={handleLogout} key="logout-button">
538
-
539
- <CollapsedIconMenu
540
-
541
- caption="Logout"
542
-
543
- icon='fa-solid fas fa-user'
544
-
545
- collapsed={collapsed}
546
-
547
- />
548
-
549
-
453
+ {loading ? (
454
+ <div class="skeleton-wrapper"></div>
455
+ ) : (
456
+ <Menu.Item onClick={handleLogout} key="logout-button">
457
+ <CollapsedIconMenu caption="Logout" icon="fa-solid fas fa-user" collapsed={collapsed} />
550
458
  </Menu.Item>
551
- }
552
-
553
-
554
-
555
-
459
+ )}
556
460
  </Menu>
557
-
558
461
  )}
559
462
 
560
463
  {/* Footer Logo */}
@@ -570,16 +473,14 @@ export default function SideMenu({
570
473
  * sub menus
571
474
  */
572
475
  function MenuItem({ menu, index, history }) {
573
-
574
476
  function renderMenus({ menu, index }) {
575
477
  let sub_menus = [];
576
478
 
577
479
  if (menu.sub_menus) {
578
- sub_menus = Menus.screenMenus(menu.sub_menus)
480
+ sub_menus = Menus.screenMenus(menu.sub_menus);
579
481
  }
580
482
 
581
483
  if (menu && sub_menus && sub_menus.length) {
582
-
583
484
  // return 'hello';
584
485
  return (
585
486
  <SubMenu
@@ -591,9 +492,7 @@ function MenuItem({ menu, index, history }) {
591
492
  }
592
493
  >
593
494
  {menu.sub_menus.map((menu, index) => {
594
- return (
595
- <MenuItem menu={menu} index={menu.id} />
596
- );
495
+ return <MenuItem menu={menu} index={menu.id} />;
597
496
  })}
598
497
  </SubMenu>
599
498
  );
@@ -611,7 +510,5 @@ function MenuItem({ menu, index, history }) {
611
510
  }
612
511
  }
613
512
 
614
-
615
513
  return renderMenus({ menu, index });
616
-
617
- }
514
+ }