Untitled
unknown
plain_text
2 years ago
5.5 kB
8
Indexable
import React, { useState } from 'react';
import {Formik, Field, Form, ErrorMessage, FieldProps} from "formik";
import Modal from 'react-modal';
import * as Yup from "yup";
import DatePicker from "react-datepicker";
import "../cssFiles/AddTrainer.css"
import {showSuccessToast, showErrorToast} from "../../../../utils/toastify";
import {toast, ToastContainer} from "react-toastify";
import {addEventType} from "../../../services/eventType.service";
type Props = {}
export const AddEventType: React.FC<Props> = () => {
const [isOpen, setIsOpen] = useState(false);
const [message, setMessage] = useState<string>("");
const openModal = () => {
setIsOpen(true);
};
const closeModal = () => {
setIsOpen(false);
};
const initialValues: {
type: string;
maxParticipants: string;
duration: string;
price: string;
description: string;
} = {
type: "",
maxParticipants: "",
duration: "",
price: "",
description: "",
};
const validationSchema = Yup.object().shape({
firstName: Yup.string().required("To pole jest wymagane"),
lastName: Yup.string().required("To pole jest wymagane"),
dob: Yup.string().required("To pole jest wymagane"),
phoneNumber: Yup.string().required("To pole jest wymagane"),
email: Yup.string().required("To pole jest wymagane"),
});
const handleRegister = (formValue: { type: string; maxParticipants: string; duration: string; price: string; description: string; }) => {
const { type, maxParticipants, duration, price, description } = formValue;
setMessage("");
addEventType(type, maxParticipants, duration, price, description ).then(
(response) => {
showSuccessToast('Dodanie typu jazd powiodło się.', toast.POSITION.BOTTOM_RIGHT, '😊');
closeModal();
},
(error) => {
const resMessage =
(error.response &&
error.response.data &&
error.response.data.message) ||
error.message ||
error.toString();
}
);
};
return (
<div>
<ToastContainer/>
<button className="popUpButton" onClick={openModal}>Dodaj typ jazdy</button>
<Modal
isOpen={isOpen}
onRequestClose={closeModal}
contentLabel="Formularz rejestracji"
className="AddTrainerForm">
<Formik initialValues={initialValues}
validationSchema={validationSchema}
onSubmit={handleRegister}>
<Form>
<div className="addTrainer-bg">
<button className="close-button" onClick={closeModal}>X</button>
<h2 className="form-title">Dodaj typ jazdy</h2>
<div className="grid-container">
<div>
<Field name="type" className="input" type="text" placeholder="Nazwa"/>
<ErrorMessage name="firstName" component="div" className="errorText"/>
</div>
<div>
<Field name="maxParticipants" className="input" type="text" placeholder="liczba uczestników"/>
<ErrorMessage name="lastName" component="div" className="errorText"/>
</div>
<div>
<Field name="duration" className="input" type="text" placeholder="Długość"/>
<ErrorMessage name="email" component="div" className="errorText"/>
</div>
<div>
<Field name="price" className="input" type="text" placeholder="Cena"/>
<ErrorMessage name="phoneNumber" component="div" className="errorText"/>
</div>
<div>
<Field name="description" className="input" type="text" placeholder="Opis"/>
<ErrorMessage name="phoneNumber" component="div" className="errorText"/>
</div>
</div>
<div className="bottom-buttons">
<button type="submit" className="top-btn">
<span>Dodaj</span>
</button>
{message && (
<div className="form-group">
<div className="alert alert-danger" role="alert">
{message}
</div>
</div>
)}
</div>
</div>
</Form>
</Formik>
</Modal>
</div>
);
};Editor is loading...