accordion.js
2 weeks ago
add-to-cart.js
2 weeks ago
animated-heading.js
2 weeks ago
block-animations.js
2 weeks ago
carousel.js
2 weeks ago
count-animations.js
2 weeks ago
countdown.js
2 weeks ago
form.js
2 weeks ago
popup.js
2 weeks ago
progress-bar.js
2 weeks ago
reveal-button.js
2 weeks ago
sticky.js
2 weeks ago
table-of-contents-smooth-scroll.js
2 weeks ago
typing-animations.js
2 weeks ago
add-to-cart.js
1 lines
| 1 | (()=>{"use strict";const t="/commerce/nonce",e="/commerce/add",n=".wp-block-superb-addons-add-to-cart",o=".superb-atc-quantity",a=".wc-block-components-quantity-selector__input",r=".wc-block-components-quantity-selector__button",i=".superb-atc-button",s=".superb-atc-button-label",c=".superb-atc-sr-live",u=()=>window.superbAddToCartConfig||{};let d=u().nonce||"",l=null;async function p(e,n,o){const a=(u().restUrl||"/wp-json/superbaddons/")+e.replace(/^\//,""),r={Accept:"application/json","Content-Type":"application/json"};let i;d&&(r["X-WP-Nonce"]=d);try{i=await fetch(a,{method:n&&n.method||"GET",credentials:"include",headers:r,body:n&&n.body&&("POST"===n.method||"PUT"===n.method)?JSON.stringify(n.body):void 0})}catch(t){throw{code:"network",message:t&&t.message?t.message:"network"}}let s=null;try{s=await i.json()}catch(t){s=null}if(!i.ok){if(403===i.status&&s&&function(t){const e=t&&t.code?String(t.code):"";return"rest_cookie_invalid_nonce"===e||"rest_forbidden"===e}(s)&&!o&&e!==t)return await(l||(l=p(t,{method:"GET"}).then((t=>{if(!t||!t.nonce)throw{code:"nonce_refresh_failed",message:"no_nonce"};return d=t.nonce,d})).finally((()=>{l=null})),l)),p(e,n,!0);throw s||{code:"http_"+i.status,message:"Request failed"}}return s}const{__:b}=wp.i18n;function y(t){if(t._superbAddToCartInitialized)return;t._superbAddToCartInitialized=!0;const n=parseInt(t.getAttribute("data-product-id"),10)||0;if(!n)return void(t.style.display="none");const u={productId:n,variationId:parseInt(t.getAttribute("data-locked-variation-id"),10)||0,qty:parseInt(t.getAttribute("data-quantity"),10)||1,coupon:t.getAttribute("data-coupon")||"",displayMode:t.getAttribute("data-display-mode")||"ajax",popupId:t.getAttribute("data-popup-id")||"",quantitySelector:t.getAttribute("data-quantity-selector")||"off",quantityMin:parseInt(t.getAttribute("data-quantity-min"),10)||1,quantityMax:parseInt(t.getAttribute("data-quantity-max"),10)||99};t._superbAddToCartState=u;const d=t.querySelector(i),l=t.querySelector(s),y=t.querySelector(o);t._superbAddToCartAdd=t=>p(e,{method:"POST",body:t}),t._superbAddToCartHandleClick=async(e,n)=>{const o=function(t){const e={product_id:t.productId,variation_id:t.variationId||0,qty:t.qty||1};t.coupon&&(e.coupon=t.coupon);return e}(e),a=await t._superbAddToCartAdd(o);a&&a.ok?(!function(t){t.classList.remove("is-loading"),t.classList.add("is-success");const e=t.querySelector(c);e&&(e.textContent=b("Added to cart","superb-blocks"))}(n),function(t,e){window.jQuery&&window.jQuery.fn&&window.jQuery(document.body).trigger("added_to_cart",[e.fragments||{},e.cartHash||"",!1]);t.dispatchEvent(new CustomEvent("wc-blocks_added_to_cart",{bubbles:!0})),t.dispatchEvent(new CustomEvent("superbAddToCartAdded",{bubbles:!0}))}(t,a),function(t){if(!t)return;const e=window._superbPopups;if(!e||!e[t]||"function"!=typeof e[t].open)return;try{e[t].open()}catch(t){}}(e.popupId),_(n)):(m(n),_(n))};const f=t.getAttribute("data-success-color"),g=t.getAttribute("data-error-color");f&&d.style.setProperty("--superb-atc-success",f),g&&d.style.setProperty("--superb-atc-error",g),l&&!l.textContent.trim()&&(l.textContent="direct"===u.displayMode?b("Buy now","superb-blocks"):b("Add to cart","superb-blocks")),y&&"stepper"===u.quantitySelector&&(!function(t,e){t.innerHTML="",t.classList.add("wc-block-components-quantity-selector");const n=document.createElement("button");n.type="button",n.className="wc-block-components-quantity-selector__button wc-block-components-quantity-selector__button--minus",n.setAttribute("data-dir","-"),n.textContent="−",n.setAttribute("aria-label",b("Decrease quantity","superb-blocks"));const o=document.createElement("input");o.type="number",o.className="wc-block-components-quantity-selector__input",o.value=String(e.qty||e.quantityMin),o.min=String(e.quantityMin),o.max=String(e.quantityMax),o.setAttribute("inputmode","numeric"),o.setAttribute("aria-label",b("Quantity","superb-blocks"));const a=document.createElement("button");a.type="button",a.className="wc-block-components-quantity-selector__button wc-block-components-quantity-selector__button--plus",a.setAttribute("data-dir","+"),a.textContent="+",a.setAttribute("aria-label",b("Increase quantity","superb-blocks")),t.appendChild(n),t.appendChild(o),t.appendChild(a)}(y,u),y.addEventListener("click",(t=>{const e=y.querySelector(a);if(!e)return;const n=parseInt(e.value,10)||u.quantityMin,o=t.target.closest(r);if(o&&y.contains(o)){const t="+"===o.getAttribute("data-dir")?1:-1,a=Math.max(u.quantityMin,Math.min(u.quantityMax,n+t));e.value=String(a),u.qty=a,q(d)}})),y.addEventListener("change",(t=>{if(t.target&&t.target.matches(a)){const e=Math.max(u.quantityMin,Math.min(u.quantityMax,parseInt(t.target.value,10)||u.quantityMin));t.target.value=String(e),u.qty=e,q(d)}}))),function(t,e){const n=new URLSearchParams(window.location.search),o=parseInt(n.get("qty"),10),r=n.get("coupon");if(o&&o>0){e.qty=Math.max(e.quantityMin,Math.min(e.quantityMax,o));const n=t.querySelector(a);n&&(n.value=String(e.qty))}r&&(e.coupon=r)}(t,u),d.disabled=!1,d.addEventListener("click",(async e=>{if(e.preventDefault(),!d.disabled&&!d.classList.contains("is-loading")){q(d),function(t){t.classList.add("is-loading"),t.setAttribute("aria-busy","true"),t.disabled=!0;const e=t.querySelector(c);e&&(e.textContent="")}(d);try{await t._superbAddToCartHandleClick(u,d)}catch(t){m(d),_(d)}}})),t.style.visibility="visible"}function m(t){t.classList.remove("is-loading"),t.classList.add("is-error");const e=t.querySelector(c);e&&(e.textContent=b("Could not add to cart","superb-blocks"))}function q(t){if(!t)return;t._superbAtcRevertTimeout&&(clearTimeout(t._superbAtcRevertTimeout),t._superbAtcRevertTimeout=null),t.classList.remove("is-loading","is-success","is-error"),t.removeAttribute("aria-busy"),t.disabled=!1;const e=t.querySelector(c);e&&(e.textContent="")}function _(t){t._superbAtcRevertTimeout&&clearTimeout(t._superbAtcRevertTimeout),t._superbAtcRevertTimeout=setTimeout((()=>{q(t)}),1500)}document.addEventListener("DOMContentLoaded",(function(){document.querySelectorAll(n).forEach(y)}))})(); |