{"version":3,"sources":["ContactUs.js"],"names":["ContactUs","model","telInput","$","initCountry","pattern","timeout","init","bind","setupListeners","thisInput","updatedPattern","attr","replace","RegExp","formatter","resetPattern","val","removeClass","hide","intlTelInput","initialCountry","utilsScript","ele","trim","hasClass","setCustomValidity","addClass","text","show","checkFormValidity","input","inputParent","parent","inputHelpText","find","inputLabelText","previousElementSibling","innerText","isValid","formInputs","each","i","fieldIsValid","checkValidity","fieldIsNotEmpty","isThisFieldValid","response","ReCaptchaSiteKey","grecaptcha","getResponse","length","prop","self","on","e","clearTimeout","setTimeout","validateInput","target","validatePhoneInput","updatePattern","data","validate","settings","ignore","initTelInput","initFormat","Username","emailSent","appendTo","modal","emailUnavailable"],"mappings":";;;;;;;;IAAMA,S;AAEF,qBAAYC,KAAZ,EAAmB;AAAA;;AACf,SAAKA,KAAL,GAAaA,KAAb;AAEA,SAAKC,QAAL,GAAgBC,CAAC,CAAC,cAAD,CAAjB;AACA,SAAKC,WAAL,GAAmB,IAAnB;AACA,SAAKC,OAAL,GAAe,EAAf;AAEA,SAAKC,OAAL,GAAe,IAAf;AAEA,SAAKC,IAAL,GAAY,KAAKA,IAAL,CAAUC,IAAV,CAAe,IAAf,CAAZ;AACA,SAAKC,cAAL,GAAsB,KAAKA,cAAL,CAAoBD,IAApB,CAAyB,IAAzB,CAAtB;AACH;;;;oCAEe;AAEZ,UAAME,SAAS,GAAGP,CAAC,CAAC,IAAD,CAAnB,CAFY,CAIZ;;AACA,UAAMQ,cAAc,GAAGD,SAAS,CAACE,IAAV,CAAe,aAAf,EAA8BC,OAA9B,CAAsC,IAAIC,MAAJ,CAAW,OAAX,EAAoB,GAApB,CAAtC,EAAgE,GAAhE,EAAqED,OAArE,CAA6E,gBAA7E,EAA+F,QAA/F,CAAvB,CALY,CAOZ;;AACAH,MAAAA,SAAS,CAACK,SAAV,GAAsBC,YAAtB,CAAmCL,cAAnC,EARY,CAUZ;;AACAD,MAAAA,SAAS,CAACO,GAAV,CAAc,EAAd,EAXY,CAaZ;;AACAd,MAAAA,CAAC,CAAC,qBAAD,CAAD,CAAyBe,WAAzB,CAAqC,OAArC;AACAf,MAAAA,CAAC,CAAC,iCAAD,CAAD,CAAqCgB,IAArC;AAEH;;;mCAEc;AACX,WAAKd,OAAL,GAAe,KAAKD,WAAL,KAAqB,IAArB,GAA4B,4BAA5B,GAA2D,4BAA1E;AAEA,WAAKF,QAAL,CAAckB,YAAd,CAA2B;AACvBC,QAAAA,cAAc,EAAE,KAAKjB,WADE;AAEvBkB,QAAAA,WAAW,EAAE;AAFU,OAA3B;AAIH;;;iCAEY;AACT;AACA,WAAKpB,QAAL,CAAca,SAAd,CAAwB;AACpB,mBAAW,KAAKV;AADI,OAAxB;AAGH;;;uCAEkBkB,G,EAAK;AACpB,UAAMb,SAAS,GAAGP,CAAC,CAACoB,GAAD,CAAnB;;AAEA,UAAIpB,CAAC,CAACqB,IAAF,CAAOd,SAAS,CAACO,GAAV,EAAP,CAAJ,EAA6B;AACzB;AACA,YAAIP,SAAS,CAACU,YAAV,CAAuB,eAAvB,CAAJ,EAA6C;AAEzC;AACA,cAAIjB,CAAC,CAAC,qBAAD,CAAD,CAAyBsB,QAAzB,CAAkC,OAAlC,CAAJ,EAAgD;AAC5CtB,YAAAA,CAAC,CAAC,qBAAD,CAAD,CAAyBe,WAAzB,CAAqC,OAArC;AACH;;AAEDf,UAAAA,CAAC,CAAC,iCAAD,CAAD,CAAqCgB,IAArC;AACAT,UAAAA,SAAS,CAACgB,iBAAV,CAA4B,EAA5B;AAEH,SAVD,MAUO;AAEH;AACA,cAAI,CAACvB,CAAC,CAAC,qBAAD,CAAD,CAAyBsB,QAAzB,CAAkC,OAAlC,CAAL,EAAiD;AAC7CtB,YAAAA,CAAC,CAAC,qBAAD,CAAD,CAAyBwB,QAAzB,CAAkC,OAAlC;AACH;;AAEDjB,UAAAA,SAAS,CAACgB,iBAAV,CAA4B,sBAA5B;AACAvB,UAAAA,CAAC,CAAC,iCAAD,CAAD,CAAqCyB,IAArC,CAA0C,sBAA1C,EAAkEC,IAAlE;AAEH;AAEJ,OAxBD,MAwBO;AACH1B,QAAAA,CAAC,CAAC,qBAAD,CAAD,CAAyBwB,QAAzB,CAAkC,OAAlC;AACAxB,QAAAA,CAAC,CAAC,iCAAD,CAAD,CAAqCyB,IAArC,CAA0C,6CAA1C,EAAyFC,IAAzF;AACH;;AAED,WAAKC,iBAAL;AAEH;;;kCAEaP,G,EAAK;AAEf,UAAMQ,KAAK,GAAG5B,CAAC,CAACoB,GAAD,CAAf;AACA,UAAMS,WAAW,GAAGD,KAAK,CAACE,MAAN,EAApB;AACA,UAAMC,aAAa,GAAGF,WAAW,CAACG,IAAZ,CAAiB,aAAjB,CAAtB;AACA,UAAMC,cAAc,GAAGb,GAAG,CAACc,sBAAJ,CAA2BC,SAAlD;;AAEA,UAAInC,CAAC,CAACqB,IAAF,CAAOO,KAAK,CAACd,GAAN,EAAP,CAAJ,EAAyB;AACrB;AACA,YAAIe,WAAW,CAACP,QAAZ,CAAqB,OAArB,CAAJ,EAAmC;AAC/BO,UAAAA,WAAW,CAACd,WAAZ,CAAwB,OAAxB;AACH;;AAEDgB,QAAAA,aAAa,CAACf,IAAd;AAEH,OARD,MAQO;AAEHa,QAAAA,WAAW,CAACL,QAAZ,CAAqB,OAArB;AACAO,QAAAA,aAAa,CAACN,IAAd,eAA0BQ,cAA1B,0BAA+DP,IAA/D;AAEH;;AAED,WAAKC,iBAAL;AAEH;;;wCAEmB;AAChB,UAAIS,OAAO,GAAG,IAAd;AAEA,UAAIC,UAAU,GAAG,CACb,YADa,EAEb,WAFa,EAGb,QAHa,EAIb,cAJa,EAKb,UALa,CAAjB;AAQArC,MAAAA,CAAC,CAACsC,IAAF,CAAOD,UAAP,EAAmB,UAASE,CAAT,EAAWnB,GAAX,EAAgB;AAC/B,YAAIoB,YAAY,GAAGxC,CAAC,CAACoB,GAAD,CAAD,CAAOqB,aAAP,EAAnB;AACA,YAAIC,eAAe,GAAG1C,CAAC,CAACoB,GAAD,CAAD,CAAON,GAAP,OAAiB,EAAvC;AACA,YAAI6B,gBAAgB,GAAGH,YAAY,IAAIE,eAAvC;;AAEA,YAAI,CAACC,gBAAL,EAAuB;AACnBP,UAAAA,OAAO,GAAG,KAAV;AACA,iBAAO,KAAP;AACH;AAEJ,OAVD;AAYA,UAAIQ,QAAQ,GAAG,CAAf;;AACA,UAAI,KAAK9C,KAAL,CAAW+C,gBAAX,KAAgC,EAApC,EAAwC;AACpCD,QAAAA,QAAQ,GAAGE,UAAU,CAACC,WAAX,EAAX;AACH;;AAED,UAAIX,OAAO,KAAK,KAAKtC,KAAL,CAAW+C,gBAAX,KAAgC,EAAhC,IAAsCD,QAAQ,CAACI,MAAT,GAAkB,CAA7D,CAAX,EAA4E;AACxEhD,QAAAA,CAAC,CAAC,SAAD,CAAD,CAAaiD,IAAb,CAAkB,UAAlB,EAA8B,IAA9B;AACH,OAFD,MAEO;AACHjD,QAAAA,CAAC,CAAC,SAAD,CAAD,CAAaiD,IAAb,CAAkB,UAAlB,EAA8B,IAA9B;AACH;AACJ;;;qCAEgB;AAAA;;AAEb,UAAIC,IAAI,GAAG,IAAX;AAEA,UAAIb,UAAU,GAAG,yCAAjB,CAJa,CAMb;;AACArC,MAAAA,CAAC,CAACqC,UAAD,CAAD,CAAcc,EAAd,CAAiB,SAAjB,EAA4B,UAACC,CAAD,EAAO;AAC/BC,QAAAA,YAAY,CAAC,KAAI,CAAClD,OAAN,CAAZ;AAEA,QAAA,KAAI,CAACA,OAAL,GAAemD,UAAU,CAAC,YAAY;AAClCJ,UAAAA,IAAI,CAACK,aAAL,CAAmBH,CAAC,CAACI,MAArB;AACH,SAFwB,EAEtB,GAFsB,CAAzB;AAGH,OAND,EAPa,CAeb;;AACA,WAAKzD,QAAL,CAAcoD,EAAd,CAAiB,OAAjB,EAA0B,UAACC,CAAD,EAAO;AAC7BC,QAAAA,YAAY,CAAC,KAAI,CAAClD,OAAN,CAAZ;AAEA,QAAA,KAAI,CAACA,OAAL,GAAemD,UAAU,CAAC,YAAY;AAClCJ,UAAAA,IAAI,CAACO,kBAAL,CAAwBP,IAAI,CAACnD,QAA7B;AACH,SAFwB,EAEtB,GAFsB,CAAzB;AAGH,OAND,EAhBa,CAwBb;;AACA,WAAKA,QAAL,CAAcoD,EAAd,CAAiB,eAAjB,EAAkC,KAAKO,aAAvC;AAEH;;;yBAEIC,I,EAAM;AAEP;AACA3D,MAAAA,CAAC,CAAC,YAAD,CAAD,CAAgB4D,QAAhB,GAA2BC,QAA3B,CAAoCC,MAApC,GAA6C,cAA7C;AAEA,WAAKC,YAAL;AAEA,WAAKC,UAAL;AAEA,WAAK1D,cAAL;;AAEA,UAAI,KAAKR,KAAL,CAAWmE,QAAX,KAAwB,IAA5B,EAAkC;AAC9BjE,QAAAA,CAAC,CAAC,WAAD,CAAD,CAAeS,IAAf,CAAoB,UAApB,EAAgC,UAAhC;AACH;;AAED,UAAIkD,IAAI,CAACO,SAAL,KAAmB,MAAvB,EAA+B;AAC3BlE,QAAAA,CAAC,CAAC,iBAAD,CAAD,CAAqBmE,QAArB,CAA8B,MAA9B,EAAsCC,KAAtC,CAA4C,MAA5C;AACH;;AAED,UAAIT,IAAI,CAACU,gBAAL,KAA0B,MAA9B,EAAsC;AAClCrE,QAAAA,CAAC,CAAC,wBAAD,CAAD,CAA4BmE,QAA5B,CAAqC,MAArC,EAA6CC,KAA7C,CAAmD,MAAnD;AACH;AACJ","sourcesContent":["class ContactUs {\r\n\r\n constructor(model) {\r\n this.model = model;\r\n\r\n this.telInput = $(\"#PhoneNumber\");\r\n this.initCountry = 'us';\r\n this.pattern = '';\r\n\r\n this.timeout = null;\r\n\r\n this.init = this.init.bind(this);\r\n this.setupListeners = this.setupListeners.bind(this);\r\n }\r\n\r\n updatePattern() {\r\n\r\n const thisInput = $(this);\r\n\r\n // Use updated placeholder to define formatting pattern\r\n const updatedPattern = thisInput.attr(\"placeholder\").replace(new RegExp(\"[0-9]\", \"g\"), \"9\").replace(/([9]\\d{0,10})/g, '{{$1}}');\r\n\r\n // update formatter\r\n thisInput.formatter().resetPattern(updatedPattern);\r\n\r\n // clear telephone input to prevent validation errors\r\n thisInput.val(\"\");\r\n\r\n // Remove Error from Input\r\n $(\"#PhoneNumberWrapper\").removeClass(\"error\");\r\n $(\"#PhoneNumberWrapper .help-block\").hide();\r\n\r\n }\r\n\r\n initTelInput() {\r\n this.pattern = this.initCountry === 'us' ? '({{999}}) {{999}}-{{9999}}' : '{{9999999999999999999999}}';\r\n\r\n this.telInput.intlTelInput({\r\n initialCountry: this.initCountry,\r\n utilsScript: \"https://cdn.jsdelivr.net/npm/intl-tel-input@16.0.3/build/js/utils.js\"\r\n });\r\n }\r\n\r\n initFormat() {\r\n // init format\r\n this.telInput.formatter({\r\n 'pattern': this.pattern\r\n });\r\n }\r\n\r\n validatePhoneInput(ele) {\r\n const thisInput = $(ele);\r\n\r\n if ($.trim(thisInput.val())) {\r\n // if phone number is valid\r\n if (thisInput.intlTelInput(\"isValidNumber\")) {\r\n\r\n // set error states\r\n if ($(\"#PhoneNumberWrapper\").hasClass(\"error\")) {\r\n $(\"#PhoneNumberWrapper\").removeClass(\"error\");\r\n }\r\n\r\n $(\"#PhoneNumberWrapper .help-block\").hide();\r\n thisInput.setCustomValidity('');\r\n\r\n } else {\r\n\r\n // set error states\r\n if (!$(\"#PhoneNumberWrapper\").hasClass(\"error\")) {\r\n $(\"#PhoneNumberWrapper\").addClass(\"error\");\r\n }\r\n\r\n thisInput.setCustomValidity('Invalid Phone Number');\r\n $(\"#PhoneNumberWrapper .help-block\").text(\"Invalid Phone Number\").show();\r\n\r\n }\r\n\r\n } else {\r\n $(\"#PhoneNumberWrapper\").addClass(\"error\");\r\n $(\"#PhoneNumberWrapper .help-block\").text(\"The Contact Phone Number field is required.\").show();\r\n }\r\n\r\n this.checkFormValidity();\r\n\r\n }\r\n\r\n validateInput(ele) {\r\n\r\n const input = $(ele);\r\n const inputParent = input.parent();\r\n const inputHelpText = inputParent.find(\".help-block\");\r\n const inputLabelText = ele.previousElementSibling.innerText;\r\n\r\n if ($.trim(input.val())) {\r\n // set error states\r\n if (inputParent.hasClass(\"error\")) {\r\n inputParent.removeClass(\"error\");\r\n }\r\n\r\n inputHelpText.hide();\r\n\r\n } else {\r\n\r\n inputParent.addClass(\"error\");\r\n inputHelpText.text(`The ${inputLabelText} field is required.`).show();\r\n\r\n }\r\n\r\n this.checkFormValidity();\r\n\r\n }\r\n\r\n checkFormValidity() {\r\n let isValid = true;\r\n\r\n let formInputs = [\r\n '#FirstName',\r\n '#LastName',\r\n '#Email',\r\n '#PhoneNumber',\r\n '#Message'\r\n ];\r\n\r\n $.each(formInputs, function(i,ele) {\r\n let fieldIsValid = $(ele).checkValidity();\r\n let fieldIsNotEmpty = $(ele).val() !== '';\r\n let isThisFieldValid = fieldIsValid && fieldIsNotEmpty;\r\n\r\n if (!isThisFieldValid) {\r\n isValid = false;\r\n return false;\r\n }\r\n\r\n });\r\n\r\n var response = 0;\r\n if (this.model.ReCaptchaSiteKey !== \"\") {\r\n response = grecaptcha.getResponse();\r\n }\r\n\r\n if (isValid && (this.model.ReCaptchaSiteKey === \"\" || response.length > 0)) {\r\n $(\"#submit\").prop(\"disabled\", null);\r\n } else {\r\n $(\"#submit\").prop(\"disabled\", true);\r\n }\r\n }\r\n\r\n setupListeners() {\r\n\r\n let self = this;\r\n\r\n let formInputs = '#FirstName, #LastName, #Email, #Message';\r\n\r\n // on keyup wait to validate\r\n $(formInputs).on('keydown', (e) => {\r\n clearTimeout(this.timeout);\r\n\r\n this.timeout = setTimeout(function () {\r\n self.validateInput(e.target);\r\n }, 300);\r\n });\r\n\r\n // on keyup wait to validate\r\n this.telInput.on('keyup', (e) => {\r\n clearTimeout(this.timeout);\r\n\r\n this.timeout = setTimeout(function () {\r\n self.validatePhoneInput(self.telInput);\r\n }, 300);\r\n });\r\n\r\n // on change to input or country code reset input\r\n this.telInput.on('countrychange', this.updatePattern);\r\n\r\n }\r\n\r\n init(data) {\r\n\r\n // Tell default jQuery validate to ignore the Phone Number field as it was causing display issues. We are validating with our custom code above.\r\n $('#ContactUs').validate().settings.ignore = \"#PhoneNumber\";\r\n\r\n this.initTelInput();\r\n\r\n this.initFormat();\r\n\r\n this.setupListeners();\r\n\r\n if (this.model.Username !== null) {\r\n $(\"#Username\").attr(\"readonly\", \"readonly\");\r\n }\r\n\r\n if (data.emailSent === \"True\") {\r\n $('#emailSentModal').appendTo('body').modal('show');\r\n }\r\n\r\n if (data.emailUnavailable === \"True\") {\r\n $('#emailUnavailableModal').appendTo('body').modal('show');\r\n }\r\n }\r\n\r\n}"],"file":"ContactUs.js"}