import React, { FC, useCallback, useState } from 'react'; import dateFnsFormat from 'date-fns/format'; import { useTranslation } from 'next-i18next'; import { IUserGroupHasId } from '~/interfaces/user'; type Props = { userGroup: IUserGroupHasId, parentUserGroup?: IUserGroupHasId, selectableParentUserGroups?: IUserGroupHasId[], submitButtonLabel: string; onSubmit: (targetGroup: IUserGroupHasId, userGroupData: Partial) => Promise }; export const UserGroupForm: FC = (props: Props) => { const { t } = useTranslation('admin'); const { userGroup, parentUserGroup, selectableParentUserGroups, submitButtonLabel, onSubmit, } = props; /* * State */ const [currentName, setName] = useState(userGroup.name); const [currentDescription, setDescription] = useState(userGroup.description); const [selectedParent, setSelectedParent] = useState(parentUserGroup); /* * Function */ const onChangeNameHandler = useCallback((e) => { setName(e.target.value); }, []); const onChangeDescriptionHandler = useCallback((e) => { setDescription(e.target.value); }, []); const onChangeParerentButtonHandler = useCallback((userGroup: IUserGroupHasId) => { if (userGroup._id !== selectedParent?._id) { setSelectedParent(userGroup); } }, [selectedParent, setSelectedParent]); const isSelectableParentUserGroups = selectableParentUserGroups != null && selectableParentUserGroups.length > 0; const isChildUserGroup = parentUserGroup !== undefined; const messageAtReleaseParentGroup = isChildUserGroup ? t('user_group_management.release_parent_group') : t('user_group_management.select_parent_group'); return (
{ e.preventDefault(); onSubmit(props.userGroup, { name: currentName, description: currentDescription, parent: selectedParent, }); }} >

{t('user_group_management.basic_info')}

{ userGroup?.createdAt != null && (

{t('Created')}

{dateFnsFormat(new Date(userGroup.createdAt), 'yyyy-MM-dd')}

) }