Files

3 lines
4.4 KiB
JavaScript
Raw Permalink Normal View History

import"./modulepreload-polyfill-B5Qt9EMX.js";const l="gelProximityPickupDetails",u="gelProximityBtn",d="gelProximityPickupError";function s(o){const e=document.getElementById(o);if(!e)throw new Error(`Element with ID "${o}" not found.`);return e}function c(o=null){const e=s(d);o&&(e.innerText=o),e.hidden=!1}function p(){s(d).hidden=!0}class h{gelSDK;pickupHandlerMap=new WeakMap;carrierSelectionHandler;constructor(e,t){this.gelSDK=e,this.carrierSelectionHandler=t}setCarrierSelectionHandler(e){this.carrierSelectionHandler=e}createPickupHandler(){return e=>{e.preventDefault(),this.gelSDK.createUIModal({callbackOk:t=>{this.handlePickupPointSelection(t).catch(i=>{c(),console.error(i)})},callbackKo:()=>{}})}}addPickupCarrierListener(e){const t=this.createPickupHandler();e.addEventListener("click",t),this.pickupHandlerMap.set(e,t)}removePickupCarrierListener(e){const t=this.pickupHandlerMap.get(e);t&&(e.removeEventListener("click",t),this.pickupHandlerMap.delete(e))}async handlePickupPointSelection(e){const t=await this.sendPickupPointToServer(e);if(!t.ok)throw new Error(`Failed to send pickup point selection: HTTP error ${t.status}: ${t.statusText}`);const i=await t.json();this.updateDOMWithPickupPointResult(i)}sendPickupPointToServer(e){const t=window.gelProximityConfig,i=new URLSearchParams;return i.append("action","setPickUpPointForCurrentCart"),i.append("status","ok"),i.append("payload",JSON.stringify(e)),fetch(t.ajaxUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:i.toString()})}updateDOMWithPickupPointResult(e){const t=e?.data?.pickupsDetails;if(typeof t=="string"){const i=s(l);i.innerHTML=t,p();const r=s(u);this.addPickupCarrierListener(r),this.carrierSelectionHandler?.updateSubmitOrderButtonState()}else throw new Error("Unexpected response format:"+JSON.stringify(e))}}class f{radio=null;submitButton=null;defaultButtonText=null;defaultButtonIcon=null;pickupCarrierManager;pickupIcon="";constructor(e){this.pickupCarrierManager=e}isSelectionDetailsEmpty(){const e=document.getElementById(l);return!e||e.innerHTML.trim()===""}setSubmitButtonState(e,t,i){e.classList.toggle("disabled",!t),e.disabled=!t;const r=e.querySelector(".material-icons"),n=Array.from(e.childNodes).find(a=>a.nodeType===Node.TEXT_NODE&&a.textContent?.trim());switch(i){case"SELECT_PICKUP":!this.defaultButtonText&&n&&(this.defaultButtonText=n.textContent.trim()),!this.defaultButtonIcon&&r&&(this.defaultButtonIcon=r.innerHTML),n&&r?(n.textContent=window.gelProximityConfig.selectPickupCarrierBtnText,r.innerHTML=this.pickupIcon):e.innerText=window.gelProximityConfig.selectPickupCarrierBtnText,this.pickupCarrierManager.addPickupCarrierListener(e);break;case"DEFAULT":default:this.defaultButtonText&&(n?n.textContent=this.defaultButtonText:e.innerText=this.defaultButtonText),r&&this.defaultButtonIcon&&(r.innerHTML=this.defaultButtonIcon),this.pickupCarrierManager.removePickupCarrierListener(e);break}}findDeliveryRadio(e){const t=[`.js-delivery-option input[value="${e}"]`,`.js-delivery-option input[value="${e},"]`];for(const i of t){const r=document.querySelector(i);if(r)return r}return null}updateSubmitOrderButtonState(e=!1){if(!(!this.radio||!this.submitButton))if(this.radio.checked){const t=this.isSelectionDetailsEmpty()?"SELECT_PICKUP":"DEFAULT";this.setSubmitButtonState(this.submitButton,!e,t)}else this.setSubmitButtonState(this.submitButton,!0,"DEFAULT")}handleCarrierSelection(e){if(this.radio=this.findDeliveryRadio(e.carrierId),!this.radio)return;const t=this.radio.closest(".js-delivery-option");if(!t)return;const i=t.closest("form");if(this.submitButton=i?.querySelector('button[type="submit"], input[type="submit"]')??null,!i||!this.submitButton)return;this.updateSubmitOrderButtonState(),i.querySelectorAll('input[type="radio"]').forEach(n=>n.addEventListener("change",()=>this.updateSubmitOrderButtonState()))}}const m="https://platform.gelproximity.com/sdk/latest.js";document.addEventListener("DOMContentLoaded",()=>{const o=window.pickupCarrierError;if(o)c(o);else try{const e=document.createElement("script"),t=windo
//# sourceMappingURL=gelProximity-CGWwK-Re.js.map