SidebarNav.jsx 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import React from 'react';
  2. // import PropTypes from 'prop-types';
  3. import { withTranslation } from 'react-i18next';
  4. import EditIcon from '@atlaskit/icon/glyph/edit';
  5. import TrayIcon from '@atlaskit/icon/glyph/tray';
  6. import {
  7. GlobalNav,
  8. } from '@atlaskit/navigation-next';
  9. import Drawer from '@atlaskit/drawer';
  10. import { createSubscribedElement } from '../UnstatedUtils';
  11. import AppContainer from '../../services/AppContainer';
  12. import GrowiLogo from '../GrowiLogo';
  13. class SidebarNav extends React.Component {
  14. propTypes = {
  15. };
  16. state = {
  17. isDrawerOpen: false,
  18. };
  19. openDrawer = () => this.setState({ isDrawerOpen: true });
  20. closeDrawer = () => this.setState({ isDrawerOpen: false });
  21. render() {
  22. const { isDrawerOpen } = this.state;
  23. return (
  24. <>
  25. <div className="grw-logo">
  26. <GrowiLogo />
  27. </div>
  28. <GlobalNav
  29. primaryItems={[
  30. { id: 'create', icon: EditIcon, label: 'Create' },
  31. {
  32. id: 'drawer', icon: TrayIcon, label: 'Drawer', onClick: this.openDrawer,
  33. },
  34. ]}
  35. secondaryItems={[]}
  36. />
  37. <Drawer onClose={this.closeDrawer} isOpen={isDrawerOpen} width="wide">
  38. <code>Drawer contents</code>
  39. </Drawer>
  40. </>
  41. );
  42. }
  43. }
  44. /**
  45. * Wrapper component for using unstated
  46. */
  47. const SidebarNavWrapper = (props) => {
  48. return createSubscribedElement(SidebarNav, props, [AppContainer]);
  49. };
  50. export default withTranslation()(SidebarNavWrapper);