import React, { FC, useState, useCallback } from 'react'; import { Modal, ModalHeader, ModalBody, ModalFooter, } from 'reactstrap'; import { useTranslation } from 'react-i18next'; import { IUserGroup, IUserGroupHasId } from '~/interfaces/user'; import { CustomWindow } from '~/interfaces/global'; import Xss from '~/services/xss'; type Props = { userGroup?: IUserGroupHasId, onClickCreateButton?: (userGroupData: Partial) => Promise isShow?: boolean onHide?: () => Promise | void }; const UserGroupCreateModal: FC = (props: Props) => { const xss: Xss = (window as CustomWindow).xss; const { t } = useTranslation(); const { userGroup, onClickCreateButton, isShow, onHide, } = props; /* * State */ const [currentName, setName] = useState(userGroup != null ? userGroup.name : ''); const [currentDescription, setDescription] = useState(userGroup != null ? userGroup.description : ''); /* * Function */ const onChangeNameHandler = useCallback((e) => { setName(e.target.value); }, []); const onChangeDescriptionHandler = useCallback((e) => { setDescription(e.target.value); }, []); const onClickCreateButtonHandler = useCallback(async(e) => { e.preventDefault(); // no reload if (onClickCreateButton == null) { return; } await onClickCreateButton({ name: currentName, description: currentDescription }); }, [currentName, currentDescription, onClickCreateButton]); return ( {t('admin:user_group_management.basic_info')}