badguardhome/client/src/components/ui/Tabs.js

53 lines
1.6 KiB
JavaScript
Raw Normal View History

import React from 'react';
2019-01-18 17:17:48 +00:00
import PropTypes from 'prop-types';
2019-07-18 11:52:47 +00:00
import classnames from 'classnames';
2019-01-18 17:17:48 +00:00
import Tab from './Tab';
import './Tabs.css';
const Tabs = (props) => {
const {
tabs, controlClass, activeTabLabel, setActiveTabLabel, children: activeTab,
} = props;
const onClickTabControl = (tabLabel) => setActiveTabLabel(tabLabel);
const getControlClass = classnames({
tabs__controls: true,
[`tabs__controls--${controlClass}`]: controlClass,
});
return (
<div className="tabs">
<div className={getControlClass}>
{Object.values(tabs)
.map((props) => {
// eslint-disable-next-line react/prop-types
const { title, label = title } = props;
2019-01-18 17:17:48 +00:00
return (
<Tab
key={label}
label={label}
title={title}
activeTabLabel={activeTabLabel}
onClick={onClickTabControl}
2019-01-18 17:17:48 +00:00
/>
);
})}
</div>
<div className="tabs__content">
{activeTab}
</div>
</div>
);
};
2019-01-18 17:17:48 +00:00
Tabs.propTypes = {
2019-07-18 11:52:47 +00:00
controlClass: PropTypes.string,
tabs: PropTypes.object.isRequired,
activeTabLabel: PropTypes.string.isRequired,
setActiveTabLabel: PropTypes.func.isRequired,
children: PropTypes.element.isRequired,
2019-01-18 17:17:48 +00:00
};
export default Tabs;