/* Add custom Js code below */
// Function to create the product banner
function createProductBanner() {
const productBanner = document.createElement('section');
productBanner.className = 'product-custom-banner';
productBanner.innerHTML = `
`;
return productBanner;
}
// Main function to show product page details
function showProductPageDetails() {
const productPage = document.querySelector('.product-single .full-description');
// Check if already initialized to prevent duplicates
if (!productPage || document.querySelector('.description-div.product-accordion')) {
return;
}
const faqsDiv = document.createElement("div");
faqsDiv.className = "description-div product-accordion";
const brandsList = document.createElement("div");
// الشحن والتوصيل
const delivery = document.createElement("div");
delivery.innerHTML = 'للإطلاع على تفاصيل الشحن و التوصيل اضغط: هنا صفحة الشحن والتوصيل
';
// الاسترجاع والاستبدال
const packet = document.createElement("div");
packet.innerHTML = 'للاطلاع على تفاصيل الاستبدال و الاسترجاع اضغط: هنا صفحة الاستبدال والاسترجاع
';
// Product metadata - move original into accordion (no clone) to avoid duplication
const productDetails = document.querySelector('salla-metadata .s-metadata-box');
if (productDetails) {
const des = document.createElement("div");
const desTitle = document.createElement("button");
desTitle.className = "accordion";
desTitle.innerText = "مواصفات المنتج";
const desText = document.createElement("p");
desText.className = "accordion-content";
// Move the original element into accordion so it appears only once
desText.appendChild(productDetails);
des.appendChild(desTitle);
des.appendChild(desText);
brandsList.appendChild(des);
// Banner inside accordion, right after "مواصفات المنتج"
brandsList.appendChild(createProductBanner());
// Remove original wrapper so specs don't show again under salla-installment
const metadataWrapper = document.querySelector('salla-metadata');
if (metadataWrapper && !metadataWrapper.querySelector('.s-metadata-box')) {
metadataWrapper.remove();
}
}
brandsList.appendChild(packet);
brandsList.appendChild(delivery);
faqsDiv.appendChild(brandsList);
productPage.after(faqsDiv);
// Initialize accordion after adding
initAccordion();
}
// Function to initialize accordion
function initAccordion() {
const accordionBtns = document.querySelectorAll(".accordion");
accordionBtns.forEach((accordion) => {
// Remove old listeners by cloning
const newAccordion = accordion.cloneNode(true);
accordion.parentNode.replaceChild(newAccordion, accordion);
newAccordion.onclick = function() {
this.classList.toggle("is-open");
let content = this.nextElementSibling;
if (content.style.maxHeight) {
content.style.maxHeight = null;
} else {
content.style.maxHeight = 'max-content';
}
};
});
}
// Function to wait for element with retry
function waitForElement(selector, callback, maxAttempts = 20, interval = 200) {
let attempts = 0;
const checkElement = setInterval(() => {
attempts++;
const element = document.querySelector(selector);
if (element) {
clearInterval(checkElement);
callback();
} else if (attempts >= maxAttempts) {
clearInterval(checkElement);
}
}, interval);
}
// Initialize function
function initProductPage() {
// Remove old content first
const oldAccordion = document.querySelector('.description-div.product-accordion');
const oldBanner = document.querySelector('.product-custom-banner');
if (oldAccordion) oldAccordion.remove();
if (oldBanner) oldBanner.remove();
// Wait for product page to be ready
waitForElement('.product-single .full-description', () => {
showProductPageDetails();
});
}
// Initialize on page load
document.addEventListener("DOMContentLoaded", () => {
initProductPage();
});
// Listen for Salla page navigation events
if (typeof salla !== 'undefined') {
salla.event.page.onLoaded(() => {
initProductPage();
});
}
// Fallback: Check every 2 seconds if on product page
setInterval(() => {
const product = document.querySelector('.product-single');
const hasAccordion = document.querySelector('.description-div.product-accordion');
if (product && !hasAccordion) {
initProductPage();
}
}, 2000);