UpdateParentConfirmModal.tsx 3.2 KB

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