Description
Field.Select
is a component for selecting between options using a dropdown or similar user experiences.
Demos
Dropdown variant (default)
Empty
<Field.Selection onChange={(value) => console.log('onChange', value)}><Field.Option value="foo" title="Foo!" /><Field.Option value="bar" title="Baar!" /></Field.Selection>
Placeholder
<Field.Selectionplaceholder="Select something...."onChange={(value) => console.log('onChange', value)}><Field.Option value="foo" title="Foo!" /><Field.Option value="bar" title="Baar!" /></Field.Selection>
Label
<Field.Selectionlabel="Label text"onChange={(value) => console.log('onChange', value)}/>
Option selected
<Field.Selectionvalue="bar"onChange={(value) => console.log('onChange', value)}><Field.Option value="foo" title="Foo!" /><Field.Option value="bar" title="Baar!" /></Field.Selection>
Label and option selected
<Field.Selectionvalue="bar"label="Label text"onChange={(value) => console.log('onChange', value)}><Field.Option value="foo" title="Foo!" /><Field.Option value="bar" title="Baar!" /></Field.Selection>
Horizontal layout
<Field.Selectionvalue="bar"label="Label text"layout="horizontal"onChange={(value) => console.log('onChange', value)}><Field.Option value="foo" title="Foo!" /><Field.Option value="bar" title="Baar!" /></Field.Selection>
Widths
<Field.Selectionlabel="Default width (property omitted)"value="bar"onChange={(value) => console.log('onChange', value)}><Field.Option value="foo" title="Foo!" /><Field.Option value="bar" title="Baar!" /></Field.Selection><Field.Selectionlabel="Medium"value="bar"width="medium"onChange={(value) => console.log('onChange', value)}><Field.Option value="foo" title="Foo!" /><Field.Option value="bar" title="Baar!" /></Field.Selection><Field.Selectionlabel="Large"value="bar"width="large"onChange={(value) => console.log('onChange', value)}><Field.Option value="foo" title="Foo!" /><Field.Option value="bar" title="Baar!" /></Field.Selection><Field.Selectionlabel="Stretch"value="bar"width="stretch"onChange={(value) => console.log('onChange', value)}><Field.Option value="foo" title="Foo!" /><Field.Option value="bar" title="Baar!" /></Field.Selection>
Disabled
<Field.Selectionvalue="bar"label="Label text"onChange={(value) => console.log('onChange', value)}disabled><Field.Option value="foo" title="Foo!" /><Field.Option value="bar" title="Baar!" /></Field.Selection>
Error
<Field.Selectionvalue="bar"label="Label text"onChange={(value) => console.log('onChange', value)}error={new FormError('This is what is wrong...')}><Field.Option value="foo" title="Foo!" /><Field.Option value="bar" title="Baar!" /></Field.Selection>
High number of options
<Field.Selectionvalue="option-15"label="Label text"onChange={(value) => console.log('onChange', value)}><Field.Option value="option-1" title="One" /><Field.Option value="option-2" title="Two" /><Field.Option value="option-3" title="Three" /><Field.Option value="option-4" title="Four" /><Field.Option value="option-5" title="Five" /><Field.Option value="option-6" title="Six" /><Field.Option value="option-7" title="Seven" /><Field.Option value="option-8" title="Eight" /><Field.Option value="option-9" title="Nine" /><Field.Option value="option-10" title="Ten" /><Field.Option value="option-11" title="Eleven" /><Field.Option value="option-12" title="Twelve" /><Field.Option value="option-13" title="Thirteen" /><Field.Option value="option-14" title="Fourteen" /><Field.Option value="option-15" title="Fifteen" /><Field.Option value="option-16" title="Sixteen" /><Field.Option value="option-17" title="Seventeen" /><Field.Option value="option-18" title="Eighteen" /><Field.Option value="option-19" title="Nineteen" /><Field.Option value="option-20" title="Twenty" /><Field.Option value="option-21" title="Twentyone" /><Field.Option value="option-22" title="Twentytwo" /><Field.Option value="option-23" title="Twentythree" /><Field.Option value="option-24" title="Twentyfour" /><Field.Option value="option-25" title="Twentyfive" /></Field.Selection>
Validation - Required
<Field.Selectionlabel="Label text"onChange={(value) => console.log('onChange', value)}requiredvalidateInitiallyvalidateUnchanged><Field.Option value="foo" title="Foo!" /><Field.Option value="bar" title="Baar!" /></Field.Selection>
Radio variant
Empty
<Field.Selectionvariant="radio"onChange={(value) => console.log('onChange', value)}><Field.Option value="foo" title="Foo!" /><Field.Option value="bar" title="Baar!" /></Field.Selection>
Label
<Field.Selectionvariant="radio"label="Label text"onChange={(value) => console.log('onChange', value)}><Field.Option value="foo" title="Foo!" /><Field.Option value="bar" title="Baar!" /></Field.Selection>
Option selected
<Field.Selectionvariant="radio"value="bar"onChange={(value) => console.log('onChange', value)}><Field.Option value="foo" title="Foo!" /><Field.Option value="bar" title="Baar!" /></Field.Selection>
Disabled
<Field.Selectionvariant="radio"value="bar"label="Label text"onChange={(value) => console.log('onChange', value)}disabled><Field.Option value="foo" title="Foo!" /><Field.Option value="bar" title="Baar!" /></Field.Selection>
Error
<Field.Selectionvariant="radio"value="bar"label="Label text"onChange={(value) => console.log('onChange', value)}error={new FormError('This is what is wrong...')}><Field.Option value="foo" title="Foo!" /><Field.Option value="bar" title="Baar!" /></Field.Selection>
Buttons variant
Properties
Standard input component props
Property | Type | Description |
---|---|---|
data-testid | string | (optional) Test ID |
className | string | (optional) Outer DOM element class name |
value | number | string | (optional) Source data value for the input |
layout | string | (optional) Layout for the label and input. Can be horizontal or vertical |
label | string | (optional) Field label to show above / before the input feature |
labelDescription | string | (optional) A more discreet text displayed beside the label (i.e for "(optional)") |
labelSecondary | string | (optional) Secondary information displayed at the end of the label line (i.e character counter) |
placeholder | string | (optional) Text showing in place of the value if no value is given |
path | string | (optional) JSON Pointer for where the data for this input is located in the source dataset (when using DataContext) |
info | Error or string | (optional) Info message shown below / after the input |
warning | Error or string | (optional) Warning message shown below / after the input |
error | Error | (optional) Error message shown below / after the input |
disabled | boolean | (optional) Set true to show the field but without the possibility of changing the value. |
emptyValue | any | (optional) The value to use (in onChange events etc) when emptying the field. Makes it possible for instance to provide undefined instead of an empty string when clearing the content of a text input. |
required | boolean | (optional) When set true , the input will give an error if the value cannot be empty. |
schema | object | (optional) Custom JSON Schema for validating the value. |
validateInitially | string | (optional) Set true to show validation based errors initially (from given value-prop or source data) before the user interacts with the field. |
validateUnchanged | string | (optional) Set true to show validation based errors when the field is touched (like focusing a field and blurring) without having changed the value. Since the user did not introduce a new error, this will apply when the value was initially invalid based on validation. |
continuousValidation | string | (optional) Set true to show validation based errors continuously while writing, not just when blurring the field. |
errorMessages | object | (optional) Custom error messages for each type of error, overriding default messages. |
validator | function | (optional) Custom validator function that will be called for every change done by the user. Can be asynchronous or synchronous. |
onBlurValidator | function | (optional) Custom validator function that will be called when the user leaves the field (blurring a text input, closing a dropdown etc). Can be asynchronous or synchronous. |
toInput | function | (optional) Derivate called when the received / active value is sent to the input. Can be used for casting, changing syntax etc. |
fromInput | function | (optional) Derivate called when changes is made by the user, to cast or change syntax back to the original (opposite of toInput ). |
Component-specific props
Property | Type | Description |
---|---|---|
variant | string | (optional) Choice of UI feature. Can be: dropdown , radio or checkbox . |
width | string or false | (optional)false for no width (use browser default), medium or large for predefined standard widths, stretch for fill available width. |
children | React.Node | (optional) For providing Option components |
Events
Event | Description |
---|---|
onChange | (optional) Will be called on value changes made by the user, with the new value as argument. |
onFocus | (optional) Will be called when the component gets into focus. Like clicking inside a text input or opening a dropdown. Called with active value as argument. |
onBlur | (optional) Will be called when the component stop being in focus. Like when going to next field, or closing a dropdown. Called with active value as argument. |