SideMenu.tsx 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import React, { PureComponent } from 'react';
  2. import appEvents from '../../app_events';
  3. import { contextSrv } from 'app/core/services/context_srv';
  4. import TopSection from './TopSection';
  5. import BottomSection from './BottomSection';
  6. import { store } from 'app/store/store';
  7. export class SideMenu extends PureComponent {
  8. toggleSideMenu = () => {
  9. // ignore if we just made a location change, stops hiding sidemenu on double clicks of back button
  10. const timeSinceLocationChanged = new Date().getTime() - store.getState().location.lastUpdated;
  11. if (timeSinceLocationChanged < 1000) {
  12. return;
  13. }
  14. contextSrv.toggleSideMenu();
  15. appEvents.emit('toggle-sidemenu');
  16. };
  17. toggleSideMenuSmallBreakpoint = () => {
  18. appEvents.emit('toggle-sidemenu-mobile');
  19. };
  20. render() {
  21. return [
  22. <div className="sidemenu__logo" onClick={this.toggleSideMenu} key="logo">
  23. <img src="public/img/grafana_icon.svg" alt="Grafana" />
  24. </div>,
  25. <div className="sidemenu__logo_small_breakpoint" onClick={this.toggleSideMenuSmallBreakpoint} key="hamburger">
  26. <i className="fa fa-bars" />
  27. <span className="sidemenu__close">
  28. <i className="fa fa-times" />&nbsp;Close
  29. </span>
  30. </div>,
  31. <TopSection key="topsection" />,
  32. <BottomSection key="bottomsection" />,
  33. ];
  34. }
  35. }