@ntragas/pouncejstest
Version:
A collection of UI components from Panther labs
70 lines (60 loc) • 2.24 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
var _react = _interopRequireDefault(require("react"));
var _Box = _interopRequireDefault(require("../Box"));
var _useRadioStyles = _interopRequireDefault(require("./useRadioStyles"));
/**
* A Radio is a typical `radio` input. Under the hood it renders a typical `radio` element, so you
* can pass it as many native attrs as you wish.
*/
var Radio = /*#__PURE__*/_react.default.forwardRef(function Radio(_ref, ref) {
var checked = _ref.checked,
label = _ref.label,
disabled = _ref.disabled,
invalid = _ref.invalid,
hidden = _ref.hidden,
readOnly = _ref.readOnly,
rest = (0, _objectWithoutPropertiesLoose2.default)(_ref, ["checked", "label", "disabled", "invalid", "hidden", "readOnly"]);
var radioStyles = (0, _useRadioStyles.default)({
invalid,
checked
});
return /*#__PURE__*/_react.default.createElement(_Box.default, {
as: "label",
display: "inline-flex",
alignItems: "center",
cursor: "pointer",
fontSize: "medium",
fontWeight: "medium",
verticalAlign: "top",
"aria-disabled": disabled,
"aria-hidden": hidden,
hidden: hidden
}, /*#__PURE__*/_react.default.createElement(_Box.default, (0, _extends2.default)({
position: "relative",
borderRadius: "circle",
p: 2
}, radioStyles), /*#__PURE__*/_react.default.createElement(_Box.default, (0, _extends2.default)({
ref: ref,
as: "input",
position: "absolute",
cursor: "pointer",
opacity: 0,
type: "radio",
readOnly: readOnly,
"aria-readonly": readOnly,
"aria-checked": checked,
"aria-invalid": invalid,
checked: checked,
disabled: disabled
}, rest))), label && /*#__PURE__*/_react.default.createElement(_Box.default, {
as: "span",
userSelect: "none"
}, label));
});
var _default = /*#__PURE__*/_react.default.memo(Radio);
exports.default = _default;