{"version":3,"sources":["webpack:///webpack/bootstrap 04b84c8e21d6ecfb2423?78fc****","webpack:///./assets/scripts/careersCV.js","webpack:///./assets/scripts/util/formErrors.js"],"names":["currenttop","$","obj","element","event","typedCharacters","maxLenght","subText","textArea","$form","attachmentBtn","updateCharactersLabel","className","formHelpers","CareersCV","form","googleRecaptchaClientSide","document","grecaptcha","action","setInterval","attachmentInput","arrow","formContainer","window","top","findPosition","behavior","resetCareersForm","successMsgText","attachment_label","attachmentBtnParent","observer","mutations","errorField","successMsg","profilingLabel","profilingContent","messageArea","emojisRegExp","target","button","sizeData","Math","$label","errorMsg","closeBtn","e","submitBtn","url","type","data","dataType","headers","success","setTimeout","errors","markedinvalid","scrollTop","popupSuccess","error","popupError","careersCV","module","field","trackErrors","errorList","message","clearPreviousErrors","parentSelector"],"mappings":"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","file":"careersCV.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 04b84c8e21d6ecfb2423","'use strict';\r\n\r\nvar formHelpers = require('./util/formErrors');\r\n\r\nfunction findPosition (obj) {\r\n    var currenttop = $('.header')[0].offsetHeight;\r\n    if (obj.offsetTop) {\r\n        currenttop = obj.offsetTop - currenttop;\r\n        return [currenttop];\r\n    }\r\n}\r\n\r\nfunction updateCharactersLabel(event) {\r\n    /**\r\n     * Count the number of characters typed.\r\n     */\r\n    var element = event.target ? event.target : event;\r\n    const typedCharacters = element.value.length;\r\n    const maxLenght = element.attributes['maxlength'].value;\r\n\r\n    if (typedCharacters > maxLenght) {\r\n        event.preventDefault();\r\n    }else{\r\n        let subText = $('.left-char');\r\n        subText.each(function (item) {\r\n            subText[item].innerText = maxLenght - typedCharacters;\r\n        });\r\n    }\r\n}\r\n\r\nfunction resetCareersForm($form){\r\n    var textArea = $form.find('#message')[0];\r\n    var attachmentBtn = $form.find('.attachment-load-button');\r\n\r\n    $form[0].reset()\r\n    updateCharactersLabel(textArea);\r\n\r\n    $form.find('[class$=\"valid-label\"]').removeClass (function (index, className) {\r\n        return className.match(/\\S+(valid-label)/g);\r\n    });\r\n    $form.find('[class$=\"valid-input\"]').removeClass (function (index, className) {\r\n        return className.match(/\\S+(valid-input)/g);\r\n    });\r\n    $form.parsley().reset();\r\n\r\n    $('.success-load-msg').remove();\r\n    attachmentBtn.find('.delete-file').removeClass('show');\r\n    attachmentBtn.find('.load-file').show();\r\n    attachmentBtn.find('.file-name')[0].innerText = null;\r\n}\r\n\r\nclass CareersCV {\r\n    constructor() {\r\n        this.closeform = $('.careers-form-header .close-button');\r\n        this.accordion = $('.careers-icon.accordion');\r\n\r\n        this.careersForm = $('.careers-form');\r\n\r\n        this.textAreaElement = $('.careers-form #message');\r\n        this.attachmentInput = $('.careers-form #attachment');\r\n        this.attachmentBtn = $('.attachment-load-button');\r\n\r\n        this.profilingLabel = $('.careers-form #profiling').parent();\r\n    }\r\n\r\n    run() {\r\n        var form = this.careersForm;\r\n\r\n        $(document).ready(() => {\r\n            this.careers();\r\n            this.dimensionFileControl();\r\n            this.typingControl();\r\n            this.attachmentValidation();\r\n            this.profilingValidation();\r\n            this.formVisibility();\r\n            this.deleteFile();\r\n        });\r\n\r\n        const googleRecaptchaClientSide = document.querySelector('input[name=\"googleRecaptchaClientSide\"]');\r\n        if (googleRecaptchaClientSide) {\r\n            grecaptcha.ready(function () {\r\n                grecaptcha.execute(googleRecaptchaClientSide.value, { action: 'submit' }).then(function (token) {\r\n                    form.prepend(`<input type=\"hidden\" name=\"googleRecaptchaToken\" value=\"${token}\">`);\r\n                    form.prepend('<input type=\"hidden\" name=\"googleRecaptchaAction\" value=\"newsletter_form\">');\r\n                });\r\n                setInterval(function () {\r\n                    grecaptcha.execute(googleRecaptchaClientSide.value, { action: 'submit' }).then(function (token) {\r\n                        $('input[name=googleRecaptchaToken]').val(token);\r\n                    });\r\n                }, 90000); // tokens gets marked as expired after 2 mins https://github.com/google/recaptcha/issues/302\r\n            });\r\n        }\r\n    }\r\n\r\n    deleteFile(){\r\n        let attachmentInput = this.attachmentInput[0];\r\n        let attachmentBtn = this.attachmentBtn;\r\n\r\n        $('.delete-file').on('click', function () {\r\n            attachmentInput.value = '';\r\n            attachmentBtn.find('.file-name')[0].innerText = null;\r\n\r\n            $('.success-load-msg').remove();\r\n            $('.delete-file').removeClass('show');\r\n            $('.load-file').show();\r\n        });\r\n    }\r\n\r\n    formVisibility() {\r\n        var $form = this.careersForm;\r\n\r\n        this.accordion.add(this.closeform).on('click', function (){\r\n            let arrow = $('.careers-icon.accordion .arrow');\r\n            let formContainer = $('.careers-form-container');\r\n\r\n            if(arrow.hasClass('down')){\r\n                formContainer.show();\r\n                arrow.removeClass('down');\r\n                arrow.addClass('up');\r\n                window.scrollTo({\r\n                    top: findPosition(formContainer[0]),\r\n                    behavior: 'smooth',\r\n                })\r\n\r\n            }else{\r\n                formContainer.hide();\r\n                arrow.removeClass('up');\r\n                arrow.addClass('down');\r\n                resetCareersForm($form);\r\n            }\r\n        });\r\n    }\r\n\r\n    attachmentValidation(){\r\n\r\n        const attachmentInput = this.attachmentInput;\r\n        var successMsgText = attachmentInput.attr('data-load-success-message');\r\n        var attachment_label = $('.attachment-header label');\r\n        var attachmentBtn = this.attachmentBtn;\r\n        var attachmentBtnParent = attachmentBtn.parent();\r\n\r\n        // create an observer instance\r\n        var observer = new MutationObserver(function(mutations) {\r\n            if(mutations.length > 0){\r\n\r\n                if(attachmentInput.hasClass('is-invalid-input')){\r\n\r\n                    var errorField = attachmentInput.siblings('.errors-list');\r\n                    attachment_label.removeClass('is-valid-label');\r\n                    attachmentBtn.removeClass('is-valid-input');\r\n                    attachment_label.addClass('is-invalid-label');\r\n                    attachmentBtn.addClass('is-invalid-input');\r\n                    attachmentInput.removeClass('is-valid-input');\r\n                    $('.success-load-msg').remove();\r\n\r\n                    if(attachmentBtnParent.find('.errors-list').length > 0 && errorField.length > 0){\r\n                        attachmentBtnParent.find('.errors-list').remove();\r\n                    }\r\n\r\n                    attachmentBtnParent.append(errorField);\r\n                    attachmentInput[0].value = ''; //to delete the file in filelist\r\n\r\n                }else if(attachmentInput.hasClass('is-valid-input')){\r\n\r\n                    attachment_label.removeClass('is-invalid-label');\r\n                    attachmentBtn.removeClass('is-invalid-input');\r\n                    attachment_label.addClass('is-valid-label');\r\n                    attachmentBtn.addClass('is-valid-input');\r\n                    attachmentInput.removeClass('is-invalid-input');\r\n\r\n                    const successMsg = `<div class=\"success-load-msg\"><span>${successMsgText}</span></div>`;\r\n                    attachmentBtn.parent().append(successMsg);\r\n\r\n                    $('.attachment-group .errors-list').remove();\r\n                    attachmentBtn.find('.load-file').hide();\r\n                    attachmentBtn.find('.delete-file').addClass('show');\r\n\r\n                }else{\r\n                    attachment_label.removeClass('is-invalid-label');\r\n                    attachmentBtn.removeClass('is-invalid-input');\r\n                    attachment_label.addClass('is-valid-label');\r\n                    attachmentBtn.addClass('is-valid-input');\r\n                    $('.attachment-group .errors-list').remove();\r\n                }\r\n            }\r\n        });\r\n\r\n        var config = { attributes: true, childList: true, characterData: true };\r\n\r\n        observer.observe(attachmentInput[0], config);\r\n\r\n    }\r\n\r\n    profilingValidation(){\r\n\r\n        const profilingLabel = this.profilingLabel;\r\n        var profilingContent = profilingLabel.siblings('.privacy-content-asset');\r\n        \r\n        // create an observer instance\r\n        var observer = new MutationObserver(function(mutations) {\r\n            if(mutations.length > 0){\r\n\r\n                if(profilingLabel.hasClass('is-invalid-input')){\r\n                    profilingContent.addClass('is-invalid-input');\r\n                }else if(profilingLabel.hasClass('is-valid-input')){\r\n                    profilingContent.removeClass('is-invalid-input');\r\n                }\r\n            }\r\n        });\r\n\r\n        var config = { attributes: true, childList: true, characterData: true };\r\n\r\n        observer.observe(profilingLabel[0], config);\r\n\r\n    }\r\n\r\n    typingControl(){\r\n        const messageArea = this.textAreaElement;\r\n        this.textAreaElement.on(\"keyup\", (event) => {\r\n            const emojisRegExp = /([\\u2700-\\u27BF]|[\\uE000-\\uF8FF]|\\uD83C[\\uDC00-\\uDFFF]|\\uD83D[\\uDC00-\\uDFFF]|[\\u2011-\\u26FF]|\\uD83E[\\uDD10-\\uDDFF])/g;\r\n            messageArea.val(messageArea.val().replace(/\\n/g,\"\").replace(new RegExp(emojisRegExp), ''));\r\n            updateCharactersLabel(event);\r\n        });\r\n    }\r\n\r\n    dimensionFileControl(){\r\n\r\n        const attachmentInput = this.attachmentInput;\r\n        var attachmentBtn = this.attachmentBtn;\r\n\r\n        attachmentInput.on('change', (event) => {\r\n            const target = event.target\r\n            if (target.files && target.files[0]) {\r\n\r\n                let button = this.careersForm.find('button');\r\n                $(button).attr('disabled', false);\r\n\r\n                /*Maximum allowed size in bytes\r\n                  1MB Example\r\n                  Change first operand(multiplier) for your needs*/\r\n                var sizeData = Math.floor($(target).attr('data-max-size'));\r\n                var maxAllowedSize = Number(sizeData + '000000' ) ; //to convert in MB the number setted in custom preference\r\n\r\n                $('.attachment-group .errors-list').remove();\r\n\r\n                var fileExtension = ['pdf'];\r\n                if ($.inArray(target.files[0].name.split('.').pop().toLowerCase(), fileExtension) >= 0) {\r\n                    if (target.files[0].size > maxAllowedSize) {\r\n\r\n                        const $label = $('.attachment-header label');\r\n                        const errorMsg = `<div class=\"errors-list filled\"><span class=\"form-error is-visible\">${$(target).attr('data-size-error-message')}</span></div>`;\r\n                        $(target).addClass('is-invalid-input');\r\n\r\n                        $label.addClass('is-invalid-label');\r\n                        attachmentBtn.parent().append(errorMsg);\r\n                        attachmentBtn.find('.load-file').show();\r\n                        attachmentBtn.find('.delete-file').removeClass('show');\r\n\r\n                    }else{\r\n                        attachmentBtn.find('.file-name')[0].innerText = target.files[0].name;\r\n                        attachmentInput.removeClass('is-invalid-input');\r\n                        attachmentBtn.find('.load-file').hide();\r\n                        attachmentBtn.find('.delete-file').addClass('show');\r\n                    }\r\n                }else{\r\n                    const $label = $('.attachment-header label');\r\n                    const errorMsg = `<div class=\"errors-list filled\"><span class=\"form-error is-visible\">${$(target).attr('data-extension-error-message')}</span></div>`;\r\n                    $(target).addClass('is-invalid-input');\r\n\r\n                    $label.addClass('is-invalid-label');\r\n                    attachmentBtn.parent().append(errorMsg);\r\n                    attachmentBtn.find('.load-file').show();\r\n                    attachmentBtn.find('.delete-file').removeClass('show');\r\n                }\r\n            }else{\r\n                attachmentBtn.find('.file-name')[0].innerText = null;\r\n            }\r\n\r\n        })\r\n    }\r\n\r\n    careers() {\r\n        var form = this.careersForm;\r\n        var closeBtn = this.closeform;\r\n\r\n        this.careersForm.submit(function (e) {\r\n            e.preventDefault();\r\n\r\n            const $form = $(e.currentTarget);\r\n            var submitBtn = form.find('button.submit');\r\n            var url = form.attr('action');\r\n\r\n            submitBtn.find('.submit-text').css('opacity', '0');\r\n            submitBtn.find('.loader').addClass('show');\r\n\r\n            $.ajax({\r\n                url: url,\r\n                type: 'POST',\r\n                crossDomain: true,\r\n                data: new FormData(this),\r\n                dataType: \"json\",\r\n                processData: false,\r\n                contentType: false,\r\n                headers: {\r\n                    \"Accept\": \"application/json\"\r\n                },\r\n                success: function (data) {\r\n\r\n                    // reload recaptcha\r\n                    const googleRecaptchaClientSide = document.querySelector('input[name=\"googleRecaptchaClientSide\"]');\r\n                    if (googleRecaptchaClientSide) {\r\n                        grecaptcha.execute(googleRecaptchaClientSide.value, { action: 'submit' }).then(function (token) {\r\n                            $('input[name=googleRecaptchaToken]').val(token);\r\n                        });\r\n                    }\r\n\r\n                    setTimeout(function () {\r\n                        var errors = 0;\r\n\r\n                        if(data.errorFields){\r\n                            for (var key in data.errorFields) {\r\n                                if (data.errorFields.hasOwnProperty(key)) errors++;\r\n                            }\r\n                        }\r\n\r\n                        if (errors > 0 && !data.success) {\r\n\r\n                            submitBtn.attr('disabled', false);\r\n                            formHelpers.loadFormErrors($form, data.errorFields);\r\n\r\n                            var markedinvalid = $('.is-invalid-input');\r\n                            if (markedinvalid.length > 0) {\r\n                                $([document.documentElement, document.body]).animate({\r\n                                    scrollTop: markedinvalid.offset().top - 100\r\n                                }, 1000);\r\n                            }\r\n\r\n                            submitBtn.find('.loader').removeClass('show');\r\n                            submitBtn.find('.submit-text').css('opacity', '1');\r\n\r\n                        } else {\r\n\r\n                            submitBtn.find('.loader').removeClass('show');\r\n                            submitBtn.find('.success-check').addClass('show');\r\n                            submitBtn.addClass('success-submit');\r\n\r\n                            setTimeout(function () {\r\n                                closeBtn.trigger('click');\r\n                                submitBtn.find('.success-check').removeClass('show');\r\n                                submitBtn.removeClass('success-submit');\r\n                                submitBtn.find('.submit-text').css('opacity', '1');\r\n\r\n                                window.scrollTo(0, 0);\r\n\r\n                                let popupSuccess = $('.careers-popup-body-success');\r\n                                popupSuccess.addClass('show');\r\n\r\n                                setTimeout(function () {\r\n                                    popupSuccess.removeClass('show');\r\n                                }, 6000);\r\n\r\n                            }, 3000);\r\n                        }\r\n                    }, 2000);\r\n                },\r\n                error: function (err) {\r\n                    closeBtn.trigger('click');\r\n                    submitBtn.find('.loader').removeClass('show');\r\n                    submitBtn.find('.submit-text').css('opacity', '1');\r\n\r\n                    window.scrollTo(0, 0);\r\n                    let popupError = $('.careers-popup-body-error');\r\n\r\n                    popupError.addClass('show');\r\n                    setTimeout(function () {\r\n                        popupError.removeClass('show');\r\n                    }, 6000);\r\n                }\r\n            });\r\n            return false;\r\n        });\r\n    }\r\n}\r\n\r\nconst careersCV = new CareersCV();\r\ncareersCV.run();\r\n\n\n\n// WEBPACK FOOTER //\n// ./assets/scripts/careersCV.js","function resetErrorList (parentSelector, fieldErrors) { // eslint-disable-line\n  $.each(fieldErrors, (attr) => {\n    const field = $('*[name=' + attr + ']', parentSelector);\n    if (field.length > 0 && field.parsley()) {\n      field.parsley().removeError('error', { updateClass: true });\n    }\n  });\n}\n\n/**\n * Display error messages and highlight form fields with errors.\n * @param {string} parentSelector - the form which contains the fields\n * @param {Object} fieldErrors - the fields with errors\n * @param {Boolean} trackErrors - if true, error GTM trackers are launched with the form validation\n */\nfunction loadFormErrors (parentSelector, fieldErrors, trackErrors) { // eslint-disable-line\n  if (typeof trackErrors === 'undefined') {\n    trackErrors = false;\n  }\n\n  var errorList = [];\n  // Display error messages and highlight form fields with errors.\n  $.each(fieldErrors, (attr) => {\n    const field = $('*[name=' + attr + ']', parentSelector);\n\n    if (field.length > 0) {\n      if (field.parsley()) {\n        field.parsley().removeError('error');\n        field.parsley().addError('error', { message: fieldErrors[attr], updateClass: true });\n      }\n      field.parent('label').removeClass('is-valid-label').addClass('is-invalid-label');\n      errorList.push(field.get(0));\n    }\n  });\n\n  if (errorList.length > 0 && trackErrors) {\n    $(window).trigger('submittedForm:error', { errorList: errorList.slice(0) });\n  }\n}\n\n/**\n * Clear the form errors.\n * @param {string} parentSelector - the parent form selector.\n */\nfunction clearPreviousErrors(parentSelector) {\n  parentSelector.find('.is-invalid-label').removeClass('is-invalid-label');\n  parentSelector.find('.is-invalid-input').removeClass('is-invalid-input');\n  parentSelector.find('.errors-list').remove();\n  parentSelector.find('.parsley-errors-list').remove();\n}\n\nmodule.exports = {\n  resetErrorList: resetErrorList,\n  loadFormErrors: loadFormErrors,\n  clearPreviousErrors: clearPreviousErrors\n};\n\n\n\n// WEBPACK FOOTER //\n// ./assets/scripts/util/formErrors.js"],"sourceRoot":""}