scratch-www/src/components/accordion/accordion.jsx

54 lines
1.3 KiB
React
Raw Normal View History

const bindAll = require('lodash.bindall');
const classNames = require('classnames');
const PropTypes = require('prop-types');
const React = require('react');
2016-04-21 16:22:39 -04:00
require('./accordion.scss');
class Accordion extends React.Component {
constructor (props) {
super(props);
bindAll(this, [
'handleClick'
]);
this.state = {
2016-04-21 16:22:39 -04:00
isOpen: false
};
}
handleClick (e) {
e.preventDefault();
2016-04-21 16:22:39 -04:00
this.setState({isOpen: !this.state.isOpen});
}
render () {
const classes = classNames({
content: true,
open: this.state.isOpen
2016-04-21 16:22:39 -04:00
});
return (
<div className="accordion">
<this.props.titleAs
className="title"
onClick={this.handleClick}
>
2016-04-21 16:22:39 -04:00
{this.props.title}
</this.props.titleAs>
<this.props.contentAs className={classes}>
{this.props.content}
</this.props.contentAs>
</div>
);
}
}
Accordion.propTypes = {
content: PropTypes.node,
title: PropTypes.string
};
Accordion.defaultProps = {
contentAs: 'div',
titleAs: 'div'
};
2016-04-21 16:22:39 -04:00
module.exports = Accordion;