{"version":3,"sources":["webpack:///./app/javascript/components/Forms/FormField.jsx","webpack:///./app/javascript/components/Forms/utils.js","webpack:///./app/javascript/components/FleetSolutions/FleetSolutionsForm.jsx","webpack:///./app/javascript/components/Forms/TimeSelector.jsx","webpack:///./app/javascript/components/Forms/OptOut.jsx","webpack:///./app/javascript/components/Forms/InputField.jsx","webpack:///./app/javascript/components/Forms/AddressLookup.jsx","webpack:///./app/javascript/components/Forms/InputSelect.jsx","webpack:///./app/javascript/components/Forms/DateSelector.jsx"],"names":["EnquireNowField","React","forwardRef","ref","type","id","labelText","onChange","value","hasError","errorMessage","rows","variant","placeholder","options","className","style","useState","isValid","setIsValid","handleBlur","inputClasses","classNames","selectClasses","Tag","htmlFor","name","undefined","onBlur","map","option","key","text","defaultProps","emailValidationRegex","FleetSolutionsForm","postURL","channelID","first_name","last_name","company_name","email","telephone","fleetSize","message","authenticity_token","disabled","state","setState","useForm","mode","reValidateMode","register","handleSubmit","errors","formRef","useRef","onSubmit","document","querySelector","content","current","submit","noValidate","action","method","event","target","required","pattern","contact_email","validate","isValidNumber","contact_telephone","contact_fleetSize","contact_message","lineHeight","on_dark","TimeSelector","yearsDispatch","monthsDispatch","years","months","selectedYears","selectedMonths","dispatch","useDispatch","handleDispatch","payload","dispatchTime","useEffect","updatedYears","updatedMonths","i","push","Option","populateSelectOptions","OptOut","componentClasses","Date","now","href","rel","InputField","labelClassName","inputClassName","min","max","hiddenLabel","validMessage","AddressLookup","searchLabel","actionName","licenseKey","addressList","classes","searchByPostcode","axios","get","then","response","addressID","data","Items","Error","Id","onClick","preventDefault","border","padding","height","length","addressArray","split","slice","join","address","Text","Description","InputSelect","children","propTypes","PropTypes","node","isRequired","string","DateSelector","groupText","dispatchAction","days","selectedDay","selectedMonth","selectedYear","dispatchDate","targetType","updatedDays","currentYear","getFullYear"],"mappings":"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","file":"js/application~96cde3f6-7fe5b1b91ad5bfed9d3b.chunk.js","sourcesContent":["import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nconst EnquireNowField = React.forwardRef(\n  (\n    {\n      type,\n      id,\n      labelText,\n      onChange,\n      value,\n      hasError,\n      errorMessage,\n      rows,\n      variant,\n      placeholder,\n      options,\n      className,\n      style,\n    },\n    ref,\n  ) => {\n    const [isValid, setIsValid] = useState(false);\n\n    const handleBlur = () => {\n      if (!hasError) {\n        setIsValid(true);\n      }\n    };\n\n    const inputClasses = classNames({\n      'b-form-control': true,\n      'is-invalid': hasError,\n      'is-valid': !hasError && isValid,\n    });\n\n    const selectClasses = classNames({\n      'b-form-select': true,\n      'is-invalid': hasError,\n      'is-valid': !hasError && isValid,\n    });\n\n    const Tag = variant || 'input';\n\n    return (\n      <div className={`b-form-group col-12 col-sm-6 ${className}`}>\n        <label className=\"b-form-label sr-only\" htmlFor={id}>\n          {labelText}\n        </label>\n\n        {variant !== 'select' ? (\n          <Tag\n            className={inputClasses}\n            type={type}\n            name={id}\n            id={id}\n            value={value}\n            onChange={onChange}\n            ref={ref}\n            aria-invalid={hasError ? true : undefined}\n            onBlur={handleBlur}\n            rows={rows}\n            placeholder={placeholder}\n            style={style}\n          />\n        ) : (\n          <select\n            className={selectClasses}\n            id={id}\n            name={id}\n            value={value}\n            onChange={onChange}\n            ref={ref}\n            aria-invalid={hasError ? true : undefined}\n            onBlur={handleBlur}\n          >\n            {!!options &&\n              options.map((option) => (\n                <option value={option.value} key={option.value}>\n                  {option.text}\n                </option>\n              ))}\n          </select>\n        )}\n\n        <div className=\"invalid-feedback\">{errorMessage}</div>\n      </div>\n    );\n  },\n);\n\nEnquireNowField.propTypes = {\n  type: PropTypes.string,\n  id: PropTypes.string.isRequired,\n  labelText: PropTypes.string.isRequired,\n  onChange: PropTypes.func.isRequired,\n  value: PropTypes.string.isRequired,\n  hasError: PropTypes.bool,\n  errorMessage: PropTypes.string,\n  rows: PropTypes.string,\n  variant: PropTypes.oneOf(['input', 'textarea', 'select']),\n  placeholder: PropTypes.string,\n  className: PropTypes.string,\n  // eslint-disable-next-line react/forbid-prop-types\n  style: PropTypes.object,\n  options: PropTypes.arrayOf(\n    PropTypes.shape({\n      text: PropTypes.string,\n      value: PropTypes.string,\n    }),\n  ),\n};\n\nEnquireNowField.defaultProps = {\n  type: 'text',\n  hasError: false,\n  rows: '',\n  errorMessage: 'Please check and enter it again.',\n  variant: 'input',\n  placeholder: '',\n  options: [],\n  className: '',\n  style: null,\n};\n\nexport default EnquireNowField;\n","export const emailValidationRegex =\n  /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@(([[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n","import React, { useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { useForm } from 'react-hook-form';\nimport { isValidNumber } from 'libphonenumber-js';\n\n// Component Imports\nimport ContactField from '../ContactUs/ContactField';\nimport OptOut from '../Forms/OptOut';\n\nconst FleetSolutionsForm = ({ postURL, channelID }) => {\n  const [state, setState] = useState({\n    first_name: '',\n    last_name: '',\n    company_name: '',\n    email: '',\n    telephone: '',\n    fleetSize: '',\n    message: '',\n    authenticity_token: '',\n    disabled: false,\n  });\n\n  const { register, handleSubmit, errors } = useForm({\n    mode: 'onBlur',\n    reValidateMode: 'onBlur',\n  });\n\n  const formRef = useRef(null);\n\n  const handleFormSubmission = () => {\n    if (state.disabled) {\n      return;\n    }\n\n    setState({\n      ...state,\n      disabled: true,\n      authenticity_token: document.querySelector('[name=csrf-token]').content,\n    });\n    formRef.current.submit();\n  };\n\n  return (\n    <form\n      className=\"c-form-contact-footer bootstrap-form\"\n      onSubmit={handleSubmit(handleFormSubmission)}\n      noValidate\n      ref={formRef}\n      action={postURL}\n      method=\"post\"\n    >\n      <input type=\"hidden\" name=\"authenticity_token\" value={state.authenticity_token} />\n      <input type=\"hidden\" name=\"channel_id\" value={channelID} />\n      <div className=\"row\">\n        <div className=\"col-12 col-xl-6\">\n          <ContactField\n            labelText=\"First name *\"\n            id=\"first_name\"\n            type=\"text\"\n            onChange={(event) => setState({ ...state, first_name: event.target.value })}\n            ref={register({ required: true })}\n            hasError={!!errors.first_name}\n            value={state.first_name}\n          />\n        </div>\n        <div className=\"col-12 col-xl-6\">\n          <ContactField\n            labelText=\"Last name *\"\n            id=\"last_name\"\n            type=\"text\"\n            onChange={(event) => setState({ ...state, last_name: event.target.value })}\n            ref={register({ required: true })}\n            hasError={!!errors.last_name}\n            value={state.last_name}\n          />\n        </div>\n      </div>\n      <div className=\"row\">\n        <div className=\"col-12 col-xl-6\">\n          <ContactField\n            labelText=\"Business name *\"\n            id=\"company_name\"\n            type=\"text\"\n            onChange={(event) => setState({ ...state, company_name: event.target.value })}\n            ref={register({ required: true })}\n            hasError={!!errors.company_name}\n            value={state.company_name}\n          />\n\n          <ContactField\n            labelText=\"Email *\"\n            id=\"contact_email\"\n            type=\"email\"\n            onChange={(event) => setState({ ...state, email: event.target.value })}\n            ref={register({\n              required: true,\n              pattern:\n                /^(([^<>()[\\]\\\\.,;:\\s@']+(\\.[^<>()[\\]\\\\.,;:\\s@']+)*)|('.+'))@(([[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/,\n            })}\n            hasError={!!errors.contact_email}\n            value={state.email}\n          />\n\n          <ContactField\n            labelText=\"Telephone *\"\n            id=\"contact_telephone\"\n            type=\"tel\"\n            onChange={(event) => setState({ ...state, telephone: event.target.value })}\n            ref={register({\n              required: true,\n              validate: (value) => isValidNumber(value, 'GB'),\n            })}\n            hasError={!!errors.contact_telephone}\n            value={state.telephone}\n          />\n        </div>\n        <div className=\"col-12 col-xl-6\">\n          <ContactField\n            labelText=\"Fleet size *\"\n            id=\"contact_fleet_size\"\n            onChange={(event) => setState({ ...state, fleetSize: event.target.value })}\n            ref={register({ required: true })}\n            hasError={!!errors.contact_fleetSize}\n            value={state.fleetSize}\n            variant=\"select\"\n            options={[\n              { value: '', text: 'Select fleet size' },\n              { value: '1to9', text: '1-9' },\n              { value: '10to49', text: '10-49' },\n              { value: '50', text: '50+' },\n            ]}\n          />\n\n          <ContactField\n            labelText=\"Comments\"\n            rows={5}\n            id=\"contact_message\"\n            onChange={(event) => setState({ ...state, message: event.target.value })}\n            ref={register({ required: false })}\n            hasError={!!errors.contact_message}\n            value={state.message}\n            variant=\"textarea\"\n            style={{ lineHeight: 1.3 }}\n          />\n        </div>\n      </div>\n      <div className=\"c-form-contact-footer__form-group\">\n        <button className=\"c-form-contact-footer__btn\" type=\"submit\" disabled={state.disabled}>\n          {state.disabled ? 'Sending...' : 'Send message'}\n        </button>\n      </div>\n      <OptOut on_dark={false} ref={register({ required: false })} />\n    </form>\n  );\n};\n\nFleetSolutionsForm.propTypes = {\n  postURL: PropTypes.string.isRequired,\n  channelID: PropTypes.string.isRequired,\n};\n\nexport default FleetSolutionsForm;\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useDispatch } from 'react-redux';\n\n// Component Imports\nimport InputSelect from './InputSelect';\n\nconst TimeSelector = React.forwardRef(\n  ({ id, required, disabled, labelText, yearsDispatch, monthsDispatch, hasError, value, onChange }, ref) => {\n    const [state, setState] = useState({\n      years: [],\n      months: [],\n      selectedYears: '0',\n      selectedMonths: '0',\n    });\n\n    // React Redux hooks\n    const dispatch = useDispatch();\n\n    const populateSelectOptions = () => {\n      const updatedYears = [];\n      const updatedMonths = [];\n\n      for (let i = 0; i < 26; ++i) {\n        updatedYears.push(\n          <InputSelect.Option value={`${i}`} key={`year-${id}-${i}`}>\n            {i} Year\n            {i !== 1 ? 's' : ''}\n          </InputSelect.Option>,\n        );\n      }\n\n      for (let i = 0; i < 12; ++i) {\n        updatedMonths.push(\n          <InputSelect.Option value={`${i}`} key={`month-${id}-${i}`}>\n            {i} Month\n            {i !== 1 ? 's' : ''}\n          </InputSelect.Option>,\n        );\n      }\n\n      setState({ ...state, years: updatedYears, months: updatedMonths });\n    };\n\n    const handleDispatch = (action, payload) => {\n      dispatch({\n        type: action,\n        payload,\n      });\n    };\n\n    const dispatchTime = (event, type) => {\n      if (type === 'years') {\n        setState({ ...state, selectedYears: event.target.value });\n        handleDispatch(yearsDispatch, event.target.value);\n      } else if (type === 'months') {\n        setState({ ...state, selectedMonths: event.target.value });\n        handleDispatch(monthsDispatch, event.target.value);\n      }\n    };\n\n    useEffect(() => {\n      populateSelectOptions();\n    }, []);\n\n    return (\n      <div className=\"b-form-group row row-nomargin d-flex align-items-center\">\n        <span className=\"col-xl-12 col-left-label-padding col-no-right-padding md-font-size-normal sm-font-size-normal\">\n          {labelText}\n          {required ? ' *' : ''}\n        </span>\n\n        <div className=\"col-xl-6 col-no-right-padding\">\n          <InputSelect\n            labelText=\"Years\"\n            id={`years-at-${id}`}\n            disabled={disabled}\n            onChange={(event) => {\n              dispatchTime(event, 'years');\n              onChange && onChange(event);\n            }}\n            ref={ref}\n            hasError={hasError ? !!hasError[`years-at-${id}`] : undefined}\n            value={value ? value[0] : undefined}\n          >\n            <InputSelect.Option value=\"\">Years</InputSelect.Option>\n            {state.years}\n          </InputSelect>\n        </div>\n\n        <div className=\"col-xl-6 col-no-right-padding\">\n          <InputSelect\n            labelText=\"Months\"\n            id={`months-at-${id}`}\n            disabled={disabled}\n            onChange={(event) => dispatchTime(event, 'months')}\n            ref={ref}\n            hasError={hasError ? !!hasError[`months-at-${id}`] : undefined}\n            value={value ? value[1] : undefined}\n          >\n            <InputSelect.Option value=\"\">Months</InputSelect.Option>\n            {state.months}\n          </InputSelect>\n        </div>\n      </div>\n    );\n  },\n);\n\nTimeSelector.propTypes = {\n  id: PropTypes.string.isRequired,\n  required: PropTypes.bool,\n  disabled: PropTypes.bool,\n  labelText: PropTypes.string.isRequired,\n  yearsDispatch: PropTypes.string,\n  monthsDispatch: PropTypes.string,\n  hasError: PropTypes.shape({}),\n  value: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])),\n  onChange: PropTypes.func,\n};\n\nTimeSelector.defaultProps = {\n  required: false,\n  disabled: false,\n  yearsDispatch: '',\n  monthsDispatch: '',\n  hasError: null,\n  value: [],\n  onChange: null,\n};\n\nexport default TimeSelector;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nconst OptOut = React.forwardRef(({ on_dark }, ref) => {\n  const componentClasses = classNames({\n    'c-opt-out': true,\n    'c-opt-out--inverted': on_dark,\n  });\n\n  const id = `contact_opt_out_${Date.now()}`;\n\n  return (\n    <div className={componentClasses}>\n      <div className=\"custom-checkbox custom-checkbox-lg\">\n        <input className=\"custom-control-input\" type=\"checkbox\" id={id} name=\"contact_opt_out\" value=\"true\" ref={ref} />\n        <label className=\"custom-control-label\" htmlFor={id}>\n          We will sometimes send you emails about our very latest offers and relevant news, in accordance with{' '}\n          <a\n            href=\"https://ico.org.uk/media/for-organisations/documents/1555/direct-marketing-guidance.pdf\"\n            target=\"_blank\"\n            rel=\"noreferrer\"\n          >\n            ICO P&ECR\n          </a>{' '}\n          soft opt in rules & our{' '}\n          <a href=\"/privacy-policy\" target=\"_blank\">\n            privacy policy\n          </a>\n          . Simply tick the box if you do not wish to receive them.\n        </label>\n      </div>\n    </div>\n  );\n});\n\nOptOut.propTypes = {\n  on_dark: PropTypes.bool,\n};\n\nOptOut.defaultProps = {\n  on_dark: false,\n};\n\nexport default OptOut;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nconst InputField = React.forwardRef(\n  (\n    {\n      className,\n      labelClassName,\n      inputClassName,\n      type,\n      id,\n      placeholder,\n      disabled,\n      labelText,\n      onChange,\n      value,\n      min,\n      max,\n      hasError,\n      hiddenLabel,\n      variant,\n      errorMessage,\n      validMessage,\n    },\n    ref,\n  ) => {\n    const [isValid, setIsValid] = useState(false);\n\n    const inputClasses = classNames({\n      [inputClassName]: inputClassName,\n      'is-invalid': hasError,\n      'is-valid': !hasError && isValid,\n    });\n\n    const handleBlur = () => {\n      if (!hasError) {\n        setIsValid(true);\n      }\n    };\n\n    const Tag = variant || 'input';\n\n    return (\n      <div className={className || 'b-form-group'}>\n        <label className={labelClassName || (hiddenLabel ? 'sr-only' : 'b-control-label')} htmlFor={id}>\n          {labelText}\n        </label>\n        <Tag\n          className={inputClasses}\n          type={type}\n          name={id}\n          id={id}\n          placeholder={placeholder}\n          value={value}\n          disabled={disabled}\n          onChange={onChange}\n          min={min}\n          max={max}\n          ref={ref}\n          aria-invalid={hasError ? true : undefined}\n          onBlur={handleBlur}\n        />\n\n        <div className=\"valid-feedback\">{validMessage}</div>\n        <div className=\"invalid-feedback\">{errorMessage}</div>\n      </div>\n    );\n  },\n);\n\nInputField.propTypes = {\n  className: PropTypes.string,\n  labelClassName: PropTypes.string,\n  inputClassName: PropTypes.string,\n  type: PropTypes.string,\n  id: PropTypes.string.isRequired,\n  placeholder: PropTypes.string,\n  disabled: PropTypes.bool,\n  labelText: PropTypes.string.isRequired,\n  onChange: PropTypes.func.isRequired,\n  value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n  min: PropTypes.string,\n  max: PropTypes.string,\n  hasError: PropTypes.bool,\n  hiddenLabel: PropTypes.bool,\n  variant: PropTypes.oneOf(['textarea', 'input']),\n  validMessage: PropTypes.string,\n  errorMessage: PropTypes.string,\n};\n\nInputField.defaultProps = {\n  className: '',\n  labelClassName: '',\n  inputClassName: 'b-form-control',\n  type: 'text',\n  placeholder: '',\n  disabled: false,\n  validMessage: 'Thank you.',\n  errorMessage: 'Please check and enter it again.',\n  hiddenLabel: true,\n  min: null,\n  max: null,\n  hasError: false,\n  variant: 'input',\n};\n\nexport default InputField;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport axios from 'axios';\nimport { useDispatch } from 'react-redux';\n\n// Component Imports\nimport InputSelect from './InputSelect';\n\nconst AddressLookup = React.forwardRef(\n  ({ id, searchLabel, value, required, disabled, onChange, hasError, actionName }, ref) => {\n    const [state, setState] = useState({\n      isValid: false,\n      licenseKey: 'MH45-PE94-XB79-CD33',\n      addressList: [],\n    });\n\n    // React Redux hooks\n    const dispatch = useDispatch();\n\n    const classes = classNames({\n      'b-form-control': true,\n      'is-invalid': hasError,\n      'is-valid': state.isValid,\n    });\n\n    const handleBlur = () => {\n      if (!hasError) {\n        setState({ ...state, isValid: true });\n      }\n    };\n\n    const getAddressList = (addressID) => {\n      axios\n        .get(\n          `https://services.postcodeanywhere.co.uk/Capture/Interactive/Find/v1.10/json3.ws?Key=${state.licenseKey}&Text=${value}&Container=${addressID}&IsMiddleware=false&Countries=GBR&Language=en-gb`,\n        )\n        .then((response) => {\n          if (response.data.Items[0].Error) {\n            // console.log(response.data.Items[0].Error);\n          } else {\n            setState({ ...state, addressList: response.data.Items });\n          }\n        });\n    };\n\n    const searchByPostcode = () => {\n      axios\n        .get(\n          `https://services.postcodeanywhere.co.uk/Capture/Interactive/Find/v1.10/json3.ws?Key=${state.licenseKey}&Text=${value}&IsMiddleware=false&Countries=GBR&Language=en-gb`,\n        )\n        .then((response) => {\n          if (response.data.Items[0].Error) {\n            // console.log(response.data.Items[0].Error);\n          } else {\n            getAddressList(response.data.Items[0].Id);\n          }\n        });\n    };\n\n    const handleClick = (event) => {\n      event.preventDefault();\n\n      searchByPostcode();\n    };\n\n    const handleAddressSelect = (event) => {\n      const fullAddress = event.target.value;\n\n      const addressArray = fullAddress.split(', ');\n\n      dispatch({ type: `SET_${actionName}_ADDRESS_LINE_1`, payload: addressArray[0] });\n      dispatch({ type: `SET_${actionName}_ADDRESS_LINE_2`, payload: addressArray.length > 3 ? addressArray[1] : '' });\n      dispatch({\n        type: `SET_${actionName}_ADDRESS_LINE_3`,\n        payload: addressArray.length > 4 ? addressArray.slice(2, -2).join(', ') : '',\n      });\n      dispatch({ type: `SET_${actionName}_TOWN`, payload: addressArray[addressArray.length - 2] });\n      dispatch({ type: `SET_${actionName}_POSTCODE`, payload: addressArray[addressArray.length - 1] });\n    };\n\n    return (\n      <>\n        <div className=\"b-form-group\">\n          <div className=\"input-group\">\n            <input\n              className={classes}\n              type=\"text\"\n              name={id}\n              id={id}\n              placeholder={searchLabel}\n              value={value}\n              required={required}\n              disabled={disabled}\n              onChange={onChange}\n              ref={ref}\n              aria-invalid={hasError ? true : undefined}\n              onBlur={handleBlur}\n            />\n            <label className=\"sr-only\" htmlFor={id}>\n              {searchLabel}\n            </label>\n\n            <button\n              className=\"input-group-append postcodelookup\"\n              onClick={handleClick}\n              style={{ border: 0, padding: 0 }}\n            >\n              <span className=\"input-group-text\" style={{ height: '100%' }}>\n                Find Address\n              </span>\n            </button>\n          </div>\n        </div>\n\n        {state.addressList.length > 0 && (\n          <div className=\"b-form-group\">\n            <InputSelect labelText=\"Select address\" id={`address-lookup-list-${id}`} onChange={handleAddressSelect}>\n              <InputSelect.Option value=\"\">Select address</InputSelect.Option>\n              {state.addressList.map((address) => (\n                <InputSelect.Option value={`${address.Text}, ${address.Description}`} key={address.Text}>\n                  {address.Text},{address.Description}\n                </InputSelect.Option>\n              ))}\n            </InputSelect>\n          </div>\n        )}\n      </>\n    );\n  },\n);\n\nAddressLookup.propTypes = {\n  id: PropTypes.string.isRequired,\n  searchLabel: PropTypes.string.isRequired,\n  value: PropTypes.string,\n  required: PropTypes.bool,\n  disabled: PropTypes.bool,\n  onChange: PropTypes.func,\n  hasError: PropTypes.bool,\n  actionName: PropTypes.string.isRequired,\n};\n\nAddressLookup.defaultProps = {\n  value: '',\n  required: false,\n  disabled: false,\n  onChange: () => {},\n  hasError: false,\n};\n\nexport default AddressLookup;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nconst InputSelect = React.forwardRef(({ labelText, id, disabled, children, onChange, hasError, value }, ref) => {\n  const [isValid, setIsValid] = useState(false);\n\n  const classes = classNames({\n    'b-form-select': true,\n    'is-invalid': hasError,\n    'is-valid': isValid,\n  });\n\n  const handleBlur = () => {\n    if (!hasError) {\n      setIsValid(true);\n    }\n  };\n\n  return (\n    <>\n      <label className=\"sr-only\" htmlFor={id}>\n        {labelText}\n      </label>\n      <select\n        className={classes}\n        id={id}\n        name={id}\n        disabled={disabled}\n        onChange={onChange}\n        ref={ref}\n        aria-invalid={hasError ? true : undefined}\n        onBlur={handleBlur}\n        value={value}\n      >\n        {children}\n      </select>\n    </>\n  );\n});\n\nInputSelect.propTypes = {\n  labelText: PropTypes.string.isRequired,\n  id: PropTypes.string.isRequired,\n  disabled: PropTypes.bool,\n  children: PropTypes.node.isRequired,\n  onChange: PropTypes.func,\n  hasError: PropTypes.bool,\n  value: PropTypes.string,\n};\n\nInputSelect.defaultProps = {\n  disabled: false,\n  onChange: () => {},\n  hasError: false,\n  value: '',\n};\n\nInputSelect.Option = ({ children, value }) => {\n  return <option value={value}>{children}</option>;\n};\n\nInputSelect.Option.propTypes = {\n  children: PropTypes.node.isRequired,\n  value: PropTypes.string.isRequired,\n};\n\nexport default InputSelect;\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useDispatch } from 'react-redux';\n\n// Component Imports\nimport InputSelect from './InputSelect';\n\nconst DateSelector = React.forwardRef(({ groupText, required, disabled, dispatchAction, id, hasError, value }, ref) => {\n  const [state, setState] = useState({\n    days: [],\n    months: [],\n    years: [],\n    selectedDay: '',\n    selectedMonth: '',\n    selectedYear: '',\n  });\n\n  // React Redux hooks\n  const dispatch = useDispatch();\n\n  const populateSelectOptions = () => {\n    const updatedDays = [];\n    const updatedMonths = [];\n    const updatedYears = [];\n\n    const currentYear = new Date().getFullYear();\n\n    for (let i = 0; i < 31; ++i) {\n      updatedDays.push(\n        <InputSelect.Option value={`${i + 1 < 10 ? `0${i + 1}` : i + 1}`} key={`day-${i}`}>\n          {i + 1 < 10 ? `0${i + 1}` : i + 1}\n        </InputSelect.Option>,\n      );\n    }\n\n    for (let i = 0; i < 12; ++i) {\n      updatedMonths.push(\n        <InputSelect.Option value={`${i + 1 < 10 ? `0${i + 1}` : i + 1}`} key={`month-${i}`}>\n          {i + 1 < 10 ? `0${i + 1}` : i + 1}\n        </InputSelect.Option>,\n      );\n    }\n\n    for (let i = 0; i < 80; ++i) {\n      updatedYears.push(\n        <InputSelect.Option value={`${currentYear - i}`} key={`year-${i}`}>\n          {currentYear - i}\n        </InputSelect.Option>,\n      );\n    }\n\n    setState({ ...state, days: updatedDays, months: updatedMonths, years: updatedYears });\n  };\n\n  const handleDispatch = (payload) => {\n    dispatch({\n      type: dispatchAction,\n      payload,\n    });\n  };\n\n  const dispatchDate = (event, type) => {\n    const targetType = type;\n\n    if (targetType === 'day') {\n      setState({ ...state, selectedDay: event.target.value });\n      handleDispatch(`${event.target.value}-${state.selectedMonth}-${state.selectedYear}`);\n    } else if (targetType === 'month') {\n      setState({ ...state, selectedMonth: event.target.value });\n      handleDispatch(`${state.selectedDay}-${event.target.value}-${state.selectedYear}`);\n    } else if (targetType === 'year') {\n      setState({ ...state, selectedYear: event.target.value });\n      handleDispatch(`${state.selectedDay}-${state.selectedMonth}-${event.target.value}`);\n    }\n  };\n\n  useEffect(() => {\n    populateSelectOptions();\n  }, []);\n\n  return (\n    <div className=\"b-form-group row row-nomargin d-flex align-items-center\">\n      <span className=\"col-xl-12 col-left-label-padding col-no-right-padding md-font-size-normal sm-font-size-normal\">\n        {groupText}\n        {required ? ' *' : ''}\n      </span>\n\n      <div className=\"col-xl-4 col-no-right-padding\">\n        <InputSelect\n          labelText=\"Select day (format DD)\"\n          id={`${id}-day`}\n          disabled={disabled}\n          onChange={(event) => dispatchDate(event, 'day')}\n          ref={ref}\n          hasError={!!hasError[`${id}-day`]}\n          value={value && value !== '' ? value.split('-')[0] : undefined}\n        >\n          <InputSelect.Option value=\"\">DD</InputSelect.Option>\n          {state.days}\n        </InputSelect>\n      </div>\n\n      <div className=\"col-xl-4 col-no-right-padding\">\n        <InputSelect\n          labelText=\"Select month (format MM)\"\n          id={`${id}-month`}\n          disabled={disabled}\n          onChange={(event) => dispatchDate(event, 'month')}\n          ref={ref}\n          hasError={!!hasError[`${id}-month`]}\n          value={value && value !== '' ? value.split('-')[1] : undefined}\n        >\n          <InputSelect.Option value=\"\">MM</InputSelect.Option>\n          {state.months}\n        </InputSelect>\n      </div>\n\n      <div className=\"col-xl-4 col-no-right-padding\">\n        <InputSelect\n          labelText=\"Select year (format YYYY)\"\n          id={`${id}-year`}\n          disabled={disabled}\n          onChange={(event) => dispatchDate(event, 'year')}\n          ref={ref}\n          hasError={!!hasError[`${id}-year`]}\n          value={value && value !== '' ? value.split('-')[2] : undefined}\n        >\n          <InputSelect.Option value=\"\">YYYY</InputSelect.Option>\n          {state.years}\n        </InputSelect>\n      </div>\n    </div>\n  );\n});\n\nDateSelector.propTypes = {\n  groupText: PropTypes.string.isRequired,\n  required: PropTypes.bool,\n  disabled: PropTypes.bool,\n  dispatchAction: PropTypes.string,\n  id: PropTypes.string.isRequired,\n  hasError: PropTypes.shape({}),\n  value: PropTypes.string,\n};\n\nDateSelector.defaultProps = {\n  required: false,\n  disabled: false,\n  dispatchAction: null,\n  hasError: {},\n  value: '',\n};\n\nexport default DateSelector;\n"],"sourceRoot":""}