Sha256: caf912941aa00bc92feeb7a7f5eae24841731111874e7249fbc296278ab6dd66

Contents?: true

Size: 1.31 KB

Versions: 15

Compression:

Stored size: 1.31 KB

Contents

// A form that works with stores to do AJAXy submission & backbone
// validation
Rev.registerComponent('StoreForm', class extends React.Component {
  constructor(props) {
    super(props)
    this.onSubmit = this.onSubmit.bind(this)
  }

  static get propTypes() {
    return {
      store: React.PropTypes.object.isRequired,
      path: React.PropTypes.string.isRequired
    }
  }

  static get mixins() {
    return [Rev.Mixins.StoreToModel]
  }

  get model() {
    return JSONPath({json: this.props.store, path: this.props.path})[0]
  }

  render() {
    return  <Rev.Components.Form method="POST"
              onSubmit={ this.onSubmit }
              action={ this.formAction() }
              className={ this.props.className }
              encType="multipart/form-data"
            >
              { this.props.children  }
            </Rev.Components.Form>
  }

  formAction() {
    if(this.props.action) {
      return this.props.action
    }
    return this.model.url()
  }

  formMethod() {
    if(this.props.method) {
      return this.props.method
    }

    if(this.model) {
      if(this.model.isNew()) {
        return 'POST'
      } else {
        return 'PATCH'
      }
    }

    return 'POST'
  }

  onSubmit(e) {
    this.props.store.resetErrors()
    e.preventDefault()
    this.props.store.save(this.props.path)
  }
})

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
revelry_data-0.1.6 app/assets/javascripts/revelry_data/components/forms/StoreForm.es6
revelry_data-0.0.15 app/assets/javascripts/revelry_data/components/forms/StoreForm.es6
revelry_data-0.1.5 app/assets/javascripts/revelry_data/components/forms/StoreForm.es6
revelry_data-0.1.4 app/assets/javascripts/revelry_data/components/forms/StoreForm.es6
revelry_data-0.0.14 app/assets/javascripts/revelry_data/components/forms/StoreForm.es6
revelry_data-0.0.8.1 app/assets/javascripts/revelry_data/components/forms/StoreForm.es6
revelry_data-0.0.13 app/assets/javascripts/revelry_data/components/forms/StoreForm.es6
revelry_data-0.1.3 app/assets/javascripts/revelry_data/components/forms/StoreForm.es6
revelry_data-0.0.12 app/assets/javascripts/revelry_data/components/forms/StoreForm.es6
revelry_data-0.1.2 app/assets/javascripts/revelry_data/components/forms/StoreForm.es6
revelry_data-0.1.1 app/assets/javascripts/revelry_data/components/forms/StoreForm.es6
revelry_data-0.0.10 app/assets/javascripts/revelry_data/components/forms/StoreForm.es6
revelry_data-0.1.0 app/assets/javascripts/revelry_data/components/forms/StoreForm.es6
revelry_data-0.0.8 app/assets/javascripts/revelry_data/components/forms/StoreForm.es6
revelry_data-0.0.7 app/assets/javascripts/revelry_data/components/forms/StoreForm.es6