DeletePageListModal.jsx 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import {
  4. Button,
  5. Modal, ModalHeader, ModalBody, ModalFooter,
  6. } from 'reactstrap';
  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. componentWillMount() {
  13. }
  14. render() {
  15. if (this.props.pages == null || this.props.pages.length === 0) {
  16. return <div></div>;
  17. }
  18. const listView = this.props.pages.map((page) => {
  19. return (
  20. <li key={page._id}>{page.path}</li>
  21. );
  22. });
  23. return (
  24. <Modal isOpen={this.props.isShown} toggle={this.props.cancel} className="page-list-delete-modal">
  25. <ModalHeader tag="h4" toggle={this.props.cancel}>
  26. Deleting pages:
  27. </ModalHeader>
  28. <ModalBody>
  29. <ul>
  30. {listView}
  31. </ul>
  32. </ModalBody>
  33. <ModalFooter>
  34. <div className="d-flex justify-content-between">
  35. <span className="text-danger">{this.props.errorMessage}</span>
  36. <span className="d-flex align-items-center">
  37. <div className="custom-control custom-checkbox custom-checkbox-danger mr-2">
  38. <input
  39. type="checkbox"
  40. className="custom-control-input"
  41. id="customCheck-delete-completely"
  42. checked={this.props.isDeleteCompletely}
  43. onChange={this.props.toggleDeleteCompletely}
  44. />
  45. <label
  46. className="custom-control-label text-danger"
  47. htmlFor="customCheck-delete-completely"
  48. >
  49. Delete completely
  50. </label>
  51. </div>
  52. <Button color={this.props.isDeleteCompletely ? 'danger' : 'light'} onClick={this.props.confirmedToDelete}>
  53. <i className="icon-trash"></i>Delete
  54. </Button>
  55. </span>
  56. </div>
  57. </ModalFooter>
  58. </Modal>
  59. );
  60. }
  61. }
  62. DeletePageListModal.propTypes = {
  63. isShown: PropTypes.bool.isRequired,
  64. pages: PropTypes.array,
  65. errorMessage: PropTypes.string,
  66. cancel: PropTypes.func.isRequired, // for cancel evnet handling
  67. isDeleteCompletely: PropTypes.bool.isRequired,
  68. confirmedToDelete: PropTypes.func.isRequired, // for confirmed event handling
  69. toggleDeleteCompletely: PropTypes.func.isRequired, // for delete completely check event handling
  70. };