import { Fragment, useState, useEffect } from 'react'; import Loader from './Loader'; import htmlParser from 'html-react-parser'; import dynamic from 'next/dynamic'; import api from '../utils/api'; import fr from 'date-fns/locale/fr'; import { registerLocale } from "react-datepicker"; import date from 'date-and-time'; import "react-datepicker/dist/react-datepicker.css"; registerLocale('fr', fr); const FunctionForm = (props) => { const [inputState, setInputState] = useState({}); const [message, setMessage] = useState(""); const [isLoading, setIsLoading] = useState(false); // inputState par défaut useEffect(() => { const inputStateNew = { ...inputState }; props.inputsArray.forEach((input) => { if (input.type === "select" && input.options.length > 0) { inputStateNew[input.name] = input.options[0].value; } }); setInputState(inputStateNew); }, []); const handleSubmit = (event) => { setIsLoading(true); event.preventDefault(); api.post(`/functions/${props.slug}`, inputState) .then((response) => { setMessage(response.data.resultHTML); setIsLoading(false); }) .catch((error) => { setMessage(error.response.data.message); setIsLoading(false); }); } const handleChange = (event) => { const inputStateNew = { ...inputState }; inputStateNew[event.target.name] = event.target.value; setInputState(inputStateNew); } if (props.inputsArray.length <= 0) { return (

La fonction n'est pas encore disponible.

); } return (
{props.inputsArray.map((input, index) => { switch (input.type) { case "text": return (
); case "integer": case "float": return (
); case "calendar": // Permet au datepicker de prendre la hauteur if (typeof window != 'undefined') { const newScript = document.createElement("script"); newScript.src = "/js/extraHeightCSS.js"; document.body.appendChild(newScript); } const DatePicker = dynamic( () => import('react-datepicker'), { ssr: false } ); return (

{ try { if (inputState[input.name] != undefined) { const dateArray = inputState[input.name].split('/'); const year = dateArray[2]; const month = dateArray[1]; const day = dateArray[0]; return new Date(year, parseInt(month) - 1, parseInt(day) + 1); } throw "Not a valid date"; } catch { return new Date(); } })()} locale="fr" dateFormat="dd/MM/yyyy" fixedHeight placeholderText={input.placeholder} onChange={(dateObject) => { try { const formattedDate = date.format(dateObject, 'DD/MM/YYYY', true); handleChange({ target: { name: input.name, value: formattedDate } }); } catch {} }} />
); case "select": return (
); default: return (

Erreur, l'input n'est pas valide...

); } })}
{ (isLoading) ? : htmlParser(message) }
); } export default FunctionForm;