InviteUserControl.jsx 2.2 KB

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