@s-ui/react-molecule-radio-button-group
Advanced tools
Comparing version
@@ -1,55 +0,48 @@ | ||
import _extends from "@babel/runtime/helpers/esm/extends"; | ||
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose"; | ||
var _excluded = ["id", "value", "onChange", "children", "name"]; | ||
import { Children, cloneElement, useEffect, useState } from 'react'; | ||
var _excluded = ["id", "value", "onChange", "children", "name"], | ||
_excluded2 = ["checked", "onChange"]; | ||
import PropTypes from 'prop-types'; | ||
import useControlledState from '@s-ui/react-hooks/lib/useControlledState'; | ||
import Injector, { combineProps } from '@s-ui/react-primitive-injector'; | ||
import { BASE_CLASS } from './settings.js'; | ||
import { jsx as _jsx } from "react/jsx-runtime"; | ||
var MoleculeRadioButtonGroup = function MoleculeRadioButtonGroup(_ref) { | ||
var id = _ref.id, | ||
initValue = _ref.value, | ||
onChangeFromProps = _ref.onChange, | ||
children = _ref.children, | ||
name = _ref.name, | ||
props = _objectWithoutPropertiesLoose(_ref, _excluded); | ||
var _useState = useState(initValue), | ||
value = _useState[0], | ||
setValue = _useState[1]; | ||
useEffect(function () { | ||
setValue(initValue); | ||
}, [initValue]); | ||
value = _ref.value, | ||
onChange = _ref.onChange, | ||
children = _ref.children, | ||
name = _ref.name, | ||
props = _objectWithoutPropertiesLoose(_ref, _excluded); | ||
var _useControlledState = useControlledState(value), | ||
innerValue = _useControlledState[0], | ||
setInnerValue = _useControlledState[1]; | ||
var handleChangeGroup = function handleChangeGroup(e, _ref2) { | ||
var name = _ref2.name, | ||
innerValue = _ref2.value; | ||
setValue(innerValue); | ||
typeof onChangeFromProps === 'function' && onChangeFromProps(e, { | ||
value = _ref2.value; | ||
setInnerValue(value, true); | ||
typeof onChange === 'function' && onChange(e, { | ||
name: name, | ||
value: innerValue | ||
value: value | ||
}); | ||
}; | ||
var extendedChildren = Children.toArray(children).filter(Boolean).map(function (child, index) { | ||
var childValue = child.props.value; | ||
var checked = value === childValue; | ||
var onChange = handleChangeGroup; | ||
return /*#__PURE__*/cloneElement(child, _extends({}, props, { | ||
checked: checked, | ||
onChange: onChange, | ||
name: name | ||
})); | ||
}); | ||
return /*#__PURE__*/_jsx("div", { | ||
className: BASE_CLASS, | ||
children: extendedChildren | ||
id: id, | ||
children: /*#__PURE__*/_jsx(Injector, { | ||
combine: function combine(injectedProps, _ref3) { | ||
var checked = _ref3.checked, | ||
onChange = _ref3.onChange, | ||
ownProps = _objectWithoutPropertiesLoose(_ref3, _excluded2); | ||
return combineProps({ | ||
checked: ownProps.value === innerValue, | ||
onChange: handleChangeGroup, | ||
name: name, | ||
props: props | ||
}, ownProps); | ||
}, | ||
children: children | ||
}) | ||
}); | ||
}; | ||
MoleculeRadioButtonGroup.displayName = 'MoleculeRadioButtonGroup'; | ||
MoleculeRadioButtonGroup.defaultProps = { | ||
checked: false | ||
}; | ||
export default MoleculeRadioButtonGroup; |
{ | ||
"name": "@s-ui/react-molecule-radio-button-group", | ||
"version": "1.9.0", | ||
"version": "1.10.0", | ||
"description": "", | ||
@@ -12,3 +12,4 @@ "main": "lib/index.js", | ||
"dependencies": { | ||
"@s-ui/component-dependencies": "1" | ||
"@s-ui/component-dependencies": "1", | ||
"@s-ui/react-primitive-injector": "1" | ||
}, | ||
@@ -15,0 +16,0 @@ "keywords": [], |
4082
-65.97%2
100%7
-12.5%47
-2.08%+ Added