UpdateParentConfirmModal.tsx 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. import React, { FC, useState } from 'react';
  2. import { useTranslation } from 'next-i18next';
  3. import {
  4. Modal, ModalHeader, ModalBody, ModalFooter,
  5. } from 'reactstrap';
  6. import { useUpdateUserGroupConfirmModal } from '~/stores/modal';
  7. export const UpdateParentConfirmModal: FC = () => {
  8. const { t } = useTranslation();
  9. const [isForceUpdate, setForceUpdate] = useState(false);
  10. const { data: modalStatus, close: closeModal } = useUpdateUserGroupConfirmModal();
  11. if (modalStatus == null) {
  12. closeModal();
  13. return <></>;
  14. }
  15. const {
  16. isOpened, targetGroup, updateData, onConfirm,
  17. } = modalStatus;
  18. return (
  19. <Modal className="modal-md" isOpen={isOpened} toggle={closeModal}>
  20. <ModalHeader tag="h4" toggle={closeModal} className="bg-warning text-light">
  21. <i className="icon icon-warning"></i> {t('admin:user_group_management.update_parent_confirm_modal.header')}
  22. </ModalHeader>
  23. {
  24. targetGroup != null && updateData != null ? (
  25. <>
  26. <ModalBody>
  27. <div className="mb-2">
  28. <span className="font-weight-bold">{t('admin:user_group_management.group_name')}</span> : &quot;{targetGroup.name}&quot;
  29. <hr />
  30. {t('admin:user_group_management.update_parent_confirm_modal.caution_change_parent', { groupName: targetGroup.name })}
  31. </div>
  32. <div className="text-danger mb-3">
  33. <i className="icon-exclamation"></i>
  34. {t('admin:user_group_management.update_parent_confirm_modal.danger_message')}
  35. </div>
  36. <div className="form-check form-check-succsess pl-5">
  37. <input
  38. className="form-check-input"
  39. name="forceUpdateParents"
  40. id="forceUpdateParents"
  41. type="checkbox"
  42. checked={isForceUpdate}
  43. onChange={() => setForceUpdate(!isForceUpdate)}
  44. />
  45. <label className="form-check-label" htmlFor="forceUpdateParents">
  46. {t('admin:user_group_management.update_parent_confirm_modal.force_update_parents_label')}
  47. <p className="form-text text-muted mt-0">{t('admin:user_group_management.update_parent_confirm_modal.force_update_parents_description')}</p>
  48. </label>
  49. </div>
  50. </ModalBody>
  51. <ModalFooter>
  52. <button
  53. type="button"
  54. className="btn btn-warning"
  55. onClick={() => {
  56. onConfirm?.(targetGroup, updateData, isForceUpdate);
  57. closeModal();
  58. }}
  59. >
  60. {t('Confirm')}
  61. </button>
  62. </ModalFooter>
  63. </>
  64. ) : (
  65. <>
  66. <ModalBody>
  67. <div>
  68. <span className="text-error">Something went wrong. Please try again.</span>
  69. </div>
  70. </ModalBody>
  71. <ModalFooter>
  72. <button type="button" onClick={() => closeModal()} className="btn btn-sm btn-secondary">
  73. {t('Cancel')}
  74. </button>
  75. </ModalFooter>
  76. </>
  77. )
  78. }
  79. </Modal>
  80. );
  81. };