From 84023ac606289828b39a679b4a259636faabd4cd Mon Sep 17 00:00:00 2001
From: manuconcepbrito <manu041196@gmail.com>
Date: Tue, 19 Oct 2021 22:58:11 +0200
Subject: [PATCH] move to Material UI

---
 .../src/components/BasicDatePicker.js         | 37 +++++++++
 .../src/pages/management/AddSession.js        | 78 ++++++++++++-------
 2 files changed, 89 insertions(+), 26 deletions(-)
 create mode 100644 wahlfang_web/src/components/BasicDatePicker.js

diff --git a/wahlfang_web/src/components/BasicDatePicker.js b/wahlfang_web/src/components/BasicDatePicker.js
new file mode 100644
index 0000000..cf36a9c
--- /dev/null
+++ b/wahlfang_web/src/components/BasicDatePicker.js
@@ -0,0 +1,37 @@
+import * as React from 'react';
+import TextField from '@mui/material/TextField';
+import AdapterDateFns from '@mui/lab/AdapterDateFns';
+import LocalizationProvider from '@mui/lab/LocalizationProvider';
+import DateTimePicker from '@mui/lab/DateTimePicker';
+
+export default function BasicDatePicker({
+    name,
+    form: {setFieldValue},
+    field: {value},
+    ...rest
+
+    }) {
+  const [date, setDate] = React.useState(new Date());
+  console.log()
+  return (
+    <LocalizationProvider dateAdapter={AdapterDateFns}>
+      <DateTimePicker
+          label="Meeting start (optional)"
+          clearable
+          autoOk
+          disablePast
+          value={value}
+          onChange={(newValue) => {
+                setFieldValue("start_date", newValue);
+            }}
+          id="start_date"
+          renderInput={(params) => <TextField
+              {...params}
+              style = {{width: '100%'}}
+              variant="standard"
+              error={false}
+          />}
+        />
+    </LocalizationProvider>
+  );
+}
\ No newline at end of file
diff --git a/wahlfang_web/src/pages/management/AddSession.js b/wahlfang_web/src/pages/management/AddSession.js
index b796bcf..a748854 100644
--- a/wahlfang_web/src/pages/management/AddSession.js
+++ b/wahlfang_web/src/pages/management/AddSession.js
@@ -3,10 +3,13 @@ import Layout from "../../components/Layout";
 import { Formik, Form, Field } from 'formik';
 import Collapse from 'react-bootstrap/Collapse';
 import Button from 'react-bootstrap/Button';
-import FormikDateTime from "../../components/FormikDateTime"
+import * as yup from 'yup';
 import {createSession} from "../../api/management";
 import {useHistory} from "react-router-dom";
 import moment from "moment";
+import TextField from '@mui/material/TextField';
+import BasicDatePicker from "../../components/BasicDatePicker"
+
 
 const DATE_FORMAT = 'DD-MM-YYYY HH:mm'
 
@@ -16,10 +19,12 @@ export default function AddSession() {
     const history = useHistory();
 
     const handleSubmitAddSessionForm = (values, {setSubmitting}) => {
-        debugger
-        let moment_date = new moment(values.start_date, DATE_FORMAT);
+        let moment_date = new moment(values.start_date);
+        console.log(moment_date)
         // keepOffset must be true, bug info here https://github.com/moment/moment/issues/947
         values.start_date = moment_date.toISOString(true)
+        console.log(values)
+        debugger
         createSession(values)
             .then(res => {
                 setSubmitting(false)
@@ -49,10 +54,17 @@ export default function AddSession() {
         return errors;
     }
 
+    const validationSchema = yup.object({
+      title: yup
+        .string("Session's title")
+        .required('Please provide a session title')
+    });
+
     const AddSessionForm = () => (
       <div className="p-5">
         <Formik
-          initialValues={{ title: '', emailText: '', meeting_link: ''}}
+          initialValues={{ title: '', start_date: '', meeting_link: ''}}
+          validationSchema={validationSchema}
           onSubmit={handleSubmitAddSessionForm}
         >
             {({
@@ -65,36 +77,50 @@ export default function AddSession() {
                   isSubmitting
               }) => (
                 <form id="add-session-form" onSubmit={(e) => {
+                    e.preventDefault();
                     handleSubmit();
                   }}>
                     <h4>Create Session</h4>
                     <div className="mt-3 form-group">
-                        <label>Session's Title*</label>
-                        <input type="text"
-                               className="form-control form-control-user"
-                               name="title"
-                               autoFocus={true}
-                               onChange={handleChange}
-                               onBlur={handleBlur}
-                               value={values.title}
-                               required={true}/>
-                        {errors.title && touched.title && errors.title}
+                        <TextField
+                        style ={{width: '100%'}}
+                        id="title"
+                        variant="standard"
+                        name="title"
+                        label="Session's Title"
+                        value={values.title}
+                        onChange={handleChange}
+                        error={errors.title && touched.title && errors.title}
+                        helperText={touched.title && errors.title}
+                        />
+                        {/*<input type="text"*/}
+                        {/*       className="form-control form-control-user"*/}
+                        {/*       name="title"*/}
+                        {/*       autoFocus={true}*/}
+                        {/*       onChange={handleChange}*/}
+                        {/*       onBlur={handleBlur}*/}
+                        {/*       value={values.title}*/}
+                        {/*       required={true}/>*/}
+                        {/*{errors.title && touched.title && errors.title}*/}
                     </div>
                     <div className="mt-3 form-group">
-                        <label>Meeting start (optional)</label>
-                        <Field name="start_date" timeFormat={false} component={FormikDateTime} />
+                        {/*<label>Meeting start (optional)</label>*/}
+                        {/*<Field name="start_date" timeFormat={false} component={FormikDateTime} />*/}
+                        {/*<BasicDatePicker value={values.start_date}/>*/}
+                        <Field component={BasicDatePicker} name="start_date" onChange={handleChange}/>
                     </div>
                     <div className="mt-3 form-group">
-                        <label>Link to meeting call platform (optional)</label>
-                        <input type="text"
-                               className="form-control form-control-user"
-                               name="meetingLink"
-                               placeholder="http://bbb.com"
-                               autoFocus={true}
-                               onChange={handleChange}
-                               onBlur={handleBlur}
-                               value={values.meetingLink}/>
-                        {errors.meetingLink && touched.meetingLink && errors.meetingLink}
+                        <TextField
+                        style ={{width: '100%'}}
+                        id="meetingLink"
+                        variant="standard"
+                        name="meetingLink"
+                        label="Link to meeting call platform (optional)"
+                        value={values.meetingLink}
+                        onChange={handleChange}
+                        error={errors.meetingLink && touched.meetingLink && errors.meetingLink}
+                        helperText={touched.meetingLink && errors.meetingLink}
+                        />
                     </div>
                 </form>
                 )}
-- 
GitLab