UNPKG

@coreui/react-pro

Version:

UI Components Library for React.js

44 lines (40 loc) 2.24 kB
'use strict'; var tslib_es6 = require('../../node_modules/tslib/tslib.es6.js'); var React = require('react'); var PropTypes = require('prop-types'); var index = require('../../_virtual/index.js'); var CTabsContext = require('./CTabsContext.js'); require('@popperjs/core'); var getTransitionDurationFromElement = require('../../utils/getTransitionDurationFromElement.js'); var useForkedRef = require('../../hooks/useForkedRef.js'); var Transition = require('../../node_modules/react-transition-group/esm/Transition.js'); const CTabPanel = React.forwardRef((_a, ref) => { var { children, className, itemKey, onHide, onShow, transition = true, visible } = _a, rest = tslib_es6.__rest(_a, ["children", "className", "itemKey", "onHide", "onShow", "transition", "visible"]); const { _activeItemKey, id } = React.useContext(CTabsContext.CTabsContext); const tabPaneRef = React.useRef(null); const forkedRef = useForkedRef.useForkedRef(ref, tabPaneRef); const [_visible, setVisible] = React.useState(visible || _activeItemKey === itemKey); React.useEffect(() => { visible !== undefined && setVisible(visible); }, [visible]); React.useEffect(() => { setVisible(_activeItemKey === itemKey); }, [_activeItemKey]); return (React.createElement(Transition.default, { in: _visible, nodeRef: tabPaneRef, onEnter: onShow, onExit: onHide, timeout: tabPaneRef.current ? getTransitionDurationFromElement.default(tabPaneRef.current) : 0 }, (state) => (React.createElement("div", Object.assign({ className: index.default('tab-pane', { active: _visible, fade: transition, show: state === 'entered', }, className), id: `${id}${itemKey}-tab-pane`, role: "tabpanel", "aria-labelledby": `${id}${itemKey}-tab`, tabIndex: 0, ref: forkedRef }, rest), children)))); }); CTabPanel.propTypes = { children: PropTypes.node, className: PropTypes.string, itemKey: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired, onHide: PropTypes.func, onShow: PropTypes.func, transition: PropTypes.bool, visible: PropTypes.bool, }; CTabPanel.displayName = 'CTabPanel'; exports.CTabPanel = CTabPanel; //# sourceMappingURL=CTabPanel.js.map