UNPKG

@engie-group/fluid-design-system-react

Version:

Fluid Design System React

25 lines (22 loc) 1.42 kB
import { jsx, jsxs, Fragment } from 'react/jsx-runtime'; import React__default, { useState, useEffect } from 'react'; import { Utils } from '../../utils/util.js'; import { NJIcon } from '../icon/NJIcon.js'; import { NJRadioGroupContext } from './NJRadioGroupContext.js'; const NJRadioGroup = React__default.forwardRef(({ checkedId, orientation = 'column', onChange, legend, legendRef, errorMessage, className, children, ...htmlProps }, ref) => { const [value, setValue] = useState(checkedId); const change = (id, value, event) => { setValue(id); onChange?.(id, value, event); }; useEffect(() => { setValue(checkedId); }, [checkedId]); const radioGroupClassName = Utils.classNames('nj-radio-group', { ['nj-radio-group--row']: orientation === 'row', ['nj-radio-group--has-error']: htmlProps['aria-invalid'] }, className); return (jsx(NJRadioGroupContext.Provider, { value: { change, value }, children: jsxs("fieldset", { ...htmlProps, ref: ref, className: radioGroupClassName, children: [jsxs("legend", { ref: legendRef, className: "nj-radio-group__legend", children: [legend, errorMessage && (jsxs(Fragment, { children: [' ', jsxs("p", { className: "nj-radio-group__error-message", children: [jsx(NJIcon, { name: "warning" }), errorMessage] })] }))] }), children] }) })); }); NJRadioGroup.displayName = 'NJRadioGroup'; export { NJRadioGroup };