sbx-crm-menu-ui 2.0.1-beta.0 → 2.0.1-beta.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.
@@ -1,9 +1,8 @@
1
- import { IconDefinition } from '@fortawesome/free-solid-svg-icons';
2
1
  import { Route } from '../../../types/Common';
3
2
  import React from 'react';
4
3
  interface RoutesData {
5
4
  label: string;
6
- icon: IconDefinition;
5
+ icon: string;
7
6
  subRoutes: Route[];
8
7
  }
9
8
  declare const SidebarComponent: (props: {
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
2
  import { SidebarItemProps } from '../../../types/Common';
3
+ export declare const iconsPath: Record<string, string>;
3
4
  declare const SidebarItem: ({ route }: SidebarItemProps) => React.JSX.Element;
4
5
  export default SidebarItem;
@@ -4,9 +4,9 @@ interface View {
4
4
  path: string;
5
5
  name: string;
6
6
  root: string;
7
- permission: string;
7
+ permission: string | string[];
8
8
  views?: View[];
9
9
  }
10
- export declare const generateSubMenuData: (labels: View[]) => Route[];
10
+ export declare const generateSubMenuData: (labels: View[], callBackPath: (path: string) => void) => Route[];
11
11
  export declare const icons: Record<string, IconDefinition>;
12
12
  export {};
package/dist/index.css CHANGED
@@ -14,7 +14,10 @@
14
14
  }
15
15
 
16
16
  .crm-class-sidebar-content {
17
- padding: 100px 20px;
17
+ padding: 100px 10px;
18
+ width: 100%;
19
+ height: 100vh;
20
+ overflow: auto;
18
21
  }
19
22
 
20
23
  .crm-class-sidebar-list {
package/dist/index.d.ts CHANGED
@@ -2,4 +2,6 @@ import TopNavBarComponent from './components/menu/TopNavBarComponent/TopNavBarCo
2
2
  import SidebarComponent from './components/menu/sidebar/Sidebar';
3
3
  import './styles.module.scss';
4
4
  import { generateSubMenuData, icons } from './components/menu/sidebar/subMenuComponent/SubMenuComponent';
5
+ import { Route } from '../example/src/lib/dist/types/Common';
6
+ export type { Route };
5
7
  export { TopNavBarComponent, SidebarComponent, generateSubMenuData, icons };
package/dist/index.js CHANGED
@@ -147,10 +147,24 @@ function TopNavBarComponent(props) {
147
147
  })));
148
148
  }
149
149
 
150
+ var iconsPath = {
151
+ 'pe-7s-diamond': 'faGem',
152
+ 'pe-7s-piggy': 'faPiggyBank',
153
+ 'pe-7s-helm': 'faShip',
154
+ 'pe-7s-hourglass': 'faHourglass',
155
+ 'pe-7s-safe': 'faWallet',
156
+ 'pe-7s-headphones': 'faHeadphones',
157
+ 'pe-7s-next-2': 'faRectangleList',
158
+ 'pe-7s-cloud-download': 'faCloudDownloadAlt',
159
+ 'pe-7s-news-paper': 'faNewspaper',
160
+ 'pe-7s-upload': 'faUpload',
161
+ 'pe-7s-display1': 'faChartBar',
162
+ 'pe-7s-settings': 'faCog'
163
+ };
150
164
  var SidebarItem = function SidebarItem(_ref) {
151
- var _route$subRoutes2;
152
165
  var route = _ref.route;
153
- var icon = route.icon,
166
+ var _route$iconName = route.iconName,
167
+ iconName = _route$iconName === void 0 ? '' : _route$iconName,
154
168
  label = route.label,
155
169
  _route$subRoutes = route.subRoutes,
156
170
  subRoutes = _route$subRoutes === void 0 ? [] : _route$subRoutes,
@@ -163,11 +177,26 @@ var SidebarItem = function SidebarItem(_ref) {
163
177
  return !prevState;
164
178
  });
165
179
  };
