import type { FC } from 'react'; import React, { useState, useEffect, useCallback } from 'react'; import type { Ref, IUserGroup, IUserGroupHasId } from '@growi/core'; import { useTranslation } from 'next-i18next'; import { Modal, ModalHeader, ModalBody, ModalFooter, } from 'reactstrap'; type Props = { userGroup?: IUserGroupHasId, buttonLabel?: string, onClickSubmit?: (userGroupData: Partial) => Promise isShow?: boolean onHide?: () => Promise | void isExternalGroup?: boolean }; export const UserGroupModal: FC = (props: Props) => { const { t } = useTranslation('admin'); const { userGroup, buttonLabel, onClickSubmit, isShow, onHide, isExternalGroup = false, } = props; /* * State */ const [currentName, setName] = useState(''); const [currentDescription, setDescription] = useState(''); const [currentParent, setParent] = useState | null>(null); /* * Function */ const onChangeNameHandler = useCallback((e) => { setName(e.target.value); }, []); const onChangeDescriptionHandler = useCallback((e) => { setDescription(e.target.value); }, []); const onSubmitHandler = useCallback(async(e) => { e.preventDefault(); // no reload if (onClickSubmit == null) { return; } await onClickSubmit({ _id: userGroup?._id, name: currentName, description: currentDescription, parent: currentParent, }); }, [userGroup, currentName, currentDescription, currentParent, onClickSubmit]); // componentDidMount useEffect(() => { if (userGroup != null) { setName(userGroup.name); setDescription(userGroup.description); setParent(userGroup.parent); } }, [userGroup]); return (
{t('user_group_management.basic_info')}