import React, {useState, useEffect} from 'react'; import { Text, Title, TextInput, Button, NumberInput, Textarea, Grid, Group, useMantineTheme, MantineTheme, Image, SimpleGrid } from '@mantine/core' import { DatePicker } from '@mantine/dates'; import dayjs from 'dayjs'; import { useForm } from '@mantine/form'; import { useAtom } from 'jotai'; import { serverConfigAtom } from '../../state/main' import { backendAPI } from '../../services/backend-api'; import { IMAGE_MIME_TYPE } from '@mantine/dropzone'; import CustomDropZone from '../CustomDropZone'; function LocationForm(props) { const {location, modify: bool} = props const [opened, setOpened] = useState(false); const [serverConfig] = useAtom(serverConfigAtom) // Cover Photo const [coverPhoto, setCoverPhoto] = useState(null) // Additional Photos const [additionalPhotos, setAdditionalPhotos] = useState([]) const theme = useMantineTheme(); const form = useForm({ initialValues: { Name: '', Description: '', Notes: '', Address: '', SquareFeet: '', Latitude: '', Longitude: '', DatePurchased: '', PurchasePrice: '', CurrentValue: '', CoverPhoto: '', AdditionalPhotos: [], }, validate: { Name: (value) => (/^\S+/.test(value) ? null : 'Invalid Name') }, }); const submitNewLocation = (values) => { console.log("VALUES: ", values) // let additionalPhotos = values.AdditionalPhotos let formData = new FormData() for (const [key, value] of Object.entries(values)) { if (key === "AdditionalPhotos" && value.length > 0) { value.forEach(photo => { console.log("PHOTO VALUE: ", photo) formData.append(key, photo) }); } formData.append(key, value) } backendAPI.post("/locations/new", formData).then((result) => { console.log("STATUS: ", result.status) console.log("result: ", result.data) }).catch(err => { console.log("Error adding new location!", err) }) } const handleFileAccept = (files) => { form.setFieldValue('CoverPhoto', files[0]) const imageUrl = URL.createObjectURL(files[0]); setCoverPhoto( URL.revokeObjectURL(imageUrl) }} /> ) } const handleAdditionalPhotos = (files) => { setAdditionalPhotos(oldPhotos => [...oldPhotos, ...files]) // setAdditionalPhotos(files) console.log("FORM VALUES: ",form.values) const oldValues = form.values['AdditionalPhotos'] form.setFieldValue('AdditionalPhotos', [...oldValues, ...files]) console.log("NEW FORM VALUES: ", form.values) } const previews = additionalPhotos.map((file, index) => { console.log("FILE IS: ", file) const imageUrl = URL.createObjectURL(file); return ( URL.revokeObjectURL(imageUrl) }} /> ) }) return ( <> Location Form
submitNewLocation(values))}>