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

69 lines
1.8 KiB
JavaScript
Raw Normal View History

2019-01-18 17:17:48 +00:00
import React, { Component } from 'react';
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';
class Tabs extends Component {
state = {
activeTab: this.props.children[0].props.label,
};
onClickTabControl = (tab) => {
this.setState({ activeTab: tab });
}
render() {
const {
props: {
2019-07-18 11:52:47 +00:00
controlClass,
2019-01-18 17:17:48 +00:00
children,
},
state: {
activeTab,
},
} = this;
2019-07-18 11:52:47 +00:00
const getControlClass = classnames({
tabs__controls: true,
[`tabs__controls--${controlClass}`]: controlClass,
});
2019-01-18 17:17:48 +00:00
return (
<div className="tabs">
2019-07-18 11:52:47 +00:00
<div className={getControlClass}>
2019-01-18 17:17:48 +00:00
{children.map((child) => {
const { label, title } = child.props;
2019-01-18 17:17:48 +00:00
return (
<Tab
key={label}
label={label}
title={title}
2019-01-22 14:17:33 +00:00
activeTab={activeTab}
2019-01-18 17:17:48 +00:00
onClick={this.onClickTabControl}
/>
);
})}
</div>
<div className="tabs__content">
{children.map((child) => {
if (child.props.label !== activeTab) {
return false;
}
return child.props.children;
})}
</div>
</div>
);
}
}
Tabs.propTypes = {
2019-07-18 11:52:47 +00:00
controlClass: PropTypes.string,
2019-01-18 17:17:48 +00:00
children: PropTypes.array.isRequired,
};
export default Tabs;