InviteUserControl.jsx 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import React, { Fragment } 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. import UserInviteModal from './UserInviteModal';
  7. import ConfirmPasswordModal from './ConfirmPasswordModal';
  8. class InviteUserControl extends React.Component {
  9. constructor(props) {
  10. super(props);
  11. this.state = {
  12. isUserInviteModalShown: false,
  13. };
  14. this.toggleUserInviteModal = this.toggleUserInviteModal.bind(this);
  15. }
  16. /**
  17. * user招待モーダルを開閉する
  18. */
  19. toggleUserInviteModal() {
  20. this.setState({ isUserInviteModalShown: !this.state.isUserInviteModalShown });
  21. }
  22. render() {
  23. const { t } = this.props;
  24. return (
  25. <Fragment>
  26. <button type="button" className="btn btn-default" onClick={this.toggleUserInviteModal}>
  27. { t('user_management.invite_users') }
  28. </button>
  29. <UserInviteModal
  30. show={this.state.isUserInviteModalShown}
  31. onToggleModal={this.toggleUserInviteModal}
  32. />
  33. </Fragment>
  34. );
  35. }
  36. }
  37. const InviteUserControlWrapper = (props) => {
  38. return createSubscribedElement(InviteUserControl, props, [AppContainer]);
  39. };
  40. InviteUserControl.propTypes = {
  41. t: PropTypes.func.isRequired, // i18next
  42. appContainer: PropTypes.instanceOf(AppContainer).isRequired,
  43. };
  44. export default withTranslation()(InviteUserControlWrapper);