@buerokratt-ria/menu 0.0.3 → 0.1.2

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/CHANGELOG.md CHANGED
@@ -2,14 +2,10 @@
2
2
 
3
3
  All changes to this project will be documented in this file.
4
4
 
5
- ## [0.0.3] - 20-12-2023
5
+ ## [0.1.2] - 01-02-2024
6
6
 
7
- - fixed styles imports
7
+ - Added new element in menu /pending
8
8
 
9
- ## [0.0.2] - 20-12-2023
9
+ ## [0.1.1] - 28-12-2023
10
10
 
11
- - Updated import to work as @buerokratt-ria/menu
12
-
13
- ## [0.0.1] - 07-12-2023
14
-
15
- - Initial package structure for menu.
11
+ - Initial package structure for menu for ruuter v2.
Binary file
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@buerokratt-ria/menu",
3
- "version": "0.0.3",
3
+ "version": "0.1.2",
4
4
  "description": "Generic MainNavigation component that would be injected as dependency.",
5
- "main": "index.ts",
5
+ "main": "index.js",
6
6
  "scripts": {},
7
7
  "author": "ExiRain",
8
8
  "license": "ISC",
@@ -21,6 +21,13 @@
21
21
  },
22
22
  "path": "/active"
23
23
  },
24
+ {
25
+ "label": {
26
+ "et": "Ootel",
27
+ "en": "Pending"
28
+ },
29
+ "path": "/pending"
30
+ },
24
31
  {
25
32
  "label": {
26
33
  "et": "Ajalugu",
@@ -1,9 +1,8 @@
1
- import React, {FC, MouseEvent, useEffect, useState} from 'react';
1
+ import React, {FC, MouseEvent, useState} from 'react';
2
2
 
3
3
  import {NavLink, useLocation} from 'react-router-dom';
4
- import {MdClose, MdKeyboardArrowDown, MdMiscellaneousServices} from 'react-icons/md';
5
4
  import clsx from 'clsx';
6
- import { MdOutlineForum, MdOutlineAdb, MdOutlineEqualizer, MdSettings, MdOutlineMonitorWeight } from 'react-icons/md';
5
+ import { MdOutlineForum, MdOutlineAdb, MdOutlineEqualizer, MdClose, MdKeyboardArrowDown, MdMiscellaneousServices, MdSettings, MdOutlineMonitorWeight } from 'react-icons/md';
7
6
  import Icon from './components/icons/icon/icon';
8
7
  import './main-navigation.scss';
9
8
  import { useQuery } from '@tanstack/react-query';
@@ -11,15 +10,15 @@ import {useTranslation} from "react-i18next";
11
10
  import menuStructure from './data/menu-structure.json';
12
11
 
13
12
  interface MenuItem {
14
- id?: string;
15
- label: TranslatedLabel;
16
- path?: string;
17
- target?: '_blank' | '_self';
18
- children?: MenuItem[];
13
+ id?: string;
14
+ label: TranslatedLabel;
15
+ path?: string;
16
+ target?: '_blank' | '_self';
17
+ children?: MenuItem[];
19
18
  }
20
19
 
21
20
  interface TranslatedLabel {
22
- [lang: string] : string;
21
+ [lang: string] : string;
23
22
  }
24
23
 
25
24
  const MainNavigation: FC<{items: MenuItem[], serviceId: string[]}> = ( {items, serviceId}) => {
@@ -66,23 +65,27 @@ const MainNavigation: FC<{items: MenuItem[], serviceId: string[]}> = ( {items, s
66
65
  let activeMenuId;
67
66
 
68
67
  const { data } = useQuery({
69
- queryKey: ['cs-get-user-role', 'prod'],
68
+ queryKey: ['account/user-role', 'prod'],
70
69
  onSuccess: (res: any) => {
71
- const filteredItems = items.filter((item) => {
72
- const role = res.data.get_user[0].authorities[0]
73
- switch (role) {
74
- case 'ROLE_ADMINISTRATOR': return item.id
75
- case 'ROLE_SERVICE_MANAGER': return item.id != 'settings' && item.id != 'training'
76
- case 'ROLE_CUSTOMER_SUPPORT_AGENT': return item.id != 'settings' && item.id != 'analytics'
77
- case 'ROLE_CHATBOT_TRAINER': return item.id != 'settings' && item.id != 'conversations'
78
- case 'ROLE_ANALYST': return item.id == 'analytics'
79
- case 'ROLE_UNAUTHENTICATED': return
80
- default: return
81
- }
82
- }) ?? []
83
- setMenuItems(filteredItems)
84
- }
85
-
70
+ const filteredItems =
71
+ items.filter((item) => {
72
+ const role = res.response;
73
+ if (role.includes('ROLE_ADMINISTRATOR')) {
74
+ return item.id;
75
+ } else if (role.includes('ROLE_SERVICE_MANAGER')) {
76
+ return item.id != "settings" && item.id != "training";
77
+ } else if (role.includes('ROLE_CUSTOMER_SUPPORT_AGENT')) {
78
+ return item.id != "settings" && item.id != "analytics";
79
+ } else if (role.includes('ROLE_CHATBOT_TRAINER')) {
80
+ return item.id != "settings" && item.id != "conversations";
81
+ } else if (role.includes('ROLE_ANALYST')) {
82
+ return item.id == "analytics" || item.id == "monitoring";
83
+ } else {
84
+ return;
85
+ }
86
+ }) ?? [];
87
+ setMenuItems(filteredItems);
88
+ },
86
89
  });
87
90
 
88
91
  const location = useLocation();
@@ -95,33 +98,33 @@ const MainNavigation: FC<{items: MenuItem[], serviceId: string[]}> = ( {items, s
95
98
 
96
99
  const renderMenuTree = (menuItems: MenuItem[]) => {
97
100
  return menuItems.map((menuItem) => (
98
- <li key={menuItem.label[currentlySelectedLanguage]}>
99
- {!!menuItem.children ? (
100
- <>
101
- <button
102
- className={clsx('nav__toggle', { 'nav__toggle--icon': !!menuItem.id })}
103
- aria-expanded={menuItem.path && (isSameRoot(menuItem)) ? 'true' : 'false'}
104
- onClick={handleNavToggle}
105
- >
106
- { menuItem.id && (
107
- <Icon icon={menuData.find(dataItem => dataItem.id === menuItem.id)?.icon} />
108
- )}
109
-
110
- <span>{menuItem.label[currentlySelectedLanguage]}</span>
111
- <Icon icon={<MdKeyboardArrowDown />} />
112
- </button>
113
- <ul className='nav__submenu'>
114
- {renderMenuTree(menuItem.children.map((item) => ({id: menuItem.id, ...item})))}
115
- </ul>
116
- </>
117
- ) : (
118
-
119
- (serviceId.includes(menuItem.id)) ?
120
- <NavLink to={menuItem.path || '#'}>{menuItem.label[currentlySelectedLanguage] }</NavLink> :
121
- <a href={menuData.find(dataItem => dataItem.id === menuItem.id)?.url + menuItem.path}>{menuItem.label[currentlySelectedLanguage]}</a>
122
-
123
- )}
124
- </li>),
101
+ <li key={menuItem.label[currentlySelectedLanguage]}>
102
+ {!!menuItem.children ? (
103
+ <>
104
+ <button
105
+ className={clsx('nav__toggle', { 'nav__toggle--icon': !!menuItem.id })}
106
+ aria-expanded={menuItem.path && (isSameRoot(menuItem)) ? 'true' : 'false'}
107
+ onClick={handleNavToggle}
108
+ >
109
+ { menuItem.id && (
110
+ <Icon icon={menuData.find(dataItem => dataItem.id === menuItem.id)?.icon} />
111
+ )}
112
+
113
+ <span>{menuItem.label[currentlySelectedLanguage]}</span>
114
+ <Icon icon={<MdKeyboardArrowDown />} />
115
+ </button>
116
+ <ul className='nav__submenu'>
117
+ {renderMenuTree(menuItem.children.map((item) => ({id: menuItem.id, ...item})))}
118
+ </ul>
119
+ </>
120
+ ) : (
121
+
122
+ (serviceId.includes(menuItem.id)) ?
123
+ <NavLink to={menuItem.path || '#'}>{menuItem.label[currentlySelectedLanguage] }</NavLink> :
124
+ <a href={menuData.find(dataItem => dataItem.id === menuItem.id)?.url + menuItem.path}>{menuItem.label[currentlySelectedLanguage]}</a>
125
+
126
+ )}
127
+ </li>),
125
128
  );
126
129
  };
127
130
 
@@ -138,16 +141,16 @@ const MainNavigation: FC<{items: MenuItem[], serviceId: string[]}> = ( {items, s
138
141
  if (!menuItems) return null;
139
142
 
140
143
  return (
141
- <nav className={clsx('nav', { 'nav--collapsed': navCollapsed })}>
142
- <button className='nav__menu-toggle' onClick={() => setNavCollapsed(!navCollapsed)}>
143
- <Icon icon={<MdClose />} />
144
- {t('mainMenu.closeMenu')}
145
- </button>
146
- <ul className='nav__menu'>
147
- {renderMenuTree(menuItems)}
148
- </ul>
149
- </nav>
144
+ <nav className={clsx('nav', { 'nav--collapsed': navCollapsed })}>
145
+ <button className='nav__menu-toggle' onClick={() => setNavCollapsed(!navCollapsed)}>
146
+ <Icon icon={<MdClose />} />
147
+ {t('mainMenu.closeMenu')}
148
+ </button>
149
+ <ul className='nav__menu'>
150
+ {renderMenuTree(menuItems)}
151
+ </ul>
152
+ </nav>
150
153
  );
151
154
  };
152
155
 
153
- export default MainNavigation;
156
+ export default MainNavigation;
Binary file