InviteUserControl.jsx 2.0 KB

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