UNPKG

@plone/volto

Version:
99 lines (93 loc) 2.19 kB
/** * PasswordWidget component. * @module components/manage/Widgets/PassswordWidget */ import React from 'react'; import PropTypes from 'prop-types'; import { Input } from 'semantic-ui-react'; import FormFieldWrapper from '@plone/volto/components/manage/Widgets/FormFieldWrapper'; import { injectIntl } from 'react-intl'; /** * PasswordWidget component class. * * To use it, in schema properties, declare a field like: * * ```jsx * { * title: "Password", * type: 'password', * } * ``` */ const PasswordWidget = (props) => { const { id, value, onChange, onBlur, onClick, minLength, maxLength, placeholder, isDisabled, } = props; return ( <FormFieldWrapper {...props}> <Input id={`field-${id}`} name={id} type="password" disabled={isDisabled} value={value || ''} placeholder={placeholder} onChange={({ target }) => onChange(id, target.value === '' ? undefined : target.value) } onBlur={({ target }) => onBlur(id, target.value === '' ? undefined : target.value) } onClick={() => onClick()} minLength={minLength || null} maxLength={maxLength || null} autoComplete="off" /> </FormFieldWrapper> ); }; /** * Property types. * @property {Object} propTypes Property types. * @static */ PasswordWidget.propTypes = { id: PropTypes.string.isRequired, title: PropTypes.string.isRequired, description: PropTypes.string, required: PropTypes.bool, error: PropTypes.arrayOf(PropTypes.string), value: PropTypes.string, onChange: PropTypes.func.isRequired, onBlur: PropTypes.func, onClick: PropTypes.func, minLength: PropTypes.number, maxLength: PropTypes.number, wrapped: PropTypes.bool, placeholder: PropTypes.string, }; /** * Default properties. * @property {Object} defaultProps Default properties. * @static */ PasswordWidget.defaultProps = { description: null, required: false, error: [], value: null, onChange: () => {}, onBlur: () => {}, onClick: () => {}, minLength: null, maxLength: null, }; export default injectIntl(PasswordWidget);