UNPKG

@carbon/react

Version:

React components for the Carbon Design System

67 lines (61 loc) 2.06 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'); const TableExpandedRow = ({ className: customClassName, children, colSpan, ...rest }) => { const rowRef = React.useRef(null); const prefix = usePrefix.usePrefix(); const className = cx(`${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.createElement("tr", _rollupPluginBabelHelpers.extends({ ref: rowRef, onMouseEnter: () => toggleParentHoverClass('enter'), onMouseLeave: () => toggleParentHoverClass('leave') }, rest, { className: className, "data-child-row": true }), /*#__PURE__*/React.createElement(TableCell.default, { colSpan: colSpan }, /*#__PURE__*/React.createElement("div", { className: `${prefix}--child-row-inner-container` }, children))); }; TableExpandedRow.propTypes = { /** * Pass in the contents for your TableExpandedRow */ children: PropTypes.node, /** * Specify an optional className to be applied to the container node */ className: PropTypes.string, /** * The width of the expanded row's internal cell */ colSpan: PropTypes.number.isRequired }; exports.default = TableExpandedRow;