UNPKG

@momentum-ui/react-collaboration

Version:

Cisco Momentum UI Framework for React Collaboration Applications

54 lines 3.13 kB
var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; import React from 'react'; import classnames from 'classnames'; import { useId } from '@react-aria/utils'; import { useRadioGroup } from '@react-aria/radio'; import { useRadioGroupState } from '@react-stately/radio'; import { useSpatialRadioGroupNavigation } from '../SpatialNavigationProvider/SpatialNavigationProvider.utils'; import { STYLE, DEFAULTS } from './RadioGroup.constants'; import './RadioGroup.style.scss'; import Radio from './Radio'; import Text, { TEXT_CONSTANTS } from '../Text'; /** * The RadioGroup component. * @deprecated Use the equivalent from momentum.design (NPM: `@momentum-design/components/dist/react`) */ export var RadioContext = React.createContext(null); /** * @deprecated Use the equivalent from momentum.design (NPM: `@momentum-design/components/dist/react`) */ var RadioGroup = function (props) { var className = props.className, _a = props.description, description = _a === void 0 ? DEFAULTS.GROUP_DESCRIPTION : _a, id = props.id, _b = props.isDisabled, isDisabled = _b === void 0 ? DEFAULTS.GROUP_DISABLED : _b, _c = props.label, label = _c === void 0 ? DEFAULTS.GROUP_LABEL : _c, options = props.options, style = props.style; var state = useRadioGroupState(props); var _d = useRadioGroup(props, state), radioGroupProps = _d.radioGroupProps, labelProps = _d.labelProps; var radioGroupId = useId(id); var descriptionId = description ? "radio-group-description-".concat(radioGroupId) : undefined; var spatialKeyDown = useSpatialRadioGroupNavigation(radioGroupProps.onKeyDown); return ( // keyboard event handling required for spatial navigation // eslint-disable-next-line jsx-a11y/no-static-element-interactions React.createElement("div", __assign({}, radioGroupProps, { onKeyDown: spatialKeyDown, className: classnames(className, STYLE.group), id: radioGroupId, style: style, "aria-describedby": description ? descriptionId : undefined }), React.createElement("span", __assign({}, labelProps), label), description && (React.createElement(Text, { id: descriptionId, className: STYLE.groupDescription, type: TEXT_CONSTANTS.TYPES.BODY_SECONDARY, tagName: "small" }, description)), React.createElement(RadioContext.Provider, { value: state }, options && options.map(function (option) { if (typeof option === 'string') { return React.createElement(Radio, { key: option, value: option, isDisabled: isDisabled, label: option }); } else { return React.createElement(Radio, __assign({ key: option.value, isDisabled: isDisabled }, option)); } })))); }; export default RadioGroup; //# sourceMappingURL=RadioGroup.js.map