UNPKG

@carbon/react

Version:

React components for the Carbon Design System

73 lines (65 loc) 2.52 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 cx = require('classnames'); var PropTypes = require('prop-types'); var React = require('react'); var TableCell = require('./TableCell.js'); var usePrefix = require('../../internal/usePrefix.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); const TableExpandedRow = ({ className: customClassName, children, colSpan, ...rest }) => { const rowRef = React.useRef(null); const prefix = usePrefix.usePrefix(); const className = cx__default["default"](`${prefix}--expandable-row`, customClassName); const toggleParentHoverClass = eventType => { if (rowRef && rowRef.current && rowRef.current.previousElementSibling) { const parentNode = rowRef.current.previousElementSibling; if (eventType === 'enter') { parentNode.classList.add(`${prefix}--expandable-row--hover`); } else { parentNode.classList.remove(`${prefix}--expandable-row--hover`); } } }; return /*#__PURE__*/React__default["default"].createElement("tr", _rollupPluginBabelHelpers["extends"]({ ref: rowRef, onMouseEnter: () => toggleParentHoverClass('enter'), onMouseLeave: () => toggleParentHoverClass('leave') }, rest, { className: className, "data-child-row": true }), /*#__PURE__*/React__default["default"].createElement(TableCell["default"], { colSpan: colSpan }, /*#__PURE__*/React__default["default"].createElement("div", { className: `${prefix}--child-row-inner-container` }, children))); }; TableExpandedRow.propTypes = { /** * Pass in the contents for your TableExpandedRow */ children: PropTypes__default["default"].node, /** * Specify an optional className to be applied to the container node */ className: PropTypes__default["default"].string, /** * The width of the expanded row's internal cell */ colSpan: PropTypes__default["default"].number.isRequired }; exports["default"] = TableExpandedRow;