DeleteAttachmentModal.js 2.1 KB

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