react-lightning-design-system
Version:
Salesforce Lightning Design System components built with React
60 lines (58 loc) • 2.04 kB
JavaScript
import _extends from "@babel/runtime/helpers/extends";
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
var _excluded = ["id", "className", "label", "name", "value", "inputRef", "onChange", "children"];
import React, { useId, useContext } from 'react';
import classnames from 'classnames';
import { RadioGroupContext } from './RadioGroup';
import { useEventCallback } from './hooks';
/**
*
*/
/**
*
*/
export var Radio = function Radio(_ref) {
var id_ = _ref.id,
className = _ref.className,
label = _ref.label,
name = _ref.name,
value = _ref.value,
inputRef = _ref.inputRef,
onChange_ = _ref.onChange,
children = _ref.children,
props = _objectWithoutProperties(_ref, _excluded);
var _useContext = useContext(RadioGroupContext),
grpName = _useContext.name,
error = _useContext.error,
errorId = _useContext.errorId,
onValueChange = _useContext.onValueChange;
var prefix = useId();
var id = id_ !== null && id_ !== void 0 ? id_ : "".concat(prefix, "-id");
var onChange = useEventCallback(function (e) {
onChange_ === null || onChange_ === void 0 || onChange_(e);
if (value != null) {
onValueChange === null || onValueChange === void 0 || onValueChange(value);
}
});
var radioClassNames = classnames(className, 'slds-radio');
return /*#__PURE__*/React.createElement("span", {
className: radioClassNames
}, /*#__PURE__*/React.createElement("input", _extends({
ref: inputRef,
type: "radio",
name: name !== null && name !== void 0 ? name : grpName,
value: value,
onChange: onChange
}, props, {
id: id,
"aria-describedby": error ? errorId : undefined
})), /*#__PURE__*/React.createElement("label", {
className: "slds-radio__label",
htmlFor: id
}, /*#__PURE__*/React.createElement("span", {
className: "slds-radio_faux"
}), /*#__PURE__*/React.createElement("span", {
className: "slds-form-element__label"
}, label || children)));
};
//# sourceMappingURL=Radio.js.map