@talend/react-forms
Version:
React forms library based on json schema form.
98 lines • 2.92 kB
JavaScript
/* eslint-disable jsx-a11y/label-has-associated-control, jsx-a11y/no-autofocus */
import PropTypes from 'prop-types';
import { Form } from '@talend/design-system';
import { generateDescriptionId, generateErrorId } from '../../Message/generateId';
import { extractDataAttributes } from '../../utils/properties';
import FieldTemplate from '../FieldTemplate';
import { jsx as _jsx } from "react/jsx-runtime";
export default function Radios({
id,
isValid,
errorMessage,
onChange,
onFinish,
schema,
value,
valueIsUpdating
}) {
const {
autoFocus,
description,
disabled = false,
inline,
title,
labelProps,
...rest
} = schema;
const descriptionId = generateDescriptionId(id);
const errorId = generateErrorId(id);
return /*#__PURE__*/_jsx(FieldTemplate, {
id: id,
hint: schema.hint,
description: description,
descriptionId: descriptionId,
errorId: errorId,
errorMessage: errorMessage,
isValid: isValid,
label: title,
labelProps: labelProps,
required: schema.required,
valueIsUpdating: valueIsUpdating,
inline: inline,
children: schema.titleMap && schema.titleMap.map((option, index) => /*#__PURE__*/_jsx(Form.Radio, {
id: `${id}-${index}`,
autoFocus: autoFocus,
checked: option.value === value,
disabled: disabled || valueIsUpdating,
name: id,
onBlur: event => onFinish(event, {
schema
}),
onChange: event => onChange(event, {
schema,
value: option.value
}),
value: option.value,
label: option.name,
"aria-invalid": !isValid,
"aria-describedby": `${descriptionId} ${errorId}`,
...extractDataAttributes(rest, index)
}, option.value || option.name))
});
}
if (process.env.NODE_ENV !== 'production') {
Radios.propTypes = {
id: PropTypes.string,
isValid: PropTypes.bool,
errorMessage: PropTypes.string,
onChange: PropTypes.func.isRequired,
onFinish: PropTypes.func.isRequired,
schema: PropTypes.shape({
className: PropTypes.string,
autoFocus: PropTypes.bool,
description: PropTypes.string,
disabled: PropTypes.bool,
inline: PropTypes.bool,
required: PropTypes.bool,
title: PropTypes.string,
labelProps: PropTypes.object,
titleMap: PropTypes.arrayOf(PropTypes.shape({
name: PropTypes.string.isRequired,
value: PropTypes.string.isRequired
})),
hint: PropTypes.shape({
icon: PropTypes.string,
className: PropTypes.string,
overlayComponent: PropTypes.oneOfType([PropTypes.node, PropTypes.string]).isRequired,
overlayPlacement: PropTypes.string
})
}),
value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
valueIsUpdating: PropTypes.bool
};
}
Radios.defaultProps = {
isValid: true,
schema: {}
};
//# sourceMappingURL=Radios.component.js.map