UNPKG

@automattic/form-components

Version:
108 lines (92 loc) 2.63 kB
Form Components =============== This is a directory of shared form components. ### Settings Form Fields The following form components were created as an effort to minimize duplication between site settings and me settings. - clipboard-button - counted-textarea - form-button - form-buttons-bar - form-checkbox - form-country-select - form-currency-input - form-fieldset - form-input-validation - form-label - form-legend - form-password-input - form-phone-input - form-phone-media-input - form-radio - form-range - form-section-heading - form-select - form-setting-explanation - form-tel-input - form-text-input - form-text-input-with-action - form-text-input-with-affixes - form-textarea - form-toggle - multi-checkbox - range - sortable-list The component jsx files are wrappers that ensure our classes are added to each form field. Each form field component also contains a `style.scss` file in its directory for styling. These stylesheets are included in `/assets/stylesheets/_components.scss`. ### FormSectionHeading The `FormSectionHeading` component allows you to add a section header to your settings form. ### FormInputValidation The `FormInputValidation` component is used to display a validation notice to the user. You can use it like this: ```jsx <FormInputValidation isError={ true } text="Usernames can only contain lowercase letters (a-z) and numbers." /> <FormInputValidation text="That username is valid." /> ``` ### MultiCheckbox [See README.md for MultiCheckbox](./multi-checkbox/README.md) ### SelectOptGroups `SelectOptGroups` allows you to pass structured data to render a select element with `<option>` elements nested inside `<optgroup>` separators. You can use it like this: ```jsx const options = [ { label: 'Group 1', options: [ { label: 'Option 1', value: 1 }, { label: 'Option 2', value: 2 } ] }, { label: 'Group 2', options: [ { label: 'Option 3', value: 3 }, { label: 'Option 4', value: 4 } ] } ], initialSelected = 3; <SelectOptGroups name="example" value={ initialSelected } options={ options } /> ``` And this would render: ```html <select name="example"> <optgroup label="Group 1"> <option value="1">Option 1</option> <option value="2">Option 2</option> </optgroup> <optgroup label="Group 1"> <option value="3" selected>Option 3</option> <option value="4">Option 4</option> </optgroup> </select> ``` Any valid jsx attributes that are passed to `<SelectOptGroup>` will also get passed to the rendered `<select>` element, so you can also pass in attributes like `className`, `onChange`, etc.