diff --git a/frontend/src/components/EmployeeModal/EmployeeInfo.tsx b/frontend/src/components/EmployeeModal/EmployeeInfo.tsx index 57a0825be..78c8ff9d2 100644 --- a/frontend/src/components/EmployeeModal/EmployeeInfo.tsx +++ b/frontend/src/components/EmployeeModal/EmployeeInfo.tsx @@ -27,7 +27,7 @@ const EmployeeInfo = ({ return (
- +
- +
- +
- + - {errors.phoneNumber && ( + {errors.phoneNumber ? (

{errors.phoneNumber.message?.toString() || 'Please enter a valid phone number (10 digits)'}

+ ) : ( +

+ Format: 10 digits only (e.g., 1234567890) +

)} -

- Format: 10 digits only (e.g., 1234567890) -

); diff --git a/frontend/src/components/EmployeeModal/EmployeeModal.tsx b/frontend/src/components/EmployeeModal/EmployeeModal.tsx index d640e0b3c..981e44ddb 100644 --- a/frontend/src/components/EmployeeModal/EmployeeModal.tsx +++ b/frontend/src/components/EmployeeModal/EmployeeModal.tsx @@ -319,6 +319,12 @@ const EmployeeModal = ({ * @param photo - The optional photo file uploaded by the user. */ async function onSubmit(formData: any) { + // Validate that at least one role is selected + if (selectedRoles.length === 0) { + showToast('Please select at least one role', ToastStatus.ERROR); + return; + } + // Data entered from the form/modal. const hasAdmin = selectedRoles.includes('sds-admin') || @@ -360,7 +366,7 @@ const EmployeeModal = ({ // Decide which table to update based on role selection (to be changed at a later date.) const targetTable = selectedRoles.includes('sds-admin') || - selectedRoles.includes('redrunner-admin') + selectedRoles.includes('redrunner-admin') ? 'Admins' : 'Drivers'; try { @@ -438,14 +444,14 @@ const EmployeeModal = ({ {(selectedRoles.includes('driver') || existingEmployee?.driver?.availability) && ( - <> - - - - )} + <> + + + + )} { return (
-

Role

+
{ return (
- + , HTMLLabelElement ->; +> & { + required?: boolean; +}; -export const Label = ({ className, children, ...props }: LabelType) => ( - -); +export const Label = ({ className, children, required, ...props }: LabelType) => { + console.log('Label required:', required); // Debug line + return ( + + ); +}; // This should only be used when you don't want a label to visually appear on screen // Source: https://webaim.org/techniques/css/invisiblecontent/#techniques @@ -78,7 +84,7 @@ export const Button = React.forwardRef( ref={ref} onClick={disabled ? undefined : onClick} // Disable click handler if disabled disabled={disabled} - // onClick={onClick} + // onClick={onClick} > {children} diff --git a/frontend/src/components/FormElements/formelements.module.css b/frontend/src/components/FormElements/formelements.module.css index 1a7ff4215..d228b664b 100644 --- a/frontend/src/components/FormElements/formelements.module.css +++ b/frontend/src/components/FormElements/formelements.module.css @@ -53,21 +53,25 @@ border: 0.063rem solid #000000; box-sizing: border-box; } + .primaryBtn:focus { box-shadow: 0 0 0 3px #0075db; } + .secondaryBtn { background-color: white; border: 0.063rem solid #000000; box-sizing: border-box; } + .secondaryBtn:focus { box-shadow: 0 0 0 3px #0075db; } .srlabel { border: 0; - clip: rect(1px 1px 1px 1px); /* IE6, IE7 */ + clip: rect(1px 1px 1px 1px); + /* IE6, IE7 */ clip: rect(1px, 1px, 1px, 1px); height: 1px; margin: -1px; @@ -76,6 +80,7 @@ position: absolute; width: 1px; } + ::-webkit-input-placeholder { color: #767676; opacity: 1; @@ -97,3 +102,12 @@ color: #767676; opacity: 1; } + +.requiredIndicator { + color: #eb0023 !important; + /* Force red color */ + font-weight: bold; + font-size: 1.1em; + margin-left: 3px; + display: inline-block; +} \ No newline at end of file diff --git a/frontend/src/components/LocationModal/LocationModal.tsx b/frontend/src/components/LocationModal/LocationModal.tsx index 607af4c7f..7aef2505f 100644 --- a/frontend/src/components/LocationModal/LocationModal.tsx +++ b/frontend/src/components/LocationModal/LocationModal.tsx @@ -115,7 +115,7 @@ const LocationModal: React.FC = ({ aria-labelledby="location-modal" >
- + = ({

Please enter a name

)} - + = ({

{errors.address.message}

)} - + = ({

)} - + = ({
-
-
- - - {errors.phoneNumber && ( -

- {errors.phoneNumber.message ?? 'Phone number is not valid'} -

- )} + + + {errors.phoneNumber && ( +

+ {errors.phoneNumber.message ?? 'Phone number is not valid'} +

+ )}
-