monday-ui-react-core
Version:
Official monday.com UI resources for application development in React.js
41 lines (35 loc) • 1.17 kB
JSX
import React, { useRef, forwardRef } from "react";
import PropTypes from "prop-types";
import cx from "classnames";
import useMergeRefs from "../../../hooks/useMergeRefs";
import "./TabPanels.scss";
const TabPanels = forwardRef(({ className, id, activeTabId, animationDirection, children }, ref) => {
const componentRef = useRef(null);
const mergedRef = useMergeRefs({ refs: [ref, componentRef] });
return (
<div ref={mergedRef} className={cx("tab-panels--wrapper", className)} id={id}>
{React.Children.map(children, (child, index) => {
if (activeTabId === index) {
return React.cloneElement(child, {
className: cx("tab-panel", "active", `animation-direction-${animationDirection}`)
});
}
return React.cloneElement(child, { className: "tab-panel" });
})}
</div>
);
});
TabPanels.propTypes = {
className: PropTypes.string,
id: PropTypes.string,
activeTabId: PropTypes.number,
animationDirection: PropTypes.string
};
TabPanels.defaultProps = {
className: "",
id: "",
activeTabId: 0,
animationDirection: "rtl"
};
TabPanels.isTabPanels = true;
export default TabPanels;