{"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":""}