Form Field Types

Select

The select type is a controlled component provided by radix-ui. Using the choices property, you can pass a single array of values, array of { value, label, disabled? }

// note, this is an element in the fields array (see getting started) { type: 'select', name: 'shipping', label: 'Select shipping', placeholder: 'Select an option...', helpText: 'Ground deliveries can take up to several millennia.', default: 'FedEx Ground', choices: [ '---UPS', { label: 'UPS Ground', value: 'ups-ground-234' }, { label: 'UPS Same Day', value: 'ups-sd-234', disabled: true }, 'UPS Air', '---Fedex', 'FedEx Ground', 'FedEx Air', '---Erie Canal', { label: 'Barge +Mule Power', value: 'boat-w-sal' }, 'Barge Only' ], options: { required: 'Select a valid shipping option to proceed with order', }, } // ... rest of the fields array

Demo

Ground deliveries can take up to several millennia.

Properties

The following documents the full list of properties that alter the field's behavior.

PropertyTypeDescription
nameStringThe form data/state object property name.
labelStringThe label for the form field. This is typically displayed next to the field to describe what it is for.
defaultStringThe default value for the form field. This is used to pre-populate the field with a value when the form is first loaded.
choicesRDFChoiceOption[]An array of string or `{ value: string, label: string, disabled?: boolean }
helpTextStringAdditional text that can be displayed below the form field to provide additional information or instructions for the user.
HelpTextReactElementTo render markup, tooltips and other more advanced help options, a component can be returned from this property.
observeBooleanDetermines if the field will be included in stateful updates that can be passed both during validation and changes to form state. See advanced topics for more detail
disabledBooleanDetermines whether the form field should be disabled. Values and any state prior to being disabled is preserved.
hiddenBooleanDetermines whether the form field should be hidden. Note, that this is done with CSS. The markup will still be rendered as to avoid unnecessary re-renders and destruction of controlled input state.
optionsRegisterOptionsObject you would pass if you were using react-hook-form directly. RDF calls register automatically and passes this configuration as the second argument.