UserGroupDetailPage.jsx 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import { withTranslation } from 'react-i18next';
  4. import UserGroupEditForm from './UserGroupEditForm';
  5. import UserGroupUserTable from './UserGroupUserTable';
  6. import UserGroupUserModal from './UserGroupUserModal';
  7. import UserGroupPageList from './UserGroupPageList';
  8. import { createSubscribedElement } from '../../UnstatedUtils';
  9. import AppContainer from '../../../services/AppContainer';
  10. class UserGroupDetailPage extends React.Component {
  11. render() {
  12. const { t } = this.props;
  13. return (
  14. <div>
  15. <a href="/admin/user-groups" className="btn btn-default">
  16. <i className="icon-fw ti-arrow-left" aria-hidden="true"></i>
  17. {t('admin:user_group_management.back_to_list')}
  18. </a>
  19. <div className="m-t-20 form-box">
  20. <UserGroupEditForm />
  21. </div>
  22. <legend className="m-t-20">{t('admin:user_group_management.user_list')}</legend>
  23. <UserGroupUserTable />
  24. <UserGroupUserModal />
  25. <legend className="m-t-20">{t('Page')}</legend>
  26. <div className="page-list">
  27. <UserGroupPageList />
  28. </div>
  29. </div>
  30. );
  31. }
  32. }
  33. UserGroupDetailPage.propTypes = {
  34. t: PropTypes.func.isRequired, // i18next
  35. appContainer: PropTypes.instanceOf(AppContainer).isRequired,
  36. };
  37. /**
  38. * Wrapper component for using unstated
  39. */
  40. const UserGroupDetailPageWrapper = (props) => {
  41. return createSubscribedElement(UserGroupDetailPage, props, [AppContainer]);
  42. };
  43. export default withTranslation()(UserGroupDetailPageWrapper);