DownloadDictModal.tsx 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import React, { useState, FC } from 'react';
  2. import PropTypes from 'prop-types';
  3. import {
  4. Modal, ModalHeader, ModalBody, ModalFooter,
  5. } from 'reactstrap';
  6. import { useTranslation } from 'react-i18next';
  7. type DownloadDictModalProps = {
  8. isModalOpen: boolean
  9. onConfirmEnableTextlint?: (isSkipAskingAgainChecked: boolean) => void;
  10. onCancel?: () => void;
  11. };
  12. export const DownloadDictModal: FC<DownloadDictModalProps> = (props) => {
  13. const { t } = useTranslation('');
  14. const [isSkipAskingAgainChecked, setIsSkipAskingAgainChecked] = useState(true);
  15. const onCancel = () => {
  16. if (props.onCancel != null) {
  17. props.onCancel();
  18. }
  19. };
  20. const onConfirmEnableTextlint = () => {
  21. if (props.onConfirmEnableTextlint != null) {
  22. props.onConfirmEnableTextlint(isSkipAskingAgainChecked);
  23. }
  24. };
  25. return (
  26. <Modal isOpen={props.isModalOpen} toggle={onCancel} className="">
  27. <ModalHeader tag="h4" toggle={onCancel} className="bg-warning">
  28. <i className="icon-fw icon-question" />
  29. Warning
  30. </ModalHeader>
  31. <ModalBody>
  32. {t('modal_enable_textlint.confirm_download_dict_and_enable_textlint')}
  33. </ModalBody>
  34. <ModalFooter>
  35. <div className="mr-3 custom-control custom-checkbox custom-checkbox-info">
  36. <input
  37. type="checkbox"
  38. className="custom-control-input"
  39. id="dont-ask-again"
  40. checked={isSkipAskingAgainChecked}
  41. onChange={e => setIsSkipAskingAgainChecked(e.target.checked)}
  42. />
  43. <label className="custom-control-label align-center" htmlFor="dont-ask-again">
  44. {t('modal_enable_textlint.dont_ask_again')}
  45. </label>
  46. </div>
  47. <button
  48. type="button"
  49. className="btn btn-outline-secondary"
  50. onClick={onCancel}
  51. >
  52. {t('Cancel')}
  53. </button>
  54. <button
  55. type="button"
  56. className="btn btn-outline-primary ml-3"
  57. onClick={onConfirmEnableTextlint}
  58. >
  59. {t('modal_enable_textlint.enable_textlint')}
  60. </button>
  61. </ModalFooter>
  62. </Modal>
  63. );
  64. };
  65. DownloadDictModal.propTypes = {
  66. isModalOpen: PropTypes.bool.isRequired,
  67. onConfirmEnableTextlint: PropTypes.func,
  68. onCancel: PropTypes.func,
  69. };