Related components
SelectField renders a native Select (the browser's own dropdown) with a Label, an optional description and prompt, and an error message.
For most choices, use Select Menu Field. Use SelectField for very long lists, or where the phone's native picker matters.
<div className="rounded-md bg-white p-8">
<Form onSubmit={() => {}}>
<SelectField
name="localAuthority"
label="Local authority"
placeholder="Select a local authority"
appearance="modern"
className="w-80"
>
<option value="barnet">Barnet</option>
<option value="camden">Camden</option>
<option value="hackney">Hackney</option>
<option value="islington">Islington</option>
</SelectField>
</Form>
</div>
Appearance
standard (default) has a white background and a grey-700 border. modern has a filled background and no border.
<div className="rounded-md bg-white p-8">
<Form onSubmit={() => {}}>
<div className="flex w-80 flex-col gap-6">
<SelectField label="Local authority" placeholder="Select a local authority" name="standard" appearance="standard">
<option value="barnet">Barnet</option>
<option value="camden">Camden</option>
<option value="hackney">Hackney</option>
<option value="islington">Islington</option>
</SelectField>
<SelectField label="Local authority" placeholder="Select a local authority" name="modern" appearance="modern">
<option value="barnet">Barnet</option>
<option value="camden">Camden</option>
<option value="hackney">Hackney</option>
<option value="islington">Islington</option>
</SelectField>
</div>
</Form>
</div>
Theme
With appearance="modern", use theme="grey" on white surfaces and theme="white" on grey surfaces.
<Form onSubmit={() => {}}>
<div className="flex flex-col gap-4">
<div className="w-80 rounded-md border border-grey-200 bg-white p-6">
<SelectField label="Local authority" placeholder="Select a local authority" name="grey" appearance="modern" theme="grey">
<option value="barnet">Barnet</option>
<option value="camden">Camden</option>
<option value="hackney">Hackney</option>
<option value="islington">Islington</option>
</SelectField>
</div>
<div className="w-80 rounded-md bg-grey-100 p-6">
<SelectField label="Local authority" placeholder="Select a local authority" name="white" appearance="modern" theme="white">
<option value="barnet">Barnet</option>
<option value="camden">Camden</option>
<option value="hackney">Hackney</option>
<option value="islington">Islington</option>
</SelectField>
</div>
</div>
</Form>
Size
sm, md (default) and lg.
<div className="rounded-md bg-white p-8">
<Form onSubmit={() => {}}>
<div className="flex w-80 flex-col gap-6">
<SelectField placeholder="Select a local authority" name="sm" size="sm" appearance="modern" label="Size sm">
<option value="barnet">Barnet</option>
<option value="camden">Camden</option>
<option value="hackney">Hackney</option>
<option value="islington">Islington</option>
</SelectField>
<SelectField placeholder="Select a local authority" name="md" size="md" appearance="modern" label="Size md">
<option value="barnet">Barnet</option>
<option value="camden">Camden</option>
<option value="hackney">Hackney</option>
<option value="islington">Islington</option>
</SelectField>
<SelectField placeholder="Select a local authority" name="lg" size="lg" appearance="modern" label="Size lg">
<option value="barnet">Barnet</option>
<option value="camden">Camden</option>
<option value="hackney">Hackney</option>
<option value="islington">Islington</option>
</SelectField>
</div>
</Form>
</div>
States
<div className="rounded-md bg-white p-8">
<Form onSubmit={() => {}} appearance="modern">
<div className="flex w-80 flex-col gap-6">
<SelectField name="placeholder" label="Placeholder" placeholder="Select a local authority">
<option value="camden">Camden</option>
</SelectField>
<SelectField name="filled" label="Filled" defaultValue="camden">
<option value="camden">Camden</option>
</SelectField>
<SelectField name="disabled" label="Disabled" defaultValue="camden" disabled>
<option value="camden">Camden</option>
</SelectField>
</div>
</Form>
</div>
Error
const ShowErrors = ({ trigger }) => {
React.useEffect(() => {
trigger()
}, [trigger])
return null
}
render(
<Form onSubmit={() => {}}>
{({ trigger }) => (
<div className="flex w-96 flex-col gap-6 rounded-md bg-white p-8">
<SelectField
name="standard"
label="Local authority (standard)"
placeholder="Select a local authority"
validation={{ required: 'Select the school’s local authority' }}
>
<option value="camden">Camden</option>
</SelectField>
<SelectField
name="modern"
label="Local authority (modern)"
placeholder="Select a local authority"
appearance="modern"
validation={{ required: 'Select the school’s local authority' }}
>
<option value="camden">Camden</option>
</SelectField>
<ShowErrors trigger={trigger} />
</div>
)}
</Form>
)