@ozen-ui/kit
Version:
React component library
43 lines (42 loc) • 2.75 kB
JavaScript
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';