From 4ed313d1e5580ac4514d04b88b7a1b8b9c2b5b0c Mon Sep 17 00:00:00 2001 From: Desmond Date: Sun, 5 May 2024 22:25:10 -0400 Subject: [PATCH] WIP : Modal redesign for Available drivers --- .../src/components/RideModal/Pages/Driver.tsx | 60 +++++++++++++------ .../components/RideModal/ridemodal.module.css | 33 ++++++++-- 2 files changed, 70 insertions(+), 23 deletions(-) diff --git a/frontend/src/components/RideModal/Pages/Driver.tsx b/frontend/src/components/RideModal/Pages/Driver.tsx index f92eb8549..065e0a370 100644 --- a/frontend/src/components/RideModal/Pages/Driver.tsx +++ b/frontend/src/components/RideModal/Pages/Driver.tsx @@ -2,22 +2,33 @@ import React, { useEffect, useState } from 'react'; import { useForm } from 'react-hook-form'; import { ModalPageProps } from '../../Modal/types'; import styles from '../ridemodal.module.css'; -import { Label, Input, Button } from '../../FormElements/FormElements'; +import { Label, Button } from '../../FormElements/FormElements'; import axios from '../../../util/axios'; const DriverPage = ({ onBack, onSubmit, formData }: ModalPageProps) => { - const { register, handleSubmit, formState } = useForm({ + const { register, handleSubmit, formState, setValue } = useForm({ defaultValues: { driver: formData?.driver ?? '', }, }); const { errors } = formState; const [loaded, setLoaded] = useState(false); + const [selectedDriver, setSelectedDriver] = useState(formData?.driver ?? ''); const { date, pickupTime: startTime, dropoffTime: endTime } = formData!; - type DriverOption = { id: string; firstName: string; lastName: string }; + type DriverOption = { + id: string; + firstName: string; + lastName: string; + photoLink: string; + }; const [availableDrivers, setAvailableDrivers] = useState([]); + const selectDriver = (driverId: string) => { + setValue('driver', driverId); + setSelectedDriver(driverId); + }; + useEffect(() => { if (startTime && endTime && date) { axios @@ -35,6 +46,10 @@ const DriverPage = ({ onBack, onSubmit, formData }: ModalPageProps) => { } }, [startTime, endTime, date]); + useEffect(() => { + register('driver', { required: 'Please select a driver' }); + }, [register]); + return (
@@ -42,28 +57,37 @@ const DriverPage = ({ onBack, onSubmit, formData }: ModalPageProps) => { {loaded ? ( availableDrivers.map((d) => (
-
+
)) ) : (

Loading...

)} - {errors.driver?.type === 'required' && ( + {errors.driver && (

Please select a driver

diff --git a/frontend/src/components/RideModal/ridemodal.module.css b/frontend/src/components/RideModal/ridemodal.module.css index 7dc194fa5..470b55287 100644 --- a/frontend/src/components/RideModal/ridemodal.module.css +++ b/frontend/src/components/RideModal/ridemodal.module.css @@ -69,18 +69,41 @@ .drivers { display: flex; - flex-wrap: wrap; - max-width: 30rem; - justify-content: center; + flex-direction: column; + height: 15rem; + overflow-y: auto; + justify-content: flex-start; + padding: 0.5rem; + border-radius: 8px; } + .driver { display: flex; - flex-direction: column; + flex-direction: row; align-items: center; - margin: 0 0.625rem; + justify-content: space-between; + margin-bottom: 0.625rem; + height: 5rem; + background-color: #F2F2F2; + border: 1px solid black; + border-radius: 10px; + padding : 10px; } +.driverPhoto { + height: 20px; + width: 20px; + border-radius: 100%; +} +.selectButton { + background-color: #00C48C; +} +.selectedButton { + background-color: #F2F2F2; + border: 1px solid black; + color: black; +} .driverLabel { margin: 0; }