From d99c275300723734acbd9efcf95161a2ba06a90a Mon Sep 17 00:00:00 2001 From: Javi Jimenez Villar Date: Wed, 15 Jul 2015 21:18:51 +0700 Subject: [PATCH] Classes for different states --- components/input/index.cjsx | 30 ++++++++++++++++----- components/input/style.styl | 54 ++++++++++++++++++++++--------------- 2 files changed, 56 insertions(+), 28 deletions(-) diff --git a/components/input/index.cjsx b/components/input/index.cjsx index 47e3e7079..cf7bc5e17 100644 --- a/components/input/index.cjsx +++ b/components/input/index.cjsx @@ -30,8 +30,14 @@ module.exports = React.createClass error : @props.error touch : @props.type in ['checkbox', 'radio'] value : @props.value + focus : false + valid : false # -- Events + onBlur: (event) -> + @setState focus: false + @props.onBlur? event, @ + onChange: (event) -> if @state.touch @setState checked: event.target.checked, error: undefined @@ -39,30 +45,40 @@ module.exports = React.createClass @setState value: event.target.value, error: undefined @props.onChange? event, @ + onFocus: (event) -> + @setState focus: true + @props.onFocus? event, @ + + onKeyPress: (event) -> + @setState focus: true + @props.onKeyPress? event, @ + # -- Render render: -> className = @props.className + className += ' checked' if @state.checked className += ' disabled' if @props.disabled className += ' error' if @state.error + className += ' focus' if @state.focus className += ' touch' if @state.touch className += ' radio' if @props.type is 'radio' - className += ' checked' if @state.checked + className += ' valid' if @state.value? and @state.value.length > 0
{ if @props.multiline