Files
danak-admin/src/pages/dmenu/icon/components/CreateGroupIcon.tsx
T
hamid zarghami d3fd21177b
deploy to danak / build_and_deploy (push) Has been cancelled
change toast
2026-07-20 10:55:33 +03:30

100 lines
3.3 KiB
TypeScript

import { FC } from 'react'
import { useTranslation } from 'react-i18next'
import Button from '../../../../components/Button'
import DefaulModal from '../../../../components/DefaulModal'
import Input from '../../../../components/Input'
import { useFormik } from 'formik'
import * as Yup from 'yup'
import { toast } from '../../../../components/Toast';
import { TickCircle } from 'iconsax-react'
import { useCreateGroupIcon } from '../../hooks/useIconData'
import { CreateGroupIconType } from '../../types/Types'
import { ErrorType } from '../../../../helpers/types'
interface CreateGroupIconProps {
open: boolean
close: () => void
onSuccess?: () => void
}
const CreateGroupIcon: FC<CreateGroupIconProps> = ({ open, close, onSuccess }) => {
const { t } = useTranslation('global')
const createGroupIcon = useCreateGroupIcon()
const formik = useFormik<CreateGroupIconType>({
initialValues: {
name: ''
},
validationSchema: Yup.object({
name: Yup.string()
.required(t('errors.required'))
}),
onSubmit: (values) => {
createGroupIcon.mutate(values, {
onSuccess: () => {
formik.resetForm()
close()
toast(t('success'), 'success')
onSuccess?.()
},
onError: (error: ErrorType) => {
toast(error.response?.data?.error?.message[0], 'error')
}
})
}
})
const handleClose = () => {
formik.resetForm()
close()
}
return (
<DefaulModal
open={open}
close={handleClose}
title_header={t('icon.add_new_group')}
isHeader
>
<div className='mt-6'>
<Input
label={t('title')}
className='bg-white bg-opacity-30'
name='name'
value={formik.values.name}
onChange={formik.handleChange}
error_text={formik.touched.name && formik.errors.name ? formik.errors.name : ''}
/>
<div className='mt-12 border-t border-border pt-5 flex justify-end'>
<div className='flex gap-5 items-center'>
<Button
className='w-[150px] bg-white bg-opacity-15 text-description'
label={t('cancel')}
onClick={handleClose}
/>
<Button
onClick={() => formik.handleSubmit()}
isLoading={createGroupIcon.isPending}
>
<div className='flex gap-2'>
<TickCircle
size={20}
color='white'
/>
<div>
{t('submit')}
</div>
</div>
</Button>
</div>
</div>
</div>
</DefaulModal>
)
}
export default CreateGroupIcon