@engie-group/fluid-design-system-react
Version:
Fluid Design System React
25 lines (22 loc) • 1.42 kB
JavaScript
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 };