ConfirmDialog.tsx 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import { t } from "../i18n";
  2. import { Dialog, DialogProps } from "./Dialog";
  3. import { ToolButton } from "./ToolButton";
  4. import "./ConfirmDialog.scss";
  5. interface Props extends Omit<DialogProps, "onCloseRequest"> {
  6. onConfirm: () => void;
  7. onCancel: () => void;
  8. confirmText?: string;
  9. cancelText?: string;
  10. }
  11. const ConfirmDialog = (props: Props) => {
  12. const {
  13. onConfirm,
  14. onCancel,
  15. children,
  16. confirmText = t("buttons.confirm"),
  17. cancelText = t("buttons.cancel"),
  18. className = "",
  19. ...rest
  20. } = props;
  21. return (
  22. <Dialog
  23. onCloseRequest={onCancel}
  24. small={true}
  25. {...rest}
  26. className={`confirm-dialog ${className}`}
  27. >
  28. {children}
  29. <div className="confirm-dialog-buttons">
  30. <ToolButton
  31. type="button"
  32. title={cancelText}
  33. aria-label={cancelText}
  34. label={cancelText}
  35. onClick={onCancel}
  36. className="confirm-dialog--cancel"
  37. />
  38. <ToolButton
  39. type="button"
  40. title={confirmText}
  41. aria-label={confirmText}
  42. label={confirmText}
  43. onClick={onConfirm}
  44. className="confirm-dialog--confirm"
  45. />
  46. </div>
  47. </Dialog>
  48. );
  49. };
  50. export default ConfirmDialog;