department-of-veterans-affairs/vets-website

View on GitHub
src/applications/disability-benefits/686c-674/config/chapters/veteran-information/veteran-address/veteran-address.js

Summary

Maintainability
A
0 mins
Test Coverage
import cloneDeep from 'lodash/cloneDeep';
import merge from 'lodash/merge';
import emailUI from 'platform/forms-system/src/js/definitions/email';
import { veteranInformation } from '../../../utilities';
import {
  buildAddressSchema,
  addressUISchema,
  updateFormDataAddress,
} from '../../../address-schema';

const veteranContactInformationSchema = cloneDeep(
  veteranInformation.properties.veteranAddress,
);

veteranContactInformationSchema.properties.veteranAddress = buildAddressSchema(
  true,
);

// add international phone field
merge(veteranContactInformationSchema.properties, {
  internationalPhoneNumber: {
    type: 'string',
    pattern: '^\\+?[0-9](?:-?[0-9]){6,14}$',
  },
  electronicCorrespondence: {
    type: 'boolean',
  },
});

export const schema = {
  type: 'object',
  properties: {
    veteranContactInformation: veteranContactInformationSchema,
  },
};

export const uiSchema = {
  veteranContactInformation: {
    'ui:order': [
      'veteranAddress',
      'phoneNumber',
      'internationalPhoneNumber',
      'emailAddress',
      'electronicCorrespondence',
    ],
    veteranAddress: addressUISchema(
      true,
      'veteranContactInformation.veteranAddress',
      () => true,
    ),
    phoneNumber: {
      'ui:required': () => true,
      'ui:title': 'Phone Number',
      'ui:options': {
        widgetClassNames: 'usa-input-medium',
        updateSchema: () => {
          return {
            type: 'string',
            pattern: '[0-9]{3}-?[0-9]{3}-?[0-9]{4}$',
          };
        },
      },
      'ui:errorMessages': {
        pattern: 'Enter a 10-digit phone number without dashes or spaces',
        minLength: 'Enter a 10-digit phone number without dashes or spaces',
        required: 'Enter a phone number',
      },
    },
    internationalPhoneNumber: {
      'ui:title': 'International phone number',
      'ui:errorMessages': {
        required:
          'Please enter an international phone number (with or without dashes)',
        pattern:
          'Please enter a valid international phone number (with or without dashes)',
      },
    },
    emailAddress: emailUI(),
    electronicCorrespondence: {
      'ui:title':
        'I agree to receive electronic correspondence from VA in regards to my claim.',
    },
  },
};

export const updateFormData = (oldFormData, formData) =>
  updateFormDataAddress(oldFormData, formData, [
    'veteranContactInformation',
    'veteranAddress',
  ]);