import React, { useState, useEffect } from "react"; import Nav, { INavProps } from "../nav/nav"; import NavLink from "../nav/nav-link"; import NavItem from "../nav/nav-item"; import TabContent from "./tab-content"; import TabPane from "./tab-pane"; import { ITabProps } from "./tab"; type ITabsChild = React.ReactElement; interface ITabsProps { defaultActiveKey: string; activeKey?: string; className?: string; children: ITabsChild | ITabsChild[]; variant?: INavProps["variant"]; onSelect?: (event: React.SyntheticEvent, eventKey: string) => void; tabContentClassName?: string; ["data-testid"]?: string; } const Tabs: React.FC = ({ className, variant = "tabs", defaultActiveKey, activeKey, onSelect, children, tabContentClassName, ...props }) => { const [key, setKey] = useState(defaultActiveKey); const dataTestId = props["data-testid"] || "honey-ui-tabs"; const onClick = (event: React.SyntheticEvent, eventKey: string) => { event.preventDefault(); if (onSelect) { onSelect(event, eventKey); } else { setKey(eventKey); } }; useEffect(() => { if (activeKey) { setKey(activeKey); } }, [activeKey]); return ( <> {React.Children.map(children, (child: ITabsChild) => { const { eventKey, children, href, tabPaneClassName, title } = child.props; return ( {children} ); })} ); }; Tabs.displayName = "Tabs"; export default Tabs;