Single checkbox
Renders a single checkbox with a label.
The field ID is set to true or false depending on whether the checkbox is checked or not.
Single checkbox props
fieldType: 'singleCheckbox', checkBoxLabelComponent: null, // Object with { componentClass, props }. // `componentClass` is the imported class of the component to replace the checkbox label. // `props` can be included to pass state or data to the component, accessible as {{@props}}. // `@option`, `@for`, `@labelId`, `@checked`, `@changesetWebform`, and `@formField` are also passed to the component. // Set `for={{@for}}` and `id={{@labelId}} on the label element in the component to ensure accessibility. checkboxLabelMarkdown: null, // Markdown string - a markdown string to render as HTML TODO doc what addon is needed to use this and add to all the other labels. validatesOn: ['$inherited', 'checkboxToggled'], // Array of strings
The above props are in addition to the generic field props shown with their default values below.
validationRules: [], // Array of objects defining validation rules. See "Validation". validatesOn: ['submit', 'pushErrors'], // Array of strings, specifing the names of events which should triggger validation. showValidationWhenFocussed: null, // Boolean - unless this is true, validation colours, icons and messages will be omitted for as long as the "focussed" prop of a field is true. The build in input and textarea fields set focussed to true when the user focuesses the element. omitted: false, // Boolean - or object - if true, the field is omitted and also ignored when validating or submitting the form. Can also be an object which defines rules for dynamic omission/inclusion. See /docs/hiding-and-showing-fields. defaultValue: null, // Any - auto set the changeset property for the field to this value when the ChangesetWebform component is rendered and the changeset is created. This value will be overridden by a corresponding property in the data object that is passed to the ChangesetWebform component. labelComponent: null, // Object with { componentClass, props }. // If set, fieldLabel becomes null. // `componentClass` is the imported class of the component to show inside the field label element. // `props` can be included to pass state or data to the component, accessible as {{@props}}. // `@changesetWebform, and @formField are passed to the component. labelMarkdown: null, // String - a markdown string to render as HTML within the label element. hideLabel: null, // Boolean - Hide the label from the user disabled: false, // Boolean - disable the field, but do not hide it. It will still be validated [TODO check] and included when the form is submitted resetWhenOmitted: true, // Boolean - reset the field value and validation when the field is omitted from the form. attrsFromConfig: { classNames: {}, // Object - keys can correspond to those in the classNames settings. See /docs/configure-classnames }, cloneActionsPosition: 'fieldActions', // String - where to place the remove clone button in relation to the cloned field. Can be [TODO] includeLabelForAttr: false, // Boolean - if true, the label element will have a 'for' attribute that matches the input element's 'id' attribute. isFieldset: false, // Boolean - if true, the field options are wrapped in a fieldset element, and the field label is wrapped in a legend element. requiresAriaLabelledBy: false, // Boolean - if true, the field will have an aria-labelledby attribute that points to the field label. This is not required if the field uses semantic element/s such as inputs or textareas, and the "for" attribute of the label correctly points to the semantic element/s.
Single checkbox basic usage
import ChangesetWebform from 'react-changeset-webforms/src/components/ChangesetWebform.jsx'; const formSchema = { formSettings: { formName: 'singleCheckboxExample1', hideSubmitButton: true, }, fields: [ { fieldId: 'acceptTerms', fieldType: 'singleCheckbox', fieldLabel: 'I agree to the terms and conditions', checkBoxLabel: 'I agree to the terms and conditions', }, ], }; export default function SingleCheckboxExampleOne() { return <ChangesetWebform formSchema={formSchema} />; }
Single checkbox markdown checkbox label
You can also pass a markdown string to the checkboxLabelMarkdown prop. This will be rendered as HTML inside a label element.
import ChangesetWebform from 'react-changeset-webforms/src/components/ChangesetWebform.jsx'; const formSchema = { formSettings: { formName: 'singleCheckboxExample2', hideSubmitButton: true, }, fields: [ { fieldLabel: 'Terms and conditions', fieldId: 'acceptTerms', fieldType: 'singleCheckbox', checkboxLabelMarkdown: 'I agree to the __**[terms and conditions here](https://example.com)**__.', }, ], }; export default function SingleCheckboxExampleTwo() { return <ChangesetWebform formSchema={formSchema} />; }
Single checkbox custom component for checkbox label
You can use a custom component for the checkbox label by passing checkBoxLabelComponent to the field. The component passed will then be rendered in place of the standard label element for each option.
The object passed must take the following form.
{ componentClass: // Class, required. The imported class of the component to render. props: // Object, optional. This object that will be passed to the component as "props" }- The component template will have access to the
boolean as well as thehash which includes thelabelandkeyprops for that option. - Accessibility features
- Set
for=on the label element, to ensure that the browser knows which checkbox the label is for. - Set
id=so that thearia-labelledbyattribute on the checkbox works correctly.
- Set
import ChangesetWebform from 'react-changeset-webforms/src/components/ChangesetWebform.jsx'; import ComponentForSingleCheckboxOption from '../forms/ComponentForSingleCheckboxOption'; const formSchema = { formSettings: { formName: 'singleCheckboxExample3', hideSubmitButton: true, }, fields: [ { fieldLabel: 'Terms and conditions', fieldId: 'acceptTerms', fieldType: 'singleCheckbox', checkBoxLabelComponent: { componentClass: ComponentForSingleCheckboxOption, props: { info: 'This text was passed to the label component dynamically for this option, via the checkBoxLabelComponent.props object.', }, }, }, ], }; export default function SingleCheckboxExampleThree() { return <ChangesetWebform formSchema={formSchema} />; }