@mskcc/carbon-react
Version:
Carbon react components for the MSKCC DSM
129 lines (121 loc) • 4.39 kB
JavaScript
/**
* MSKCC 2021, 2024
*/
;
Object.defineProperty(exports, '__esModule', { value: true });
var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js');
var iconsReact = require('@carbon/icons-react');
var cx = require('classnames');
var PropTypes = require('prop-types');
var React = require('react');
var useId = require('../../internal/useId.js');
var usePrefix = require('../../internal/usePrefix.js');
var deprecate = require('../../prop-types/deprecate.js');
var match = require('../../internal/keyboard/match.js');
var keys = require('../../internal/keyboard/keys.js');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx);
var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
var _CheckmarkFilled;
const RadioTile = /*#__PURE__*/React__default["default"].forwardRef(function RadioTile(_ref, ref) {
let {
children,
className: customClassName,
disabled,
// eslint-disable-next-line no-unused-vars
light,
checked,
name,
value,
id,
onChange,
tabIndex,
...rest
} = _ref;
const prefix = usePrefix.usePrefix();
const inputId = useId.useFallbackId(id);
const className = cx__default["default"](customClassName, `${prefix}--tile`, `${prefix}--tile--selectable`, {
[`${prefix}--tile--is-selected`]: checked,
[`${prefix}--tile--light`]: light,
[`${prefix}--tile--disabled`]: disabled
});
function handleOnChange(evt) {
onChange(value, name, evt);
}
function handleOnKeyDown(evt) {
if (match.matches(evt, [keys.Enter, keys.Space])) {
evt.preventDefault();
onChange(value, name, evt);
}
}
return /*#__PURE__*/React__default["default"].createElement("div", null, /*#__PURE__*/React__default["default"].createElement("input", {
checked: checked,
className: `${prefix}--tile-input`,
disabled: disabled,
id: inputId,
name: name,
onChange: !disabled ? handleOnChange : null,
onKeyDown: !disabled ? handleOnKeyDown : null,
tabIndex: !disabled ? tabIndex : null,
type: "radio",
value: value,
ref: ref
}), /*#__PURE__*/React__default["default"].createElement("label", _rollupPluginBabelHelpers["extends"]({}, rest, {
htmlFor: inputId,
className: className
}), /*#__PURE__*/React__default["default"].createElement("span", {
className: `${prefix}--tile__checkmark`
}, _CheckmarkFilled || (_CheckmarkFilled = /*#__PURE__*/React__default["default"].createElement(iconsReact.CheckmarkFilled, null))), /*#__PURE__*/React__default["default"].createElement("span", {
className: `${prefix}--tile-content`
}, children)));
});
RadioTile.propTypes = {
/**
* `true` if this tile should be selected.
*/
checked: PropTypes__default["default"].bool,
/**
* The tile content.
*/
children: PropTypes__default["default"].node,
/**
* The CSS class names.
*/
className: PropTypes__default["default"].string,
/**
* Specify whether the RadioTile should be disabled
*/
disabled: PropTypes__default["default"].bool,
/**
* The ID of the `<input>`.
*/
id: PropTypes__default["default"].string,
/**
* `true` to use the light version. For use on $ui-01 backgrounds only.
* Don't use this to make tile background color same as container background color.
*/
light: deprecate["default"](PropTypes__default["default"].bool, 'The `light` prop for `RadioTile` is no longer needed and has ' + 'been deprecated in v11 in favor of the new `Layer` component. It will be moved in the next major release.'),
/**
* The `name` of the `<input>`.
*/
name: PropTypes__default["default"].string,
/**
* The handler of the massaged `change` event on the `<input>`.
*/
onChange: PropTypes__default["default"].func,
/**
* Specify the tab index of the wrapper element
*/
tabIndex: PropTypes__default["default"].number,
/**
* The `value` of the `<input>`.
*/
value: PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].number]).isRequired
};
RadioTile.defaultProps = {
onChange: () => {},
tabIndex: 0
};
var RadioTile$1 = RadioTile;
exports["default"] = RadioTile$1;