Sha256: d7ca3dae385fcc623034ab0ad859a1b74ddd1d76b961e59e9479dfb54d5d2e21

Contents?: true

Size: 1.1 KB

Versions: 5

Compression:

Stored size: 1.1 KB

Contents

Rev.registerComponent 'Input',

  getDefaultProps: ->
    dom: "input"

  getTypeClassMod: ->
    if @props.dom == 'input'
      @props.type or 'text'
    else
      @props.dom

  render: ->
    labelClasses =
      'RevInput': true
      'RevInput--label': true
      'error': @props.error
    labelClasses["RevInput-#{@getTypeClassMod()}"] = true # RevInput-checkbox etc.
    labelClassName = @cx labelClasses

    <label className={labelClassName}>
      {@renderLabel() unless @shouldPutLabelAfterInput()}
      {@renderInput()}
      {@renderLabel() if @shouldPutLabelAfterInput()}
      {@renderError()}
    </label>

  renderInput: ->
    inputProps = _(@getPropsWithout 'dom', 'error', 'className').extend
      className: @cx
        'RevInput--input': true
        'error': @props.error

    React.createElement @props.dom, inputProps, @props.children

  shouldPutLabelAfterInput: ->
    @props.type == 'checkbox' or @props.type == 'radio'

  renderLabel: ->
    <span className="RevInput--innerLabel">{@props.label}</span>

  renderError: ->
    <small className="RevError error">{@props.error}</small> if @props.error

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
revelry_core-0.1.11.2 app/assets/javascripts/revelry/ui/forms/Input.js.cjsx
revelry_core-0.1.11.1 app/assets/javascripts/revelry/ui/forms/Input.js.cjsx
revelry_core-0.1.11.0 app/assets/javascripts/revelry/ui/forms/Input.js.cjsx
revelry_core-0.1.10.7 app/assets/javascripts/revelry/ui/forms/Input.js.cjsx
revelry_core-0.1.10.6 app/assets/javascripts/revelry/ui/forms/Input.js.cjsx