UNPKG

@carbon/react

Version:

React components for the Carbon Design System

89 lines (81 loc) 3.37 kB
/** * Copyright IBM Corp. 2016, 2023 * * This source code is licensed under the Apache-2.0 license found in the * LICENSE file in the root directory of this source tree. */ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var _rollupPluginBabelHelpers = require('../../../_virtual/_rollupPluginBabelHelpers.js'); 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); const ContainedListItem = ({ action, children, className, disabled = false, onClick, renderIcon: IconElement, ...rest }) => { 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", _rollupPluginBabelHelpers["extends"]({ className: classes }, rest), 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, /** * A component used to render an icon. */ renderIcon: PropTypes__default["default"].oneOfType([PropTypes__default["default"].func, PropTypes__default["default"].object]) }; exports["default"] = ContainedListItem;