import ConfirmPopup from '@components/common/ConfirmPopup' import Popup from '@components/common/Popup' import TextInput from '@components/common/TextInput' import Textarea from '@components/common/Textarea' import { createForm } from '@felte/solid' import { validator } from '@felte/validator-yup' import useLanguage from '@hooks/useLanguage' import { IconAddressBook, IconCirclePlus, IconFileDescription, IconInfoCircle, IconVector, } from '@tabler/icons-solidjs' import { For, Show, createComponent, createSignal } from 'solid-js' import * as yup from 'yup' import AreaItem from './AreaItem' /** * Returns a Yup schema object for validating an area object. * * @param {Object} language - An object containing the language settings. * @param {Function} isRequired - A function that returns a validation message for required fields. * @return {Object} A Yup schema object with two required fields: name and description. */ const areaSchema = (language, isRequired) => yup.object({ name: yup.string().required(isRequired(language.ui.areaName)), description: yup.string().required(isRequired(language.ui.areaName)), }) export default function AreaAdd(props) { const [openModal, setOpenModal] = createSignal(false) const [data, setData] = createSignal([]) const { language, isRequired } = useLanguage() const { form, reset, errors } = createForm({ extend: [validator({ schema: areaSchema(language, isRequired) })], onSubmit: async (values) => { setData((prev) => [...prev, values]) onModalClose() }, }) const onModalClose = () => { setOpenModal(false), reset() } const onOpenModal = () => { setOpenModal(true) } const onConfirmDelete = (index) => { setData((prev) => [...prev.slice(0, index), ...prev.slice(index + 1)]) } const onClickDeleteItem = (index) => { createComponent(ConfirmPopup, { title: language?.message['CONFIRM_DELETE'], children: language?.message['CONFIRM_DELETE_NOTE'], deleteId: index, onConfirm: onConfirmDelete, }) } return (