/**
 * Form component
 * @class ApForm
 */

'use strict'

import React, {Component, PropTypes as types} from 'react'
import classnames from 'classnames'
import {withSpin} from 'apeman-react-spinner'
import {clone} from 'asobj'

/** @lends ApForm */
class ApForm extends Component {
  render () {
    const s = this
    let { props } = s
    let { spinner } = props
    let formProps = clone(props, {
      without: [
        'centered',
        'spinning',
        'spinnerTheme',
        'spinner',
        'l',
        'idOf',
        'errorColor',
        'errorList',
        'errorStyle'
      ]
    })
    let className = classnames('ap-form', props.className, {
      'ap-form-centered': props.centered
    })
    return (
      <form { ...formProps }
            className={ className }>
        <input type='text'
               name='ap_form_dummy'
               disabled
               value={ undefined }
               placeholder='This is a dummy input to prevent submit on enter'
               className='ap-form-dummy-input'/>
        { spinner }
        { props.children }
      </form>
    )
  }
}

Object.assign(ApForm, {
  // --------------------
  // Specs
  // --------------------
  propTypes: {
    id: types.string.isRequired,
    centered: types.bool
  },

  defaultProps: {
    centered: false
  }

})

export { ApForm }
export default withSpin(ApForm)

