DeletePageListModal.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import Button from 'react-bootstrap/es/Button';
  4. import Modal from 'react-bootstrap/es/Modal';
  5. import Checkbox from 'react-bootstrap/es/Checkbox';
  6. import ReactUtils from '../ReactUtils';
  7. export default class DeletePageListModal extends React.Component {
  8. /*
  9. * the threshold for omitting body
  10. */
  11. static get OMIT_BODY_THRES() { return 400 };
  12. constructor(props) {
  13. super(props);
  14. }
  15. componentWillMount() {
  16. }
  17. render() {
  18. if (this.props.pages === undefined || this.props.pages.length == 0) {
  19. return <div></div>
  20. }
  21. const listView = this.props.pages.map((page) => {
  22. return (
  23. <li key={page._id}>{page.path}</li>
  24. );
  25. });
  26. return (
  27. <Modal show={this.props.isShown} onHide={this.props.cancel} className="page-list-delete-modal">
  28. <Modal.Header closeButton>
  29. <Modal.Title>Deleting pages:</Modal.Title>
  30. </Modal.Header>
  31. <Modal.Body>
  32. <ul>
  33. {listView}
  34. </ul>
  35. </Modal.Body>
  36. <Modal.Footer>
  37. <span className="text-danger">{this.props.errorMessage}</span>&nbsp;
  38. <Checkbox onClick={this.props.toggleDeleteCompletely}>Delete completely</Checkbox>
  39. <Button onClick={this.props.cancel}>Cancel</Button>
  40. <Button onClick={this.props.confirmedToDelete} className="btn-danger">Delete</Button>
  41. </Modal.Footer>
  42. </Modal>
  43. );
  44. }
  45. }
  46. DeletePageListModal.propTypes = {
  47. isShown: PropTypes.bool.isRequired,
  48. pages: PropTypes.array,
  49. errorMessage: PropTypes.string,
  50. cancel: PropTypes.func.isRequired, // for cancel evnet handling
  51. confirmedToDelete: PropTypes.func.isRequired, // for confirmed event handling
  52. toggleDeleteCompletely: PropTypes.func.isRequired, // for delete completely check event handling
  53. };