@wordpress/components
Version:
UI components for WordPress.
52 lines (45 loc) • 1.03 kB
JavaScript
// @ts-nocheck
/**
* External dependencies
*/
import { useRadioState, RadioGroup as ReakitRadioGroup } from 'reakit/Radio';
/**
* WordPress dependencies
*/
import { forwardRef } from '@wordpress/element';
/**
* Internal dependencies
*/
import ButtonGroup from '../button-group';
import RadioContext from './radio-context';
function RadioGroup(
{ label, checked, defaultChecked, disabled, onChange, ...props },
ref
) {
const radioState = useRadioState( {
state: defaultChecked,
baseId: props.id,
} );
const radioContext = {
...radioState,
disabled,
// Controlled or uncontrolled.
state: checked ?? radioState.state,
setState: onChange ?? radioState.setState,
};
return (
<RadioContext.Provider value={ radioContext }>
<ReakitRadioGroup
ref={ ref }
as={ ButtonGroup }
aria-label={ label }
{ ...radioState }
{ ...props }
/>
</RadioContext.Provider>
);
}
/**
* @deprecated Use `RadioControl` or `ToggleGroupControl` instead.
*/
export default forwardRef( RadioGroup );