{"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":""}