DeletePageListModal.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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. export default class DeletePageListModal extends React.Component {
  7. /*
  8. * the threshold for omitting body
  9. */
  10. static get OMIT_BODY_THRES() { return 400 }
  11. componentWillMount() {
  12. }
  13. render() {
  14. if (this.props.pages == null || this.props.pages.length === 0) {
  15. return <div></div>;
  16. }
  17. const listView = this.props.pages.map((page) => {
  18. return (
  19. <li key={page._id}>{page.path}</li>
  20. );
  21. });
  22. return (
  23. <Modal show={this.props.isShown} onHide={this.props.cancel} className="page-list-delete-modal">
  24. <Modal.Header closeButton>
  25. <Modal.Title>Deleting pages:</Modal.Title>
  26. </Modal.Header>
  27. <Modal.Body>
  28. <ul>
  29. {listView}
  30. </ul>
  31. </Modal.Body>
  32. <Modal.Footer>
  33. <div className="d-flex justify-content-between">
  34. <span className="text-danger">{this.props.errorMessage}</span>
  35. <span className="d-flex align-items-center">
  36. <Checkbox className="text-danger" onClick={this.props.toggleDeleteCompletely} inline>Delete completely</Checkbox>
  37. <span className="m-l-10">
  38. <Button onClick={this.props.confirmedToDelete}><i className="icon-trash"></i>Delete</Button>
  39. </span>
  40. </span>
  41. </div>
  42. </Modal.Footer>
  43. </Modal>
  44. );
  45. }
  46. }
  47. DeletePageListModal.propTypes = {
  48. isShown: PropTypes.bool.isRequired,
  49. pages: PropTypes.array,
  50. errorMessage: PropTypes.string,
  51. cancel: PropTypes.func.isRequired, // for cancel evnet handling
  52. confirmedToDelete: PropTypes.func.isRequired, // for confirmed event handling
  53. toggleDeleteCompletely: PropTypes.func.isRequired, // for delete completely check event handling
  54. };