UserGroupUserModal.jsx 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import { withTranslation } from 'react-i18next';
  4. import Modal from 'react-bootstrap/es/Modal';
  5. import UserGroupUserFormByInput from './UserGroupUserFormByInput';
  6. import { createSubscribedElement } from '../../UnstatedUtils';
  7. import AppContainer from '../../../services/AppContainer';
  8. import UserGroupDetailContainer from '../../../services/UserGroupDetailContainer';
  9. import RadioButtonForSerchUserOption from './RadioButtonForSerchUserOption';
  10. import CheckBoxForSerchUserOption from './CheckBoxForSerchUserOption';
  11. class UserGroupUserModal extends React.Component {
  12. render() {
  13. const { t, userGroupDetailContainer } = this.props;
  14. return (
  15. <Modal show={userGroupDetailContainer.state.isUserGroupUserModalOpen} onHide={userGroupDetailContainer.closeUserGroupUserModal}>
  16. <Modal.Header closeButton>
  17. <Modal.Title>{t('user_group_management.add_user')}</Modal.Title>
  18. </Modal.Header>
  19. <Modal.Body>
  20. <div className="p-3">
  21. <UserGroupUserFormByInput />
  22. </div>
  23. <h2 className="border-bottom">{t('user_group_management.search_option')}</h2>
  24. <div className="row mt-4">
  25. <div className="col-xs-6">
  26. <div className="mb-5">
  27. <CheckBoxForSerchUserOption
  28. option="Mail"
  29. checked={userGroupDetailContainer.state.isAlsoMailSearched}
  30. onChange={userGroupDetailContainer.switchIsAlsoMailSearched}
  31. />
  32. </div>
  33. <div className="mb-5">
  34. <CheckBoxForSerchUserOption
  35. option="Name"
  36. checked={userGroupDetailContainer.state.isAlsoNameSearched}
  37. onChange={userGroupDetailContainer.switchIsAlsoNameSearched}
  38. />
  39. </div>
  40. </div>
  41. <div className="col-xs-6">
  42. <div className="mb-5">
  43. <RadioButtonForSerchUserOption
  44. searchType="forward"
  45. checked={userGroupDetailContainer.state.searchType === 'forward'}
  46. onChange={() => { userGroupDetailContainer.switchSearchType('forward') }}
  47. />
  48. </div>
  49. <div className="mb-5">
  50. <RadioButtonForSerchUserOption
  51. searchType="partial"
  52. checked={userGroupDetailContainer.state.searchType === 'partial'}
  53. onChange={() => { userGroupDetailContainer.switchSearchType('partial') }}
  54. />
  55. </div>
  56. <div className="mb-5">
  57. <RadioButtonForSerchUserOption
  58. searchType="backward"
  59. checked={userGroupDetailContainer.state.searchType === 'backword'}
  60. onChange={() => { userGroupDetailContainer.switchSearchType('backword') }}
  61. />
  62. </div>
  63. </div>
  64. </div>
  65. </Modal.Body>
  66. </Modal>
  67. );
  68. }
  69. }
  70. UserGroupUserModal.propTypes = {
  71. t: PropTypes.func.isRequired, // i18next
  72. appContainer: PropTypes.instanceOf(AppContainer).isRequired,
  73. userGroupDetailContainer: PropTypes.instanceOf(UserGroupDetailContainer).isRequired,
  74. };
  75. /**
  76. * Wrapper component for using unstated
  77. */
  78. const UserGroupUserModalWrapper = (props) => {
  79. return createSubscribedElement(UserGroupUserModal, props, [AppContainer, UserGroupDetailContainer]);
  80. };
  81. export default withTranslation()(UserGroupUserModalWrapper);