SidebarNav.jsx 1.6 KB

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