GrantedGroupsInheritanceSelectModal.tsx 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import { useState, type JSX } from 'react';
  2. import { useTranslation } from 'react-i18next';
  3. import {
  4. Modal, ModalHeader, ModalBody, ModalFooter,
  5. } from 'reactstrap';
  6. import {
  7. useGrantedGroupsInheritanceSelectModalActions, useGrantedGroupsInheritanceSelectModalStatus,
  8. } from '~/states/ui/modal/granted-groups-inheritance-select';
  9. const GrantedGroupsInheritanceSelectModal = (): JSX.Element => {
  10. const { t } = useTranslation();
  11. const { isOpened, onCreateBtnClick: _onCreateBtnClick } = useGrantedGroupsInheritanceSelectModalStatus();
  12. const { close: closeModal } = useGrantedGroupsInheritanceSelectModalActions();
  13. const [onlyInheritUserRelatedGrantedGroups, setOnlyInheritUserRelatedGrantedGroups] = useState(false);
  14. const onCreateBtnClick = async() => {
  15. await _onCreateBtnClick?.(onlyInheritUserRelatedGrantedGroups);
  16. setOnlyInheritUserRelatedGrantedGroups(false); // reset to false after create request
  17. };
  18. return (
  19. <Modal
  20. isOpen={isOpened}
  21. toggle={() => closeModal()}
  22. >
  23. <ModalHeader tag="h4" toggle={() => closeModal()}>
  24. {t('modal_granted_groups_inheritance_select.select_granted_groups')}
  25. </ModalHeader>
  26. <ModalBody>
  27. <div className="px-3 pt-3">
  28. <div className="form-check radio-primary mb-3">
  29. <input
  30. type="radio"
  31. id="inheritAllGroupsRadio"
  32. className="form-check-input"
  33. form="formImageType"
  34. checked={!onlyInheritUserRelatedGrantedGroups}
  35. onChange={() => { setOnlyInheritUserRelatedGrantedGroups(false) }}
  36. />
  37. <label className="form-check-label" htmlFor="inheritAllGroupsRadio">
  38. {t('modal_granted_groups_inheritance_select.inherit_all_granted_groups_from_parent')}
  39. </label>
  40. </div>
  41. <div className="form-check radio-primary">
  42. <input
  43. type="radio"
  44. id="onlyInheritRelatedGroupsRadio"
  45. className="form-check-input"
  46. form="formImageType"
  47. checked={onlyInheritUserRelatedGrantedGroups}
  48. onChange={() => { setOnlyInheritUserRelatedGrantedGroups(true) }}
  49. />
  50. <label className="form-check-label" htmlFor="onlyInheritRelatedGroupsRadio">
  51. {t('modal_granted_groups_inheritance_select.only_inherit_related_groups')}
  52. </label>
  53. </div>
  54. </div>
  55. </ModalBody>
  56. <ModalFooter className="grw-modal-footer">
  57. <button type="button" className="me-2 btn btn-secondary" onClick={() => closeModal()}>{t('Cancel')}</button>
  58. <button className="btn btn-primary" type="button" onClick={onCreateBtnClick}>
  59. {t('modal_granted_groups_inheritance_select.create_page')}
  60. </button>
  61. </ModalFooter>
  62. </Modal>
  63. );
  64. };
  65. export default GrantedGroupsInheritanceSelectModal;