180
+ var icon = React.useMemo(function () {
181
+ var name = iconsPath[iconName] || iconName;
182
+ return require("@fortawesome/free-regular-svg-icons")[name];
183
+ }, []);
166
184
  return React__default.createElement(React__default.Fragment, null, React__default.createElement("li", {
167
185
  className: "crm-class-sidebar-li " + (className != null ? className : ''),
168
- onClick: toggleSubMenu
169
- }, icon && icon, React__default.createElement("span", {
170
- onClick: (_route$subRoutes2 = route.subRoutes) !== null && _route$subRoutes2 !== void 0 && _route$subRoutes2.length ? undefined : route.action,
186
+ onClick: function onClick() {
187
+ var _route$subRoutes2;
188
+ toggleSubMenu();
189
+ if (((_route$subRoutes2 = route.subRoutes) === null || _route$subRoutes2 === void 0 ? void 0 : _route$subRoutes2.length) === 0) {
190
+ var _route$action;
191
+ (_route$action = route.action) === null || _route$action === void 0 ? void 0 : _route$action.call(route);
192
+ }
193
+ }
194
+ }, icon && React__default.createElement("span", {
195
+ className: "crm-class-color-icon crm-class-mr-10"
196
+ }, React__default.createElement(reactFontawesome.FontAwesomeIcon, {
197
+ icon: icon,
198
+ className: "crm-class-color-icon"
199
+ })), React__default.createElement("span", {
171
200
  className: (route.selected ? 'crm-class-font-bold' : '') + " "
172
201
  }, label), !!subRoutes.length && React__default.createElement("span", {
173
202
  className: "crm-class-ml-auto"
@@ -192,17 +221,12 @@ var generateRoute = function generateRoute(label, icon, _action, subRoutes) {
192
221
  label: label,
193
222
  visible: true,
194
223
  enable: true,
195
- icon: React__default.createElement("span", {
196
- className: "crm-class-color-icon crm-class-mr-10"
197
- }, icon && React__default.createElement(reactFontawesome.FontAwesomeIcon, {
198
- icon: icon,
199
- className: "crm-class-color-icon"
200
- })),
224
+ iconName: icon,
201
225
  action: function action() {
202
226
  return _action === null || _action === void 0 ? void 0 : _action();
203
227
  },
204
228
  subRoutes: subRoutes.map(function (subRoute) {
205
- return generateRoute(subRoute.label, subRoute.icon, subRoute.action, subRoute.subRoutes || []);
229
+ return generateRoute(subRoute.label, subRoute === null || subRoute === void 0 ? void 0 : subRoute.iconName, subRoute.action, subRoute.subRoutes || []);
206
230
  })
207
231
  };
208
232
  };
@@ -233,13 +257,15 @@ var SidebarComponent = function SidebarComponent(props) {
233
257
  }, props.children));
234
258
  };
235
259
 
236
- var generateSubMenuData = function generateSubMenuData(labels) {
260
+ var generateSubMenuData = function generateSubMenuData(labels, callBackPath) {
237
261
  return labels.map(function (label) {
238
262
  return {
239
263
  label: label.name,
240
264
  className: 'crm-class-ml-20',
241
- path: label.path,
242
- subRoutes: generateSubMenuData(label.views || [])
265
+ action: function action() {
266
+ return callBackPath(label.path);
267
+ },
268
+ subRoutes: generateSubMenuData(label.views || [], callBackPath)
243
269
  };
244
270
  });
245
271
  };
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/utils/utils.ts","../src/components/dropdown/Dropdown.tsx","../src/components/contentMenuComponent/UserInfo.tsx","../src/components/contentMenuComponent/LanguageDropdown.tsx","../src/components/menu/TopNavBarComponent/TopNavBarComponent.tsx","../src/components/menu/sidebar/SidebarItem.tsx","../src/components/menu/sidebar/Sidebar.tsx","../src/components/menu/sidebar/subMenuComponent/SubMenuComponent.tsx"],"sourcesContent":["export function uuidV4() {\n return ('' + 1e7 + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, (c: any) =>\n (\n ((c ^ crypto.getRandomValues(new Uint8Array(1))[0]) & 15) >>\n (c / 4)\n ).toString(16)\n )\n}\n\n\nexport const colors = {\n 'A': '#FF5733',\n 'B': '#33FF57',\n 'C': '#5733FF',\n 'D': '#FF33B8',\n 'E': '#33B8FF',\n 'F': '#FFFF33',\n 'G': '#33FFFF',\n 'H': '#FF33A6',\n 'I': '#33A6FF',\n 'J': '#FF9033',\n 'K': '#3390FF',\n 'L': '#FF33F6',\n 'M': '#33F6FF',\n 'N': '#C833FF',\n 'O': '#33FFC8',\n 'P': '#FFC833',\n 'Q': '#33FF58',\n 'R': '#FF5833',\n 'S': '#58FF33',\n 'T': '#FF3358',\n 'U': '#3358FF',\n 'V': '#FF33D6',\n 'W': '#33D6FF',\n 'X': '#FF336A',\n 'Y': '#336AFF',\n 'Z': '#FFD633'\n}\n","import React, { useState } from 'react'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faChevronDown, faChevronUp } from '@fortawesome/free-solid-svg-icons'\nimport { colors } from '../../utils/utils'\n\nexport default function Dropdown(props: { startNameWord: string }) {\n const [isDropdownOpen, setIsDropdownOpen] = useState(false)\n\n const toggleDropdown = () => {\n setIsDropdownOpen(!isDropdownOpen)\n }\n\n return (\n <div className=\"crm-class-dropdown crm-class-mr-20\" onClick={toggleDropdown}>\n <span style={{ background: colors[props.startNameWord.toUpperCase()] }}\n className=\"crm-class-top-nav-bar-avatar\">{props.startNameWord.toUpperCase()}</span>\n <span className=\"crm-class-ml-20\">\n <FontAwesomeIcon\n icon={isDropdownOpen ? faChevronUp : faChevronDown}\n className=\"crm-class-color-icon crm-class-slate-gray\"\n />\n </span>\n {isDropdownOpen && (\n <div className=\"crm-class-dropdown-content\">\n <p>Dropdown content here</p>\n </div>\n )}\n </div>\n )\n}\n","import React from 'react'\n\n\ninterface Props {\n email: string;\n name: string;\n}\n\nexport default function UserInfo({ name, email }: Props) {\n return (\n <div className=\"crm-class-top-nav-bar-info-user\">\n <span className=\"crm-class-font-bold\">{name} </span>\n <span>{email}</span>\n </div>\n )\n}\n","import React, { useState } from 'react'\n\nexport interface Language {\n code: string;\n label: string;\n flag: string;\n}\n\n\nexport default function LanguageDropdown(props: { languages: Language[] }) {\n const [selectedLanguage, setSelectedLanguage] = useState<Language>(\n props.languages[0]\n )\n\n const handleLanguageChange = (language: Language) => {\n setSelectedLanguage(language)\n }\n\n return (\n <div className=\"crm-class-dropdown-flag crm-class-mr-20\">\n <span className=\"crm-class-content-flag\">\n <span className={`crm-class-flag large ${selectedLanguage.flag}`}></span>\n </span>\n\n <div className=\"crm-class-dropdown-menu\">\n <button className=\"crm-class-dropdown-toggle\" type=\"button\">\n Choose Language\n </button>\n <h6 className=\"crm-class-dropdown-header\">Popular Languages</h6>\n {props.languages.map((language) => (\n <button\n key={language.code}\n type=\"button\"\n className=\"crm-class-dropdown-item \"\n onClick={() => handleLanguageChange(language)}\n >\n <span\n className={` opacity-8 crm-class-flag large crm-class-mr-20 ${language.flag}`}\n ></span>\n {language.code}\n </button>\n ))}\n </div>\n </div>\n )\n}\n","import { faBars, faSearch } from '@fortawesome/free-solid-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport React from 'react'\nimport Dropdown from '../../dropdown/Dropdown'\nimport UserInfo from '../../contentMenuComponent/UserInfo'\nimport LanguageDropdown, { Language } from '../../contentMenuComponent/LanguageDropdown'\n\ninterface Props {\n languages: Language[];\n onChooseLanguage?: (language: Language) => void;\n user: {\n name: string;\n email: string;\n },\n logoSrc?: string;\n}\n\nexport default function TopNavBarComponent(props: Props) {\n\n\n return (\n <div className=\"crm-class-top-nav-bar\">\n <div className=\"crm-class-flex-container\">\n <FontAwesomeIcon\n icon={faBars}\n color=\"#3f6ad8\"\n size=\"1x\"\n className=\"crm-class-mr-20 crm-class-cursor-pointer\"\n />\n <div className=\"crm-class-flex-container\">\n <div className=\"crm-class-icon-container crm-class-mr-20\">\n <FontAwesomeIcon\n icon={faSearch}\n color=\"#3f6ad8\"\n className=\"\"\n size=\"1x\"\n />\n </div>\n\n <img\n src={props.logoSrc ?? 'https://via.placeholder.com/150'}\n style={{ height: '30px' }}\n alt=\"\"\n />\n </div>\n </div>\n <div className=\"crm-class-top-nav-bar-options\">\n {/* */}\n\n <LanguageDropdown languages={props.languages} />\n\n\n <Dropdown startNameWord={props.user.name?.[0]} />\n <UserInfo name={props.user.name} email={props.user.email} />\n </div>\n </div>\n )\n}\n","import React, { useState } from 'react'\nimport { faChevronDown, faChevronUp } from '@fortawesome/free-solid-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { SidebarItemProps } from '../../../types/Common'\nimport { uuidV4 } from '../../../utils/utils'\n\nconst SidebarItem = ({ route }: SidebarItemProps) => {\n const { icon, label, subRoutes = [], className } = route\n const [isSubMenuOpen, setIsSubMenuOpen] = useState(route.selected || false)\n\n const toggleSubMenu = () => {\n setIsSubMenuOpen((prevState) => !prevState)\n }\n return (\n <React.Fragment>\n <li\n className={`crm-class-sidebar-li ${className ?? ''}`}\n onClick={toggleSubMenu}\n >\n {icon && icon}\n <span onClick={route.subRoutes?.length ? undefined : route.action}\n className={`${route.selected ? 'crm-class-font-bold' : ''} `}>{label}</span>\n\n {!!subRoutes.length && (\n <span className=\"crm-class-ml-auto\">\n <FontAwesomeIcon\n icon={isSubMenuOpen ? faChevronUp : faChevronDown}\n className=\"crm-class-color-icon crm-class-font-10 crm-class-slate-gray\"\n />\n </span>\n )}\n </li>\n {(isSubMenuOpen) && !!subRoutes.length && (\n <ul className=\"crm-class-sidebar-sub-menu-list\">\n {subRoutes?.map((item) => (\n <SidebarItem key={uuidV4()} route={item} />\n ))}\n </ul>\n )}\n </React.Fragment>\n )\n}\n\nexport default SidebarItem\n","import { IconDefinition } from '@fortawesome/free-solid-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\n\nimport { Route } from '../../../types/Common'\nimport SidebarItem from './SidebarItem'\nimport React from 'react'\n\ninterface RoutesData {\n label: string;\n icon: IconDefinition;\n subRoutes: Route[];\n}\n\nconst generateRoute = (\n label: string,\n icon: React.ReactNode | IconDefinition,\n action?: () => void,\n subRoutes: Route[] = []\n): Route => ({\n label,\n visible: true,\n enable: true,\n icon: (\n <span className=\"crm-class-color-icon crm-class-mr-10\">\n {icon && (\n <FontAwesomeIcon\n icon={icon as IconDefinition}\n className=\"crm-class-color-icon\"\n />\n )}\n </span>\n ),\n action: () => action?.(),\n subRoutes: subRoutes.map((subRoute) =>\n generateRoute(subRoute.label, subRoute.icon, subRoute.action, subRoute.subRoutes || [])\n )\n})\n\nconst generateRoutes = (\n routesData: {\n label: string;\n icon: IconDefinition | undefined;\n action?: () => void;\n subRoutes: Route[];\n }[]\n): Route[] => {\n return routesData.map((routeData) =>\n generateRoute(routeData.label, routeData?.icon, routeData.action, routeData.subRoutes)\n )\n}\n\nconst SidebarComponent = (props: { routesData: RoutesData[], children: React.ReactNode }) => {\n\n\n const routes: Route[] = generateRoutes(props.routesData)\n\n return (\n <div style={{ display: 'flex' }}>\n <div className=\"crm-class-sidebar\">\n <ul className=\"crm-class-sidebar-list\">\n <span className=\"crm-class-title\">MENU</span>\n\n {routes.map((route, index) => (\n <SidebarItem key={`route_${index}`} route={route} />\n ))}\n\n </ul>\n </div>\n <div className=\"crm-class-sidebar-content\">\n {props.children}\n </div>\n </div>\n )\n}\nexport default SidebarComponent\n","import { faGem } from '@fortawesome/free-regular-svg-icons'\nimport { Route } from '../../../../types/Common'\nimport { IconDefinition } from '@fortawesome/free-solid-svg-icons'\n\ninterface View {\n path: string;\n name: string;\n root: string;\n permission: string;\n views?: View[];\n}\n\nexport const generateSubMenuData = (labels: View[]): Route[] => {\n return labels.map((label) => ({\n label: label.name,\n className: 'crm-class-ml-20',\n path: label.path,\n subRoutes: generateSubMenuData(label.views || [])\n }))\n}\n\nexport const icons: Record<string, IconDefinition> = {\n diamond: faGem,\n default: faGem\n}\n"],"names":["uuidV4","replace","c","crypto","getRandomValues","Uint8Array","toString","colors","Dropdown","props","_useState","useState","isDropdownOpen","setIsDropdownOpen","toggleDropdown","React","className","onClick","style","background","startNameWord","toUpperCase","FontAwesomeIcon","icon","faChevronUp","faChevronDown","UserInfo","_ref","name","email","LanguageDropdown","languages","selectedLanguage","setSelectedLanguage","handleLanguageChange","language","flag","type","map","key","code","TopNavBarComponent","faBars","color","size","faSearch","src","_props$logoSrc","logoSrc","height","alt","_props$user$name","user","SidebarItem","route","label","_route$subRoutes","subRoutes","selected","isSubMenuOpen","setIsSubMenuOpen","toggleSubMenu","prevState","Fragment","_route$subRoutes2","length","undefined","action","item","generateRoute","visible","enable","subRoute","generateRoutes","routesData","routeData","SidebarComponent","routes","display","index","children","generateSubMenuData","labels","path","views","icons","diamond","faGem"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/utils/utils.ts","../src/components/dropdown/Dropdown.tsx","../src/components/contentMenuComponent/UserInfo.tsx","../src/components/contentMenuComponent/LanguageDropdown.tsx","../src/components/menu/TopNavBarComponent/TopNavBarComponent.tsx","../src/components/menu/sidebar/SidebarItem.tsx","../src/components/menu/sidebar/Sidebar.tsx","../src/components/menu/sidebar/subMenuComponent/SubMenuComponent.tsx"],"sourcesContent":["export function uuidV4() {\n return ('' + 1e7 + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, (c: any) =>\n (\n ((c ^ crypto.getRandomValues(new Uint8Array(1))[0]) & 15) >>\n (c / 4)\n ).toString(16)\n )\n}\n\n\nexport const colors = {\n 'A': '#FF5733',\n 'B': '#33FF57',\n 'C': '#5733FF',\n 'D': '#FF33B8',\n 'E': '#33B8FF',\n 'F': '#FFFF33',\n 'G': '#33FFFF',\n 'H': '#FF33A6',\n 'I': '#33A6FF',\n 'J': '#FF9033',\n 'K': '#3390FF',\n 'L': '#FF33F6',\n 'M': '#33F6FF',\n 'N': '#C833FF',\n 'O': '#33FFC8',\n 'P': '#FFC833',\n 'Q': '#33FF58',\n 'R': '#FF5833',\n 'S': '#58FF33',\n 'T': '#FF3358',\n 'U': '#3358FF',\n 'V': '#FF33D6',\n 'W': '#33D6FF',\n 'X': '#FF336A',\n 'Y': '#336AFF',\n 'Z': '#FFD633'\n}\n","import React, { useState } from 'react'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faChevronDown, faChevronUp } from '@fortawesome/free-solid-svg-icons'\nimport { colors } from '../../utils/utils'\n\nexport default function Dropdown(props: { startNameWord: string }) {\n const [isDropdownOpen, setIsDropdownOpen] = useState(false)\n\n const toggleDropdown = () => {\n setIsDropdownOpen(!isDropdownOpen)\n }\n\n return (\n <div className=\"crm-class-dropdown crm-class-mr-20\" onClick={toggleDropdown}>\n <span style={{ background: colors[props.startNameWord.toUpperCase()] }}\n className=\"crm-class-top-nav-bar-avatar\">{props.startNameWord.toUpperCase()}</span>\n <span className=\"crm-class-ml-20\">\n <FontAwesomeIcon\n icon={isDropdownOpen ? faChevronUp : faChevronDown}\n className=\"crm-class-color-icon crm-class-slate-gray\"\n />\n </span>\n {isDropdownOpen && (\n <div className=\"crm-class-dropdown-content\">\n <p>Dropdown content here</p>\n </div>\n )}\n </div>\n )\n}\n","import React from 'react'\n\n\ninterface Props {\n email: string;\n name: string;\n}\n\nexport default function UserInfo({ name, email }: Props) {\n return (\n <div className=\"crm-class-top-nav-bar-info-user\">\n <span className=\"crm-class-font-bold\">{name} </span>\n <span>{email}</span>\n </div>\n )\n}\n","import React, { useState } from 'react'\n\nexport interface Language {\n code: string;\n label: string;\n flag: string;\n}\n\n\nexport default function LanguageDropdown(props: { languages: Language[] }) {\n const [selectedLanguage, setSelectedLanguage] = useState<Language>(\n props.languages[0]\n )\n\n const handleLanguageChange = (language: Language) => {\n setSelectedLanguage(language)\n }\n\n return (\n <div className=\"crm-class-dropdown-flag crm-class-mr-20\">\n <span className=\"crm-class-content-flag\">\n <span className={`crm-class-flag large ${selectedLanguage.flag}`}></span>\n </span>\n\n <div className=\"crm-class-dropdown-menu\">\n <button className=\"crm-class-dropdown-toggle\" type=\"button\">\n Choose Language\n </button>\n <h6 className=\"crm-class-dropdown-header\">Popular Languages</h6>\n {props.languages.map((language) => (\n <button\n key={language.code}\n type=\"button\"\n className=\"crm-class-dropdown-item \"\n onClick={() => handleLanguageChange(language)}\n >\n <span\n className={` opacity-8 crm-class-flag large crm-class-mr-20 ${language.flag}`}\n ></span>\n {language.code}\n </button>\n ))}\n </div>\n </div>\n )\n}\n","import { faBars, faSearch } from '@fortawesome/free-solid-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport React from 'react'\nimport Dropdown from '../../dropdown/Dropdown'\nimport UserInfo from '../../contentMenuComponent/UserInfo'\nimport LanguageDropdown, { Language } from '../../contentMenuComponent/LanguageDropdown'\n\ninterface Props {\n languages: Language[];\n onChooseLanguage?: (language: Language) => void;\n user: {\n name: string;\n email: string;\n },\n logoSrc?: string;\n}\n\nexport default function TopNavBarComponent(props: Props) {\n\n\n return (\n <div className=\"crm-class-top-nav-bar\">\n <div className=\"crm-class-flex-container\">\n <FontAwesomeIcon\n icon={faBars}\n color=\"#3f6ad8\"\n size=\"1x\"\n className=\"crm-class-mr-20 crm-class-cursor-pointer\"\n />\n <div className=\"crm-class-flex-container\">\n <div className=\"crm-class-icon-container crm-class-mr-20\">\n <FontAwesomeIcon\n icon={faSearch}\n color=\"#3f6ad8\"\n className=\"\"\n size=\"1x\"\n />\n </div>\n\n <img\n src={props.logoSrc ?? 'https://via.placeholder.com/150'}\n style={{ height: '30px' }}\n alt=\"\"\n />\n </div>\n </div>\n <div className=\"crm-class-top-nav-bar-options\">\n {/* */}\n\n <LanguageDropdown languages={props.languages} />\n\n\n <Dropdown startNameWord={props.user.name?.[0]} />\n <UserInfo name={props.user.name} email={props.user.email} />\n </div>\n </div>\n )\n}\n","import React, { useMemo, useState } from 'react'\nimport { faChevronDown, faChevronUp, IconDefinition } from '@fortawesome/free-solid-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { SidebarItemProps } from '../../../types/Common'\nimport { uuidV4 } from '../../../utils/utils'\n\nexport const iconsPath: Record<string, string> = {\n 'pe-7s-diamond': 'faGem',\n 'pe-7s-piggy': 'faPiggyBank',\n 'pe-7s-helm': 'faShip',\n 'pe-7s-hourglass': 'faHourglass',\n 'pe-7s-safe': 'faWallet',\n 'pe-7s-headphones': 'faHeadphones',\n 'pe-7s-next-2': 'faRectangleList',\n 'pe-7s-cloud-download': 'faCloudDownloadAlt',\n 'pe-7s-news-paper': 'faNewspaper',\n 'pe-7s-upload': 'faUpload',\n 'pe-7s-display1': 'faChartBar',\n 'pe-7s-settings': 'faCog'\n}\n\nconst SidebarItem = ({ route }: SidebarItemProps) => {\n const { iconName = '', label, subRoutes = [], className } = route\n const [isSubMenuOpen, setIsSubMenuOpen] = useState(route.selected || false)\n\n const toggleSubMenu = () => {\n setIsSubMenuOpen((prevState) => !prevState)\n }\n\n const icon: IconDefinition = useMemo(() => {\n const name = iconsPath[iconName] || iconName\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n return require(`@fortawesome/free-regular-svg-icons`)[name]\n }, [])\n\n return (\n <React.Fragment>\n <li\n className={`crm-class-sidebar-li ${className ?? ''}`}\n onClick={() => {\n toggleSubMenu()\n if (route.subRoutes?.length === 0) {\n route.action?.()\n }\n }}\n >\n {icon && (\n <span className=\"crm-class-color-icon crm-class-mr-10\">\n <FontAwesomeIcon\n icon={icon}\n className=\"crm-class-color-icon\"\n />\n </span>\n )}\n <span\n // onClick={route.subRoutes?.length ? undefined : route.action}\n className={`${route.selected ? 'crm-class-font-bold' : ''} `}\n >{label}</span>\n\n {!!subRoutes.length && (\n <span className=\"crm-class-ml-auto\">\n <FontAwesomeIcon\n icon={isSubMenuOpen ? faChevronUp : faChevronDown}\n className=\"crm-class-color-icon crm-class-font-10 crm-class-slate-gray\"\n />\n </span>\n )}\n </li>\n {(isSubMenuOpen) && !!subRoutes.length && (\n <ul className=\"crm-class-sidebar-sub-menu-list\">\n {subRoutes?.map((item) => (\n <SidebarItem key={uuidV4()} route={item} />\n ))}\n </ul>\n )}\n </React.Fragment>\n )\n}\n\nexport default SidebarItem\n","// import { IconDefinition } from '@fortawesome/free-solid-svg-icons'\n// import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\n\nimport { Route } from '../../../types/Common'\nimport SidebarItem from './SidebarItem'\nimport React from 'react'\n\ninterface RoutesData {\n label: string;\n icon: string;\n subRoutes: Route[];\n}\n\nconst generateRoute = (\n label: string,\n icon: string | undefined,\n action?: () => void,\n subRoutes: Route[] = []\n): Route => ({\n label,\n visible: true,\n enable: true,\n iconName: icon,\n action: () => action?.(),\n subRoutes: subRoutes.map((subRoute) =>\n generateRoute(subRoute.label, subRoute?.iconName, subRoute.action, subRoute.subRoutes || [])\n )\n})\n\nconst generateRoutes = (\n routesData: {\n label: string;\n icon: string;\n action?: () => void;\n subRoutes: Route[];\n }[]\n): Route[] => {\n return routesData.map((routeData) =>\n generateRoute(routeData.label, routeData?.icon, routeData.action, routeData.subRoutes)\n )\n}\n\nconst SidebarComponent = (props: { routesData: RoutesData[], children: React.ReactNode }) => {\n\n\n const routes: Route[] = generateRoutes(props.routesData)\n\n return (\n <div style={{ display: 'flex' }}>\n <div className=\"crm-class-sidebar\">\n <ul className=\"crm-class-sidebar-list\">\n <span className=\"crm-class-title\">MENU</span>\n\n {routes.map((route, index) => (\n <SidebarItem key={`route_${index}`} route={route} />\n ))}\n\n </ul>\n </div>\n <div className=\"crm-class-sidebar-content\">\n {props.children}\n </div>\n </div>\n )\n}\nexport default SidebarComponent\n","import { faGem } from '@fortawesome/free-regular-svg-icons'\nimport { Route } from '../../../../types/Common'\nimport { IconDefinition } from '@fortawesome/free-solid-svg-icons'\n\ninterface View {\n path: string;\n name: string;\n root: string;\n permission: string | string[];\n views?: View[];\n}\n\nexport const generateSubMenuData = (labels: View[], callBackPath: (path: string) => void): Route[] => {\n return labels.map((label) => ({\n label: label.name,\n className: 'crm-class-ml-20',\n action: () => callBackPath(label.path),\n subRoutes: generateSubMenuData(label.views || [], callBackPath)\n }))\n}\n\nexport const icons: Record<string, IconDefinition> = {\n diamond: faGem,\n default: faGem\n}\n"],"names":["uuidV4","replace","c","crypto","getRandomValues","Uint8Array","toString","colors","Dropdown","props","_useState","useState","isDropdownOpen","setIsDropdownOpen","toggleDropdown","React","className","onClick","style","background","startNameWord","toUpperCase","FontAwesomeIcon","icon","faChevronUp","faChevronDown","UserInfo","_ref","name","email","LanguageDropdown","languages","selectedLanguage","setSelectedLanguage","handleLanguageChange","language","flag","type","map","key","code","TopNavBarComponent","faBars","color","size","faSearch","src","_props$logoSrc","logoSrc","height","alt","_props$user$name","user","iconsPath","SidebarItem","route","_route$iconName","iconName","label","_route$subRoutes","subRoutes","selected","isSubMenuOpen","setIsSubMenuOpen","toggleSubMenu","prevState","useMemo","require","Fragment","_route$subRoutes2","length","_route$action","action","call","item","generateRoute","visible","enable","subRoute","generateRoutes","routesData","routeData","SidebarComponent","routes","display","index","children","generateSubMenuData","labels","callBackPath","path","views","icons","diamond","faGem"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { faChevronUp, faChevronDown, faBars, faSearch } from '@fortawesome/free-solid-svg-icons';
2
2
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
3
- import React, { useState } from 'react';
3
+ import React, { useState, useMemo } from 'react';
4
4
  import { faGem } from '@fortawesome/free-regular-svg-icons';
5
5
 
6
6
  function uuidV4() {
@@ -144,10 +144,24 @@ function TopNavBarComponent(props) {
144
144
  })));
145
145
  }
146
146
 
147
+ var iconsPath = {
148
+ 'pe-7s-diamond': 'faGem',
149
+ 'pe-7s-piggy': 'faPiggyBank',
150
+ 'pe-7s-helm': 'faShip',
151
+ 'pe-7s-hourglass': 'faHourglass',
152
+ 'pe-7s-safe': 'faWallet',
153
+ 'pe-7s-headphones': 'faHeadphones',
154
+ 'pe-7s-next-2': 'faRectangleList',
155
+ 'pe-7s-cloud-download': 'faCloudDownloadAlt',
156
+ 'pe-7s-news-paper': 'faNewspaper',
157
+ 'pe-7s-upload': 'faUpload',
158
+ 'pe-7s-display1': 'faChartBar',
159
+ 'pe-7s-settings': 'faCog'
160
+ };
147
161
  var SidebarItem = function SidebarItem(_ref) {
148
- var _route$subRoutes2;
149
162
  var route = _ref.route;
150
- var icon = route.icon,
163
+ var _route$iconName = route.iconName,
164
+ iconName = _route$iconName === void 0 ? '' : _route$iconName,
151
165
  label = route.label,
152
166
  _route$subRoutes = route.subRoutes,
153
167
  subRoutes = _route$subRoutes === void 0 ? [] : _route$subRoutes,
@@ -160,11 +174,26 @@ var SidebarItem = function SidebarItem(_ref) {
160
174
  return !prevState;
161
175
  });
162
176
  };
