{"version":3,"sources":["webpack:///./js/PFF/controllers/freeReplacementParts.ts"],"names":["PFF","$","__webpack_require__","countryStateSetup","formValidation","translationsService_1","controllers","freeReplacementParts","translationsService","default","getInstance","translationStrings","JSON","parse","html","init","$form","$alertSuccess","$alertDanger","$replacementPartsForm","$firstName","$lastName","$email","$emailConfirm","$address","$address2","$country","$city","$stateProvince","$postalCode","$phone","$model","$purchaseYear","$terms","$optIn","$replacementItem","$submit","$pleaseWait","constraints","first-name","presence","allowEmpty","message","translate","last-name","email","email-confirm","equality","attribute","address","address2","country","city","state-province","postal-code","phone","format","pattern","model","purchase-year","terms","recaptcha-token","validateField","this","addClass","validateWrapper","values","val","grecaptcha","getResponse","prop","undefined","removeAttr","attr","inputEventListeners","on","ready","render","document","getElementById","callback","submitEventListener","e","preventDefault","removeClass","data","FirstName","LastName","Email","Phone","Address1","Address2","City","State","ZIP","Country","ModelNumber","PurchaseYear","OptIn","is","ReplacementItem","ajax","url","type","done","response","success","reset","resetForm","find","text","fail","responseJSON","userFriendlyMessages","always","window","scrollTo","urlParams","URLSearchParams","location","search","get"],"mappings":"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","file":"controllers/freeReplacementParts.js","sourcesContent":["import * as $ from 'jquery';\r\nimport * as countryStateSetup from '../modules/countryStateSetup';\r\nimport * as formValidation from '../modules/formValidation';\r\nimport TranslationsService from '../services/translationsService';\r\nimport 'url-search-params-polyfill';\r\ndeclare const grecaptcha: any;\r\n\r\nnamespace PFF.controllers.freeReplacementParts {\r\n\r\n\t// Init translations service\r\n\tconst translationsService = TranslationsService.getInstance();\r\n\tlet translationStrings = JSON.parse($(\"#translations\").html());\r\n\ttranslationsService.init(translationStrings);\r\n\r\n\tlet $form = $('form');\r\n\tlet $alertSuccess = $('.js-alert-success');\r\n\tlet $alertDanger = $('.js-alert-danger');\r\n\tlet $replacementPartsForm = $('#freereplacementparts');\r\n\tlet $firstName = $('#first-name');\r\n\tlet $lastName = $('#last-name');\r\n\tlet $email = $('#email');\r\n\tlet $emailConfirm = $('#email-confirm');\r\n\tlet $address = $('#address');\r\n\tlet $address2 = $('#address2');\r\n\tlet $country = $('#country');\r\n\tlet $city = $('#city');\r\n\tlet $stateProvince = $('#state-province');\r\n\tlet $postalCode = $('#postal-code');\r\n\tlet $phone = $('#phone');\r\n\r\n\tlet $model = $('#model');\r\n\tlet $purchaseYear = $('#purchase-year');\r\n\r\n\tlet $terms = $('#terms');\r\n\tlet $optIn = $('#opt-in');\r\n\r\n\tlet $replacementItem = $('#replacement-item');\r\n\r\n\tlet $submit = $('#submit');\r\n\tlet $pleaseWait = $('#please-wait');\r\n\r\n\tlet constraints = {\r\n\t\t'first-name': {\r\n\t\t\tpresence: {\r\n\t\t\t\tallowEmpty: false,\r\n\t\t\t\tmessage: '^' + translationsService.translate('FormValidationErrors.FirstNameRequired')\r\n\t\t\t}\r\n\t\t},\r\n\t\t'last-name': {\r\n\t\t\tpresence: {\r\n\t\t\t\tallowEmpty: false,\r\n\t\t\t\tmessage: '^' + translationsService.translate('FormValidationErrors.LastNameRequired')\r\n\t\t\t}\r\n\t\t},\r\n\t\temail: {\r\n\t\t\tpresence: {\r\n\t\t\t\tallowEmpty: false,\r\n\t\t\t\tmessage: '^' + translationsService.translate('FormValidationErrors.EmailRequired')\r\n\t\t\t},\r\n\t\t\temail: {\r\n\t\t\t\tmessage: '^' + translationsService.translate('FormValidationErrors.EmailInvalid')\r\n\t\t\t}\r\n\t\t},\r\n\t\t'email-confirm': {\r\n\t\t\tpresence: {\r\n\t\t\t\tallowEmpty: false,\r\n\t\t\t\tmessage: '^' + translationsService.translate('FormValidationErrors.ConfirmEmailRequired')\r\n\t\t\t},\r\n\t\t\tequality: {\r\n\t\t\t\tattribute: 'email',\r\n\t\t\t\tmessage: '^' + translationsService.translate('FormValidationErrors.ConfirmEmailInvalid')\r\n\t\t\t}\r\n\t\t},\r\n\t\taddress: {\r\n\t\t\tpresence: {\r\n\t\t\t\tallowEmpty: false,\r\n\t\t\t\tmessage: '^' + translationsService.translate('FormValidationErrors.AddressRequired')\r\n\t\t\t}\r\n\t\t},\r\n\t\taddress2: {\r\n\t\t\tpresence: false\r\n\t\t},\r\n\t\tcountry: {\r\n\t\t\tpresence: {\r\n\t\t\t\tallowEmpty: false,\r\n\t\t\t\tmessage: '^' + translationsService.translate('FormValidationErrors.CountryRequired')\r\n\t\t\t}\r\n\t\t},\r\n\t\tcity: {\r\n\t\t\tpresence: {\r\n\t\t\t\tallowEmpty: false,\r\n\t\t\t\tmessage: '^' + translationsService.translate('FormValidationErrors.CityRequired')\r\n\t\t\t}\r\n\t\t},\r\n\t\t'state-province': {\r\n\t\t\tpresence: {\r\n\t\t\t\tallowEmpty: false,\r\n\t\t\t\tmessage: '^' + translationsService.translate('FormValidationErrors.StateRequired')\r\n\t\t\t}\r\n\t\t},\r\n\t\t'postal-code': {\r\n\t\t\tpresence: {\r\n\t\t\t\tallowEmpty: false,\r\n\t\t\t\tmessage: '^' + translationsService.translate('FormValidationErrors.PostalCodeRequired')\r\n\t\t\t}\r\n\t\t},\r\n\t\tphone: {\r\n\t\t\tpresence: {\r\n\t\t\t\tallowEmpty: false,\r\n\t\t\t\tmessage: '^' + translationsService.translate('FormValidationErrors.PhoneRequired')\r\n\t\t\t},\r\n\t\t\tformat: {\r\n\t\t\t\tpattern: /^(\\+\\d{1,2}\\s)?\\(?\\d{3}\\)?[\\s.-]?\\d{3}[\\s.-]?\\d{4}$/,\r\n\t\t\t\tmessage: '^' + translationsService.translate('FormValidationErrors.PhoneInvalid')\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t'model': {\r\n\t\t\tpresence: {\r\n\t\t\t\tallowEmpty: false,\r\n\t\t\t\tmessage: '^' + translationsService.translate('FormValidationErrors.ModelRequired')\r\n\t\t\t}\r\n\t\t},\r\n\t\t'purchase-year': {\r\n\t\t\tpresence: {\r\n\t\t\t\tallowEmpty: false,\r\n\t\t\t\tmessage: '^' + translationsService.translate('FormValidationErrors.PurchaseYearRequired')\r\n\t\t\t}\r\n\t\t},\r\n\t\tterms: {\r\n\t\t\tpresence: {\r\n\t\t\t\tallowEmpty: false,\r\n\t\t\t\tmessage: '^' + translationsService.translate('FormValidationErrors.Terms')\r\n\t\t\t},\r\n\t\t},\r\n\t\t'recaptcha-token': {\r\n\t\t\tpresence: {\r\n\t\t\t\tallowEmpty: false,\r\n\t\t\t\tmessage: '^' + translationsService.translate('FormValidationErrors.CaptchaRequired')\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tlet validateField = function () {\r\n\t\t$(this).addClass('dirty');\r\n\t\tif (formValidation.validateWrapper({\r\n\t\t\tconstraints: constraints,\r\n\t\t\tvalues: {\r\n\t\t\t\t'first-name': $firstName.val(),\r\n\t\t\t\t'last-name': $lastName.val(),\r\n\t\t\t\temail: $email.val(),\r\n\t\t\t\t'email-confirm': $emailConfirm.val(),\r\n\t\t\t\taddress: $address.val(),\r\n\t\t\t\taddress2: $address2.val(),\r\n\t\t\t\tcountry: $country.val(),\r\n\t\t\t\tcity: $city.val(),\r\n\t\t\t\t'state-province': $stateProvince.val(),\r\n\t\t\t\t'postal-code': $postalCode.val(),\r\n\t\t\t\tphone: $phone.val(),\r\n\r\n\t\t\t\t'model': $model.val(),\r\n\t\t\t\t'purchase-year': $purchaseYear.val(),\r\n\t\t\t\t'recaptcha-token': grecaptcha.getResponse(),\r\n\t\t\t\tterms: $terms.prop('checked') ? 1 : undefined\r\n\t\t\t}\r\n\t\t})) {\r\n\t\t\t// disable submit button\r\n\t\t\t$submit.removeAttr('disabled');\r\n\t\t} else {\r\n\t\t\t// enable submit button\r\n\t\t\t$submit.attr('disabled', true);\r\n\t\t}\r\n\t};\r\n\r\n\tlet inputEventListeners = function () {\r\n\t\t$firstName.on('blur change', validateField);\r\n\t\t$lastName.on('blur change', validateField);\r\n\t\t$email.on('blur change', validateField);\r\n\t\t$emailConfirm.on('blur change', validateField);\r\n\t\t$address.on('blur change', validateField);\r\n\t\t$address2.on('blur change', validateField);\r\n\t\t$country.on('blur change', validateField);\r\n\t\t$city.on('blur change', validateField);\r\n\t\t$stateProvince.on('blur change', validateField);\r\n\t\t$postalCode.on('blur change', validateField);\r\n\t\t$phone.on('blur change', validateField);\r\n\r\n\t\t$model.on('blur change', validateField);\r\n\t\t$purchaseYear.on('blur change', validateField);\r\n\r\n\t\t$terms.on('blur change', validateField);\r\n\t\tgrecaptcha.ready(() => {\r\n\t\t\tgrecaptcha.render( document.getElementById('g-recaptcha'), {\r\n\t\t\t\tcallback: validateField\r\n\t\t\t});\r\n\t\t});\r\n\t};\r\n\r\n\tlet submitEventListener = function () {\r\n\t\t$submit.on('click', function (e) {\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\t$submit.addClass('hidden');\r\n\t\t\t$pleaseWait.removeClass('hidden');\r\n\r\n\t\t\t$('.js-alert').addClass('hidden');\r\n\r\n\t\t\tlet data = {\r\n\t\t\t\tFirstName: $firstName.val(),\r\n\t\t\t\tLastName: $lastName.val(),\r\n\t\t\t\tEmail: $email.val(),\r\n\t\t\t\tPhone: $phone.val(),\r\n\t\t\t\tAddress1: $address.val(),\r\n\t\t\t\tAddress2: $address2.val(),\r\n\t\t\t\tCity: $city.val(),\r\n\t\t\t\tState: $stateProvince.val(),\r\n\t\t\t\tZIP: $postalCode.val(),\r\n\t\t\t\tCountry: $country.val(),\r\n\t\t\t\tModelNumber: $model.val(),\r\n\t\t\t\tPurchaseYear: $purchaseYear.val(),\r\n\r\n\t\t\t\tOptIn: $optIn.is(\":checked\"),\r\n\r\n\t\t\t\tReplacementItem: $replacementItem.val()\r\n\t\t\t};\r\n\r\n\t\t\t$.ajax({\r\n\t\t\t\turl: '/api/salesforce/post-order-free-replacement',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdata: data\r\n\t\t\t})\r\n\t\t\t\t.done(function (response) {\r\n\t\t\t\t\t// console.log(\"data equals:\" + data);\r\n\t\t\t\t\tif(response.data.success === true) {\r\n\t\t\t\t\t\t$alertSuccess.removeClass('hidden');\r\n\t\t\t\t\t\t$replacementPartsForm[0].reset();\r\n\t\t\t\t\t\tformValidation.resetForm($form);\r\n\t\t\t\t\t\tgrecaptcha.reset();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t$alertDanger\r\n\t\t\t\t\t\t.removeClass('hidden')\r\n\t\t\t\t\t\t.find('.js-alert-text')\r\n\t\t\t\t\t\t.text(response.data.message);\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.fail(function (response) {\r\n\t\t\t\t\t$alertDanger\r\n\t\t\t\t\t\t.removeClass('hidden')\r\n\t\t\t\t\t\t.find('.js-alert-text')\r\n\t\t\t\t\t\t.text(response.responseJSON.userFriendlyMessages[0]);\r\n\t\t\t\t})\r\n\t\t\t\t.always(function () {\r\n\t\t\t\t\twindow.scrollTo(0, 0);\r\n\t\t\t\t\t$submit.removeClass('hidden');\r\n\t\t\t\t\t$pleaseWait.addClass('hidden');\r\n\t\t\t\t});\r\n\t\t});\r\n\t};\r\n\r\n\r\n\texport function init() {\r\n\t\tcountryStateSetup.init($country, $stateProvince);\r\n\r\n\t\tinputEventListeners();\r\n\t\tsubmitEventListener();\r\n\r\n\t\t// This may need a polyfill or fallback it is not supported in IE11\r\n\t\tlet urlParams = new URLSearchParams(window.location.search);\r\n\t\t$replacementItem.val(urlParams.get('replacementItem'));\r\n\t\t$model.val(urlParams.get('modelNumber'));\r\n\t}\r\n}\r\n\r\nPFF.controllers.freeReplacementParts.init();\r\n\n\n\n// WEBPACK FOOTER //\n// ./js/PFF/controllers/freeReplacementParts.ts"],"sourceRoot":""}