import {
ActionIcon,
Button,
Grid,
Group,
InputWrapper,
Modal,
Text,
Textarea,
TextInput,
} from '@mantine/core'
import { useForm, yupResolver } from '@mantine/form'
import { useDisclosure, useMediaQuery } from '@mantine/hooks'
import {
IconAddressBook,
IconCirclePlus,
IconFileDescription,
} from '@tabler/icons-react'
import { useEffect, useState } from 'react'
import { useTranslation } from 'react-i18next'
import { v4 as uuidv4 } from 'uuid'
import * as yup from 'yup'
import AreaItem from './AreaItem'
import { errorTip, labelWithIcon } from './Common'
const areaSchema = (t) =>
yup.object({
name: yup
.string()
.min(3, t('message_min_three_char'))
.required(t('message_is_required', { field: t('ui_area_name') })),
desc: yup
.string()
.min(3, t('message_min_three_char'))
.required(t('message_is_required', { field: t('ui_area_desc') })),
})
export default function AreaInput(props) {
const { t } = useTranslation()
const [editData, setEditData] = useState(null)
const [opened, { open, close }] = useDisclosure(false)
const isMobile = useMediaQuery('(max-width: 62em)')
const { value, onChange, error } = props
const form = useForm({
initialValues: {
name: '',
desc: '',
},
validate: yupResolver(areaSchema(t)),
enhanceGetInputProps: (payload) => ({
error: errorTip(payload.inputProps.error),
}),
})
useEffect(() => {
if (editData) {
form.setValues(editData)
}
}, [editData])
const onCloseModal = () => {
form.reset()
setEditData(null)
close()
}
const addArea = (area) => {
area.id = uuidv4()
area.isCreate = true
onChange([...value, area])
onCloseModal()
}
const updateArea = (area) => {
onChange(value.map((item) => (item.id === area.id ? area : item)))
form.reset()
onCloseModal()
}
const onEditArea = (area) => {
setEditData(area)
open()
}
const onDeleteArea = (area) => {
onChange(value.filter((item) => item.id !== area.id))
}
return (
<>
{value.length > 0 ? (
value.map((area) => (
))
) : (
{t('ui_empty')}
)}
>
)
}