DeleteAttachmentModal.js 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import React from 'react';
  2. import Button from 'react-bootstrap/es/Button';
  3. import Modal from 'react-bootstrap/es/Modal';
  4. import Icon from '../Common/Icon';
  5. import User from '../User/User';
  6. export default class DeleteAttachmentModal extends React.Component {
  7. constructor(props) {
  8. super(props);
  9. this._onDeleteConfirm = this._onDeleteConfirm.bind(this);
  10. }
  11. _onDeleteConfirm() {
  12. this.props.onAttachmentDeleteClickedConfirm(this.props.attachmentToDelete);
  13. }
  14. renderByFileFormat(attachment) {
  15. if (attachment.fileFormat.match(/image\/.+/i)) {
  16. return (
  17. <div className="attachment-delete-image">
  18. <p>
  19. {attachment.originalName} uploaded by <User user={attachment.creator} username />
  20. </p>
  21. <img src={attachment.url} />
  22. </div>
  23. );
  24. }
  25. return (
  26. <p className="attachment-delete-file">
  27. <Icon name="file-o" />
  28. </p>
  29. );
  30. }
  31. render() {
  32. const attachment = this.props.attachmentToDelete;
  33. if (attachment === null) {
  34. return null;
  35. }
  36. const inUse = this.props.inUse;
  37. const props = Object.assign({}, this.props);
  38. delete props.onAttachmentDeleteClickedConfirm;
  39. delete props.attachmentToDelete;
  40. delete props.inUse;
  41. delete props.deleting;
  42. delete props.deleteError;
  43. let deletingIndicator = '';
  44. if (this.props.deleting) {
  45. deletingIndicator = <Icon name="spinner" spin />;
  46. }
  47. if (this.props.deleteError) {
  48. deletingIndicator = <p>{this.props.deleteError}</p>;
  49. }
  50. let renderAttachment = this.renderByFileFormat(attachment);
  51. return (
  52. <Modal {...props} className="attachment-delete-modal" bsSize="large" aria-labelledby="contained-modal-title-lg">
  53. <Modal.Header closeButton>
  54. <Modal.Title id="contained-modal-title-lg">Delete attachment?</Modal.Title>
  55. </Modal.Header>
  56. <Modal.Body>
  57. {renderAttachment}
  58. </Modal.Body>
  59. <Modal.Footer>
  60. {deletingIndicator}
  61. <Button onClick={this._onDeleteConfirm} bsStyle="danger"
  62. disabled={this.props.deleting}
  63. >Delete!</Button>
  64. </Modal.Footer>
  65. </Modal>
  66. );
  67. }
  68. }