UNPKG

@mskcc/carbon-react

Version:

Carbon react components for the MSKCC DSM

85 lines (77 loc) 3.13 kB
/** * MSKCC 2021, 2024 */ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var React = require('react'); var PropTypes = require('prop-types'); var cx = require('classnames'); var index = require('../../Layout/index.js'); var usePrefix = require('../../../internal/usePrefix.js'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var React__default = /*#__PURE__*/_interopDefaultLegacy(React); var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes); var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx); function ContainedListItem(_ref) { let { action, children, className, disabled = false, onClick, renderIcon: IconElement } = _ref; const prefix = usePrefix.usePrefix(); const isClickable = onClick !== undefined; const classes = cx__default["default"](`${prefix}--contained-list-item`, className, { [`${prefix}--contained-list-item--clickable`]: isClickable, [`${prefix}--contained-list-item--with-icon`]: IconElement, [`${prefix}--contained-list-item--with-action`]: action }); const content = /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, IconElement && /*#__PURE__*/React__default["default"].createElement("div", { className: `${prefix}--contained-list-item__icon` }, /*#__PURE__*/React__default["default"].createElement(IconElement, null)), /*#__PURE__*/React__default["default"].createElement("div", null, children)); return /*#__PURE__*/React__default["default"].createElement("li", { className: classes }, isClickable ? /*#__PURE__*/React__default["default"].createElement("button", { className: `${prefix}--contained-list-item__content`, type: "button", disabled: disabled, onClick: onClick }, content) : /*#__PURE__*/React__default["default"].createElement("div", { className: `${prefix}--contained-list-item__content` }, content), action && /*#__PURE__*/React__default["default"].createElement(index.LayoutConstraint, { size: { min: 'sm', max: 'lg' }, className: `${prefix}--contained-list-item__action` }, action)); } ContainedListItem.propTypes = { /** * A slot for a possible interactive element to render within the item. */ action: PropTypes__default["default"].node, /** * The content of this item. Must not contain any interactive elements. Use props.action to include those. */ children: PropTypes__default["default"].node, /** * Additional CSS class names. */ className: PropTypes__default["default"].string, /** * Whether this item is disabled. */ disabled: PropTypes__default["default"].bool, /** * Provide an optional function to be called when the item is clicked. */ onClick: PropTypes__default["default"].func, /** * Provide an optional icon to render in front of the item's content. */ renderIcon: PropTypes__default["default"].oneOfType([PropTypes__default["default"].func, PropTypes__default["default"].object]) }; exports["default"] = ContainedListItem;