{"version":3,"sources":["webpack:///./assets/javascripts/modules/components/NotifyProductUnavailableComponent.js"],"names":["NotifyProductUnavailableComponent","compEl","_classCallCheck","this","_this","_possibleConstructorReturn","__proto__","Object","getPrototypeOf","call","onAfterOpen","bind","Component","dialogContainer","buttonBackToShopping","buttonBackToShoppingPrimary","buttonShowProductUnavailableForm","productUnavailableNotificationFormContainer","productUnavailableNotificationForm","notifyMessage","notifyError","_this2","$on","$customEvents","MODAL_EVENTS","show","_ref","payload","type","setTimeout","dialogBox","document","querySelector","SELECTORS","formContainer","form","formOpenBtn","formCloseBtns","querySelectorAll","formCloseBtnPrimary","addEventListener","classList","remove","add","forEach","btn","closest","click","e","preventDefault","endpoint","getAttribute","$","serialize","doAjax","url","data","dataType","success","response","innerHTML","error","xhr","responseText","contains","replace","log","bindEvents"],"mappings":"6XAGqBA,cAkBnB,SAAAA,EAAYC,gGAAQC,CAAAC,KAAAH,GAAA,IAAAI,mKAAAC,CAAAF,MAAAH,EAAAM,WAAAC,OAAAC,eAAAR,IAAAS,KAAAN,KACZF,IADY,OAElBG,EAAKM,YAAcN,EAAKM,YAAYC,KAAjBP,GAFDA,qUAlByCQ,iDAE3D,MAAO,sEAIP,OACEC,gBAAiB,0BACjBC,qBAAsB,0BACtBC,4BAA6B,oCAC7BC,iCAAkC,uBAClCC,4CAA6C,qBAC7CC,mCAAoC,0BACpCC,cAAe,wBACfC,YAAa,kEASJ,IAAAC,EAAAlB,KACXA,KAAKmB,IAAInB,KAAKoB,cAAcC,aAAaC,KAAM,SAAAC,GACxB,wBADyCA,EAAdC,QACpCC,MACVC,WAAWR,EAAKX,YAAa,6CAOjC,IAAIoB,EAAYC,SAASC,cAAc7B,KAAK8B,UAAUpB,iBAClDqB,EAAgBJ,EAAUE,cAAc7B,KAAK8B,UAAUhB,6CACvDkB,EAAOL,EAAUE,cAAc7B,KAAK8B,UAAUf,oCAC9CkB,EAAcN,EAAUE,cAAc7B,KAAK8B,UAAUjB,kCACrDqB,EAAgBP,EAAUQ,iBAAiBnC,KAAK8B,UAAUnB,sBAC1DyB,EAAsBT,EAAUE,cAAc7B,KAAK8B,UAAUlB,6BAC7DI,EAAgBW,EAAUE,cAAc7B,KAAK8B,UAAUd,eACvDC,EAAcU,EAAUE,cAAc7B,KAAK8B,UAAUb,aAErC,OAAhBgB,GACFA,EAAYI,iBAAiB,QAAS,WAEpCN,EAAcO,UAAUC,OAAO,UAE/BN,EAAYK,UAAUE,IAAI,UAC1BJ,EAAoBE,UAAUE,IAAI,YAIhB,OAAlBN,GACFA,EAAcO,QAAQ,SAACC,GACrBA,EAAIL,iBAAiB,QAAS,WAC5BV,EAAUgB,QAAQ,QAAQd,cAAc,eAAee,YAM7DZ,EAAKK,iBAAiB,SAAU,SAASQ,GAEvC5B,EAAYqB,UAAUC,OAAO,QAE7BM,EAAEC,iBACF,IAAIC,EAAWf,EAAKgB,aAAa,UAC7BxB,EAAUyB,EAAEjB,GAAMkB,YAEtBC,aACEC,IAAKL,EACLM,KAAM7B,EACN8B,SAAU,OACVC,QAAS,SAACC,GAERxC,EAAcyC,UAAYD,EAC1BxC,EAAcsB,UAAUC,OAAO,UAE/BR,EAAcO,UAAUE,IAAI,UAE5BJ,EAAoBE,UAAUC,OAAO,WAEvCmB,MAAO,SAASC,GACd1C,EAAYwC,UAAYE,EAAIC,aACxB3C,EAAYqB,UAAUuB,SAAS,UACjC5C,EAAYqB,UAAUwB,QAAQ,SAAS,QAEvC7C,EAAYqB,UAAUE,IAAI,8CAUlCxC,KAAK+D,IAAI,gBACT/D,KAAKgE,sBAlGYnE","file":"component-NotifyProductUnavailableComponent.chunks.js","sourcesContent":["import Component from '../abstracts/Component';\nimport { doAjax } from '../utils/ajaxUtil';\n\nexport default class NotifyProductUnavailableComponent extends Component {\n get COMPONENTNAME() {\n return 'NotifyProductUnavailableComponent';\n }\n\n get SELECTORS() {\n return {\n dialogContainer: '.js-product-unavailable',\n buttonBackToShopping: '[data-back-to-shopping]',\n buttonBackToShoppingPrimary: '[data-back-to-shopping=\"primary\"]',\n buttonShowProductUnavailableForm: '[data-notify-button]',\n productUnavailableNotificationFormContainer: '[data-notify-form]',\n productUnavailableNotificationForm: '[data-notify-form] form',\n notifyMessage: '[data-notify-message]',\n notifyError: '[data-mail-errors]',\n };\n }\n\n constructor(compEl) {\n super(compEl);\n this.onAfterOpen = this.onAfterOpen.bind(this);\n }\n\n bindEvents() {\n this.$on(this.$customEvents.MODAL_EVENTS.show, ({ payload }) => {\n if (payload.type === 'product-unavailable') {\n setTimeout(this.onAfterOpen, 1000);\n }\n });\n }\n\n onAfterOpen() {\n // vars\n let dialogBox = document.querySelector(this.SELECTORS.dialogContainer);\n let formContainer = dialogBox.querySelector(this.SELECTORS.productUnavailableNotificationFormContainer);\n let form = dialogBox.querySelector(this.SELECTORS.productUnavailableNotificationForm);\n let formOpenBtn = dialogBox.querySelector(this.SELECTORS.buttonShowProductUnavailableForm);\n let formCloseBtns = dialogBox.querySelectorAll(this.SELECTORS.buttonBackToShopping);\n let formCloseBtnPrimary = dialogBox.querySelector(this.SELECTORS.buttonBackToShoppingPrimary);\n let notifyMessage = dialogBox.querySelector(this.SELECTORS.notifyMessage);\n let notifyError = dialogBox.querySelector(this.SELECTORS.notifyError);\n // click open\n if (formOpenBtn !== null) {\n formOpenBtn.addEventListener('click', function (){\n // show form\n formContainer.classList.remove('hidden');\n // hide buttons\n formOpenBtn.classList.add('hidden');\n formCloseBtnPrimary.classList.add('hidden');\n });\n }\n // click close\n if (formCloseBtns !== null) {\n formCloseBtns.forEach((btn)=>{\n btn.addEventListener('click', function (){\n dialogBox.closest('.vex').querySelector('.icon-close').click();\n });\n });\n }\n\n // intercept the form submit\n form.addEventListener(\"submit\", function(e){\n // hide eventually error\n notifyError.classList.remove('show');\n // prevent the default and launch notify\n e.preventDefault();\n let endpoint = form.getAttribute('action');\n let payload = $(form).serialize();\n // go ajax\n doAjax({\n url: endpoint,\n data: payload,\n dataType: 'html',\n success: (response) => {\n // show response\n notifyMessage.innerHTML = response;\n notifyMessage.classList.remove('hidden');\n // hide form\n formContainer.classList.add('hidden');\n // reshow back btn\n formCloseBtnPrimary.classList.remove('hidden');\n },\n error: function(xhr){\n notifyError.innerHTML = xhr.responseText;\n if (notifyError.classList.contains('hidden')) {\n notifyError.classList.replace('hidden','show');\n } else {\n notifyError.classList.add('show');\n }\n\n }\n });\n });\n\n }\n\n render() {\n this.log(\"Rendering...\");\n this.bindEvents();\n }\n}\n"],"sourceRoot":""}