diff --git a/packages/dashboard-v2/src/components/Tabs/TabPanel.js b/packages/dashboard-v2/src/components/Tabs/TabPanel.js index 46307431..f9907074 100644 --- a/packages/dashboard-v2/src/components/Tabs/TabPanel.js +++ b/packages/dashboard-v2/src/components/Tabs/TabPanel.js @@ -1,19 +1,37 @@ import PropTypes from "prop-types"; +import { useEffect, useState } from "react"; /** * Besides documented props, it accepts all HMTL attributes a `
` element does. */ -export const TabPanel = ({ children, active, tabId, ...props }) => ( -
- {children} -
-); +export const TabPanel = ({ children, active, tabId, ...props }) => { + const [wasActivated, setWasActivated] = useState(false); + + useEffect(() => { + if (active) { + setWasActivated(true); + } + }, [active]); + + // If the TabPanel was never activated, let's not render its children at all. + // We'll only render them after the first activation and then won't unmount them + // unless the entire TabPanel is unmounted, too. + if (!active && !wasActivated) { + return null; + } + + return ( +
+ {children} +
+ ); +}; TabPanel.propTypes = { /**