OutsideShareLinkModal.jsx 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import {
  4. Modal, ModalHeader, ModalBody,
  5. } from 'reactstrap';
  6. import { withTranslation } from 'react-i18next';
  7. import { withUnstatedContainers } from './UnstatedUtils';
  8. import AppContainer from '../services/AppContainer';
  9. import PageContainer from '../services/PageContainer';
  10. import ShareLinkList from './ShareLinkList';
  11. import ShareLinkForm from './ShareLinkForm';
  12. class OutsideShareLinkModal extends React.Component {
  13. constructor() {
  14. super();
  15. this.state = {
  16. isOpenShareLinkForm: false,
  17. };
  18. this.toggleShareLinkFormHandler = this.toggleShareLinkFormHandler.bind(this);
  19. }
  20. toggleShareLinkFormHandler() {
  21. this.setState({ isOpenShareLinkForm: !this.state.isOpenShareLinkForm });
  22. }
  23. render() {
  24. return (
  25. <Modal size="lg" isOpen={this.props.isOpen} toggle={this.props.onClose}>
  26. <ModalHeader tag="h4" toggle={this.props.onClose} className="bg-primary text-light">Title
  27. </ModalHeader>
  28. <ModalBody>
  29. <div className="container">
  30. <div className="form-inline mb-3">
  31. <h4>Shared Link List</h4>
  32. <button className="ml-auto btn btn-danger" type="button">Delete all links</button>
  33. </div>
  34. <div>
  35. <ShareLinkList />
  36. <button
  37. className="btn btn-outline-secondary d-block mx-auto px-5 mb-3"
  38. type="button"
  39. onClick={this.toggleShareLinkFormHandler}
  40. >
  41. {this.state.isOpenShareLinkForm ? 'Close' : 'New'}
  42. </button>
  43. {this.state.isOpenShareLinkForm && <ShareLinkForm onCloseForm={this.toggleShareLinkFormHandler} />}
  44. </div>
  45. </div>
  46. </ModalBody>
  47. </Modal>
  48. );
  49. }
  50. }
  51. /**
  52. * Wrapper component for using unstated
  53. */
  54. const ModalControlWrapper = withUnstatedContainers(OutsideShareLinkModal, [AppContainer, PageContainer]);
  55. OutsideShareLinkModal.propTypes = {
  56. t: PropTypes.func.isRequired, // i18next
  57. appContainer: PropTypes.instanceOf(AppContainer).isRequired,
  58. pageContainer: PropTypes.instanceOf(PageContainer).isRequired,
  59. isOpen: PropTypes.bool.isRequired,
  60. onClose: PropTypes.func.isRequired,
  61. };
  62. export default withTranslation()(ModalControlWrapper);