import * as React from 'react'; import { AddressModel } from '../../../../models/address'; import { Validation, ValidationState } from '../../../../models/Validation'; import { Colors } from '../../../../models/colors'; import CommonInputLeftDot from '../../../../components/common-inputs/common-input-left-dot/CommonInputLeftDot'; import { inputContainerStyle, bodyStyle } from './manuallyAddress.style'; export default class ManuallyAddress extends React.PureComponent<{ input?: JSX.Element; palette?: Colors; name: string; value?: AddressModel; onChange?: (name: string, value: AddressModel) => void; validationState?: { [name: string]: Validation }; notifyValidity?: (name: string, state: ValidationState, errorMessage?: string) => void; translator?: Function; checkIfTranslateExist?: Function; }> { onChange = (name: string, value: string) => { let _name = name.replace(this.props.name + '.', ''); this.props.onChange(this.props.name, Object.assign({}, this.props.value, { [_name]: value })); }; render() { let errorMessageAddressLine1, errorMessageAddressLine2, errorMessageAddressLine3, errorMessageTown, errorMessagePostcode, errorMessageCountry, validAddressLine1, validAddressLine2, validAddressLine3, validTown, validPostcode, validCountry; if (this.props.validationState) { errorMessageAddressLine1 = this.props.validationState.addressLine1.errorMessage; validAddressLine1 = this.props.validationState.addressLine1.state; errorMessageAddressLine2 = this.props.validationState.addressLine2.errorMessage; validAddressLine2 = this.props.validationState.addressLine2.state; errorMessageAddressLine3 = this.props.validationState.addressLine3.errorMessage; validAddressLine3 = this.props.validationState.addressLine3.state; errorMessageTown = this.props.validationState.town.errorMessage; validTown = this.props.validationState.town.state; errorMessagePostcode = this.props.validationState.postcode.errorMessage; validPostcode = this.props.validationState.postcode.state; errorMessageCountry = this.props.validationState.country.errorMessage; validCountry = this.props.validationState.country.state; } const { addressLine1, addressLine2, addressLine3, town, postcode, country } = this.props .value || { addressLine1: '', addressLine2: '', addressLine3: '', town: '', postcode: '', country: '' }; const addressLine1Input = React.cloneElement(this.props.input || , { automationName: `${this.props.name}.addressLine1`, label: this.props.translator(`manualAddressModal.addressLine1`), onChange: this.onChange, type: 'text', name: `${this.props.name}.addressLine1`, valid: validAddressLine1, errorMessage: errorMessageAddressLine1, notifyValidity: this.props.notifyValidity, palette: this.props.palette, value: addressLine1, required: true, translator: this.props.translator }); const addressLine2Input = React.cloneElement(this.props.input || , { automationName: `${this.props.name}.addressLine2`, label: this.props.translator(`manualAddressModal.addressLine2`), onChange: this.onChange, type: 'text', name: `${this.props.name}.addressLine2`, valid: validAddressLine2, errorMessage: errorMessageAddressLine2, notifyValidity: this.props.notifyValidity, palette: this.props.palette, value: addressLine2, required: false, translator: this.props.translator }); const addressLine3Input = React.cloneElement(this.props.input || , { automationName: `${this.props.name}.addressLine3`, label: this.props.translator(`manualAddressModal.addressLine3`), onChange: this.onChange, type: 'text', name: `${this.props.name}.addressLine3`, valid: validAddressLine3, errorMessage: errorMessageAddressLine3, notifyValidity: this.props.notifyValidity, palette: this.props.palette, value: addressLine3, required: false, translator: this.props.translator }); const townInput = React.cloneElement(this.props.input || , { automationName: `${this.props.name}.town`, label: this.props.translator(`manualAddressModal.town`), onChange: this.onChange, type: 'text', name: `${this.props.name}.town`, valid: validTown, errorMessage: errorMessageTown, notifyValidity: this.props.notifyValidity, palette: this.props.palette, value: town, required: true, translator: this.props.translator }); const postcodeInput = React.cloneElement(this.props.input || , { automationName: `${this.props.name}.postcode`, label: this.props.translator(`manualAddressModal.postcode`), onChange: this.onChange, type: 'text', name: `${this.props.name}.postcode`, valid: validPostcode, errorMessage: errorMessagePostcode, notifyValidity: this.props.notifyValidity, palette: this.props.palette, value: postcode, required: false, readOnly: true, translator: this.props.translator }); const countryInput = React.cloneElement(this.props.input || , { automationName: `${this.props.name}.country`, label: this.props.translator(`manualAddressModal.country`), onChange: this.onChange, type: 'text', name: `${this.props.name}.country`, valid: validCountry, errorMessage: errorMessageCountry, notifyValidity: this.props.notifyValidity, palette: this.props.palette, value: country, required: false, translator: this.props.translator }); return (
{addressLine1Input}
{addressLine2Input}
{addressLine3Input}
{townInput}
{postcodeInput}
{countryInput}
); } }