diff --git a/src/components/absences/modals/AdminTeacherFields.tsx b/src/components/absences/modals/AdminTeacherFields.tsx index 628fc872..123ef013 100644 --- a/src/components/absences/modals/AdminTeacherFields.tsx +++ b/src/components/absences/modals/AdminTeacherFields.tsx @@ -4,6 +4,7 @@ import { FormLabel, Text, } from '@chakra-ui/react'; +import { useId } from 'react'; import { SearchDropdown } from './SearchDropdown'; interface AdminTeacherFieldsProps { @@ -28,14 +29,21 @@ export const AdminTeacherFields: React.FC = ({ setFormData, setErrors, }) => { + const id = useId(); + return ( <> - + Teacher Absent { @@ -55,11 +63,16 @@ export const AdminTeacherFields: React.FC = ({ - + Substitute Teacher = ({ [onDateSelect] ); + const id = useId(); + return ( - + {label} = ({ void; @@ -25,6 +26,7 @@ interface InputDropdownProps { } export const InputDropdown: React.FC = ({ + ariaLabelledBy, label, type, onChange, @@ -120,6 +122,7 @@ export const InputDropdown: React.FC = ({ value={selectedOption ? selectedOption.name : ''} readOnly _focusVisible={{ outline: 'none' }} + aria-labelledby={ariaLabelledBy} /> {isOpen ? : } diff --git a/src/components/absences/modals/SearchDropdown.tsx b/src/components/absences/modals/SearchDropdown.tsx index 68070bde..7fb25250 100644 --- a/src/components/absences/modals/SearchDropdown.tsx +++ b/src/components/absences/modals/SearchDropdown.tsx @@ -21,6 +21,7 @@ export type Option = { name: string; id: number; profilePicture: string }; interface SearchDropdownProps { id: string; + ariaLabelledBy: string; excludedId?: string; defaultValueId?: number; onChange: (value: Option | null) => void; @@ -28,6 +29,7 @@ interface SearchDropdownProps { export const SearchDropdown: React.FC = ({ id, + ariaLabelledBy, excludedId, defaultValueId, onChange, @@ -174,6 +176,7 @@ export const SearchDropdown: React.FC = ({ id={id} name={id} ref={inputRef} + aria-labelledby={ariaLabelledBy} value={searchQuery} onChange={isSelected ? undefined : handleSearchChange} onClick={() => { diff --git a/src/components/absences/modals/declare/DeclareAbsenceForm.tsx b/src/components/absences/modals/declare/DeclareAbsenceForm.tsx index c69bd6c3..aa727c87 100644 --- a/src/components/absences/modals/declare/DeclareAbsenceForm.tsx +++ b/src/components/absences/modals/declare/DeclareAbsenceForm.tsx @@ -14,7 +14,7 @@ import { Absence, Prisma } from '@prisma/client'; import { formatFullDate } from '@utils/dates'; import { submitAbsence } from '@utils/submitAbsence'; import { validateAbsenceForm } from '@utils/validateAbsenceForm'; -import { useState } from 'react'; +import { useId, useState } from 'react'; import { useCustomToast } from '../../../CustomToast'; import { FileUpload } from '../../FileUpload'; import { AdminTeacherFields } from '../AdminTeacherFields'; @@ -317,6 +317,8 @@ const DeclareAbsenceForm: React.FC = ({ const isUrgent = (selectedDate.getTime() - now.getTime()) / (1000 * 60 * 60 * 24) <= 7; + const id = useId(); + return ( = ({ )} - + Subject { @@ -360,10 +363,11 @@ const DeclareAbsenceForm: React.FC = ({ - + Location { @@ -381,11 +385,13 @@ const DeclareAbsenceForm: React.FC = ({ /> {errors.locationId} + - + Room Number = ({ onChange={handleChange} /> + = ({ /> - + Reason of Absence