in src/helpers/propTypes.js [4:52]
export function childrenPropType(props, propName, componentName) {
let error;
let tabsCount = 0;
let panelsCount = 0;
let tabListFound = false;
const listTabs = [];
const children = props[propName];
deepForEach(children, (child) => {
if (isTabList(child)) {
if (
child.props &&
child.props.children &&
typeof child.props.children === 'object'
) {
deepForEach(child.props.children, (listChild) =>
listTabs.push(listChild),
);
}
if (tabListFound) {
error = new Error(
"Found multiple 'TabList' components inside 'Tabs'. Only one is allowed.",
);
}
tabListFound = true;
}
if (isTab(child)) {
if (!tabListFound || listTabs.indexOf(child) === -1) {
error = new Error(
"Found a 'Tab' component outside of the 'TabList' component. 'Tab' components " +
"have to be inside the 'TabList' component.",
);
}
tabsCount++;
} else if (isTabPanel(child)) {
panelsCount++;
}
});
if (!error && tabsCount !== panelsCount) {
error = new Error(
`There should be an equal number of 'Tab' and 'TabPanel' in \`${componentName}\`. ` +
`Received ${tabsCount} 'Tab' and ${panelsCount} 'TabPanel'.`,
);
}
return error;
}