Ładowanie koszyka…
Włącz JavaScript w przeglądarce, aby zobaczyć koszyk.
Szybka wysyłkaKurierem lub do paczkomatu
Bezpieczne zakupyBezpieczne składanie zamówień
14 dni na zwrotSprawdź zasady zwrotów sklepu
/* Wszystkie reguły zaczynają się od #oum-shop-cart, żeby motyw i główny CSS ich nie nadpisywały */
#oum-shop-cart{
--green:#27862f;--dark:#205f25;--pale:#f1f8f1;
--border:#e5e9e5;--text:#151d29;--muted:#59616b;
width:100%;max-width:1600px;margin:0 auto;padding:10px 0 24px;
color:var(--text);font-family:inherit;font-size:16px;line-height:1.5;
}
#oum-shop-cart *{box-sizing:border-box}
#oum-shop-cart a{text-decoration:none}
#oum-shop-cart button,#oum-shop-cart input{font:inherit;letter-spacing:normal;text-transform:none;box-shadow:none}
#oum-shop-cart [hidden]{display:none!important}
#oum-shop-cart .oum-heading{text-align:center;margin:0 0 28px}
#oum-shop-cart .oum-heading h1{font-size:clamp(30px,3vw,44px);line-height:1.15;margin:0 0 14px;font-weight:750;color:var(--text)}
#oum-shop-cart .oum-heading nav{display:flex;gap:13px;justify-content:center;color:var(--muted)}
#oum-shop-cart .oum-heading nav a{color:var(--green)}
#oum-shop-cart #oum-alert{color:#a32e2e;margin:8px 0;padding:10px 14px;background:#fdecea;border:1px solid #f0b4ae;border-radius:8px;text-align:center}
#oum-shop-cart #oum-alert:empty{display:none}
#oum-shop-cart #oum-loading{padding:30px;text-align:center;color:var(--muted)}
#oum-shop-cart .oum-columns{display:grid;grid-template-columns:minmax(0,1.95fr) minmax(300px,1.03fr);gap:18px;align-items:start}
#oum-shop-cart .oum-products{border:1px solid var(--border);border-radius:11px;padding:24px;background:#fff;min-width:0}
#oum-shop-cart .oum-table-head,
#oum-shop-cart .oum-product-row{display:grid;grid-template-columns:minmax(150px,2.5fr) minmax(65px,.7fr) minmax(100px,.9fr) minmax(65px,.7fr) 26px;gap:10px;align-items:center}
#oum-shop-cart .oum-table-head{padding:17px 12px;background:#f4f5f4;border-radius:8px;font-weight:700}
#oum-shop-cart .oum-table-head span:not(:first-child){text-align:center}
#oum-shop-cart .oum-product-row{padding:20px 7px;border-bottom:1px solid #edf0ed}
/* kolejność kolumn: produkt | cena | ilość | suma | usuń */
#oum-shop-cart .oum-product-info{grid-column:1;grid-row:1;display:flex;align-items:center;gap:13px;min-width:0}
#oum-shop-cart .oum-price{grid-column:2;grid-row:1}
#oum-shop-cart .oum-product-extras{grid-column:3;grid-row:1;display:flex;justify-content:center}
#oum-shop-cart .oum-row-total{grid-column:4;grid-row:1}
#oum-shop-cart .oum-remove{grid-column:5;grid-row:1}
#oum-shop-cart .oum-product-image{width:95px;height:100px;flex-shrink:0;object-fit:contain;border:1px solid #edf0ed;border-radius:9px;background:#fff;margin:0}
#oum-shop-cart .oum-product-name{display:block;font-weight:700;color:var(--text);line-height:1.4;margin-bottom:7px;overflow-wrap:anywhere}
#oum-shop-cart .oum-product-name:hover{color:var(--green)}
#oum-shop-cart .oum-product-meta{color:#5b626c;line-height:1.65;font-size:13px}
#oum-shop-cart .oum-price,#oum-shop-cart .oum-row-total{font-weight:700;text-align:center;white-space:nowrap}
#oum-shop-cart .oum-quantity{display:flex;align-items:center;justify-content:center;border:1px solid #d7dcd8;border-radius:7px;overflow:hidden;max-width:130px;margin:auto;background:#fff}
#oum-shop-cart .oum-quantity button{border:0!important;border-radius:0!important;background:#f7f8f7!important;color:#35404b!important;width:30px;height:38px;padding:0;margin:0;cursor:pointer;font-size:18px;line-height:1}
#oum-shop-cart .oum-quantity button:hover{background:#e3efe3!important;color:var(--dark)!important}
#oum-shop-cart .oum-quantity input{width:38px;min-width:0;height:38px;margin:0;border:0;border-radius:0;text-align:center;background:#fff;padding:0;color:var(--text);-moz-appearance:textfield;appearance:textfield}
#oum-shop-cart .oum-quantity input::-webkit-outer-spin-button,
#oum-shop-cart .oum-quantity input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
#oum-shop-cart .oum-remove{border:0!important;background:transparent!important;color:#606a73!important;font-size:22px;line-height:1;cursor:pointer;padding:4px;margin:0;border-radius:50%}
#oum-shop-cart .oum-remove:hover{color:#a32e2e!important;background:transparent!important}
#oum-shop-cart .oum-cart-actions{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:24px}
#oum-shop-cart .oum-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:6px!important;padding:12px 15px;margin:0;font-weight:650;line-height:1.2;cursor:pointer;text-align:center;transition:background-color .2s,border-color .2s}
#oum-shop-cart .oum-btn-outline{background:transparent!important;border:1px solid var(--dark)!important;color:var(--dark)!important}
#oum-shop-cart .oum-btn-outline:hover{background:#e3efe3!important;color:var(--dark)!important}
#oum-shop-cart .oum-btn-light{background:#fff!important;border:1px solid #cbd1cc!important;color:var(--text)!important}
#oum-shop-cart .oum-btn-light:hover{background:#f4f5f4!important;color:var(--text)!important}
#oum-shop-cart .oum-btn-green{background:var(--green)!important;border:1px solid var(--green)!important;color:#fff!important}
#oum-shop-cart .oum-btn-green:hover{background:var(--dark)!important;border-color:var(--dark)!important;color:#fff!important}
#oum-shop-cart .oum-summary{background:#dcefd8;border:1px solid #c4e0bf;border-radius:12px;padding:25px;min-width:0}
#oum-shop-cart .oum-summary h2{font-size:clamp(21px,2vw,28px);font-weight:750;line-height:1.25;margin:0 0 20px;color:var(--text)}
#oum-shop-cart .oum-line{display:flex;justify-content:space-between;gap:12px;padding:11px 0;align-items:baseline}
#oum-shop-cart .oum-line strong{text-align:right;white-space:nowrap}
#oum-shop-cart .oum-discount strong{color:var(--green)}
#oum-shop-cart .oum-rates{margin:0 0 8px;padding:0;list-style:none}
#oum-shop-cart .oum-rates li{margin:0 0 6px;padding:0}
#oum-shop-cart .oum-rates label{display:flex;align-items:center;gap:9px;padding:10px 12px;background:#fff;border:1px solid #d7dcd8;border-radius:8px;cursor:pointer;font-size:15px}
#oum-shop-cart .oum-rates label:hover{border-color:var(--green)}
#oum-shop-cart .oum-rates label.on{border-color:var(--green);box-shadow:0 0 0 1px var(--green)}
#oum-shop-cart .oum-rates input{accent-color:var(--green);margin:0;flex:none}
#oum-shop-cart .oum-rates .oum-rate-name{flex:1;min-width:0}
#oum-shop-cart .oum-rates .oum-rate-price{font-weight:700;white-space:nowrap}
#oum-shop-cart .oum-total{display:flex;justify-content:space-between;gap:12px;border-top:1px solid #b9d8b3;margin-top:12px;padding:20px 0;align-items:flex-start}
#oum-shop-cart .oum-total>div{display:flex;flex-direction:column;gap:7px}
#oum-shop-cart .oum-total>strong{font-size:clamp(22px,2.2vw,32px);line-height:1.15;color:var(--green);white-space:nowrap}
#oum-shop-cart .oum-total small{color:#5e685f}
#oum-shop-cart .oum-coupon{background:#c8e4c2;border-radius:9px;padding:14px;margin:8px 0 22px}
#oum-shop-cart .oum-coupon summary{font-weight:700;cursor:pointer}
#oum-shop-cart .oum-coupon[open] summary{margin-bottom:13px}
#oum-shop-cart .oum-coupon form{margin:0}
#oum-shop-cart .oum-coupon input{width:100%;height:46px;padding:0 12px;margin:0;border:1px solid #cbd3cb;border-radius:7px;background:#fff;min-width:0;color:var(--text)}
#oum-shop-cart .oum-coupon input:focus{outline:none;border-color:var(--green);box-shadow:0 0 0 3px rgba(39,134,47,.18)}
#oum-shop-cart .oum-coupon-buttons{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:10px}
#oum-shop-cart .oum-coupon-buttons .oum-btn{padding:11px 6px}
#oum-shop-cart .oum-coupon-tag{display:flex;justify-content:space-between;gap:8px;padding-top:10px;font-size:13px}
#oum-shop-cart .oum-coupon-tag button{background:none!important;border:0!important;padding:0;margin:0;color:#a32e2e!important;text-decoration:underline;cursor:pointer;font-size:13px}
#oum-shop-cart .oum-checkout{display:block;text-align:center;background:var(--green);color:#fff!important;padding:18px 12px;border-radius:9px;font-size:18px;font-weight:750;transition:background-color .2s}
#oum-shop-cart .oum-checkout:hover{background:var(--dark);color:#fff!important}
#oum-shop-cart .oum-payment-note{text-align:center;margin-top:16px;color:#59635a;font-size:13px}
#oum-shop-cart .oum-benefits{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-top:24px;padding:24px 20px;background:#f5f9f5;border-radius:11px}
#oum-shop-cart .oum-benefits>div{display:flex;align-items:center;justify-content:center;gap:12px;min-width:0}
#oum-shop-cart .oum-benefit-icon{width:34px;height:34px;flex:none;fill:none;stroke:var(--green);stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
#oum-shop-cart .oum-benefits p{display:flex;flex-direction:column;gap:5px;margin:0;line-height:1.35}
#oum-shop-cart .oum-benefits small{color:var(--muted);font-size:13px}
#oum-shop-cart .oum-benefits small a{color:inherit;text-decoration:underline}
#oum-shop-cart.oum-busy .oum-products,#oum-shop-cart.oum-busy .oum-summary{opacity:.6;pointer-events:none;transition:opacity .15s}
#oum-shop-cart #oum-empty{text-align:center;padding:45px 15px;border:1px solid var(--border);border-radius:10px}
#oum-shop-cart #oum-empty h2{margin:0 0 20px;color:var(--text)}
@media(max-width:1000px){
#oum-shop-cart .oum-columns{grid-template-columns:1fr}
#oum-shop-cart .oum-benefits{grid-template-columns:repeat(2,minmax(0,1fr))}
#oum-shop-cart .oum-benefits>div{justify-content:flex-start}
}
@media(max-width:650px){
#oum-shop-cart{padding:6px 0 18px;font-size:14px}
#oum-shop-cart .oum-heading{margin-bottom:20px}
#oum-shop-cart .oum-products{padding:12px}
#oum-shop-cart .oum-table-head{display:none}
#oum-shop-cart .oum-product-row{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"info rm" "price price" "qty sum";gap:8px;padding:17px 0}
#oum-shop-cart .oum-product-info{grid-area:info}
#oum-shop-cart .oum-remove{grid-area:rm;align-self:start}
#oum-shop-cart .oum-price{grid-area:price;text-align:left;font-weight:500;color:var(--muted);font-size:13px;padding-left:83px}
#oum-shop-cart .oum-product-extras{grid-area:qty;justify-content:flex-start;padding-left:83px}
#oum-shop-cart .oum-row-total{grid-area:sum;text-align:right;align-self:center}
#oum-shop-cart .oum-product-image{width:70px;height:80px}
#oum-shop-cart .oum-quantity{margin:0}
#oum-shop-cart .oum-cart-actions{flex-direction:column}
#oum-shop-cart .oum-cart-actions .oum-btn{width:100%}
#oum-shop-cart .oum-summary{padding:17px}
#oum-shop-cart .oum-coupon-buttons{grid-template-columns:1fr}
#oum-shop-cart .oum-benefits{grid-template-columns:1fr;padding:18px 12px;gap:16px}
#oum-shop-cart .oum-benefit-icon{width:28px;height:28px}
}
/* ===== LOGO NA TABLECIE – tylko na stronie z tym koszykiem =====
Wartość "left" to przesunięcie w prawo od normalnego miejsca logo.
Więcej w prawo → zwiększ liczbę (np. 120px). Mniej → zmniejsz (np. 40px). */
@media (min-width:600px) and (max-width:1024px){
body:has(#oum-shop-cart) #masthead .wowmart-header-middle img,
body:has(#oum-shop-cart) .elementor-location-header .elementor-widget-theme-site-logo img,
body:has(#oum-shop-cart) .elementor-location-header .elementor-widget-image img{
position:relative!important;
left:80px!important;
}
body:has(#oum-shop-cart) .custom-logo-link,
body:has(#oum-shop-cart) .site-logo,
body:has(#oum-shop-cart) .elementor-widget-theme-site-logo{
left:0!important;
margin-left:0!important;
}
}
#oum-shop-cart #oum-editor-note{margin:0 0 14px;padding:12px 16px;background:#e3efe3;border:1px dashed var(--green);border-radius:8px;color:var(--dark);text-align:center;font-size:14px}
#oum-shop-cart #oum-editor-note:empty{display:none}
(function(){
/* ===== USTAWIENIA ===== */
var CONFIG = {
// adres API koszyka – działa przy każdym ustawieniu bezpośrednich odnośników
api: '/?rest_route=/wc/store/v1/cart',
// adres strony zamówienia (kasy) – wejdź na nią i skopiuj adres z paska przeglądarki
checkoutUrl: '/?page_id=9',
// adres sklepu dla przycisków "Kontynuuj zakupy" i "Wróć do sklepu"
shopUrl: '/?post_type=product',
// kraj dostawy ustawiany automatycznie, żeby WooCommerce policzył koszt wysyłki
country: 'PL'
};
/* ===== CZY JESTEŚMY W EDYTORZE ELEMENTORA? ===== */
function isEditor(){
try{
if(document.body && document.body.classList.contains('elementor-editor-active')) return true;
if(/[?&]elementor-preview=/.test(location.search)) return true;
if(window.elementorFrontend && typeof window.elementorFrontend.isEditMode === 'function' && window.elementorFrontend.isEditMode()) return true;
if(window.parent && window.parent !== window && window.parent.elementor) return true;
}catch(e){}
return false;
}
/* ===== URUCHOMIENIE KOSZYKA W JEDNYM KONTENERZE ===== */
function start(root){
if(!root || root.dataset.init === '1') return;
root.dataset.init = '1';
var $ = function(id){ return root.querySelector('#' + id); };
var nonce = '', busy = false, countryTried = false, editor = isEditor();
$('oum-checkout').href = CONFIG.checkoutUrl;
root.querySelectorAll('.oum-link-sklep').forEach(function(a){ a.href = CONFIG.shopUrl; });
function showError(t){ $('oum-alert').textContent = t || ''; }
function plain(s){ var d = document.createElement('div'); d.innerHTML = s || ''; return (d.textContent || '').trim(); }
function money(minor, cart, unit){
var digits = unit != null ? Number(unit) : Number((cart && cart.totals && cart.totals.currency_minor_unit) != null ? cart.totals.currency_minor_unit : 2);
var amount = Number(minor || 0) / Math.pow(10, digits);
var currency = (cart && cart.totals && cart.totals.currency_code) || 'PLN';
try{ return new Intl.NumberFormat('pl-PL', {style:'currency', currency: currency}).format(amount); }
catch(e){ return amount.toFixed(2).replace('.', ',') + ' zł'; }
}
function sum(){ var s = 0; for(var i = 0; i -1 ? '&' : '?') + '_oum=' + Date.now(); // zawsze świeże dane, bez pamięci podręcznej
return fetch(url, {method: method, credentials: 'same-origin', cache: 'no-store', headers: headers, body: body ? JSON.stringify(body) : undefined})
.then(function(r){
nonce = r.headers.get('Nonce') || r.headers.get('X-WC-Store-API-Nonce') || nonce;
return r.json().catch(function(){ return null; }).then(function(data){
if(!r.ok || !data) throw new Error(plain(data && data.message) || 'Nie udało się połączyć ze sklepem.');
return data;
});
});
}
function make(tag, cls, txt){
var node = document.createElement(tag);
if(cls) node.className = cls;
if(txt !== undefined) node.textContent = txt;
return node;
}
function renderCoupons(cart){
var list = $('oum-coupon-list'); list.innerHTML = '';
(cart.coupons || []).forEach(function(c){
var row = make('div', 'oum-coupon-tag');
row.appendChild(make('span', '', 'Kod: ' + c.code));
var btn = make('button', '', 'Usuń kupon'); btn.type = 'button';
btn.addEventListener('click', function(){ update('/remove-coupon', {code: c.code}); });
row.appendChild(btn); list.appendChild(row);
});
if((cart.coupons || []).length) root.querySelector('.oum-coupon').open = true;
}
function renderShipping(cart){
var t = cart.totals || {}, rates = [];
(cart.shipping_rates || []).forEach(function(pkg){
(pkg.shipping_rates || []).forEach(function(r){
rates.push({ pkg: pkg.package_id, id: r.rate_id, name: plain(r.name), price: sum(r.price, r.taxes), unit: r.currency_minor_unit, on: !!r.selected });
});
});
var chosen = rates.filter(function(r){ return r.on; })[0];
var txt;
if(cart.needs_shipping === false) txt = money(0, cart);
else if(chosen) txt = sum(t.total_shipping, t.total_shipping_tax) === 0 ? 'Za darmo' : money(sum(t.total_shipping, t.total_shipping_tax), cart);
else txt = 'brak metod dostawy';
$('oum-shipping').textContent = txt;
var ul = $('oum-rates'); ul.innerHTML = '';
ul.hidden = rates.length < 2;
rates.forEach(function(r){
var li = make('li'), lab = make('label', r.on ? 'on' : ''), inp = make('input');
inp.type = 'radio'; inp.name = 'oum-rate'; inp.checked = r.on;
inp.addEventListener('change', function(){
update('/select-shipping-rate', {package_id: r.pkg, rate_id: r.id});
});
lab.appendChild(inp);
lab.appendChild(make('span', 'oum-rate-name', r.name));
lab.appendChild(make('span', 'oum-rate-price', Number(r.price) === 0 ? 'Za darmo' : money(r.price, cart, r.unit)));
li.appendChild(lab); ul.appendChild(li);
});
if(rates.length){
var min = Math.min.apply(null, rates.map(function(r){ return Number(r.price); }));
$('oum-benefit-ship').textContent = min === 0 ? 'Darmowa dostawa' : 'Dostawa od ' + money(min, cart);
}
}
function render(cart){
$('oum-loading').hidden = true; $('oum-main').hidden = true; $('oum-empty').hidden = true;
if(!cart.items || !cart.items.length){ $('oum-empty').hidden = false; return; }
$('oum-main').hidden = false;
var list = $('oum-items'); list.innerHTML = '';
cart.items.forEach(function(item){
var name = plain(item.name);
var row = make('article', 'oum-product-row');
var info = make('div', 'oum-product-info');
var src = item.images && item.images[0] ? (item.images[0].thumbnail || item.images[0].src) : '';
if(src){
var img = make('img', 'oum-product-image');
img.alt = plain(item.images[0].alt) || name; img.loading = 'lazy'; img.src = src;
info.appendChild(img);
}
var text = make('div', '');
var link = make('a', 'oum-product-name', name); link.href = item.permalink || CONFIG.shopUrl; text.appendChild(link);
(item.variation || []).forEach(function(v){
text.appendChild(make('div', 'oum-product-meta', (plain(v.attribute) || 'Wariant') + ': ' + plain(v.value)));
});
info.appendChild(text); row.appendChild(info);
var unit = item.prices && item.prices.currency_minor_unit;
row.appendChild(make('div', 'oum-price', money(item.prices && item.prices.price, cart, unit)));
var limits = item.quantity_limits || {}, step = Number(limits.multiple_of) || 1;
var min = Number(limits.minimum) || 1, max = Number(limits.maximum) || 9999;
var qty = make('div', 'oum-quantity');
var minus = make('button', '', '−'); minus.type = 'button'; minus.setAttribute('aria-label', 'Zmniejsz ilość');
var input = make('input'); input.type = 'number'; input.min = min; input.max = max; input.step = step; input.value = item.quantity;
input.setAttribute('aria-label', 'Ilość produktu');
var plus = make('button', '', '+'); plus.type = 'button'; plus.setAttribute('aria-label', 'Zwiększ ilość');
if(limits.editable === false){ minus.hidden = true; plus.hidden = true; input.readOnly = true; }
minus.disabled = item.quantity - step max;
minus.addEventListener('click', function(){ update('/update-item', {key: item.key, quantity: Math.max(min, item.quantity - step)}); });
plus.addEventListener('click', function(){ update('/update-item', {key: item.key, quantity: Math.min(max, item.quantity + step)}); });
input.addEventListener('change', function(){
var q = Math.min(max, Math.max(min, Math.floor(Number(input.value) || min)));
if(q !== item.quantity) update('/update-item', {key: item.key, quantity: q}); else input.value = q;
});
qty.appendChild(minus); qty.appendChild(input); qty.appendChild(plus);
var extras = make('div', 'oum-product-extras'); extras.appendChild(qty);
row.appendChild(extras);
// suma pozycji z VAT (przed rabatem), tak samo jak cena jednostkowa
var it = item.totals || {};
row.appendChild(make('div', 'oum-row-total', money(sum(it.line_subtotal, it.line_subtotal_tax), cart, it.currency_minor_unit)));
var remove = make('button', 'oum-remove', '×'); remove.type = 'button'; remove.title = 'Usuń produkt';
remove.setAttribute('aria-label', 'Usuń ' + name);
remove.addEventListener('click', function(){ update('/remove-item', {key: item.key}); });
row.appendChild(remove);
list.appendChild(row);
});
var t = cart.totals || {};
var discount = sum(t.total_discount, t.total_discount_tax);
$('oum-subtotal').textContent = money(sum(t.total_items, t.total_items_tax), cart);
$('oum-discount-line').hidden = !(discount > 0);
$('oum-discount').textContent = '− ' + money(discount, cart);
renderShipping(cart);
$('oum-total-value').textContent = money(t.total_price, cart);
$('oum-tax').textContent = Number(t.total_tax || 0) > 0 ? '(w tym VAT ' + money(t.total_tax, cart) + ')' : '';
renderCoupons(cart);
}
/* ===== PODGLĄD W EDYTORZE ELEMENTORA =====
W edytorze nie ma Twojej sesji zakupowej, więc pokazujemy przykładowy produkt.
Dzięki temu koszyk nigdy nie "znika" podczas edycji. Nic nie jest zapisywane w sklepie. */
if(editor){
$('oum-editor-note').textContent = 'Podgląd w edytorze Elementora – przykładowy produkt. Prawdziwy koszyk zobaczysz na stronie po dodaniu produktów.';
busy = true; // w edytorze przyciski koszyka nic nie zmieniają w sklepie
render({
items: [{
key: 'demo', name: 'Przykładowy produkt', permalink: '#', images: [], quantity: 1,
quantity_limits: {editable: false}, prices: {price: 4999, currency_minor_unit: 2},
totals: {line_subtotal: 4999, line_subtotal_tax: 0, currency_minor_unit: 2}
}],
totals: {currency_code: 'PLN', currency_minor_unit: 2, total_items: 4999, total_items_tax: 0, total_price: 4999, total_tax: 0, total_shipping: 0, total_shipping_tax: 0},
needs_shipping: false, shipping_rates: [], coupons: []
});
return;
}
function show(cart){
render(cart);
if(window.jQuery) window.jQuery(document.body).trigger('wc_fragment_refresh'); // odświeża licznik koszyka w nagłówku
}
function load(){
showError('');
return call().then(function(cart){
// sklep nie zna kraju klienta → ustawiamy go, żeby WooCommerce policzył i doliczył dostawę
if(cart.needs_shipping && !cart.has_calculated_shipping && !countryTried && (cart.items || []).length){
countryTried = true;
var kraj = (cart.shipping_address && cart.shipping_address.country) || CONFIG.country;
return call('/update-customer', 'POST', {
shipping_address: {country: kraj},
billing_address: {country: (cart.billing_address && cart.billing_address.country) || kraj}
}).then(show, function(){ show(cart); });
}
show(cart);
});
}
function setBusy(on){
busy = on;
root.classList.toggle('oum-busy', on);
}
function update(path, payload, method){
if(busy) return Promise.resolve();
setBusy(true); showError('');
return call(path, method || 'POST', payload)
.then(load)
.catch(function(e){ return load().catch(function(){}).then(function(){ showError(e.message); }); })
.then(function(){ setBusy(false); });
}
$('oum-coupon-form').addEventListener('submit', function(e){
e.preventDefault();
var code = $('oum-coupon-input').value.trim();
if(!code){ showError('Wpisz kod rabatowy.'); return; }
update('/apply-coupon', {code: code}).then(function(){ if(!$('oum-alert').textContent) $('oum-coupon-input').value = ''; });
});
$('oum-refresh').addEventListener('click', function(){
if(busy) return; setBusy(true);
load().catch(function(e){ showError(e.message); }).then(function(){ setBusy(false); });
});
$('oum-clear').addEventListener('click', function(){
if(busy || !confirm('Czy na pewno chcesz usunąć wszystkie produkty z koszyka?')) return;
update('/items', null, 'DELETE');
});
// gdy klient wraca przyciskiem "Wstecz", koszyk ładuje się od nowa
window.addEventListener('pageshow', function(e){ if(e.persisted) load().catch(function(){}); });
setBusy(true);
load().catch(function(error){
$('oum-loading').hidden = false;
$('oum-loading').textContent = 'Nie udało się załadować koszyka.';
showError(error.message + ' Odśwież stronę albo spróbuj za chwilę.');
}).then(function(){ setBusy(false); });
}
/* ===== START: na stronie, po załadowaniu i po każdym przerysowaniu w Elementorze ===== */
function boot(){ document.querySelectorAll('#oum-shop-cart').forEach(start); }
boot();
if(document.readyState === 'loading') document.addEventListener('DOMContentLoaded', boot);
window.addEventListener('load', boot);
function hookElementor(){
try{
if(window.elementorFrontend && window.elementorFrontend.hooks && !window.__oumCartHooked){
window.__oumCartHooked = true;
window.elementorFrontend.hooks.addAction('frontend/element_ready/global', boot);
}
}catch(e){}
}
hookElementor();
window.addEventListener('elementor/frontend/init', hookElementor);
})();