SearchField
Search allows users to quickly find content. The Search field
is made up of the Text field
component and an optional Button
component.
Basic Usage
<SearchField
onSubmit={value => console.log(`search submitted: ${value}`)}
/>
With an initial value
<SearchField
onSubmit={value => console.log(`search submitted: ${value}`)}
value="foobar"
/>
With a placeholder
<SearchField
onSubmit={value => console.log(`search submitted: ${value}`)}
placeholder="foobar"
/>
With callbacks
<SearchField
onSubmit={value => console.log(`search submitted: ${value}`)}
onChange={value => console.log(`value changed: ${value}`)}
onFocus={event => console.log(`input focused: ${event}`)}
onBlur={event => console.log(`input blurred: ${event}`)}
onClear={() => console.log('search cleared')}
/>
With a custom label
<SearchField
onSubmit={value => console.log(`search submitted: ${value}`)}
label="Search:"
/>
With custom screenreader text
<SearchField
onSubmit={value => console.log(`search submitted: ${value}`)}
screenReaderText={{
label: 'buscar',
clearButton: 'borrar búsqueda',
submitButton: 'enviar búsqueda',
}}
/>
With the submit button outside the input
<SearchField
submitButtonLocation="external"
onSubmit={value => console.log(`search submitted: ${value}`)}
/>
Advanced Usage
For needs that deviate from the basic usage above, use <SearchField.Advanced />
. The children
elements must contain the SearchField.Label
and SearchField.Input
components at a minimum.
With a custom label
<SearchField.Advanced
onSubmit={value => console.log(`search submitted: ${value}`)}
>
<SearchField.Label>Search:</SearchField.Label>
<SearchField.Input />
<SearchField.ClearButton />
<SearchField.SubmitButton />
</SearchField.Advanced>
With an initial value
<SearchField.Advanced
onSubmit={value => console.log(`search submitted: ${value}`)}
value="foobar"
>
<SearchField.Label>Search:</SearchField.Label>
<SearchField.Input />
<SearchField.ClearButton />
<SearchField.SubmitButton />
</SearchField.Advanced>
With a placeholder
<SearchField.Advanced
onSubmit={value => console.log(`search submitted: ${value}`)}
>
<SearchField.Label>Search:</SearchField.Label>
<SearchField.Input placeholder="foobar" />
<SearchField.ClearButton />
<SearchField.SubmitButton />
</SearchField.Advanced>
With no clear button
<SearchField.Advanced
onSubmit={value => console.log(`search submitted: ${value}`)}
>
<SearchField.Label />
<SearchField.Input />
<SearchField.SubmitButton />
</SearchField.Advanced>
With no submit or clear buttons
<SearchField.Advanced
onSubmit={value => console.log(`search submitted: ${value}`)}
>
<SearchField.Label />
<SearchField.Input />
</SearchField.Advanced>
Advanced usage with the submit button outside the input
Use class pgn__searchfield_wrapper
to group input elements apart from the submit button.
<SearchField.Advanced
onSubmit={value => console.log(`search submitted: ${value}`)}
submitButtonLocation="external"
>
<div className="pgn__searchfield_wrapper">
<SearchField.Label/>
<SearchField.Input/>
</div>
<SearchField.SubmitButton submitButtonLocation="external" />
</SearchField.Advanced>