UNPKG

@mskcc/carbon-react

Version:

Carbon react components for the MSKCC DSM

74 lines (65 loc) 2.3 kB
/** * MSKCC 2021, 2024 */ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js'); var PropTypes = require('prop-types'); var React = require('react'); var cx = require('classnames'); var navigation = require('../../internal/keyboard/navigation.js'); var useIsomorphicEffect = require('../../internal/useIsomorphicEffect.js'); var usePrefix = require('../../internal/usePrefix.js'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes); var React__default = /*#__PURE__*/_interopDefaultLegacy(React); var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx); /** * Determine if the node within the provided ref contains content that is tabbable. */ function useTabbableContent(ref) { const [hasTabbableContent, setHasTabbableContent] = React.useState(false); // eslint-disable-next-line react-hooks/exhaustive-deps useIsomorphicEffect["default"](() => { if (ref.current) { setHasTabbableContent(!!ref.current.querySelector(navigation.selectorTabbable)); } }); return hasTabbableContent; } function TabContent(props) { const { className, selected, children, ...other } = props; const prefix = usePrefix.usePrefix(); const tabContentClasses = cx__default["default"](`${prefix}--tab-content`, className); const ref = React.useRef(null); const hasTabbableContent = useTabbableContent(ref); return /*#__PURE__*/React__default["default"].createElement("div", _rollupPluginBabelHelpers["extends"]({ role: "tabpanel" }, other, { className: tabContentClasses, selected: selected, hidden: !selected, ref: ref, tabIndex: hasTabbableContent ? undefined : 0 }), children); } TabContent.propTypes = { /** * Pass in content to render inside the TabContent */ children: PropTypes__default["default"].node, /** * Provide a className for the tab content container */ className: PropTypes__default["default"].string, /** * Specify whether the TabContent is selected */ selected: PropTypes__default["default"].bool }; exports["default"] = TabContent;