SearchField
Leave feedbackSearch allows users to quickly find content. The Search field is made up of the Text field component and an optional Button component.
Basic Usage
Any Paragon component or export may be added to the code example.
With an initial value
Any Paragon component or export may be added to the code example.
With a placeholder
Any Paragon component or export may be added to the code example.
With callbacks
Any Paragon component or export may be added to the code example.
With a custom label
Any Paragon component or export may be added to the code example.
With custom screenreader text
Any Paragon component or export may be added to the code example.
With the submit button outside the input
Any Paragon component or export may be added to the code example.
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
Any Paragon component or export may be added to the code example.
With an initial value
Any Paragon component or export may be added to the code example.
With a placeholder
Any Paragon component or export may be added to the code example.
With no clear button
Any Paragon component or export may be added to the code example.
With no submit or clear buttons
Any Paragon component or export may be added to the code example.
Advanced usage with the submit button outside the input
Use class pgn__searchfield_wrapper to group input elements apart from the submit button.
Any Paragon component or export may be added to the code example.
Theme Variables (SCSS)#
$search-btn-variants: ("light": $primary-500,"dark": $brand-500,);$search-border-radius: 0 !default;$search-line-height: 1.5rem !default;$search-border-color: $gray-500 !default;$search-border-color-interaction: $black !default;$search-border-width: .0625rem !default;$search-border-width-interaction: .125rem !default;$search-disabled-opacity: .3 !default;$search-button-margin: .5rem !default;$input-height-search: calc(#{$input-line-height * 1em} + #{$input-padding-y * 2}) !default;$search-border-focus-color: $black !default;$search-border-focus-width: .3125rem !default;
Props API#
- onSubmit
funcRequiredSpecifies a callback function for when the
SearchFieldis submitted by the user. For example:<SearchField onSubmit={(value) => { console.log(value); } /> - label
string|elementSpecifies the label to use for the input field (e.g., for i18n translations).
- className
stringSpecifies a custom class name.
- onBlur
funcDefault() => {}Specifies a callback function for when the user loses focus in the
SearchFieldcomponent. The default is an empty function. For example:<SearchField onBlur={event => console.log(event)} /> - onChange
funcDefault() => {}Specifies a callback function for when the value in
SearchFieldis changed by the user. The default is an empty function. For example:<SearchField onChange={value => console.log(value)} /> - onClear
funcDefault() => {}Specifies a callback function for when the value in
SearchFieldis cleared by the user. The default is an empty function. For example:<SearchField onClear={() => console.log('search cleared')} /> - onFocus
funcDefault() => {}Specifies a callback function for when the user focuses in the
SearchFieldcomponent. The default is an empty function. For example:<SearchField onFocus={event => console.log(event)} /> - placeholder
stringSpecifies the placeholder text for the input.
- screenReaderText
shape{label:string|elementRequired,submitButton:string|elementRequired,clearButton:}string|element,Default{ label: SEARCH_FIELD_SCREEN_READER_TEXT_LABEL, submitButton: SEARCH_FIELD_SCREEN_READER_TEXT_SUBMIT_BUTTON, clearButton: SEARCH_FIELD_SCREEN_READER_TEXT_CLEAR_BUTTON, }Specifies the screenreader text for both the clear and submit buttons (e.g., for i18n translations). The default is
{ label: 'search', clearButton: 'clear search', searchButton: 'submit search' }. - value
stringDefault''Specifies the initial value for the input. The default is an empty string.
- icons
shape{submit:elementRequired,clear:}element,Default{ clear: <Icon src={Close} />, submit: <Icon src={Search} />, }Specifies the icon element(s) to use for the clear and submit buttons. The default is:
{ submit: import {Search} from '@edx/paragon/icons';, clear: import {Close} from '@edx/paragon/icons'. } - formAriaLabel
stringSpecifies the aria-label attribute on the form element. This is useful if you use the
SearchFieldcomponent more than once on a page. - inputProps
shape{}Default{}Props to be passed to the form input
- variant
enum'light' | 'dark'Default'light'The button style variant to use.
- disabled
boolDefaultfalseSpecifies whether the
SearchFieldis disabled. - submitButtonLocation
enum'internal' | 'external'Default'internal'Controls whether the search button is internal as an icon or external as a button.
- buttonText
stringDefault'search'Specifies a text that is displayed on the button. The
submitButtonLocationprop should be set toexternal.
- children
nodeRequiredspecifies the nested child elements. At a minimum,
SearchField.LabelandSearchField.Inputare required. - onSubmit
funcRequiredspecifies a callback function for when the
SearchFieldis submitted by the user. For example:<SearchField onSubmit={(value) => { console.log(value); } /> - className
stringspecifies a custom class name.
- onBlur
funcDefault() => {}specifies a callback function for when the user loses focus in the
SearchFieldcomponent. The default is an empty function. For example:<SearchField onBlur={event => console.log(event)} /> - onChange
funcDefault() => {}specifies a callback function for when the value in
SearchFieldis changed by the user. The default is an empty function. For example:<SearchField onChange={value => console.log(value)} /> - onClear
funcDefault() => {}specifies a callback function for when the value in
SearchFieldis cleared by the user. The default is an empty function. For example:<SearchField onClear={() => console.log('search cleared')} /> - onFocus
funcDefault() => {}specifies a callback function for when the user focuses in the
SearchFieldcomponent. The default is an empty function. For example:<SearchField onFocus={event => console.log(event)} /> - screenReaderText
shape{label:string|elementRequired,submitButton:string|elementRequired,clearButton:}string|element,Default{ label: 'search', submitButton: 'submit search', clearButton: 'clear search', }specifies the screenreader text for both the clear and submit buttons (e.g., for i18n translations). The default is
{ label: 'search', clearButton: 'clear search', searchButton: 'submit search' }. - value
stringDefault''specifies the initial value for the input. The default is an empty string.
- icons
shape{submit:elementRequired,clear:}element,Default{ clear: <Icon src={Close} />, submit: <Icon src={Search} />, }specifies the icon element(s) to use for the clear and submit buttons.
- formAriaLabel
stringspecifies the aria-label attribute on the form element. This is useful if you use the
SearchFieldcomponent more than once on a page. - disabled
boolDefaultfalseSpecifies whether the
SearchFieldis disabled. - submitButtonLocation
enum'internal' | 'external'Default'internal'Controls whether the search button is internal as an icon or external as a button.
- className
stringspecifies a custom class name.
- placeholder
stringspecifies the placeholder text for the input.
- children
string|elementspecifies the label to use for the input field (e.g., for i18n translations). Note: if
childrenis not provided, a screenreader-only label will be used in its placed based on thescreenReaderText.labelprop forSearchField.Advanced.
- variant
enum'light' | 'dark'Default'light'The button style variant to use.
- submitButtonLocation
enum'internal' | 'external'Default'internal'Controls whether the search button is internal as an icon or external as a button.
- buttonText
stringDefault'Search'Specifies a text that is displayed on the button. The
submitButtonLocationprop should be set toexternal.
Usage Insights#
SearchField
| Project Name | Paragon Version | Instance Count | |
|---|---|---|---|
| frontend-app-admin-portal | 20.39.2 | 1 | |
| frontend-app-discussions | 20.44.0 | 1 | |
| frontend-app-gradebook | 20.45.0 | 1 | |
| frontend-app-library-authoring | 20.45.5 | 1 | |
| frontend-app-program-console | 20.32.0 | 1 | |
| frontend-app-publisher | 20.28.5 | 1 | |
| studio-frontend | 3.4.8 | 1 |
SearchFieldAdvanced
| Project Name | Paragon Version | Instance Count | |
|---|---|---|---|
| frontend-app-discussions | 20.44.0 | 2 | |
| catalog-search | 20.45.0 | 1 | |
| prospectus | 20.45.2 | 4 |
SearchFieldClearButton
| Project Name | Paragon Version | Instance Count | |
|---|---|---|---|
| catalog-search | 20.45.0 | 1 | |
| prospectus | 20.45.2 | 4 |
SearchFieldInput
| Project Name | Paragon Version | Instance Count | |
|---|---|---|---|
| frontend-app-discussions | 20.44.0 | 2 | |
| catalog-search | 20.45.0 | 1 | |
| prospectus | 20.45.2 | 4 |
SearchFieldLabel
| Project Name | Paragon Version | Instance Count | |
|---|---|---|---|
| frontend-app-discussions | 20.44.0 | 2 |
SearchFieldSubmitButton
| Project Name | Paragon Version | Instance Count | |
|---|---|---|---|
| catalog-search | 20.45.0 | 1 | |
| prospectus | 20.45.2 | 5 |