DeleteButton.tsx 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import React, { PureComponent } from 'react';
  2. export interface DeleteButtonProps {
  3. onConfirmDelete();
  4. }
  5. export interface DeleteButtonStates {
  6. showConfirm: boolean;
  7. }
  8. export default class DeleteButton extends PureComponent<DeleteButtonProps, DeleteButtonStates> {
  9. state: DeleteButtonStates = {
  10. showConfirm: false,
  11. };
  12. onClickDelete = event => {
  13. if (event) {
  14. event.preventDefault();
  15. }
  16. this.setState({
  17. showConfirm: true,
  18. });
  19. };
  20. onClickCancel = event => {
  21. if (event) {
  22. event.preventDefault();
  23. }
  24. this.setState({
  25. showConfirm: false,
  26. });
  27. };
  28. render() {
  29. const onClickConfirm = this.props.onConfirmDelete;
  30. let showConfirm;
  31. let showDeleteButton;
  32. if (this.state.showConfirm) {
  33. showConfirm = 'show';
  34. showDeleteButton = 'hide';
  35. } else {
  36. showConfirm = 'hide';
  37. showDeleteButton = 'show';
  38. }
  39. return (
  40. <span className="delete-button-container">
  41. <a className={'delete-button ' + showDeleteButton + ' btn btn-danger btn-small'} onClick={this.onClickDelete}>
  42. <i className="fa fa-remove" />
  43. </a>
  44. <span className="confirm-delete-container">
  45. <span className={'confirm-delete ' + showConfirm}>
  46. <a className="btn btn-small" onClick={this.onClickCancel}>
  47. Cancel
  48. </a>
  49. <a className="btn btn-danger btn-small" onClick={onClickConfirm}>
  50. Confirm Delete
  51. </a>
  52. </span>
  53. </span>
  54. </span>
  55. );
  56. }
  57. }