Port aside to ES6

old
Javi Velasco 2015-09-09 22:44:24 +02:00
parent 3de7e8ec8a
commit b5e666a4d8
2 changed files with 55 additions and 40 deletions

View File

@ -1,40 +0,0 @@
localCSS = require './style'
module.exports = React.createClass
# -- States & Properties
propTypes:
active : React.PropTypes.bool
className : React.PropTypes.string
hideable : React.PropTypes.bool
type : React.PropTypes.string
getDefaultProps: ->
className : ''
type : 'left'
getInitialState: ->
active : @props.active
# -- Events
onClick: (event) ->
@setState active: false if event.target is @getDOMNode()
# -- Render
render: ->
className = "#{localCSS.root} #{@props.className}"
className += " #{@props.type}" if @props.type
className += ' hideable' if @props.hideable
className += ' active' if @state.active
<div data-react-toolbox='aside' className={className} onClick={@onClick}>
<aside className={localCSS.container}>
{ @props.children }
</aside>
</div>
# -- Extends
show: ->
@setState active: true
hide: ->
@setState active: false

View File

@ -0,0 +1,55 @@
/* global React */
import css from './style';
export default React.createClass({
displayName: 'Aside',
propTypes: {
active: React.PropTypes.bool,
className: React.PropTypes.string,
hideable: React.PropTypes.bool,
type: React.PropTypes.string
},
getDefaultProps () {
return {
className: '',
type: 'left'
};
},
getInitialState () {
return { active: this.props.active };
},
onClick (event) {
if (event.target === this.getDOMNode()) {
this.setState({active: false});
}
},
render () {
let className = `${css.root} ${this.props.className}`;
if (this.props.type) className += ` ${this.props.type}`;
if (this.props.hideable) className += ' hideable';
if (this.state.active) className += ' active';
return (
<div className={className} onClick={this.onClick}>
<aside className={css.container}>
{ this.props.children }
</aside>
</div>
);
},
show () {
this.setState({active: true});
},
hide () {
this.setState({active: false});
}
});