/* Add custom JS code below */ //mazen /* رام أجمل — إصلاح نافذة «دليل المقاسات» في صفحة المنتج: مكوّن سلة يضع محتوى الجدول خارج النافذة البيضاء، فنُعيده إلى داخلها. */ (function(){ function fix(){ var m=document.getElementById('salla-product-size-guide-modal'); if(!m) return; var b=m.querySelector('.s-modal-body'); if(!b) return; Array.prototype.slice.call(m.children).forEach(function(c){ if(c.tagName==='SALLA-TABS'){ b.appendChild(c); } }); } function start(){ fix(); new MutationObserver(fix).observe(document.body,{childList:true,subtree:true}); } if(document.body) start(); else document.addEventListener('DOMContentLoaded',start); })(); /* رام أجمل — عنوان قسم «تصنيفات مميزة» (rx-cats) */ (function(){ function add(){ document.querySelectorAll('.rx-cats .special-categories__inner').forEach(function(w){ if(w.querySelector('.rx-cats__head')) return; var h=document.createElement('div'); h.className='rx-cats__head'; h.innerHTML='
الأقسام

تسوّقي حسب القصّة.

جميع العبايات'; w.insertBefore(h,w.firstChild); }); } if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',add); else add(); window.addEventListener('load',add); })(); /* رام أجمل — بطاقة المنتج: زر «اختاري المقاس» يفتح العرض السريع لاختيار المقاس بدل إضافة مقاس افتراضي */ (function(){ document.addEventListener('click',function(e){ var btn=e.target.closest && e.target.closest('custom-salla-product-card .product-card__addToCart'); if(!btn) return; var card=btn.closest('custom-salla-product-card'); var qv=card && card.querySelector('.quickview-btn button, .quickview-btn .s-button-element'); if(!qv) return; e.preventDefault(); e.stopPropagation(); e.stopImmediatePropagation(); qv.click(); },true); function label(){ document.querySelectorAll('custom-salla-product-card .product-card__addToCart salla-add-product-button').forEach(function(b){ if(b.getAttribute('aria-label')!=='اختاري المقاس') b.setAttribute('aria-label','اختاري المقاس'); }); } function start(){ label(); new MutationObserver(function(){ clearTimeout(window.__rxcT); window.__rxcT=setTimeout(label,250); }).observe(document.body,{childList:true,subtree:true}); } if(document.body) start(); else document.addEventListener('DOMContentLoaded',start); })(); /* رام أجمل — الجوال: «تسجيل الدخول / حسابي» داخل قائمة الجوال بدل أيقونة الحساب في الناف الحالة من salla.config (user.type = user للمسجّل، guest للزائر)، وتُحدَّث بعد جاهزية سلة وعند فتح القائمة لأنها قد لا تكون جاهزة عند أول رسم */ (function(){ function guest(){ try{ var t=window.salla&&salla.config&&salla.config.get&&salla.config.get('user.type'); if(t) return t!=='user'; return !salla.config.isGuest||salla.config.isGuest(); }catch(e){ return true; } } function paint(li){ var g=guest(), a=li.querySelector('a'), sp=li.querySelector('.rx-acc__t'); if(!a||!sp) return; var k=g?'1':'0'; if(a.getAttribute('data-guest')===k) return; a.setAttribute('data-guest',k); a.setAttribute('href',g?'#':'/profile'); sp.textContent=g?'تسجيل الدخول':'حسابي'; } function add(){ var ul=document.querySelector('#mobile-menu ul.main-menu'); if(!ul) return; var li=ul.querySelector('.rx-acc'); if(!li){ li=document.createElement('li'); li.className='main-menu__item main-menu__side-tab lg:hidden text-sm font-bold rx-acc'; li.innerHTML=''; var first=ul.querySelector(':scope > li.main-menu__side-tab'); ul.insertBefore(li, first||null); } paint(li); } document.addEventListener('click',function(e){ var m=e.target.closest&&e.target.closest('.mburger,[href="#mobile-menu"]'); if(m){ setTimeout(add,60); } var a=e.target.closest&&e.target.closest('.rx-acc a'); if(!a) return; if(!guest()){ a.setAttribute('href','/profile'); return; } e.preventDefault(); var c=document.querySelector('.close-mobile-menu'); if(c) c.click(); setTimeout(function(){ try{ salla.event.dispatch('login::open'); }catch(err){ location.href='/login'; } },300); },true); function start(){ add(); new MutationObserver(add).observe(document.body,{childList:true,subtree:true}); try{ salla.onReady(add); }catch(e){} try{ salla.event.on('auth::logged.in',add); }catch(e){} window.addEventListener('load',add); } if(document.body) start(); else document.addEventListener('DOMContentLoaded',start); })(); /* رام أجمل — RX BASE: تشغيل سكربتات أقسام «محتوى HTML» + ظهور العناصر عند التمرير (نُقلت من الـ Hero القديم) */ (function(){ function boot(){ if(window.__rxBoot) return; window.__rxBoot=1; function run(){document.querySelectorAll('.s-block--bundle-html-content script:not([data-rx-ran])').forEach(function(o){o.setAttribute('data-rx-ran','1');try{var s=document.createElement('script');s.text=o.textContent;document.body.appendChild(s);}catch(e){}});} run(); var t; new MutationObserver(function(){clearTimeout(t);t=setTimeout(run,100)}).observe(document.body,{childList:true,subtree:true}); } function reveal(){ var d=document.documentElement; if(d.classList.contains('rx-js')) return; d.classList.add('rx-js'); var io=('IntersectionObserver' in window)?new IntersectionObserver(function(en){en.forEach(function(x){if(x.isIntersecting){x.target.classList.add('is-in');io.unobserve(x.target);}})},{rootMargin:'0px 0px -8% 0px',threshold:.1}):null; var scan=function(){document.querySelectorAll('[data-rx]:not([data-rx-o])').forEach(function(e){e.setAttribute('data-rx-o','');if(io)io.observe(e);else e.classList.add('is-in');});}; window.rxScan=scan; scan(); window.addEventListener('load',scan); var t;new MutationObserver(function(){clearTimeout(t);t=setTimeout(scan,150)}).observe(d,{childList:true,subtree:true}); var fb=false;function chk(){fb=false;var h=window.innerHeight;document.querySelectorAll('[data-rx]:not(.is-in)').forEach(function(e){if(e.getBoundingClientRect().top', card:'', shield:'', chat:'' }; function esc(s){return String(s).replace(/[&<>"]/g,function(c){return {'&':'&','<':'<','>':'>','"':'"'}[c]});} function icon(t){ if(/شحن|توصيل|ship|deliver/i.test(t)) return ICONS.ship; if(/قس[ّ]?ط|tabby|tamara|تقسيط/i.test(t)) return ICONS.card; if(/دفع|آمن|secure|pay/i.test(t)) return ICONS.shield; if(/واتس|مساعدة|تواصل|whatsapp|help/i.test(t)) return ICONS.chat; if(/مقاس|size/i.test(t)) return ''; if(/بيتك|الرياض|door|riyadh/i.test(t)) return ''; return ''; } function marquee(){ var secs=document.querySelectorAll('.rx-mq2'); if(!secs.length) return; var host=secs[0]; if(host.querySelector('.rx-mq')) return; var items=[]; secs.forEach(function(s){ var a=s.querySelector('.animated-text__inner li'); if(!a) return; (a.textContent||'').split('|').forEach(function(x){x=x.trim(); if(x) items.push(x);}); }); if(!items.length) return; var html=items.map(function(t){ return icon(t)+esc(t).replace(/(tabby|tamara)/gi,'$1')+''; }).join(''); var w=document.createElement('div'); w.className='rx rx-mq'; w.setAttribute('aria-label','مزايا المتجر'); w.innerHTML='
'+html+'
'; host.appendChild(w); } function hero(){ var h=document.querySelector('.rx-hero2'); if(!h || h.getAttribute('data-rx-h')) return; var slide=h.querySelector('.advanced-slider__slide'); var content=h.querySelector('.advanced-slider__caption__inner__content'); if(!slide||!content) return; h.setAttribute('data-rx-h','1'); h.querySelectorAll('.advanced-slider__image').forEach(function(im){ im.setAttribute('loading','eager'); im.setAttribute('fetchpriority','high'); }); h.querySelectorAll('picture source').forEach(function(so){ if(/639/.test(so.media||'')) so.media='(max-width: 767px)'; }); if(!content.querySelector('.rx-more')){ var cats=document.querySelector('.rx-cats'); if(cats && !document.getElementById('rxCats')) cats.id='rxCats'; var a=document.createElement('a'); a.className='rx-more'; a.href='#rxCats'; a.textContent='اكتشفي الأقسام'; a.addEventListener('click',function(e){var t=document.getElementById('rxCats'); if(t){e.preventDefault(); t.scrollIntoView({behavior:'smooth',block:'start'});}}); content.appendChild(a); } if(!slide.querySelector('.rx-hero2__scroll')){ var sc=document.createElement('span'); sc.className='rx-hero2__scroll'; sc.setAttribute('aria-hidden','true'); slide.appendChild(sc); } var fit=function(){var hd=document.querySelector('.store-header .main-nav-container'),mq=document.querySelector('.rx-mq2');var top=h.getBoundingClientRect().top+window.scrollY;var hh=hd?hd.getBoundingClientRect().height:0;h.style.setProperty('--rx-hdr',Math.max(hh,top)+'px');if(mq)h.style.setProperty('--rx-mqh',mq.offsetHeight+'px');}; fit(); window.addEventListener('load',fit); window.addEventListener('resize',fit); setTimeout(fit,800); setTimeout(function(){h.classList.add('is-ready')},80); if(window.matchMedia('(prefers-reduced-motion: reduce)').matches||window.innerWidth<768) return; var ims=h.querySelectorAll('.advanced-slider__image'); var img=ims[ims.length-1]; if(!img) return; var tick=false; function run(){tick=false;var r=h.getBoundingClientRect();if(r.bottom<0)return;var p=Math.min(1,Math.max(0,-r.top/r.height));img.style.transform='scale('+(1+p*0.08).toFixed(4)+') translateY('+(p*40).toFixed(1)+'px)';} setTimeout(function(){img.style.transition='transform .2s linear';window.addEventListener('scroll',function(){if(!tick){tick=true;requestAnimationFrame(run)}},{passive:true});},2500); } function go(){ marquee(); hero(); } function start(){ go(); var n=0; var t=setInterval(function(){ go(); if(++n>20) clearInterval(t); },250); window.addEventListener('load',go); } if(document.body) start(); else document.addEventListener('DOMContentLoaded',start); })(); /* رام أجمل — RX TST v2: «آراء عميلاتنا» مربوطة بتقييمات المتجر الحقيقية في سلة (salla.api.component.getReviews) - يجلب تقييمات المتجر + تقييمات المنتجات (4 نجوم فأكثر ونص حقيقي)، ويُظهر القسم فقط عند وجود 3 تقييمات أو أكثر. - البطاقات اليدوية في عنصر سيليا لا تُعرض؛ القسم يعرض بيانات المتجر فقط. */ (function(){ var MIN=3, MAX=12; var PATHS=['M-40 260 C 260 120, 520 380, 820 210 S 1320 120, 1640 260','M-40 320 C 300 190, 560 430, 860 270 S 1340 190, 1640 330','M-40 380 C 340 260, 600 470, 900 330 S 1360 260, 1640 400','M-40 440 C 380 330, 640 510, 940 390 S 1380 330, 1640 470','M-40 500 C 420 400, 680 550, 980 450 S 1400 400, 1640 540']; function esc(x){var d=document.createElement('div');d.textContent=x==null?'':String(x);return d.innerHTML;} function stars(n){var s='';for(var i=1;i<=5;i++){s+='';}return s;} function card(r){ var name=(r.name||(r.customer&&r.customer.name)||'').trim()||'عميلة رام أجمل'; var av=r.avatar||(r.customer&&r.customer.avatar)||''; var avHtml=(av&&!/avatar_(fe)?male|default|placeholder/.test(av))?'':''; var meta=[]; if(r.city) meta.push(esc(r.city)); if(r.has_order) meta.push('طلب مؤكّد'); return '

'+esc(r.content||r.text||'')+'

'+ '
'+avHtml+'

'+esc(name)+'

'+ '
'+stars(r.stars||5)+'
'+(meta.length?''+meta.join(' · ')+'':'')+'
'; } function decorate(s){ if(s.querySelector('.rx-tst__lines')) return; var ns='http://www.w3.org/2000/svg', svg=document.createElementNS(ns,'svg'); svg.setAttribute('class','rx-tst__lines'); svg.setAttribute('viewBox','0 0 1600 600'); svg.setAttribute('preserveAspectRatio','none'); svg.setAttribute('aria-hidden','true'); PATHS.forEach(function(d){ var p=document.createElementNS(ns,'path'); p.setAttribute('d',d); svg.appendChild(p); }); s.insertBefore(svg, s.firstChild); svg.querySelectorAll('path').forEach(function(p){ try{ p.style.setProperty('--len', Math.ceil(p.getTotalLength())+''); }catch(e){} }); } function render(s,list){ var box=s.querySelector('.container')||s; var old=box.querySelector('.rx-tst__wrap'); if(old) old.remove(); var w=document.createElement('div'); w.className='rx-tst__wrap'; w.innerHTML='
'+list.map(card).join('')+'
'+ '
'; box.appendChild(w); var rail=w.querySelector('.rx-tst__rail'); w.querySelectorAll('.rx-tst__btn').forEach(function(b){ b.addEventListener('click',function(){ var c=rail.querySelector('.review'); var step=c?c.getBoundingClientRect().width:300; rail.scrollBy({left:(+b.getAttribute('data-d'))*step,behavior:'smooth'}); }); }); var down=false,sx=0,sl=0,moved=false; rail.addEventListener('pointerdown',function(e){ if(e.pointerType!=='mouse') return; down=true;moved=false;sx=e.clientX;sl=rail.scrollLeft;rail.classList.add('is-drag'); }); window.addEventListener('pointermove',function(e){ if(!down) return; var dx=e.clientX-sx; if(Math.abs(dx)>6) moved=true; rail.scrollLeft=sl-dx; }); window.addEventListener('pointerup',function(){ if(!down) return; down=false; rail.classList.remove('is-drag'); }); rail.addEventListener('click',function(e){ if(moved){ e.preventDefault(); e.stopPropagation(); } },true); decorate(s); s.classList.add('has-data'); var show=function(){ s.classList.add('is-in'); }; if('IntersectionObserver' in window){ var io=new IntersectionObserver(function(en){ en.forEach(function(x){ if(x.isIntersecting){ show(); io.disconnect(); } }); },{threshold:.15}); io.observe(s); } else show(); } function good(r){ var t=String(r.content||r.text||'').trim(); return r && !r.is_pending && (+r.stars||0)>=4 && t.length>=8; } function load(s){ if(s.getAttribute('data-rx-t')) return; s.setAttribute('data-rx-t','1'); var api=window.salla&&salla.api&&salla.api.component; if(!api||!api.getReviews){ s.removeAttribute('data-rx-t'); return; } Promise.all([ api.getReviews({type:'store',per_page:MAX}).then(function(r){return (r&&r.data)||[];}).catch(function(){return [];}), api.getReviews({type:'products',per_page:MAX}).then(function(r){return (r&&r.data)||[];}).catch(function(){return [];}) ]).then(function(res){ var seen={}, list=[]; res[0].concat(res[1]).forEach(function(r){ if(good(r) && !seen[r.id]){ seen[r.id]=1; list.push(r); } }); list=list.slice(0,MAX); if(list.length>=MIN) render(s,list); }); } window.rxTstRender=function(list){ var s=document.querySelector('.rx-tst'); if(s) render(s,list); }; function go(){ document.querySelectorAll('.rx-tst').forEach(load); } function start(){ go(); var n=0; var t=setInterval(function(){ go(); if(++n>30) clearInterval(t); },300); window.addEventListener('load',go); } if(document.body) start(); else document.addEventListener('DOMContentLoaded',start); })(); /* رام أجمل — RX BANNER: ظهور تدريجي + لمعة لـ«بانر عريض» من سلة */ (function(){ function go(){ document.querySelectorAll('.s-block--fixed-banner a.banner--fixed:not([data-rxb])').forEach(function(a){ a.setAttribute('data-rxb','1'); var done=function(){ a.classList.remove('rx-pre'); a.classList.add('is-in'); }; if(!('IntersectionObserver' in window)) return done(); if(a.getBoundingClientRect().top>window.innerHeight) a.classList.add('rx-pre'); var io=new IntersectionObserver(function(en){ en.forEach(function(x){ if(x.isIntersecting){ done(); io.disconnect(); } }); },{threshold:.2}); io.observe(a); }); } if(document.readyState!=='loading') go(); else document.addEventListener('DOMContentLoaded',go); window.addEventListener('load',go); })(); /* رام أجمل — RX CATS SUB: نص فرعي لبطاقات التصنيفات 2–4 (الأولى من حقل سيليا). المفتاح = اسم التصنيف */ (function(){ var SUB={'عبايات مطرزة':'تطريزٌ يروي التفاصيل','عبايات بشت':'انسيابٌ واسع بلمسة فخامة','عبايات كلوش':'حركةٌ ناعمة مع كل خطوة'}; function go(){ document.querySelectorAll('.rx-cats .group-banner .banner-wrapper-infor .content').forEach(function(c){ if(c.querySelector('.single-banner-subtitle')) return; var b=c.querySelector('.banner-button'); if(!b) return; var t=SUB[b.textContent.trim()]; if(!t) return; var d=document.createElement('div'); d.className='single-banner-subtitle'; d.textContent=t; c.insertBefore(d,b); }); } if(document.readyState!=='loading') go(); else document.addEventListener('DOMContentLoaded',go); window.addEventListener('load',go); })(); /* ===== RX FJ — «لماذا رام أجمل؟» خيط الرحلة (rx-feat) ===== */ window.RXFJ_CFG={"svg":{"67d645ea":"","ff6dbe9f":"","ef2a0f9b":"","c181afe3":""},"t":{"67d645ea":0,"ff6dbe9f":0.9,"ef2a0f9b":2.4,"c181afe3":2.6},"photo":"https://cdn.files.salla.network/homepage/1049379976/88b58342-bc0a-4086-b60f-657dd665d131-original.webp","logo":"https://cdn.files.salla.network/other/1049379976/ad0224bc-7cad-4cc6-b550-34f89e657a6f-original.webp","rx":0.946,"ry":0.634}; /* رام أجمل — RX FJ: «لماذا رام أجمل؟» بأسلوب خيط الرحلة. يعيد ترتيب عنصر «مميزات المتجر المحسنة» (rx-feat): النصوص والصور من حقول العنصر، الخيط يُرسم مع التمرير وينتهي عند ماسة الشعار، والرسوم تتحرك عند وصول الخيط إليها. */ (function(){ var C=window.RXFJ_CFG||{}; var SVG=C.svg||{}, T=C.t||{}; var HEAD='

لماذا رام أجمل؟

تفاصيل صغيرة تجعل تجربتكِ أسهل.

'; var LIFT=[6,30,-4,24]; var reduce=window.matchMedia&&matchMedia('(prefers-reduced-motion: reduce)').matches; var NS='http://www.w3.org/2000/svg'; var BG=''; var VEIL=''; function el(t,c){ var e=document.createElement(t); if(c) e.className=c; return e; } function build(s){ if(s.getAttribute('data-rxfj')) return; var grid=s.querySelector('.enhanced-features__grid'); if(!grid) return; s.setAttribute('data-rxfj','1'); s.classList.add('rx-fj'); var old=s.querySelector('.rx-feat__head'); if(old) old.remove(); var bg=el('div','rx-fj__bg'); bg.innerHTML=BG; s.insertBefore(bg,s.firstChild); var inner=el('div','rx-fj__inner'); var th=document.createElementNS(NS,'svg'); th.setAttribute('class','rx-fj__thread'); th.setAttribute('aria-hidden','true'); var ghost=document.createElementNS(NS,'path'); ghost.setAttribute('class','rx-fj__ghost'); var line=document.createElementNS(NS,'path'); var cn=document.createElementNS(NS,'polygon'); cn.setAttribute('class','rx-fj__corner'); var tl=document.createElementNS(NS,'path'); tl.setAttribute('class','rx-fj__tail'); th.appendChild(ghost); th.appendChild(line); th.appendChild(tl); th.appendChild(cn); var TL=0, tv=0; inner.appendChild(th); var cf=2; var main=el('div','rx-fj__main'); var head=el('div','rx-feat__head'); head.innerHTML=HEAD; main.appendChild(head); var list=el('div','rx-fj__list'); main.appendChild(list); var items=[], svgs=[]; grid.querySelectorAll('.s-block--enhanced-features__item').forEach(function(src,i){ var it=el('div','rx-fj__item'), pin=el('div','rx-fj__pin'), node=el('span','rx-fj__node'); pin.style.setProperty('--lift',(LIFT[i%4])+'px'); var ic=src.querySelector('.feature-icon'); if(ic){ pin.appendChild(ic); var img=ic.querySelector('img'), sv=null; if(img){ var u=img.getAttribute('data-src')||img.getAttribute('src')||''; for(var k in SVG){ if(u.indexOf(k)>-1){ var w=el('div'); w.innerHTML=SVG[k]; sv=w.firstChild; sv.setAttribute('role','img'); sv.setAttribute('aria-label',img.getAttribute('alt')||''); img.replaceWith(sv); try{ sv.pauseAnimations(); sv.setCurrentTime(T[k]||0); }catch(e){} break; } } } svgs.push(sv); } else svgs.push(null); pin.appendChild(node); it.appendChild(pin); var h=src.querySelector('h2'), p=src.querySelector('p'); if(h) it.appendChild(h); if(p) it.appendChild(p); list.appendChild(it); items.push({el:it,node:node,sv:svgs[i],on:false,f:0}); }); var vis=el('div','rx-fj__visual'), fr=el('div','rx-fj__frame'), arch=el('div','rx-fj__arch'); var ph=new Image(); ph.alt=''; ph.loading='lazy'; ph.decoding='async'; ph.src=C.photo||''; arch.appendChild(ph); fr.appendChild(arch); var veil=el('div','rx-fj__veil'); veil.innerHTML=VEIL; fr.appendChild(veil); var logo=el('div','rx-fj__logo'); if(C.logoSvg) logo.innerHTML=C.logoSvg; else if(C.logo){ var li=new Image(); li.alt='رام أجمل'; li.src=C.logo; logo.appendChild(li); } vis.appendChild(fr); vis.appendChild(logo); inner.appendChild(main); inner.appendChild(vis); s.appendChild(inner); var L=0, prog=-1, ticking=false; function rel(r,b){ return {x:r.left+r.width/2-b.left, y:r.top+r.height/2-b.top}; } function layout(){ var b=inner.getBoundingClientRect(); var desk=getComputedStyle(list).gridTemplateColumns.split(' ').length>1; var P=items.map(function(o){ return rel(o.node.getBoundingClientRect(),b); }); if(!P.length) return; var lr=logo.getBoundingClientRect(); var lx=lr.left-b.left+lr.width*(C.rx||.946), ly=lr.top-b.top+lr.height*(C.ry||.634); var start=desk?{x:b.width+60,y:P[0].y-36}:{x:P[0].x,y:P[0].y-90}; var pts=[start].concat(P,[{x:lx,y:ly}]); var d='M'+pts[0].x.toFixed(1)+' '+pts[0].y.toFixed(1), td=''; if(!desk){ /* الجوال: خط عمودي عبر العقد، ثم زاوية منحنية، ثم أفقي إلى ماسة الشعار */ P.forEach(function(q){ d+=' L'+q.x.toFixed(1)+' '+q.y.toFixed(1); }); /* زاوية منحنية (نصف قطر 26px) بين الخط العمودي وخط الشعار الأفقي */ var la=P[P.length-1], sg=la.x>lx?1:-1, cx=la.x, cy=ly, rr=Math.max(0,Math.min(26,Math.abs(cx-lx)/2,(cy-la.y)/2)); /* الجزء الأخير (من «شحن سريع» إلى الشعار) مسار مستقل بلون خافت مثل إطار الصورة */ td='M'+cx.toFixed(1)+' '+la.y.toFixed(1)+' L'+cx.toFixed(1)+' '+(cy-rr).toFixed(1)+' Q'+cx.toFixed(1)+' '+cy.toFixed(1)+' '+(cx-sg*rr).toFixed(1)+' '+cy.toFixed(1)+' L'+lx.toFixed(1)+' '+cy.toFixed(1); tv=Math.max(0,cy-la.y); cn.classList.remove('is-show','is-on'); pts=[]; } for(var i=0;i=o.f-.015){ o.on=true; o.el.classList.add('is-on'); if(o.sv&&!reduce){ try{ o.sv.setCurrentTime(0); o.sv.unpauseAnimations(); }catch(e){} } } }); } function onScroll(){ if(!ticking){ ticking=true; requestAnimationFrame(update); } } window.addEventListener('scroll',onScroll,{passive:true}); window.addEventListener('resize',function(){ requestAnimationFrame(layout); }); if('ResizeObserver' in window){ new ResizeObserver(function(){ requestAnimationFrame(layout); }).observe(inner); } ph.addEventListener('load',layout); layout(); setTimeout(layout,600); } function run(){ document.querySelectorAll('.rx-feat').forEach(build); } if(document.readyState!=='loading') run(); else document.addEventListener('DOMContentLoaded',run); window.addEventListener('load',run); })(); /* ===== /RX FJ ===== */ /* ===== RX CARD + PDP ===== */ (function(){ /* شارة الخصم داخل صورة البطاقة */ function moveBadges(root){ (root||document).querySelectorAll('custom-salla-product-card .product-card__content .product-card__discount').forEach(function(b){ var card=b.closest('custom-salla-product-card'); var img=card&&card.querySelector('.product-card__image'); if(img && !img.querySelector(':scope > .product-card__discount')) img.appendChild(b); }); } var mt=null; function schedule(){ if(mt) return; mt=setTimeout(function(){ mt=null; moveBadges(); },120); } function startCards(){ moveBadges(); try{ new MutationObserver(schedule).observe(document.body,{childList:true,subtree:true}); }catch(e){} } /* صفحة المنتج */ function el(tag,cls,html){ var e=document.createElement(tag); if(cls) e.className=cls; if(html!=null) e.innerHTML=html; return e; } function esc(t){ var d=document.createElement('div'); d.textContent=t==null?'':String(t); return d.innerHTML; } function readSpecs(){ var out=[], strongs=[].slice.call(document.querySelectorAll('strong,b')); var h=strongs.filter(function(s){ return s.textContent.trim()==='تفاصيل المنتج' && !s.closest('.product-single__info') && !s.closest('.s-tabs-header'); })[0]; if(!h) return out; var p=h.closest('p')||h, ul=p.nextElementSibling; while(ul && ul.tagName!=='UL') ul=ul.nextElementSibling; if(!ul) return out; [].slice.call(ul.querySelectorAll('li')).forEach(function(li){ var t=li.textContent.trim(), i=t.indexOf(':'); if(i>0) out.push([t.slice(0,i).trim(), t.slice(i+1).trim().replace(/\.$/,'')]); }); return out; } function buildPdp(){ var info=document.querySelector('.product-single__info'); if(!info || info.getAttribute('data-rx-pdp')) return; info.setAttribute('data-rx-pdp','1'); var form=info.querySelector('form.product-form'); var feats=info.querySelector('.product-features--wrapper'); var anchor=feats||form; if(!anchor) return; /* المواصفات */ var specs=readSpecs(); var sizes=[].slice.call(info.querySelectorAll('.s-product-options-grid-mode-span')).map(function(s){return s.textContent.trim();}).filter(Boolean); var has=function(k){ return specs.some(function(r){ return r[0].indexOf(k)>-1; }); }; if(sizes.length && !has('المقاس')) specs.push(['المقاسات المتوفرة', sizes.join(' – ')]); specs=specs.filter(function(r){ return r[0].indexOf('الفستان')<0 && r[1].length<60; }); if(specs.length){ var box=el('section','rx-pdp-specs'); box.innerHTML='

مواصفات العباية

'+specs.map(function(r){ return '
'+esc(r[0])+'
'+esc(r[1])+'
'; }).join('')+'
'; anchor.parentNode.insertBefore(box, anchor.nextSibling); anchor=box; } /* الأكورديون */ var acc=el('div','rx-pdp-acc'); acc.innerHTML= '
الشحن والتوصيل
    '+ '
  • نشحن لجميع مدن المملكة.
  • '+ '
  • الشحن مجاني للطلبات فوق 299 ريال.
  • '+ '
  • يمكنك متابعة حالة طلبك في أي وقت من صفحة «طلباتي» في حسابك.
  • '+ '
'+ '
الدفع والتقسيط
    '+ '
  • دفع آمن عبر مدى وApple Pay والبطاقات الائتمانية.
  • '+ '
  • قسّطيها عبر tabby أو tamara.
  • '+ '
'+ '
العناية بالعباية
    '+ '
  • يُفضّل الغسيل الجاف (دراي كلين) للحفاظ على التطريز وجودة القماش.
  • '+ '
  • عند الغسيل اليدوي استخدمي ماءً بارداً ومنظفاً لطيفاً، وتجنّبي العصر.
  • '+ '
  • الكي على حرارة منخفضة من الداخل، وبعيداً عن مناطق التطريز.
  • '+ '
  • علّقي العباية على شمّاعة بعيداً عن أشعة الشمس المباشرة.
  • '+ '
'; anchor.parentNode.insertBefore(acc, anchor.nextSibling); } function startPdp(){ if(!document.body.classList.contains('product-single')) return; var n=0, t=setInterval(function(){ buildPdp(); if(document.querySelector('[data-rx-pdp]') || ++n>40) clearInterval(t); },250); } function start(){ startCards(); startPdp(); } if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',start); else start(); })(); /* ===== /RX CARD + PDP ===== */ /* ===== RX FILTERS ===== */ (function(){ var CATS=[[677947293,'عبايات رسمية'],[529424795,'عبايات مطرزة'],[1302413978,'عبايات بشت'],[1942234009,'عبايات كلوش'],[1802296982,'عبايات صيفية'],[1293205096,'عبايات شتوية'],[2002097660,'عبايات ملونة']]; var pl, layout, aside, res, openBtn, shade, src, sv, base=[], member={}, pMin=0, pMax=0; var st={cats:[],lo:null,hi:null,sale:false}; function h(t,c,html){var e=document.createElement(t); if(c)e.className=c; if(html!=null)e.innerHTML=html; return e;} function price(p){ return +(p.is_on_sale&&p.sale_price?p.sale_price:p.price)||0; } function isActive(){ return st.cats.length||st.sale||(st.lo!=null&&st.lo>pMin)||(st.hi!=null&&st.hiالتصنيف
جارٍ التحميل…
'+ '
السعر
'+ '
العروض
'+ '
'; layout.insertBefore(aside, layout.firstChild); layout.classList.add('rx-has-side'); res=h('div','rx-side__res'); res.hidden=true; pl.parentNode.insertBefore(res, pl.nextSibling); shade=h('div','rx-side__shade'); document.body.appendChild(shade); var sorting=document.querySelector('.product-index__sorting'); openBtn=h('button','rx-side-open','تصفية'); openBtn.type='button'; if(sorting && sorting.parentNode){ sorting.parentNode.insertBefore(openBtn, sorting); sorting.parentNode.classList.add('rx-sortrow'); } else pl.parentNode.insertBefore(openBtn, pl); function open(v){ document.documentElement.classList.toggle('rx-side-open-now',v); } openBtn.addEventListener('click',function(){ open(true); }); shade.addEventListener('click',function(){ open(false); }); aside.querySelector('.rx-side__close').addEventListener('click',function(){ open(false); }); aside.querySelector('.rx-side__show').addEventListener('click',function(){ open(false); window.scrollTo({top:Math.max(0,layout.getBoundingClientRect().top+scrollY-90),behavior:'smooth'}); }); document.addEventListener('keydown',function(e){ if(e.key==='Escape') open(false); }); aside.querySelector('.rx-side__clear').addEventListener('click',function(){ st={cats:[],lo:pMin,hi:pMax,sale:false}; syncUI(); apply(); }); aside.querySelector('.rx-side__sale').addEventListener('change',function(e){ st.sale=e.target.checked; apply(); }); var lo=aside.querySelector('.rx-range__lo'), hi=aside.querySelector('.rx-range__hi'), nlo=aside.querySelector('.rx-range__nlo'), nhi=aside.querySelector('.rx-range__nhi'), t=null; function fromRange(){ var a=+lo.value, b=+hi.value; if(a>b){ var x=a; a=b; b=x; } st.lo=a; st.hi=b; paintRange(); clearTimeout(t); t=setTimeout(apply,180); } lo.addEventListener('input',fromRange); hi.addEventListener('input',fromRange); function fromNum(){ var a=Math.max(pMin,Math.min(pMax,+nlo.value||pMin)), b=Math.max(pMin,Math.min(pMax,+nhi.value||pMax)); if(a>b){var x=a;a=b;b=x;} st.lo=a; st.hi=b; syncUI(); apply(); } nlo.addEventListener('change',fromNum); nhi.addEventListener('change',fromNum); var sel=document.getElementById('product-filter'); if(sel) sel.addEventListener('change',function(){ if(isActive()) apply(); }); } function paintRange(){ var lo=aside.querySelector('.rx-range__lo'), hi=aside.querySelector('.rx-range__hi'), f=aside.querySelector('.rx-range__fill'); lo.value=st.lo; hi.value=st.hi; aside.querySelector('.rx-range__nlo').value=st.lo; aside.querySelector('.rx-range__nhi').value=st.hi; var span=(pMax-pMin)||1, a=(st.lo-pMin)/span*100, b=(st.hi-pMin)/span*100; f.style.right=a+'%'; f.style.left=(100-b)+'%'; } function syncUI(){ aside.querySelectorAll('.rx-side__cat').forEach(function(i){ i.checked=st.cats.indexOf(+i.value)>-1; }); aside.querySelector('.rx-side__sale').checked=st.sale; paintRange(); } function filtered(){ var list=base.filter(function(p){ if(st.sale && !p.is_on_sale) return false; var v=price(p); if(vst.hi) return false; if(st.cats.length && !st.cats.some(function(c){ return member[c] && member[c][p.id]; })) return false; return true; }); var sel=document.getElementById('product-filter'), m=sel&&sel.value; if(m==='priceFromLowToTop') list.sort(function(a,b){return price(a)-price(b);}); else if(m==='priceFromTopToLow') list.sort(function(a,b){return price(b)-price(a);}); else if(m==='bestSell') list.sort(function(a,b){return (b.sold_quantity||0)-(a.sold_quantity||0);}); else if(m==='topRated') list.sort(function(a,b){return ((b.rating&&b.rating.stars)||0)-((a.rating&&a.rating.stars)||0);}); return list; } function apply(){ var on=isActive(), n=(st.cats.length)+(st.sale?1:0)+((st.lo>pMin||st.hi0 && String(r[0][0])!==String(sv); }); if(!rows.length){ box.closest('details').hidden=true; return; } box.innerHTML=rows.map(function(r){ return ''; }).join(''); box.querySelectorAll('.rx-side__cat').forEach(function(i){ i.addEventListener('change',function(){ st.cats=[].slice.call(box.querySelectorAll('.rx-side__cat:checked')).map(function(x){return +x.value;}); apply(); }); }); } function load(){ fetchAll(baseParams()).then(function(list){ var seen={}; base=list.filter(function(p){ if(seen[p.id]) return false; seen[p.id]=1; return true; }); if(/offers/.test(src)) base=base.filter(function(p){return p.is_on_sale;}); var ps=base.map(price); pMin=ps.length?Math.floor(Math.min.apply(null,ps)):0; pMax=ps.length?Math.ceil(Math.max.apply(null,ps)):0; ['lo','hi'].forEach(function(k){ var r=aside.querySelector('.rx-range__'+k); r.min=pMin; r.max=pMax; r.step=1; }); st.lo=pMin; st.hi=pMax; paintRange(); aside.querySelector('.rx-side__salen').textContent=base.filter(function(p){return p.is_on_sale;}).length; if(pMin===pMax) aside.querySelectorAll('.rx-side__sec')[1].hidden=true; return CATS.reduce(function(pr,c){ return pr.then(function(){ return fetchAll({source:'categories',source_value:[c[0]]}).then(function(l){ var m={}; l.forEach(function(p){m[p.id]=1;}); member[c[0]]=m; }).catch(function(){ member[c[0]]={}; }); }); }, Promise.resolve()); }).then(renderCats).catch(function(){ aside.querySelector('.rx-side__cats').innerHTML='
تعذّر التحميل
'; }); } function ensureSort(){ /* بعض الصفحات (مثل العروض) لا يعرض فيها الثيم قائمة «ترتيب حسب» — ننشئها بنفس شكل الثيم */ if(document.querySelector('.product-index__sorting')) return; var host=document.querySelector('.product-index__toolbar-actions'); if(!host) return; var box=h('div','product-index__sorting flex items-center', ''+ ''); host.appendChild(box); box.querySelector('select').addEventListener('change',function(e){ var v=e.target.value; try{ pl.sortBy=v; pl.setAttribute('sort-by',v); if(pl.reload) pl.reload(); }catch(err){} }); } function init(){ if(!/(^|\s)product-index/.test(document.body.className)) return true; pl=document.querySelector('salla-products-list'); layout=document.querySelector('.product-index__layout'); if(!pl || !layout) return false; if(document.querySelector('.rx-side')) return true; if(!window.salla || !salla.api || !salla.api.product) return false; src=pl.getAttribute('source')||''; sv=pl.getAttribute('source-value')||''; if(src==='categories' && /^\[/.test(sv)){ try{ sv=JSON.parse(sv)[0]+''; }catch(e){} } if(src==='product.index' && /^\d+$/.test(sv)) src='categories'; ensureSort(); build(); load(); return true; } function start(){ var n=0, t=setInterval(function(){ if(init() || ++n>40) clearInterval(t); },250); } if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',start); else start(); })(); /* ===== /RX FILTERS ===== */