ducky/web

Paddy 2015-05-31 Parent:bd64a7d043d0 Child:a641906b8267

5:efdc78cbdac5 Go to Latest

ducky/web/src/components/validation-error.jsx

Update our ValidationError component to accept arrays. Allow our ValidationError component to match an array of fields, headers, or params. This is for components that may address multiple inputs (e.g., month/year inputs) but also lays the ground work for inverse-matching. Ideally, inverse-matching and matching ValidationErrors should mirror each other, logically, so the syntax is identical. But we also should have the common use case easily supported, so if you use field instead of fields (or header/headers, param/params) we'll automatically turn that into an array.

History
paddy@2 1 import React from 'react'
paddy@2 2
paddy@2 3 export default React.createClass({
paddy@2 4 displayName: 'ValidationError',
paddy@2 5
paddy@2 6 render () {
paddy@5 7 let fields = this.props.fields
paddy@5 8 if (this.props.field && !this.props.fields) {
paddy@5 9 fields = [this.props.field]
paddy@5 10 }
paddy@5 11 let params = this.props.params
paddy@5 12 if (this.props.param && !this.props.params) {
paddy@5 13 params = [this.props.param]
paddy@5 14 }
paddy@5 15 let headers = this.props.headers
paddy@5 16 if (this.props.header && !this.props.headers) {
paddy@5 17 headers = [this.props.header]
paddy@5 18 }
paddy@2 19 const outputs = this.props.outputs
paddy@2 20 const errors = this.props.errors
paddy@2 21 return (
paddy@2 22 <div className={errors.length ? '' : 'hidden' }>
paddy@2 23 {errors.map(error => {
paddy@2 24 let errorString = ''
paddy@4 25 if (!error.field && !error.param && !error.header) {
paddy@4 26 return ''
paddy@4 27 }
paddy@5 28 if (fields && error.field && fields.indexOf(error.field) < 0) {
paddy@2 29 return ''
paddy@2 30 }
paddy@5 31 if (params && error.param && params.indexOf(error.param) < 0) {
paddy@2 32 return ''
paddy@2 33 }
paddy@5 34 if (headers && error.header && headers.indexOf(error.header) < 0) {
paddy@2 35 return ''
paddy@2 36 }
paddy@2 37 if (outputs[error.error] == undefined) {
paddy@2 38 errorString = 'An unknown error occurred. Please contact support. Sorry.'
paddy@2 39 } else {
paddy@2 40 errorString = outputs[error.error]
paddy@2 41 }
paddy@2 42 const id = [error.field, error.param, error.header, error.error].join("|")
paddy@2 43 return <div key={id} className="flash-error validation"><span>{errorString}</span></div>
paddy@2 44 })}
paddy@2 45 </div>
paddy@2 46 )
paddy@2 47 }
paddy@2 48 })