import React from 'react'
import PropTypes from 'prop-types'
import RButton from 'material-ui/Button'
import theme from './theme.css'

class Button extends React.Component {
  render () {
    let props = { ...this.props }
    let buttonStyle = props.style ? {...props.style} : {}
    buttonStyle.width = buttonStyle.width ? buttonStyle.width : 'auto'
    buttonStyle.textAlign = 'left'
    buttonStyle.textTransform = 'none'
    if (this.props.full) {
      buttonStyle.width = '100%'
      delete props.full
    }
    if (this.props.center) {
      buttonStyle.textAlign = 'center'
      delete props.center
    }
    if (this.props.floating) {
      delete buttonStyle.width
      buttonStyle.textAlign = 'center'
    }
    let className = ''
    if (props.className) {
      className = props.className
      delete props.className
    }
    if (this.props.icon) {
      let iconButtonClass = theme.iconButton
      if (this.props.big) {
        iconButtonClass = theme.iconButtonBig
      } else if (this.props.extraBig) {
        iconButtonClass = theme.iconButtonExtraBig
      }
      className += ' ' + iconButtonClass
      delete props.icon
    }
    if (this.props.big) {
      buttonStyle.lineHeight = '40px'
      buttonStyle.fontSize = '22px'
      delete props.big
    } else if (this.props.extraBig) {
      buttonStyle.lineHeight = '60px'
      buttonStyle.fontSize = '28px'
      delete props.extraBig
    }
    if (props.theme) {
      props.classes = props.theme
      delete props.theme
    }
    props.className = className
    if (this.props.uppercase) {
      buttonStyle.textTransform = 'uppercase'
      delete props.uppercase
    }
    return (
      <RButton {...props} style={buttonStyle}>
        {this.props.children}
      </RButton>
    )
  }
}

Button.propTypes = {
  children: PropTypes.any,
  icon: PropTypes.any,
  floating: PropTypes.any,
  full: PropTypes.any,
  center: PropTypes.any,
  big: PropTypes.any,
  extraBig: PropTypes.any,
  uppercase: PropTypes.any,
  style: PropTypes.object
}

export default Button