177
+ var icon = useMemo(function () {
178
+ var name = iconsPath[iconName] || iconName;
179
+ return require("@fortawesome/free-regular-svg-icons")[name];
180
+ }, []);
163
181
  return React.createElement(React.Fragment, null, React.createElement("li", {
164
182
  className: "crm-class-sidebar-li " + (className != null ? className : ''),
165
- onClick: toggleSubMenu
166
- }, icon && icon, React.createElement("span", {
167
- onClick: (_route$subRoutes2 = route.subRoutes) !== null && _route$subRoutes2 !== void 0 && _route$subRoutes2.length ? undefined : route.action,
183
+ onClick: function onClick() {
184
+ var _route$subRoutes2;
185
+ toggleSubMenu();
186
+ if (((_route$subRoutes2 = route.subRoutes) === null || _route$subRoutes2 === void 0 ? void 0 : _route$subRoutes2.length) === 0) {
187
+ var _route$action;
188
+ (_route$action = route.action) === null || _route$action === void 0 ? void 0 : _route$action.call(route);
189
+ }
190
+ }
191
+ }, icon && React.createElement("span", {
192
+ className: "crm-class-color-icon crm-class-mr-10"
193
+ }, React.createElement(FontAwesomeIcon, {
194
+ icon: icon,
195
+ className: "crm-class-color-icon"
196
+ })), React.createElement("span", {
168
197
  className: (route.selected ? 'crm-class-font-bold' : '') + " "
169
198
  }, label), !!subRoutes.length && React.createElement("span", {
170
199
  className: "crm-class-ml-auto"
@@ -189,17 +218,12 @@ var generateRoute = function generateRoute(label, icon, _action, subRoutes) {
189
218
  label: label,
190
219
  visible: true,
191
220
  enable: true,
192
- icon: React.createElement("span", {
193
- className: "crm-class-color-icon crm-class-mr-10"
194
- }, icon && React.createElement(FontAwesomeIcon, {
195
- icon: icon,
196
- className: "crm-class-color-icon"
197
- })),
221
+ iconName: icon,
198
222
  action: function action() {
199
223
  return _action === null || _action === void 0 ? void 0 : _action();
200
224
  },
201
225
  subRoutes: subRoutes.map(function (subRoute) {
202
- return generateRoute(subRoute.label, subRoute.icon, subRoute.action, subRoute.subRoutes || []);
226
+ return generateRoute(subRoute.label, subRoute === null || subRoute === void 0 ? void 0 : subRoute.iconName, subRoute.action, subRoute.subRoutes || []);
203
227
  })
204
228
  };
205
229
  };
@@ -230,13 +254,15 @@ var SidebarComponent = function SidebarComponent(props) {
230
254
  }, props.children));
231
255
  };
232
256
 
233
- var generateSubMenuData = function generateSubMenuData(labels) {
257
+ var generateSubMenuData = function generateSubMenuData(labels, callBackPath) {
234
258
  return labels.map(function (label) {
235
259
  return {
236
260
  label: label.name,
237
261
  className: 'crm-class-ml-20',
238
- path: label.path,
239
- subRoutes: generateSubMenuData(label.views || [])
262
+ action: function action() {
263
+ return callBackPath(label.path);
264
+ },
265
+ subRoutes: generateSubMenuData(label.views || [], callBackPath)
240
266
  };
241
267
  });
242
268
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.modern.js","sources":["../src/utils/utils.ts","../src/components/dropdown/Dropdown.tsx","../src/components/contentMenuComponent/UserInfo.tsx","../src/components/contentMenuComponent/LanguageDropdown.tsx","../src/components/menu/TopNavBarComponent/TopNavBarComponent.tsx","../src/components/menu/sidebar/SidebarItem.tsx","../src/components/menu/sidebar/Sidebar.tsx","../src/components/menu/sidebar/subMenuComponent/SubMenuComponent.tsx"],"sourcesContent":["export function uuidV4() {\n return ('' + 1e7 + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, (c: any) =>\n (\n ((c ^ crypto.getRandomValues(new Uint8Array(1))[0]) & 15) >>\n (c / 4)\n ).toString(16)\n )\n}\n\n\nexport const colors = {\n 'A': '#FF5733',\n 'B': '#33FF57',\n 'C': '#5733FF',\n 'D': '#FF33B8',\n 'E': '#33B8FF',\n 'F': '#FFFF33',\n 'G': '#33FFFF',\n 'H': '#FF33A6',\n 'I': '#33A6FF',\n 'J': '#FF9033',\n 'K': '#3390FF',\n 'L': '#FF33F6',\n 'M': '#33F6FF',\n 'N': '#C833FF',\n 'O': '#33FFC8',\n 'P': '#FFC833',\n 'Q': '#33FF58',\n 'R': '#FF5833',\n 'S': '#58FF33',\n 'T': '#FF3358',\n 'U': '#3358FF',\n 'V': '#FF33D6',\n 'W': '#33D6FF',\n 'X': '#FF336A',\n 'Y': '#336AFF',\n 'Z': '#FFD633'\n}\n","import React, { useState } from 'react'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faChevronDown, faChevronUp } from '@fortawesome/free-solid-svg-icons'\nimport { colors } from '../../utils/utils'\n\nexport default function Dropdown(props: { startNameWord: string }) {\n const [isDropdownOpen, setIsDropdownOpen] = useState(false)\n\n const toggleDropdown = () => {\n setIsDropdownOpen(!isDropdownOpen)\n }\n\n return (\n <div className=\"crm-class-dropdown crm-class-mr-20\" onClick={toggleDropdown}>\n <span style={{ background: colors[props.startNameWord.toUpperCase()] }}\n className=\"crm-class-top-nav-bar-avatar\">{props.startNameWord.toUpperCase()}</span>\n <span className=\"crm-class-ml-20\">\n <FontAwesomeIcon\n icon={isDropdownOpen ? faChevronUp : faChevronDown}\n className=\"crm-class-color-icon crm-class-slate-gray\"\n />\n </span>\n {isDropdownOpen && (\n <div className=\"crm-class-dropdown-content\">\n <p>Dropdown content here</p>\n </div>\n )}\n </div>\n )\n}\n","import React from 'react'\n\n\ninterface Props {\n email: string;\n name: string;\n}\n\nexport default function UserInfo({ name, email }: Props) {\n return (\n <div className=\"crm-class-top-nav-bar-info-user\">\n <span className=\"crm-class-font-bold\">{name} </span>\n <span>{email}</span>\n </div>\n )\n}\n","import React, { useState } from 'react'\n\nexport interface Language {\n code: string;\n label: string;\n flag: string;\n}\n\n\nexport default function LanguageDropdown(props: { languages: Language[] }) {\n const [selectedLanguage, setSelectedLanguage] = useState<Language>(\n props.languages[0]\n )\n\n const handleLanguageChange = (language: Language) => {\n setSelectedLanguage(language)\n }\n\n return (\n <div className=\"crm-class-dropdown-flag crm-class-mr-20\">\n <span className=\"crm-class-content-flag\">\n <span className={`crm-class-flag large ${selectedLanguage.flag}`}></span>\n </span>\n\n <div className=\"crm-class-dropdown-menu\">\n <button className=\"crm-class-dropdown-toggle\" type=\"button\">\n Choose Language\n </button>\n <h6 className=\"crm-class-dropdown-header\">Popular Languages</h6>\n {props.languages.map((language) => (\n <button\n key={language.code}\n type=\"button\"\n className=\"crm-class-dropdown-item \"\n onClick={() => handleLanguageChange(language)}\n >\n <span\n className={` opacity-8 crm-class-flag large crm-class-mr-20 ${language.flag}`}\n ></span>\n {language.code}\n </button>\n ))}\n </div>\n </div>\n )\n}\n","import { faBars, faSearch } from '@fortawesome/free-solid-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport React from 'react'\nimport Dropdown from '../../dropdown/Dropdown'\nimport UserInfo from '../../contentMenuComponent/UserInfo'\nimport LanguageDropdown, { Language } from '../../contentMenuComponent/LanguageDropdown'\n\ninterface Props {\n languages: Language[];\n onChooseLanguage?: (language: Language) => void;\n user: {\n name: string;\n email: string;\n },\n logoSrc?: string;\n}\n\nexport default function TopNavBarComponent(props: Props) {\n\n\n return (\n <div className=\"crm-class-top-nav-bar\">\n <div className=\"crm-class-flex-container\">\n <FontAwesomeIcon\n icon={faBars}\n color=\"#3f6ad8\"\n size=\"1x\"\n className=\"crm-class-mr-20 crm-class-cursor-pointer\"\n />\n <div className=\"crm-class-flex-container\">\n <div className=\"crm-class-icon-container crm-class-mr-20\">\n <FontAwesomeIcon\n icon={faSearch}\n color=\"#3f6ad8\"\n className=\"\"\n size=\"1x\"\n />\n </div>\n\n <img\n src={props.logoSrc ?? 'https://via.placeholder.com/150'}\n style={{ height: '30px' }}\n alt=\"\"\n />\n </div>\n </div>\n <div className=\"crm-class-top-nav-bar-options\">\n {/* */}\n\n <LanguageDropdown languages={props.languages} />\n\n\n <Dropdown startNameWord={props.user.name?.[0]} />\n <UserInfo name={props.user.name} email={props.user.email} />\n </div>\n </div>\n )\n}\n","import React, { useState } from 'react'\nimport { faChevronDown, faChevronUp } from '@fortawesome/free-solid-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { SidebarItemProps } from '../../../types/Common'\nimport { uuidV4 } from '../../../utils/utils'\n\nconst SidebarItem = ({ route }: SidebarItemProps) => {\n const { icon, label, subRoutes = [], className } = route\n const [isSubMenuOpen, setIsSubMenuOpen] = useState(route.selected || false)\n\n const toggleSubMenu = () => {\n setIsSubMenuOpen((prevState) => !prevState)\n }\n return (\n <React.Fragment>\n <li\n className={`crm-class-sidebar-li ${className ?? ''}`}\n onClick={toggleSubMenu}\n >\n {icon && icon}\n <span onClick={route.subRoutes?.length ? undefined : route.action}\n className={`${route.selected ? 'crm-class-font-bold' : ''} `}>{label}</span>\n\n {!!subRoutes.length && (\n <span className=\"crm-class-ml-auto\">\n <FontAwesomeIcon\n icon={isSubMenuOpen ? faChevronUp : faChevronDown}\n className=\"crm-class-color-icon crm-class-font-10 crm-class-slate-gray\"\n />\n </span>\n )}\n </li>\n {(isSubMenuOpen) && !!subRoutes.length && (\n <ul className=\"crm-class-sidebar-sub-menu-list\">\n {subRoutes?.map((item) => (\n <SidebarItem key={uuidV4()} route={item} />\n ))}\n </ul>\n )}\n </React.Fragment>\n )\n}\n\nexport default SidebarItem\n","import { IconDefinition } from '@fortawesome/free-solid-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\n\nimport { Route } from '../../../types/Common'\nimport SidebarItem from './SidebarItem'\nimport React from 'react'\n\ninterface RoutesData {\n label: string;\n icon: IconDefinition;\n subRoutes: Route[];\n}\n\nconst generateRoute = (\n label: string,\n icon: React.ReactNode | IconDefinition,\n action?: () => void,\n subRoutes: Route[] = []\n): Route => ({\n label,\n visible: true,\n enable: true,\n icon: (\n <span className=\"crm-class-color-icon crm-class-mr-10\">\n {icon && (\n <FontAwesomeIcon\n icon={icon as IconDefinition}\n className=\"crm-class-color-icon\"\n />\n )}\n </span>\n ),\n action: () => action?.(),\n subRoutes: subRoutes.map((subRoute) =>\n generateRoute(subRoute.label, subRoute.icon, subRoute.action, subRoute.subRoutes || [])\n )\n})\n\nconst generateRoutes = (\n routesData: {\n label: string;\n icon: IconDefinition | undefined;\n action?: () => void;\n subRoutes: Route[];\n }[]\n): Route[] => {\n return routesData.map((routeData) =>\n generateRoute(routeData.label, routeData?.icon, routeData.action, routeData.subRoutes)\n )\n}\n\nconst SidebarComponent = (props: { routesData: RoutesData[], children: React.ReactNode }) => {\n\n\n const routes: Route[] = generateRoutes(props.routesData)\n\n return (\n <div style={{ display: 'flex' }}>\n <div className=\"crm-class-sidebar\">\n <ul className=\"crm-class-sidebar-list\">\n <span className=\"crm-class-title\">MENU</span>\n\n {routes.map((route, index) => (\n <SidebarItem key={`route_${index}`} route={route} />\n ))}\n\n </ul>\n </div>\n <div className=\"crm-class-sidebar-content\">\n {props.children}\n </div>\n </div>\n )\n}\nexport default SidebarComponent\n","import { faGem } from '@fortawesome/free-regular-svg-icons'\nimport { Route } from '../../../../types/Common'\nimport { IconDefinition } from '@fortawesome/free-solid-svg-icons'\n\ninterface View {\n path: string;\n name: string;\n root: string;\n permission: string;\n views?: View[];\n}\n\nexport const generateSubMenuData = (labels: View[]): Route[] => {\n return labels.map((label) => ({\n label: label.name,\n className: 'crm-class-ml-20',\n path: label.path,\n subRoutes: generateSubMenuData(label.views || [])\n }))\n}\n\nexport const icons: Record<string, IconDefinition> = {\n diamond: faGem,\n default: faGem\n}\n"],"names":["uuidV4","replace","c","crypto","getRandomValues","Uint8Array","toString","colors","Dropdown","props","_useState","useState","isDropdownOpen","setIsDropdownOpen","toggleDropdown","React","className","onClick","style","background","startNameWord","toUpperCase","FontAwesomeIcon","icon","faChevronUp","faChevronDown","UserInfo","_ref","name","email","LanguageDropdown","languages","selectedLanguage","setSelectedLanguage","handleLanguageChange","language","flag","type","map","key","code","TopNavBarComponent","faBars","color","size","faSearch","src","_props$logoSrc","logoSrc","height","alt","_props$user$name","user","SidebarItem","route","label","_route$subRoutes","subRoutes","selected","isSubMenuOpen","setIsSubMenuOpen","toggleSubMenu","prevState","Fragment","_route$subRoutes2","length","undefined","action","item","generateRoute","visible","enable","subRoute","generateRoutes","routesData","routeData","SidebarComponent","routes","display","index","children","generateSubMenuData","labels","path","views","icons","diamond","faGem"],"mappings":"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"}
1
+ {"version":3,"file":"index.modern.js","sources":["../src/utils/utils.ts","../src/components/dropdown/Dropdown.tsx","../src/components/contentMenuComponent/UserInfo.tsx","../src/components/contentMenuComponent/LanguageDropdown.tsx","../src/components/menu/TopNavBarComponent/TopNavBarComponent.tsx","../src/components/menu/sidebar/SidebarItem.tsx","../src/components/menu/sidebar/Sidebar.tsx","../src/components/menu/sidebar/subMenuComponent/SubMenuComponent.tsx"],"sourcesContent":["export function uuidV4() {\n return ('' + 1e7 + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, (c: any) =>\n (\n ((c ^ crypto.getRandomValues(new Uint8Array(1))[0]) & 15) >>\n (c / 4)\n ).toString(16)\n )\n}\n\n\nexport const colors = {\n 'A': '#FF5733',\n 'B': '#33FF57',\n 'C': '#5733FF',\n 'D': '#FF33B8',\n 'E': '#33B8FF',\n 'F': '#FFFF33',\n 'G': '#33FFFF',\n 'H': '#FF33A6',\n 'I': '#33A6FF',\n 'J': '#FF9033',\n 'K': '#3390FF',\n 'L': '#FF33F6',\n 'M': '#33F6FF',\n 'N': '#C833FF',\n 'O': '#33FFC8',\n 'P': '#FFC833',\n 'Q': '#33FF58',\n 'R': '#FF5833',\n 'S': '#58FF33',\n 'T': '#FF3358',\n 'U': '#3358FF',\n 'V': '#FF33D6',\n 'W': '#33D6FF',\n 'X': '#FF336A',\n 'Y': '#336AFF',\n 'Z': '#FFD633'\n}\n","import React, { useState } from 'react'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faChevronDown, faChevronUp } from '@fortawesome/free-solid-svg-icons'\nimport { colors } from '../../utils/utils'\n\nexport default function Dropdown(props: { startNameWord: string }) {\n const [isDropdownOpen, setIsDropdownOpen] = useState(false)\n\n const toggleDropdown = () => {\n setIsDropdownOpen(!isDropdownOpen)\n }\n\n return (\n <div className=\"crm-class-dropdown crm-class-mr-20\" onClick={toggleDropdown}>\n <span style={{ background: colors[props.startNameWord.toUpperCase()] }}\n className=\"crm-class-top-nav-bar-avatar\">{props.startNameWord.toUpperCase()}</span>\n <span className=\"crm-class-ml-20\">\n <FontAwesomeIcon\n icon={isDropdownOpen ? faChevronUp : faChevronDown}\n className=\"crm-class-color-icon crm-class-slate-gray\"\n />\n </span>\n {isDropdownOpen && (\n <div className=\"crm-class-dropdown-content\">\n <p>Dropdown content here</p>\n </div>\n )}\n </div>\n )\n}\n","import React from 'react'\n\n\ninterface Props {\n email: string;\n name: string;\n}\n\nexport default function UserInfo({ name, email }: Props) {\n return (\n <div className=\"crm-class-top-nav-bar-info-user\">\n <span className=\"crm-class-font-bold\">{name} </span>\n <span>{email}</span>\n </div>\n )\n}\n","import React, { useState } from 'react'\n\nexport interface Language {\n code: string;\n label: string;\n flag: string;\n}\n\n\nexport default function LanguageDropdown(props: { languages: Language[] }) {\n const [selectedLanguage, setSelectedLanguage] = useState<Language>(\n props.languages[0]\n )\n\n const handleLanguageChange = (language: Language) => {\n setSelectedLanguage(language)\n }\n\n return (\n <div className=\"crm-class-dropdown-flag crm-class-mr-20\">\n <span className=\"crm-class-content-flag\">\n <span className={`crm-class-flag large ${selectedLanguage.flag}`}></span>\n </span>\n\n <div className=\"crm-class-dropdown-menu\">\n <button className=\"crm-class-dropdown-toggle\" type=\"button\">\n Choose Language\n </button>\n <h6 className=\"crm-class-dropdown-header\">Popular Languages</h6>\n {props.languages.map((language) => (\n <button\n key={language.code}\n type=\"button\"\n className=\"crm-class-dropdown-item \"\n onClick={() => handleLanguageChange(language)}\n >\n <span\n className={` opacity-8 crm-class-flag large crm-class-mr-20 ${language.flag}`}\n ></span>\n {language.code}\n </button>\n ))}\n </div>\n </div>\n )\n}\n","import { faBars, faSearch } from '@fortawesome/free-solid-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport React from 'react'\nimport Dropdown from '../../dropdown/Dropdown'\nimport UserInfo from '../../contentMenuComponent/UserInfo'\nimport LanguageDropdown, { Language } from '../../contentMenuComponent/LanguageDropdown'\n\ninterface Props {\n languages: Language[];\n onChooseLanguage?: (language: Language) => void;\n user: {\n name: string;\n email: string;\n },\n logoSrc?: string;\n}\n\nexport default function TopNavBarComponent(props: Props) {\n\n\n return (\n <div className=\"crm-class-top-nav-bar\">\n <div className=\"crm-class-flex-container\">\n <FontAwesomeIcon\n icon={faBars}\n color=\"#3f6ad8\"\n size=\"1x\"\n className=\"crm-class-mr-20 crm-class-cursor-pointer\"\n />\n <div className=\"crm-class-flex-container\">\n <div className=\"crm-class-icon-container crm-class-mr-20\">\n <FontAwesomeIcon\n icon={faSearch}\n color=\"#3f6ad8\"\n className=\"\"\n size=\"1x\"\n />\n </div>\n\n <img\n src={props.logoSrc ?? 'https://via.placeholder.com/150'}\n style={{ height: '30px' }}\n alt=\"\"\n />\n </div>\n </div>\n <div className=\"crm-class-top-nav-bar-options\">\n {/* */}\n\n <LanguageDropdown languages={props.languages} />\n\n\n <Dropdown startNameWord={props.user.name?.[0]} />\n <UserInfo name={props.user.name} email={props.user.email} />\n </div>\n </div>\n )\n}\n","import React, { useMemo, useState } from 'react'\nimport { faChevronDown, faChevronUp, IconDefinition } from '@fortawesome/free-solid-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { SidebarItemProps } from '../../../types/Common'\nimport { uuidV4 } from '../../../utils/utils'\n\nexport const iconsPath: Record<string, string> = {\n 'pe-7s-diamond': 'faGem',\n 'pe-7s-piggy': 'faPiggyBank',\n 'pe-7s-helm': 'faShip',\n 'pe-7s-hourglass': 'faHourglass',\n 'pe-7s-safe': 'faWallet',\n 'pe-7s-headphones': 'faHeadphones',\n 'pe-7s-next-2': 'faRectangleList',\n 'pe-7s-cloud-download': 'faCloudDownloadAlt',\n 'pe-7s-news-paper': 'faNewspaper',\n 'pe-7s-upload': 'faUpload',\n 'pe-7s-display1': 'faChartBar',\n 'pe-7s-settings': 'faCog'\n}\n\nconst SidebarItem = ({ route }: SidebarItemProps) => {\n const { iconName = '', label, subRoutes = [], className } = route\n const [isSubMenuOpen, setIsSubMenuOpen] = useState(route.selected || false)\n\n const toggleSubMenu = () => {\n setIsSubMenuOpen((prevState) => !prevState)\n }\n\n const icon: IconDefinition = useMemo(() => {\n const name = iconsPath[iconName] || iconName\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n return require(`@fortawesome/free-regular-svg-icons`)[name]\n }, [])\n\n return (\n <React.Fragment>\n <li\n className={`crm-class-sidebar-li ${className ?? ''}`}\n onClick={() => {\n toggleSubMenu()\n if (route.subRoutes?.length === 0) {\n route.action?.()\n }\n }}\n >\n {icon && (\n <span className=\"crm-class-color-icon crm-class-mr-10\">\n <FontAwesomeIcon\n icon={icon}\n className=\"crm-class-color-icon\"\n />\n </span>\n )}\n <span\n // onClick={route.subRoutes?.length ? undefined : route.action}\n className={`${route.selected ? 'crm-class-font-bold' : ''} `}\n >{label}</span>\n\n {!!subRoutes.length && (\n <span className=\"crm-class-ml-auto\">\n <FontAwesomeIcon\n icon={isSubMenuOpen ? faChevronUp : faChevronDown}\n className=\"crm-class-color-icon crm-class-font-10 crm-class-slate-gray\"\n />\n </span>\n )}\n </li>\n {(isSubMenuOpen) && !!subRoutes.length && (\n <ul className=\"crm-class-sidebar-sub-menu-list\">\n {subRoutes?.map((item) => (\n <SidebarItem key={uuidV4()} route={item} />\n ))}\n </ul>\n )}\n </React.Fragment>\n )\n}\n\nexport default SidebarItem\n","// import { IconDefinition } from '@fortawesome/free-solid-svg-icons'\n// import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\n\nimport { Route } from '../../../types/Common'\nimport SidebarItem from './SidebarItem'\nimport React from 'react'\n\ninterface RoutesData {\n label: string;\n icon: string;\n subRoutes: Route[];\n}\n\nconst generateRoute = (\n label: string,\n icon: string | undefined,\n action?: () => void,\n subRoutes: Route[] = []\n): Route => ({\n label,\n visible: true,\n enable: true,\n iconName: icon,\n action: () => action?.(),\n subRoutes: subRoutes.map((subRoute) =>\n generateRoute(subRoute.label, subRoute?.iconName, subRoute.action, subRoute.subRoutes || [])\n )\n})\n\nconst generateRoutes = (\n routesData: {\n label: string;\n icon: string;\n action?: () => void;\n subRoutes: Route[];\n }[]\n): Route[] => {\n return routesData.map((routeData) =>\n generateRoute(routeData.label, routeData?.icon, routeData.action, routeData.subRoutes)\n )\n}\n\nconst SidebarComponent = (props: { routesData: RoutesData[], children: React.ReactNode }) => {\n\n\n const routes: Route[] = generateRoutes(props.routesData)\n\n return (\n <div style={{ display: 'flex' }}>\n <div className=\"crm-class-sidebar\">\n <ul className=\"crm-class-sidebar-list\">\n <span className=\"crm-class-title\">MENU</span>\n\n {routes.map((route, index) => (\n <SidebarItem key={`route_${index}`} route={route} />\n ))}\n\n </ul>\n </div>\n <div className=\"crm-class-sidebar-content\">\n {props.children}\n </div>\n </div>\n )\n}\nexport default SidebarComponent\n","import { faGem } from '@fortawesome/free-regular-svg-icons'\nimport { Route } from '../../../../types/Common'\nimport { IconDefinition } from '@fortawesome/free-solid-svg-icons'\n\ninterface View {\n path: string;\n name: string;\n root: string;\n permission: string | string[];\n views?: View[];\n}\n\nexport const generateSubMenuData = (labels: View[], callBackPath: (path: string) => void): Route[] => {\n return labels.map((label) => ({\n label: label.name,\n className: 'crm-class-ml-20',\n action: () => callBackPath(label.path),\n subRoutes: generateSubMenuData(label.views || [], callBackPath)\n }))\n}\n\nexport const icons: Record<string, IconDefinition> = {\n diamond: faGem,\n default: faGem\n}\n"],"names":["uuidV4","replace","c","crypto","getRandomValues","Uint8Array","toString","colors","Dropdown","props","_useState","useState","isDropdownOpen","setIsDropdownOpen","toggleDropdown","React","className","onClick","style","background","startNameWord","toUpperCase","FontAwesomeIcon","icon","faChevronUp","faChevronDown","UserInfo","_ref","name","email","LanguageDropdown","languages","selectedLanguage","setSelectedLanguage","handleLanguageChange","language","flag","type","map","key","code","TopNavBarComponent","faBars","color","size","faSearch","src","_props$logoSrc","logoSrc","height","alt","_props$user$name","user","iconsPath","SidebarItem","route","_route$iconName","iconName","label","_route$subRoutes","subRoutes","selected","isSubMenuOpen","setIsSubMenuOpen","toggleSubMenu","prevState","useMemo","require","Fragment","_route$subRoutes2","length","_route$action","action","call","item","generateRoute","visible","enable","subRoute","generateRoutes","routesData","routeData","SidebarComponent","routes","display","index","children","generateSubMenuData","labels","callBackPath","path","views","icons","diamond","faGem"],"mappings":"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"}
@@ -1,10 +1,9 @@
1
- import React from 'react';
2
1
  export interface Route {
3
2
  label: string;
4
3
  visible?: boolean;
5
4
  enable?: boolean;
6
5
  selected?: boolean;
7
- icon?: React.ReactNode;
6
+ iconName?: string;
8
7
  action?: () => void;
9
8
  subRoutes?: Route[];
10
9
  className?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sbx-crm-menu-ui",
3
- "version": "2.0.1-beta.0",
3
+ "version": "2.0.1-beta.2",
4
4
  "description": "Menu Created by SBX Company for CRM.",
5
5
  "author": "Frank Carpio",
6
6
  "license": "ISC",