src/components/Section/Psychological/AppealItem.jsx

Summary

Maintainability
A
0 mins
Test Coverage
import React from 'react'
import { i18n } from '../../../config'
import { Location, ValidationElement, Field, Text, Svg } from '../../Form'

export class AppealItem extends ValidationElement {
  constructor(props) {
    super(props)
    this.update = this.update.bind(this)
    this.updateCourtName = this.updateCourtName.bind(this)
    this.updateCourtAddress = this.updateCourtAddress.bind(this)
    this.updateDisposition = this.updateDisposition.bind(this)
  }

  update(queue) {
    this.props.onUpdate({
      CourtName: this.props.CourtName,
      CourtAddress: this.props.CourtAddress,
      Disposition: this.props.Disposition,
      ...queue
    })
  }

  updateCourtName(values) {
    this.update({
      CourtName: values
    })
  }

  updateCourtAddress(values) {
    this.update({
      CourtAddress: values
    })
  }

  updateDisposition(values) {
    this.update({
      Disposition: values
    })
  }

  render() {
    const prefix = this.props.prefix
    return (
      <div className="appeal">
        <Field
          title={i18n.t(`psychological.${prefix}.heading.appealCourtName`)}
          scrollIntoView={this.props.scrollIntoView}>
          <Text
            {...this.props.CourtName}
            name="CourtName"
            className="appealcourtname"
            onUpdate={this.updateCourtName}
            onError={this.props.onError}
            required={this.props.required}
          />
        </Field>

        <Field
          title={i18n.t(`psychological.${prefix}.heading.appealCourtAddress`)}
          optional={true}
          adjustFor="address"
          scrollIntoView={this.props.scrollIntoView}>
          <Location
            {...this.props.CourtAddress}
            name="CourtAddress"
            className="appealcourtaddress"
            label={i18n.t(`psychological.${prefix}.label.courtAddress`)}
            layout={Location.ADDRESS}
            geocode={true}
            addressBooks={this.props.addressBooks}
            addressBook="Court"
            showPostOffice={true}
            onUpdate={this.updateCourtAddress}
            onError={this.props.onError}
            required={this.props.required}
            isPoBoxAllowed={false}
          />
        </Field>

        <Field
          title={i18n.t(`psychological.${prefix}.heading.disposition`)}
          help={`psychological.${prefix}.help.disposition`}
          scrollIntoView={this.props.scrollIntoView}>
          <Text
            {...this.props.Disposition}
            name="Disposition"
            className="disposition"
            onUpdate={this.updateDisposition}
            onError={this.props.onError}
            required={this.props.required}
          />
        </Field>
      </div>
    )
  }
}

AppealItem.defaultProps = {
  prefix: 'order',
  addressBooks: {},
  CourtName: {},
  CourtAddress: {},
  Disposition: {},
  dispatch: action => {},
  onUpdate: queue => {},
  onError: (value, arr) => {
    return arr
  }
}