UNPKG

@plone/volto

Version:
82 lines (74 loc) 1.94 kB
/** * CheckboxWidget component. * @module components/manage/Widgets/CheckboxWidget */ import React from 'react'; import PropTypes from 'prop-types'; import { Checkbox } from 'semantic-ui-react'; import { injectIntl } from 'react-intl'; import FormFieldWrapper from '@plone/volto/components/manage/Widgets/FormFieldWrapper'; /** * CheckboxWidget component class. * @function CheckboxWidget * @returns {string} Markup of the component. * * To use it, in schema properties, declare a field like: * * ```jsx * { * title: "Active", * type: 'boolean', * } * ``` */ const CheckboxWidget = (props) => { const { id, title, value, onChange, isDisabled } = props; return ( <FormFieldWrapper {...props} columns={1}> <div className="wrapper"> <Checkbox id={`field-${id}`} name={`field-${id}`} checked={value || false} disabled={isDisabled} onChange={(event, { checked }) => { onChange(id, checked); }} label={<label htmlFor={`field-${id}`}>{title}</label>} /> </div> </FormFieldWrapper> ); }; /** * Property types. * @property {Object} propTypes Property types. * @static */ CheckboxWidget.propTypes = { id: PropTypes.string.isRequired, title: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired, description: PropTypes.oneOfType([PropTypes.string, PropTypes.object]), required: PropTypes.bool, error: PropTypes.arrayOf(PropTypes.string), value: PropTypes.bool, onChange: PropTypes.func, onEdit: PropTypes.func, onDelete: PropTypes.func, wrapped: PropTypes.bool, }; /** * Default properties. * @property {Object} defaultProps Default properties. * @static */ CheckboxWidget.defaultProps = { description: null, required: false, error: [], value: null, onChange: null, onEdit: null, onDelete: null, }; export default injectIntl(CheckboxWidget);