apeman-react-button
Version:
apeman react package for button component.
74 lines (62 loc) • 1.45 kB
JSX
/**
* Big button component.
* @class ApBigButton
*/
import React, {PropTypes as types} from 'react'
import classnames from 'classnames'
import ApButton from './ap_button'
import {shallowEqual} from 'asobj'
/** @lends ApBigButton */
const ApBigButton = React.createClass({
// --------------------
// Specs
// --------------------
propTypes: {
disabled: types.bool,
onTap: types.func,
text: types.string,
size: types.number
},
mixins: [],
getInitialState () {
return {}
},
getDefaultProps () {
return {
disabled: false,
onTap: null,
text: null,
size: 94
}
},
render () {
const s = this
let { props } = s
let { size } = props
let style = Object.assign({
width: size, height: size
}, props.style)
return (
<ApButton { ...props }
className={ classnames('ap-big-button', props.className) }
wide={ false }
style={ style }
>
<span className='ap-big-button-text'>
{ props.text }
</span>
{ props.children }
</ApButton>
)
},
// --------------------
// Lifecycle
// --------------------
shouldComponentUpdate (nextProps, nextState) {
const s = this
let { props, state } = s
return !shallowEqual(props, nextProps) || !shallowEqual(state, nextState)
},
})
export default ApBigButton