Sha256: 445cc889653c5be6e56d9e6a1d1394591125a557ad9851c610997d52e4f2cc6d

Contents?: true

Size: 1.11 KB

Versions: 2

Compression:

Stored size: 1.11 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: @classAdd
        '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

2 entries across 2 versions & 1 rubygems

Version Path
revelry_core-0.1.11.6 app/assets/javascripts/revelry/ui/forms/Input.js.cjsx
revelry_core-0.1.11.5 app/assets/javascripts/revelry/ui/forms/Input.js.cjsx