DeletePageListModal.js 1.7 KB

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