next-enterprise/components/Form/ClientField.tsx

51 lines
1.6 KiB
TypeScript
Raw Normal View History

2024-03-05 17:42:30 -05:00
/**
* ClientField Component
*
* Renders a list of testing centers with associated client selection inputs.
* Each testing center allows for the selection of a client from a provided list.
*/
2024-03-03 22:34:43 -05:00
import { faClock } from "@fortawesome/free-regular-svg-icons"
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"
2024-03-03 22:09:33 -05:00
import React from "react"
import SelectInput from "./SelectInput"
import { Utils } from "./Utils"
2024-03-05 17:42:30 -05:00
/**
* Props for ClientField component.
*
* @param testingCenters Array of testing center names to be displayed.
* @param clients Array of client names available for selection.
*/
2024-03-03 22:09:33 -05:00
type ClientFieldProps = {
2024-03-03 22:34:43 -05:00
testingCenters: string[]
clients: string[]
2024-03-03 22:09:33 -05:00
}
const ClientField: React.FC<ClientFieldProps> = ({ testingCenters, clients }) => {
return (
2024-03-04 23:33:49 -05:00
<div className="flex flex-col gap-4 text-sm leading-tight">
2024-03-05 17:42:30 -05:00
{/* Render a selection input for each testing center, allowing a client to be chosen for each. */}
2024-03-03 22:09:33 -05:00
{testingCenters.map((testingCenter) => (
2024-03-05 17:42:30 -05:00
<div key={Utils.camelize(testingCenter)} className="flex items-center gap-4 md:gap-14">
2024-03-03 22:09:33 -05:00
<span>{testingCenter}</span>
2024-03-03 22:34:43 -05:00
<div className="flex items-center gap-2">
2024-03-03 22:09:33 -05:00
<SelectInput name={Utils.camelize(testingCenter)}>
2024-03-03 22:34:43 -05:00
<option value="">Select Client</option>
{clients.map((option: string) => (
<option key={option} value={option}>
{option}
</option>
))}
</SelectInput>
<FontAwesomeIcon icon={faClock} />
</div>
2024-03-03 22:09:33 -05:00
</div>
))}
</div>
)
}
export default ClientField