BottomNavLinks.tsx 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import React, { PureComponent } from 'react';
  2. import appEvents from '../../app_events';
  3. import { User } from '../../services/context_srv';
  4. export interface Props {
  5. link: any;
  6. user: User;
  7. }
  8. class BottomNavLinks extends PureComponent<Props> {
  9. itemClicked = (event, child) => {
  10. if (child.url === '/shortcuts') {
  11. event.preventDefault();
  12. appEvents.emit('show-modal', {
  13. templateHtml: '<help-modal></help-modal>',
  14. });
  15. }
  16. };
  17. switchOrg = () => {
  18. appEvents.emit('show-modal', {
  19. templateHtml: '<org-switcher dismiss="dismiss()"></org-switcher>',
  20. });
  21. };
  22. render() {
  23. const { link, user } = this.props;
  24. return (
  25. <div className="sidemenu-item dropdown dropup">
  26. <a href={link.url} className="sidemenu-link" target={link.target}>
  27. <span className="icon-circle sidemenu-icon">
  28. {link.icon && <i className={link.icon} />}
  29. {link.img && <img src={link.img} />}
  30. </span>
  31. </a>
  32. <ul className="dropdown-menu dropdown-menu--sidemenu" role="menu">
  33. {link.subTitle && (
  34. <li className="sidemenu-subtitle">
  35. <span className="sidemenu-item-text">{link.subTitle}</span>
  36. </li>
  37. )}
  38. {link.showOrgSwitcher && (
  39. <li className="sidemenu-org-switcher">
  40. <a onClick={this.switchOrg}>
  41. <div>
  42. <div className="sidemenu-org-switcher__org-name">{user.orgName}</div>
  43. <div className="sidemenu-org-switcher__org-current">Current Org:</div>
  44. </div>
  45. <div className="sidemenu-org-switcher__switch">
  46. <i className="fa fa-fw fa-random" />Switch
  47. </div>
  48. </a>
  49. </li>
  50. )}
  51. {link.children &&
  52. link.children.map((child, index) => {
  53. if (!child.hideFromMenu) {
  54. return (
  55. <li className={child.divider} key={`${child.text}-${index}`}>
  56. <a href={child.url} target={child.target} onClick={event => this.itemClicked(event, child)}>
  57. {child.icon && <i className={child.icon} />}
  58. {child.text}
  59. </a>
  60. </li>
  61. );
  62. }
  63. return null;
  64. })}
  65. <li className="side-menu-header">
  66. <span className="sidemenu-item-text">{link.text}</span>
  67. </li>
  68. </ul>
  69. </div>
  70. );
  71. }
  72. }
  73. export default BottomNavLinks;