{"version":3,"file":"jwsdw-newslettersignup.js","sources":["../../../../../../../temp/ngAnnotate/assets/jwsdw-newslettersignup.js"],"sourcesContent":["'use strict';\r\n(function ($) {\r\n var $formElement = $('#jwsdw-nlsignup-form'),\r\n xhr;\r\n\r\n $.validator.setDefaults({\r\n 'groups': {\r\n 'date': 'dateOfBirthDay dateOfBirthMonth dateOfBirthYear'\r\n },\r\n 'rules': {\r\n 'email': {\r\n 'invalidvalue': true,\r\n 'customemail': true\r\n },\r\n 'dateOfBirth': {\r\n 'checkDate': '#jwsdw-newsletter-dateOfBirth'\r\n }\r\n }\r\n });\r\n\r\n $formElement.validate();\r\n\r\n $formElement.submit(function(e) {\r\n var $form = $(this),\r\n $captcha = $form.find('.g-recaptcha'),\r\n $submitButton = $form.find('#jwsdw-newsletter-submit');\r\n\r\n e.preventDefault();\r\n\r\n // only submit form if frontend validation is successful and no other call is executed\r\n if (!$form.valid() || (xhr && xhr.readyState !== 4)) {\r\n return;\r\n }\r\n\r\n if (window.jwsdwRecaptchaSettings.captchaDisabled === false) {\r\n if (!window.grecaptcha || window.jwsdwUtil.captcha.getResponse($captcha.attr('id')).length !== 0) {\r\n return;\r\n }\r\n window.jwsdwUtil.captcha.execute($captcha.attr('id')).then(submitFormHandler);\r\n } else {\r\n submitFormHandler();\r\n }\r\n\r\n /**\r\n * @description Method to trigger submit again when form is valid\r\n * @returns {void}\r\n */\r\n function submitFormHandler() {\r\n var $err = $form.find('.jwsdw-newsletter-error');\r\n\r\n if (window.jwsdwRecaptchaSettings.captchaDisabled === false && window.jwsdwUtil.captcha.getResponse($captcha.attr('id')).length === 0) {\r\n // no response yet, check again in 200ms\r\n setTimeout(submitFormHandler, 200);\r\n return;\r\n }\r\n\r\n $submitButton.find('.jwsdw-buttonText').addClass('jwsdw-invisible');\r\n $submitButton.find('.jwsdw-spinner').removeClass('jws-hidden');\r\n $submitButton.attr('disabled', 'disabled');\r\n\r\n xhr = $.ajax(asURLEncoded($form))\r\n .done(function(response) {\r\n $('.jwsdw-nlsignup-wrapper').html(response);\r\n if (/jwsdw-nlsignup-success/.test(response)) {\r\n window.jwsdwApi.tracking.fireEvent('newsletter', {\r\n 'type': 'newsletterSubscriptionSuccessful'\r\n });\r\n window.dataLayer = window.dataLayer || [];\r\n window.dataLayer.push({\r\n 'event': 'ce.misc',\r\n 'eventCategory': 'Misc',\r\n 'eventAction': 'Newsletter',\r\n 'eventLabel': 'signup',\r\n 'eventValue': undefined,\r\n 'nonInteraction': false\r\n });\r\n }\r\n }).fail(function(response) {\r\n var message = window.app.resources.SERVER_CONNECTION_ERROR;\r\n if (response.responseJSON) {\r\n message = response.responseJSON.details.message;\r\n }\r\n $err.text(message).removeClass('jws-hidden');\r\n }).always(function() {\r\n if (window.jwsdwRecaptchaSettings.captchaDisabled === false) {\r\n window.grecaptcha.reset(window.jwsdwRecaptcha[$captcha.attr('id')]);\r\n }\r\n $submitButton.find('.jwsdw-buttonText').removeClass('jwsdw-invisible');\r\n $submitButton.find('.jwsdw-spinner').addClass('jws-hidden');\r\n $submitButton.removeAttr('disabled');\r\n });\r\n }\r\n\r\n /**\r\n * Method generate settings object for ajax requests\r\n * @param {String|object} form selector element to pass to jQuery\r\n * @returns {Object} ajax paremeters\r\n */\r\n function asURLEncoded(form) {\r\n form = $(form);\r\n return {\r\n 'contentType': 'application/x-www-form-urlencoded; charset=UTF-8',\r\n 'type': form.attr('method'),\r\n 'url': form.attr('action'),\r\n 'data': form.serialize()\r\n };\r\n }\r\n });\r\n}(jQuery));\r\n\r\n\r\n(function ($) {\r\n var $newsletterSignup = $('#jwsdw-newsletterSignup'),\r\n $newsletterSignupForm = $('#jwsdw-newsletterSignup-form'),\r\n $step1 = $newsletterSignup.find('.jwsdw-newsletterSignup-step1'),\r\n $step2 = $newsletterSignup.find('.jwsdw-newsletterSignup-step2'),\r\n $successMessage = $newsletterSignup.find('.jws-formSuccessMessage'),\r\n $generalErrorMessage = $newsletterSignup.find('.jwsdw-formErrorMessage'),\r\n $invalidFieldsErrorMessage = $newsletterSignup.find('.jwsdw-formErrorMessage-invalidFields'),\r\n $button = $newsletterSignup.find('.jws-buttonYellow'),\r\n $buttonText = $newsletterSignup.find('.jwsdw-buttonText'),\r\n $spinner = $newsletterSignup.find('.jwsdw-spinner'),\r\n xhr;\r\n\r\n $newsletterSignupForm.validate();\r\n\r\n window.jwsdwMediator.subscribe('closePicker', function (type) {\r\n if (type === 'newsletterSignupPicker') {\r\n reset();\r\n }\r\n });\r\n\r\n /**\r\n * @description Method to handle form submits\r\n * @param {Object} event the event that triggered the handler\r\n * @param {Function} successCallback the callback that is triggered when the ajax call was successful\r\n * @param {Function} errorCallback the callback that is triggered when the ajax call was unsuccessful\r\n * @param {Function} beforeSendCallback the callback that is triggered before the ajax form is sent\r\n * @param {Object} [fieldsToSend] optional fields that will be sent instead of the full form\r\n * @returns {void}\r\n */\r\n function formSubmit (event, successCallback, errorCallback, beforeSendCallback, fieldsToSend) {\r\n var $this = $(this),\r\n $captcha = $this.find('.g-recaptcha');\r\n\r\n event.preventDefault();\r\n\r\n // only submit form if frontend validation is successful and no other call is executed\r\n if (!$this.valid() || (xhr && xhr.readyState !== 4)) {\r\n return;\r\n }\r\n\r\n if (window.jwsdwRecaptchaSettings.captchaDisabled === false) {\r\n if (!window.grecaptcha || window.jwsdwUtil.captcha.getResponse($captcha.attr('id')).length !== 0) {\r\n return;\r\n }\r\n window.jwsdwUtil.captcha.execute($captcha.attr('id')).then(submitFormHandler);\r\n } else {\r\n submitFormHandler();\r\n }\r\n\r\n /**\r\n * @function\r\n * @description Handler to trigger submit again when form is valid\r\n * @return {void}\r\n */\r\n function submitFormHandler() {\r\n if (window.jwsdwRecaptchaSettings.captchaDisabled === false && window.jwsdwUtil.captcha.getResponse($captcha.attr('id')).length === 0) {\r\n // no response yet, check again in 200ms\r\n setTimeout(submitFormHandler, 200);\r\n return;\r\n }\r\n\r\n // XHR request to form action url with form fields as parameters\r\n xhr = $.ajax($this.attr('action'), {\r\n 'data': !fieldsToSend ? $this.serialize() : fieldsToSend.serialize(),\r\n 'beforeSend': beforeSendCallback,\r\n 'error': errorCallback,\r\n 'success': successCallback,\r\n 'method': $this.attr('method') || 'GET'\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @description Method to invalidate given fields\r\n * @param {Object} $form form to invalidate\r\n * @param {Array} errorFields array of field names to invalidate\r\n * @returns {void} nothing\r\n */\r\n function invalidateFields($form, errorFields) {\r\n var validator = $form.validate(),\r\n errorFieldsObj = {};\r\n\r\n errorFields.forEach(function(field) {\r\n errorFieldsObj[field] = '';\r\n });\r\n validator.showErrors(errorFieldsObj);\r\n $invalidFieldsErrorMessage.removeClass('jws-hidden');\r\n }\r\n\r\n /**\r\n * @description Method to reset picker state\r\n * @returns {void}\r\n */\r\n function reset() {\r\n $step1.removeClass('jws-hidden');\r\n $step2.addClass('jws-hidden');\r\n $generalErrorMessage.addClass('jws-hidden');\r\n $invalidFieldsErrorMessage.addClass('jws-hidden');\r\n $successMessage.addClass('jws-hidden');\r\n }\r\n\r\n /**\r\n * @description Method to execute the before send logic before the ajax call is made\r\n * @returns {void}\r\n */\r\n function newsletterSignupBeforeSendCallback () {\r\n $button.prop('disabled', true);\r\n $buttonText.addClass('jwsdw-invisible');\r\n $spinner.removeClass('jws-hidden');\r\n }\r\n\r\n /**\r\n * @description Method to execute if address was handled successfully\r\n * @param {object} data the response data\r\n * @returns {object} response data\r\n */\r\n function newsletterSignupSuccessCallback (data) {\r\n if (!data.hasOwnProperty('status') || data.status !== 'success') {\r\n return newsletterSignupErrorCallback(data);\r\n }\r\n\r\n $button.prop('disabled', false);\r\n $buttonText.removeClass('jwsdw-invisible');\r\n $spinner.addClass('jws-hidden');\r\n\r\n $step1.addClass('jws-hidden');\r\n $step2.removeClass('jws-hidden');\r\n $successMessage.removeClass('jws-hidden');\r\n\r\n window.jwsdwMediator.publish('updateVerticalScroll');\r\n\r\n window.jwsdwApi.tracking.fireEvent('newsletter', {\r\n 'type': 'newsletterSubscriptionSuccessful'\r\n });\r\n window.dataLayer = window.dataLayer || [];\r\n window.dataLayer.push({\r\n 'event': 'ce.misc',\r\n 'eventCategory': 'Misc',\r\n 'eventAction': 'Newsletter',\r\n 'eventLabel': 'signup',\r\n 'eventValue': undefined,\r\n 'nonInteraction': false\r\n });\r\n return data;\r\n }\r\n\r\n /**\r\n * @description Method to execute if address was not handled successfully\r\n * @param {object} data the response data\r\n * @returns {void}\r\n */\r\n function newsletterSignupErrorCallback (data) {\r\n $button.prop('disabled', false);\r\n $buttonText.removeClass('jwsdw-invisible');\r\n $spinner.addClass('jws-hidden');\r\n\r\n $step1.addClass('jws-hidden');\r\n $step2.removeClass('jws-hidden');\r\n\r\n window.grecaptcha.reset();\r\n window.jwsdwMediator.publish('updateVerticalScroll');\r\n\r\n if (data.hasOwnProperty('error') && data.error.hasOwnProperty('errorFields')) {\r\n invalidateFields($newsletterSignup, data.error.errorFields);\r\n } else {\r\n $('.jwsdw-newsletterSignup-errorMessage').text(data.message);\r\n $generalErrorMessage.removeClass('jws-hidden');\r\n }\r\n }\r\n\r\n /**\r\n * @description Method to execute after the ajax call is made\r\n * @returns {void}\r\n */\r\n function newsletterSignupCompleteCallback () {\r\n var $captcha = $newsletterSignupForm.find('.g-recaptcha');\r\n\r\n if (window.jwsdwRecaptchaSettings.captchaDisabled === false) {\r\n window.grecaptcha.reset(window.jwsdwRecaptcha[$captcha.attr('id')]);\r\n }\r\n }\r\n\r\n $newsletterSignupForm.submit(function (event) {\r\n formSubmit.call(\r\n this,\r\n event,\r\n newsletterSignupSuccessCallback,\r\n newsletterSignupErrorCallback,\r\n newsletterSignupBeforeSendCallback,\r\n newsletterSignupCompleteCallback\r\n );\r\n });\r\n\r\n $newsletterSignup.find('a[href*=\"newsletter\"]').click(function(e) {\r\n e.preventDefault();\r\n reset();\r\n });\r\n}(jQuery));\r\n"],"names":["$","xhr","$formElement","validator","setDefaults","groups","date","rules","email","invalidvalue","customemail","dateOfBirth","checkDate","validate","submit","e","$form","this","$captcha","find","$submitButton","submitFormHandler","form","$err","window","jwsdwRecaptchaSettings","captchaDisabled","jwsdwUtil","captcha","getResponse","attr","length","setTimeout","addClass","removeClass","ajax","contentType","type","url","data","serialize","done","response","html","test","jwsdwApi","tracking","fireEvent","dataLayer","push","event","eventCategory","eventAction","eventLabel","eventValue","undefined","nonInteraction","fail","message","app","resources","SERVER_CONNECTION_ERROR","responseJSON","details","text","always","grecaptcha","reset","jwsdwRecaptcha","removeAttr","preventDefault","valid","readyState","execute","then","jQuery","$newsletterSignup","$newsletterSignupForm","$step1","$step2","$successMessage","$generalErrorMessage","$invalidFieldsErrorMessage","$button","$buttonText","$spinner","newsletterSignupBeforeSendCallback","prop","newsletterSignupSuccessCallback","hasOwnProperty","status","jwsdwMediator","publish","newsletterSignupErrorCallback","errorFields","errorFieldsObj","error","forEach","field","showErrors","newsletterSignupCompleteCallback","subscribe","formSubmit","successCallback","errorCallback","beforeSendCallback","fieldsToSend","$this","beforeSend","success","method","call","click"],"mappings":"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"}