{"version":3,"sources":["webpack:///./assets/javascripts/modules/components/ShowPasswordComponent.js","webpack:///./assets/javascripts/modules/components/RegistrationComponent.js","webpack:///./assets/javascripts/modules/businessLogic/RegisterLogic.js"],"names":["ShowPasswordComponent","_classCallCheck","this","_possibleConstructorReturn","__proto__","Object","getPrototypeOf","call","Component","main","passwordVisible","_this2","$on","_ref","event","preventDefault","input","currentTarget","parentElement","querySelector","inputType","getAttribute","value","setAttribute","classList","add","CLASSES","remove","SELECTORS","log","bindEvents","RegistrationComponent","clickRadioEvent","$","radioNewsletterSelector","attr","radioNewsletterContent","removeClass","enableSubmitButton","isDateInputValid","_get","prototype","RegisterLogic","render","bindClickPrivacy","bindClickRadioProfiling","bindClickRadioNewsletter","bindTracking","onDateInputChange","registerForm","document","doRegister","ctx","on","isRadioInputSelected","isEnabled","buttonSelector","prop","filter","index","element","checked","length","body","dataset","template","genericData","serializeArray","param7","find","gd","name","param7Elem","siblings","hasClass","e","console","error","radioProfilingSelector","clickRadioProfiling","clickRadioNewsletter","bind","is","addClass","querySelectorAll","newsletter","forEach","toggle","addEventListener","toggleSubmitTracking","formSubmit","trackingAction","doRegisterTracking","stopPropagation","target","form","_this3","endpoint","payload","serialize","ajax","method","url","data","dataType","success","response","res","DOMParser","parseFromString","innerHTML","getElementById","trackingComponent","TrackingComponent","params","getTrackingPayloadData","actions","register","window","scrollTo","$clickedElem","$clickedElemParent","parent","$container","radioProfilingContent","formPreference","updatePreference","$this","$form","closest","currentNewsletterProfiling","val","currentNewsletter","newsletterProfiling","privacy","type","new-form-privacy","done","resp","fail","xhr"],"mappings":"wWAEqBA,cAcnB,SAAAA,IAAc,mGAAAC,CAAAC,KAAAF,oKAAAG,CAAAD,MAAAF,EAAAI,WAAAC,OAAAC,eAAAN,IAAAO,KAAAL,0UAdmCM,6CAG/C,OACEC,KAAM,oDAKR,OACEC,gBAAiB,mEAQR,IAAAC,EAAAT,KACXA,KAAKU,IAAI,QAAS,SAAAC,GAAa,IAAXC,EAAWD,EAAXC,MAClBA,EAAMC,iBACN,IAAMC,EAAQF,EAAMG,cAAcC,cAAcC,cAAc,SACxDC,EAAYJ,EAAMK,aAAa,QAErC,GAAKL,EAAMM,MAEX,OAAQF,GACN,IAAK,WACHJ,EAAMO,aAAa,OAAQ,QAC3BT,EAAMG,cAAcO,UAAUC,IAAId,EAAKe,QAAQhB,iBAC/C,MACF,IAAK,OACHM,EAAMO,aAAa,OAAQ,YAC3BT,EAAMG,cAAcO,UAAUG,OAAOhB,EAAKe,QAAQhB,mBAGrD,OAAQR,KAAK0B,UAAUnB,uCAI1BP,KAAK2B,IAAI,gBACT3B,KAAK4B,sBAzCY9B,kWCGA+B,grBAA8BvB,yDA2B/CuB,EAAsBC,gBAAgBC,EAAE/B,OACxC+B,KAAKF,EAAsBH,UAAUM,yBAA2BC,KAAK,YAAY,GACjFF,KAAKF,EAAsBH,UAAUQ,wBAA0BC,YAAY,+DAI3EN,EAAsBC,gBAAgBC,EAAE/B,OACxCA,KAAKoC,mBAAmBpC,KAAKqC,gTAI7BC,CAAAT,EAAAU,UAAArC,WAAAC,OAAAC,eAAAyB,EAAAU,WAAA,SAAAvC,MAAAK,KAAAL,MACAA,KAAKwC,cAAgB,IAAIA,IAAcxC,MACvCA,KAAKwC,cAAcC,SACnBzC,KAAK4B,kDAIL5B,KAAK0C,mBACL1C,KAAK2C,0BACL3C,KAAK4C,2BACL5C,KAAK6C,eACL7C,KAAK8C,oBACL9C,KAAK+C,aAAeC,SAAS/B,cAAc,iBACxCjB,KAAK+C,cACN/C,KAAKiD,yDAKP,IAAMC,EAAMlD,KACZ+B,EAAE,wBAAwBoB,GAAG,QAAS,WACpCD,EAAId,mBAAmBc,EAAIb,oBAAsBa,EAAIE,qEAItCC,GACjBtB,EAAEF,EAAsBH,UAAU4B,gBAAgBC,KAAK,YAAaF,kDAKpE,OADYtB,EAAEF,EAAsBH,UAAUM,yBACjCwB,OAAO,SAASC,EAAOC,GACb,OAA2B,IAApBA,EAAQC,UAChBC,OAAS,6CAI/B,GAAuC,sBAAnCZ,SAASa,KAAKC,QAAQC,SACxB,OAAO,EAGT,IAAMC,EAAcjC,EAAE,oBAAoBkC,iBAC1C,IACE,IAAIC,EAASF,EAAYG,KAAK,SAAAC,GAAA,MAAkB,WAAZA,EAAGC,OAEnCC,GADQvC,EAAEF,EAAsBH,UAAUM,yBAC7BD,EAAE,yCAAyCwC,SAAS,UACrE,OAAwB,OAAjBL,EAAO9C,OAAkB8C,EAAO9C,MAAMwC,OAAS,IAAMU,EAAWE,SAAS,SACjF,MAAMC,GAEL,OADAC,QAAQC,MAAMF,IACP,qDAKTzE,KAAK2B,IAAI,oCACTI,EAAEiB,UAAUG,GACV,QADF,GAEKtB,EAAsBH,UAAUkD,0BAEnC5E,KAAK6E,wEAKP7E,KAAK2B,IAAI,qCACTI,EAAEiB,UAAUG,GACV,QADF,GAEKtB,EAAsBH,UAAUM,wBACnChC,KAAK8E,qBAAqBC,KAAK/E,kDAKjC+B,EAAE,QAAQoB,GAAG,cAAe,uBAAwB,WAC9CpB,EAAE/B,MAAMgF,GAAG,aACbjD,EAAE,6BAA6BE,KAAK,YAAY,GAChDF,EAAE,yBAAyBI,YAAY,kBAEvCJ,EAAE,6BAA6BwB,KAAK,WAAW,GAC/CxB,EAAE,8BAA8BwB,KAAK,WAAW,GAChDxB,EAAE,6BAA6BE,KAAK,YAAY,GAChDF,EAAE,8BAA8BE,KAAK,YAAY,GACjDF,EAAE,qBAAqBI,YAAY,UAAU8C,SAAS,UACtDlD,EAAE,yBAAyBkD,SAAS,gBACpClD,EAAE,0BAA0BkD,SAAS,gBACrClD,EAAE,qBAAqBE,KAAK,YAAY,6CAM/B,IAAAxB,EAAAT,KACIgD,SAASkC,iBAAiBrD,EAAsBH,UAAUyD,YAChEC,QAAQ,SAAAC,GACjBA,EAAOC,iBAAiB,QAAS,kBAAM7E,EAAK8E,qBAAqBF,oDAIhDA,GACnB,IAAIG,EAAaxC,SAAS/B,cAAcY,EAAsBH,UAAU4B,gBAEpD,OAAjB+B,EAAOjE,cACDoE,EAAW1B,QAAQ2B,eAER,QAAjBJ,EAAOjE,QACRoE,EAAW1B,QAAQ2B,eAAiB,4DAKtC,IAAIvC,EAAMlD,KACVgD,SAASsC,iBAAiB,iBAAkB,WAC1CpC,EAAIwC,mBAAmBxC,EAAIH,gBAE7B/C,KAAK+C,aAAauC,iBAAiB,SAAU,SAASb,GACpDA,EAAE5D,iBACF4D,EAAEkB,kBACFzC,EAAIwC,mBAAmBjB,EAAEmB,qDAIVC,GAAM,IAAAC,EAAA9F,KAEnB+F,EAAWF,EAAK1E,aAAa,UAC7B6E,EAAUjE,EAAE8D,GAAMI,YACtBlE,EAAEmE,MACAC,OAAQ,OACRC,IAAKL,EACLM,KAAML,EACNM,SAAU,OACVC,QAAS,SAACC,GACR,IAAIC,GAAM,IAAIC,WAAYC,gBAAgBH,EAAU,aACpDxD,SAAS/B,cAAc,QAAQ2F,UAAYH,EAAIxF,cAAc,QAAQ2F,UACrE,IAAIf,EAAO7C,SAAS6D,eAAe,gBAC4B,MAA3DhB,EAAK5E,cAAc,uCAEP,MADA4E,EAAK5E,cAAc,sCACoC,MAA/C4E,EAAK5E,cAAc,0BACvC4E,EAAK5E,cAAc,yBAAyBQ,UAGhD,GAAGgF,EAAIxF,cAAc,wBAAyB,CAC5C,IAAI6F,EAAoB,IAAIC,UACxBC,EAASF,EAAkBG,uBAAuBR,GAAK,GAC3DK,EAAkBI,QAAQC,SAASH,OAC9B,CACLlB,EAAKlE,cACuB,IAAI9B,WACV2C,SAExB2E,OAAOC,SAAS,EAAG,gDA9KFC,GACrB,IAAIC,EAAqBD,EAAaE,SAClCC,EAAaH,EAAaE,SAASA,SAEvCC,EAAWtD,KAAK,kBAAkBlC,KAAK,WAAW,GAClDwF,EAAWtD,KAAK,SAAShC,YAAY,YACrCsF,EAAWtD,KAAK,kBAAkBhC,YAAY,YAE9CoF,EAAmBtC,SAAS,YAC5BqC,EAAarC,SAAS,YACtBqC,EAAarF,KAAK,WAAW,qCApB7B,OACE2C,uBAAwB,4BACxB5C,wBAAyB,6BACzB0F,sBAAuB,wBACvBxF,uBAAwB,yBACxBoB,eAAgB,oBAChB6B,WAAY,8BATGtD,mVCHAW,cAOnB,SAAAA,IAAc,mGAAAzC,CAAAC,KAAAwC,oKAAAvC,CAAAD,MAAAwC,EAAAtC,WAAAC,OAAAC,eAAAoC,IAAAnC,KAAAL,0UAP2BM,6CAEvC,OACEqH,eAAgB,mEASlB3H,KAAKU,IAAI,QAASV,KAAK4H,iBAAkB,OAAQ5H,KAAK0B,UAAUiG,eAAgB3H,+CAGjEyE,GACfA,EAAE7D,MAAMC,iBACI4D,EAAE7D,MAAMyF,KAApB,IACIwB,EAAQ9F,EAAE0C,EAAE7D,MAAMG,eAEhB+G,EAAQD,EAAME,QAAQ,QACtBC,EAA6BF,EAAM3D,KAAK,uCAAuC8D,MAC/EC,EAAoBJ,EAAM3D,KAAK,8BAA8B8D,MAE7DE,EAAqBL,EAAM3D,KAAK,wCAAwC8D,MACxE9C,EAAa2C,EAAM3D,KAAK,+BAA+B8D,MACvDG,EAAUN,EAAM3D,KAAK,wBAAwBa,GAAG,YAEtDjD,EAAEmE,MACAE,IAAKyB,EAAMxB,KAAK,QAChBgC,KAAM,OACNhC,MACEiC,oBAAoB,EACpBN,2BAA4BA,EAC5BE,kBAAmBA,EACnBC,oBAAqBA,EACrBhD,WAAYA,EACZiD,QAASA,KAEVG,KAAK,SAAUC,GAChBzG,EAAE,kBAAkBI,YAAY,YAC/BsG,KAAK,SAAUC,GAChBhE,QAAQ/C,IAAI+G,sCAKd1I,KAAK2B,IAAI,kBACT3B,KAAK4B,sBAhDYY","file":"components-RegistrationComponent.chunks.js","sourcesContent":["import Component from '../abstracts/Component';\n\nexport default class ShowPasswordComponent extends Component {\n\n get SELECTORS() {\n return {\n main: '.toggle-password',\n };\n }\n\n get CLASSES() {\n return {\n passwordVisible: 'is-password-visible'\n };\n }\n\n constructor() {\n super();\n }\n\n bindEvents() {\n this.$on('click', ({event}) => {\n event.preventDefault();\n const input = event.currentTarget.parentElement.querySelector('input');\n const inputType = input.getAttribute('type');\n\n if (!input.value) return;\n\n switch (inputType) {\n case 'password':\n input.setAttribute('type', 'text');\n event.currentTarget.classList.add(this.CLASSES.passwordVisible);\n break;\n case 'text':\n input.setAttribute('type', 'password');\n event.currentTarget.classList.remove(this.CLASSES.passwordVisible);\n break;\n }\n }, 'body', this.SELECTORS.main);\n }\n\n render() {\n this.log(\"Rendering...\")\n this.bindEvents();\n }\n}\n","import Component from '../abstracts/Component';\nimport RegisterLogic from '../businessLogic/RegisterLogic';\nimport TrackingComponent from '../components/TrackingComponent';\nimport ShowPasswordComponent from '../components/ShowPasswordComponent';\n\nexport default class RegistrationComponent extends Component {\n\n static get SELECTORS() {\n return {\n radioProfilingSelector: \".js-radiobutton-profiling\",\n radioNewsletterSelector: \".js-radiobutton-newsletter\",\n radioProfilingContent: \".js-content-profiling\",\n radioNewsletterContent: \".js-content-newsletter\",\n buttonSelector: \".js-button-submit\",\n newsletter: '[name=newsletter]'\n };\n }\n\n static clickRadioEvent($clickedElem) {\n let $clickedElemParent = $clickedElem.parent();\n let $container = $clickedElem.parent().parent();\n\n $container.find(\"input.selected\").attr(\"checked\", false);\n $container.find(\"label\").removeClass(\"selected\");\n $container.find(\"input.selected\").removeClass(\"selected\");\n\n $clickedElemParent.addClass(\"selected\");\n $clickedElem.addClass(\"selected\");\n $clickedElem.attr('checked', true);\n }\n\n clickRadioProfiling() {\n RegistrationComponent.clickRadioEvent($(this));\n $(`${RegistrationComponent.SELECTORS.radioNewsletterSelector}`).attr('disabled', false);\n $(`${RegistrationComponent.SELECTORS.radioNewsletterContent}`).removeClass('disable-step');\n }\n\n clickRadioNewsletter() {\n RegistrationComponent.clickRadioEvent($(this));\n this.enableSubmitButton(this.isDateInputValid());\n }\n\n render() {\n super.render();\n this.RegisterLogic = new RegisterLogic(this);\n this.RegisterLogic.render();\n this.bindEvents();\n }\n\n bindEvents() {\n this.bindClickPrivacy();\n this.bindClickRadioProfiling();\n this.bindClickRadioNewsletter();\n this.bindTracking();\n this.onDateInputChange();\n this.registerForm = document.querySelector('#registerForm');\n if(this.registerForm) {\n this.doRegister();\n }\n }\n\n onDateInputChange() {\n const ctx = this;\n $('input[name=\"param7\"]').on('input', function () {\n ctx.enableSubmitButton(ctx.isDateInputValid() && ctx.isRadioInputSelected());\n });\n }\n\n enableSubmitButton(isEnabled) {\n $(RegistrationComponent.SELECTORS.buttonSelector).prop('disabled', !isEnabled);\n }\n\n isRadioInputSelected() {\n var radio = $(RegistrationComponent.SELECTORS.radioNewsletterSelector);\n return radio.filter(function(index, element) {\n return element.checked === true;\n }).length > 0;\n }\n\n isDateInputValid() {\n if (document.body.dataset.template !== 't-data-enrichment') {\n return true;\n }\n\n const genericData = $('#data-enrichment').serializeArray()\n try{\n var param7 = genericData.find(gd => gd.name === 'param7');\n var radio = $(RegistrationComponent.SELECTORS.radioNewsletterSelector);\n var param7Elem = $('#data-enrichment input[name=\"param7\"]').siblings(\"input\");\n return param7.value !== null && param7.value.length > 0 && !param7Elem.hasClass(\"error\");\n }catch(e){\n console.error(e);\n return true;\n }\n }\n\n bindClickRadioProfiling() {\n this.log(\"Binding click on radio profiling\");\n $(document).on(\n 'click',\n `${RegistrationComponent.SELECTORS.radioProfilingSelector}`,\n {},\n this.clickRadioProfiling\n );\n }\n\n bindClickRadioNewsletter() {\n this.log(\"Binding click on radio newsletter\");\n $(document).on(\n 'click',\n `${RegistrationComponent.SELECTORS.radioNewsletterSelector}`,\n this.clickRadioNewsletter.bind(this)\n );\n }\n\n bindClickPrivacy() {\n $('body').on('change.mmfg', '.js-register-privacy', function () {\n if ($(this).is(':checked')) {\n $('.js-radiobutton-profiling').attr('disabled', false);\n $('.js-content-profiling').removeClass('disable-step');\n } else {\n $('.js-radiobutton-profiling').prop('checked', false);\n $('.js-radiobutton-newsletter').prop('checked', false);\n $('.js-radiobutton-profiling').attr('disabled', true);\n $('.js-radiobutton-newsletter').attr('disabled', true);\n $('.js-privacy-alert').removeClass('d-none').addClass('d-none');\n $('.js-content-profiling').addClass('disable-step');\n $('.js-content-newsletter').addClass('disable-step');\n $('.js-button-submit').attr('disabled', true);\n }\n });\n //$('.js-button-submit').attr('disabled', true);\n }\n\n bindTracking() {\n let newsletter = document.querySelectorAll(RegistrationComponent.SELECTORS.newsletter);\n newsletter.forEach(toggle => {\n toggle.addEventListener('click', () => this.toggleSubmitTracking(toggle));\n });\n }\n\n toggleSubmitTracking(toggle) {\n let formSubmit = document.querySelector(RegistrationComponent.SELECTORS.buttonSelector);\n\n if(toggle.value === 'no') {\n delete formSubmit.dataset.trackingAction;\n }\n if(toggle.value === 'yes') {\n formSubmit.dataset.trackingAction = 'newsletterSubscribe';\n }\n }\n\n doRegister() {\n let ctx = this;\n document.addEventListener(\"captcha:submit\", () => {\n ctx.doRegisterTracking(ctx.registerForm);\n })\n this.registerForm.addEventListener(\"submit\", function(e) {\n e.preventDefault();\n e.stopPropagation();\n ctx.doRegisterTracking(e.target);\n });\n }\n\n doRegisterTracking(form) {\n let ctx = this;\n let endpoint = form.getAttribute('action');\n let payload = $(form).serialize();\n $.ajax({\n method: 'POST',\n url: endpoint,\n data: payload,\n dataType: 'html',\n success: (response) => {\n let res = new DOMParser().parseFromString(response, 'text/html');\n document.querySelector(\"html\").innerHTML = res.querySelector(\"html\").innerHTML;\n var form = document.getElementById(\"registerForm\");\n if (form.querySelector('[data-key=\"register.pwd.invalid\"]') != null) {\n var dataKey = form.querySelector('[data-key=\"register.pwd.invalid\"]');\n if(dataKey != null && form.querySelector(\".register-pwd-invalid\") != null) {\n form.querySelector(\".register-pwd-invalid\").remove();\n }\n }\n if(res.querySelector(\"[data-thanks='true']\")) {\n let trackingComponent = new TrackingComponent();\n let params = trackingComponent.getTrackingPayloadData(res, true);\n trackingComponent.actions.register(params);\n } else {\n this.bindEvents();\n let showPasswordComponent = new ShowPasswordComponent();\n showPasswordComponent.render();\n }\n window.scrollTo(0, 0);\n }\n });\n }\n\n}\n","import Component from '../abstracts/Component';\n\nexport default class RegisterLogic extends Component {\n get SELECTORS() {\n return {\n formPreference: '.js-preference-form',\n };\n }\n\n constructor() {\n super();\n }\n\n bindEvents() {\n this.$on('click', this.updatePreference, 'body', this.SELECTORS.formPreference, this);\n }\n\n updatePreference(e) {\n e.event.preventDefault();\n const ctx = e.event.data;\n let $this = $(e.event.currentTarget);\n\n const $form = $this.closest('form');\n const currentNewsletterProfiling = $form.find(\"[name='currentNewsletterProfiling']\").val();\n const currentNewsletter = $form.find(\"[name='currentNewsletter']\").val();\n\n const newsletterProfiling =$form.find(\"[name='newsletterProfiling']:checked\").val();\n const newsletter = $form.find(\"[name='newsletter']:checked\").val();\n const privacy = $form.find(\".js-register-privacy\").is(':checked');\n\n $.ajax({\n url: $this.data('href'),\n type: 'POST',\n data: {\n 'new-form-privacy': true,\n currentNewsletterProfiling: currentNewsletterProfiling,\n currentNewsletter: currentNewsletter,\n newsletterProfiling: newsletterProfiling,\n newsletter: newsletter,\n privacy: privacy\n },\n }).done(function (resp) {\n $('.alert-success').removeClass(\"d-none\");\n }).fail(function (xhr) {\n console.log(xhr);\n });\n }\n\n render() {\n this.log('Load logics...');\n this.bindEvents();\n }\n}\n"],"sourceRoot":""}