UNPKG

@ozen-ui/kit

Version:

React component library

43 lines (42 loc) 2.75 kB
import { __assign, __read, __rest } from "tslib"; import './RadioGroup.css'; import React from 'react'; import { useControlled } from '../../hooks/useControlled'; import { useThemeProps } from '../../hooks/useThemeProps'; import { cn } from '../../utils/classname'; import { polymorphicComponentWithRef } from '../../utils/polymorphicComponentWithRef'; import { FormGroup } from '../FormGroup'; import { FormTitle } from '../FormTitle'; import { RADIO_GROUP_DEFAULT_DIRECTION, RADIO_GROUP_DEFAULT_SIZE, RADIO_GROUP_DEFAULT_AS, RADIO_GROUP_DEFAULT_VARIANT, RADIO_GROUP_DEFAULT_MIRRORED, RADIO_GROUP_DEFAULT_ALIGN, } from './constants'; import { RadioGroupContext } from './RadioGroupContext'; export var cnRadioGroup = cn('RadioGroupNext'); export var RadioGroup = polymorphicComponentWithRef(function (inProps, ref) { var props = useThemeProps({ props: inProps, name: 'RadioGroupNext', }); var _a = props.direction, direction = _a === void 0 ? RADIO_GROUP_DEFAULT_DIRECTION : _a, _b = props.size, size = _b === void 0 ? RADIO_GROUP_DEFAULT_SIZE : _b, _c = props.as, Tag = _c === void 0 ? RADIO_GROUP_DEFAULT_AS : _c, _d = props.variant, variant = _d === void 0 ? RADIO_GROUP_DEFAULT_VARIANT : _d, _e = props.mirrored, mirrored = _e === void 0 ? RADIO_GROUP_DEFAULT_MIRRORED : _e, _f = props.align, align = _f === void 0 ? RADIO_GROUP_DEFAULT_ALIGN : _f, title = props.title, className = props.className, children = props.children, name = props.name, valueProp = props.value, defaultValue = props.defaultValue, onChange = props.onChange, other = __rest(props, ["direction", "size", "as", "variant", "mirrored", "align", "title", "className", "children", "name", "value", "defaultValue", "onChange"]); var _g = __read(useControlled({ value: valueProp, defaultValue: defaultValue, name: 'RadioGroup', state: 'value', }), 2), valueState = _g[0], setValueState = _g[1]; var handleChange = function (event) { setValueState(event.target.value); onChange === null || onChange === void 0 ? void 0 : onChange(event); }; return (React.createElement(RadioGroupContext.Provider, { value: { value: valueState, onChange: handleChange, name: name, size: size, variant: variant, mirrored: mirrored, align: align, } }, React.createElement(Tag, __assign({ className: cnRadioGroup({ size: size }, [className]), role: "radiogroup" }, other, { ref: ref }), title && React.createElement(FormTitle, { size: size }, title), React.createElement(FormGroup, { direction: direction, size: size }, children)))); }); RadioGroup.displayName = 'RadioGroup';