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 | undefined, selectableParentUserGroups?: IUserGroupHasId[], submitButtonLabel: string; onSubmit?: (targetGroup: IUserGroupHasId, userGroupData: Partial) => Promise | void }; 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 nullAndEmptyArrayChecks = (userGroups: IUserGroupHasId[] | undefined) => { return userGroups != null && userGroups.length > 0; }; 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')}

) }