form group
Groups related input elements together
CdrFormGroup is a simple wrapper component providing structure and consistent spacing when composing various form layouts.
Grouping related form controls makes forms more understandable for all users. Use the fieldset and legend elements to provide necessary context for users who rely on screen readers.
When to use
- Creating groups of checkboxes or radio buttons for a single, multiple-choice selection
- Grouping several inputs related to the same topic, such as selecting the color, size and quantity of a product
- Grouping fields for a delivery address during checkout
When not to use
- Creating a single form field asking for a single piece of information
What Cedar provides
CdrFormGroup provides a simple fieldset and legend wrapper for form element components.
Using this component ensures your form:
- Communicates to screen readers that a group of form fields relate to each other
- Provides a label for the group
- Makes it easier for users to understand the purpose of the form group's controls
Development responsibilities
When using this component, here's what you are responsible for:
- Using the
labelprop or slot to explain what the form elements are—this text will be used for the legend element - Creating brief, descriptive
labeltext—screen readers may repeat the legend for each control in the group
In CdrFormGroup, all the related fields go inside the fieldset element. The legend element is used to represent the form section’s question or overall theme.
For projects that cannot make use of the Vue.js component, the CdrFormGroup styles are available through the @rei/cdr-component-variables package as SCSS and LESS mixins. These can be applied to plain HTML elements. See examples on the component variables page.
Label override
Rather than passing a label prop, customize the label element using the label slot.
<cdr-form-group>
<template #label>
<cdr-text tag="span" style="font-size: 24px;">Optional Label Slot Override</cdr-text>
</template>
<cdr-checkbox
custom-value="A"
v-model="ex"
:background="backgroundColor"
>A</cdr-checkbox>
<cdr-checkbox
custom-value="B"
v-model="ex"
:background="backgroundColor"
>B</cdr-checkbox>
<cdr-checkbox
custom-value="C"
v-model="ex"
:background="backgroundColor"
>C</cdr-checkbox>
</cdr-form-group>
Validation
Render a form group with validation and error state.
<cdr-form-group label="What's your favorite letter?" :error="modelError" :required="true">
<cdr-checkbox
custom-value="A"
v-model="ex"
:background="backgroundColor"
@input="validate"
>A</cdr-checkbox>
<cdr-checkbox
custom-value="B"
v-model="ex"
:background="backgroundColor"
@input="validate"
>B</cdr-checkbox>
<cdr-checkbox
custom-value="C"
v-model="ex"
:background="backgroundColor"
@input="validate"
>C</cdr-checkbox>
</cdr-form-group>
CdrFormGroup
Props
| Name | Type | Default |
|---|---|---|
id Custom ID that is mapped to the form error. If this value is not set, it will be randomly generated. | string | |
label Sets the label/legend for the form group. Applies default text styles to this label. To override that default text style or apply other customization, use the `label` slot. | string | '' |
error Sets the form group to an error state, displays the `error` slot if one is present. | boolean|string | false |
required Adds required label to the form group. | boolean | |
optional Adds optional label to the form group. | boolean | |
disabled Renders form group in a disabled state. | boolean |
Slots
| Name |
|---|
label Overrides CdrFormGroup label/legend. Should be a text element |
default CdrFormGroup content (form elements) |
error |