PageCreateButton.jsx 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import { withTranslation } from 'react-i18next';
  4. import { createSubscribedElement } from '../UnstatedUtils';
  5. import AppContainer from '../../services/AppContainer';
  6. const PageCreateButton = (props) => {
  7. const { t, appContainer, isIcon } = props;
  8. if (isIcon) {
  9. return (
  10. <button className="btn btn-lg btn-primary rounded-circle waves-effect waves-light" type="button" onClick={appContainer.openPageCreateModal}>
  11. <i className="icon-pencil"></i>
  12. </button>
  13. );
  14. }
  15. return (
  16. <button className="nav-link create-page border-0 bg-transparent" type="button" onClick={appContainer.openPageCreateModal}>
  17. <i className="icon-pencil mr-2"></i>
  18. <span>{ t('New') }</span>
  19. </button>
  20. );
  21. };
  22. /**
  23. * Wrapper component for using unstated
  24. */
  25. const PageCreateButtonWrapper = (props) => {
  26. return createSubscribedElement(PageCreateButton, props, [AppContainer]);
  27. };
  28. PageCreateButton.propTypes = {
  29. t: PropTypes.func.isRequired, // i18next
  30. appContainer: PropTypes.instanceOf(AppContainer).isRequired,
  31. isIcon: PropTypes.bool,
  32. };
  33. export default withTranslation()(PageCreateButtonWrapper);