UserInviteModal.jsx 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import { withTranslation } from 'react-i18next';
  4. import Button from 'react-bootstrap/es/Button';
  5. import Modal from 'react-bootstrap/es/Modal';
  6. import FormControl from 'react-bootstrap/es/FormControl';
  7. import { createSubscribedElement } from '../../UnstatedUtils';
  8. import AppContainer from '../../../services/AppContainer';
  9. class UserInviteModal extends React.Component {
  10. constructor(props) {
  11. super(props);
  12. this.state = {
  13. };
  14. this.handleSubmit = this.handleSubmit.bind(this);
  15. }
  16. handleSubmit() {
  17. console.log('push submit');
  18. }
  19. render() {
  20. const { t } = this.props;
  21. return (
  22. <Modal show={this.props.show} onHide={this.props.onToggleModal}>
  23. <Modal.Header className="modal-header" closeButton>
  24. <Modal.Title>
  25. { t('user_management.invite_users') }
  26. </Modal.Title>
  27. </Modal.Header>
  28. <Modal.Body>
  29. <label> { t('user_management.emails') }</label>
  30. <FormControl
  31. placeholder="e.g. user@growi.org"
  32. />
  33. </Modal.Body>
  34. <Modal.Footer className="d-flex">
  35. <label className="mr-3 text-left" style={{ flex: 1 }}>
  36. {/* TODO Check Boxの値を設定する */}
  37. <input
  38. type="checkbox"
  39. id="comment-form-is-markdown"
  40. name="isMarkdown"
  41. checked={this.state.isMarkdown}
  42. value="1"
  43. onChange={this.updateStateCheckbox}
  44. />
  45. <span className="ml-2">{ t('user_management.invite_thru_email') }</span>
  46. </label>
  47. <div>
  48. <Button bsStyle="danger" className="fcbtn btn btn-xs btn-danger btn-outline btn-rounded" onClick={this.props.onToggleModal}>
  49. Cancel
  50. </Button>
  51. <Button
  52. bsStyle="primary"
  53. className="fcbtn btn btn-primary btn-outline btn-rounded btn-1b"
  54. onClick={this.handleSubmit}
  55. >
  56. Done
  57. </Button>
  58. </div>
  59. </Modal.Footer>
  60. </Modal>
  61. );
  62. }
  63. }
  64. /**
  65. * Wrapper component for using unstated
  66. */
  67. const UserInviteModalWrapper = (props) => {
  68. return createSubscribedElement(UserInviteModal, props, [AppContainer]);
  69. };
  70. UserInviteModal.propTypes = {
  71. t: PropTypes.func.isRequired, // i18next
  72. appContainer: PropTypes.instanceOf(AppContainer).isRequired,
  73. show: PropTypes.bool.isRequired,
  74. onToggleModal: PropTypes.func.isRequired,
  75. };
  76. export default withTranslation()(UserInviteModalWrapper);