[FIX] website_sale_aplicoop: wire home delivery preference through all save flows
Three bugs prevented home_delivery from reaching sale.order: 1. #home-delivery-btn (shop sidebar) had no JS handler — clicking it did nothing. Now it toggles active state and persists choice to sessionStorage. 2. _executeSaveCartAsDraft (Save Cart button) never included is_delivery in the request body. Now reads the toggle button state (or the page-level data-home-delivery-enabled fallback) and sends is_delivery correctly. 3. #home-delivery-checkbox on checkout page was unchecked by default and always shown. Now it is pre-checked when group_order.home_delivery is True, wrapped in t-if to hide it when delivery is not configured, and synced bidirectionally with sessionStorage so the shop-page toggle state carries over to checkout. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
a1899483c5
commit
27097004fb
2 changed files with 61 additions and 2 deletions
|
|
@ -806,6 +806,30 @@
|
|||
});
|
||||
}
|
||||
|
||||
// On checkout page: apply sessionStorage delivery preference to checkbox.
|
||||
// The shop-page toggle may have stored a "false" preference even though
|
||||
// the checkbox is checked by default in the template.
|
||||
var checkoutCheckbox = document.getElementById("home-delivery-checkbox");
|
||||
if (checkoutCheckbox) {
|
||||
var storedDeliveryPref = sessionStorage.getItem(
|
||||
"eskaera_is_delivery_" + self.orderId
|
||||
);
|
||||
if (storedDeliveryPref !== null) {
|
||||
checkoutCheckbox.checked = storedDeliveryPref === "true";
|
||||
console.log(
|
||||
"[CHECKOUT] Restored delivery checkbox from sessionStorage:",
|
||||
checkoutCheckbox.checked
|
||||
);
|
||||
}
|
||||
// Sync sessionStorage when user manually changes the checkbox
|
||||
checkoutCheckbox.addEventListener("change", function () {
|
||||
sessionStorage.setItem(
|
||||
"eskaera_is_delivery_" + self.orderId,
|
||||
this.checked ? "true" : "false"
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
// Button to reload from draft (in My Cart header - cart pages)
|
||||
var reloadCartBtn = document.getElementById("reload-cart-btn");
|
||||
console.log("[_attachEventListeners] reload-cart-btn found:", !!reloadCartBtn);
|
||||
|
|
@ -830,6 +854,28 @@
|
|||
});
|
||||
}
|
||||
|
||||
// Home-delivery toggle button (shop sidebar)
|
||||
var homeDeliveryBtn = document.getElementById("home-delivery-btn");
|
||||
if (homeDeliveryBtn) {
|
||||
// Restore persisted preference on page load
|
||||
var storedDelivery = sessionStorage.getItem(
|
||||
"eskaera_is_delivery_" + self.orderId
|
||||
);
|
||||
if (storedDelivery === "true") {
|
||||
homeDeliveryBtn.classList.add("active");
|
||||
}
|
||||
homeDeliveryBtn.addEventListener("click", function (e) {
|
||||
e.preventDefault();
|
||||
var isNowActive = !homeDeliveryBtn.classList.contains("active");
|
||||
homeDeliveryBtn.classList.toggle("active", isNowActive);
|
||||
sessionStorage.setItem(
|
||||
"eskaera_is_delivery_" + self.orderId,
|
||||
isNowActive ? "true" : "false"
|
||||
);
|
||||
console.log("[HOME_DELIVERY_BTN] toggled to:", isNowActive);
|
||||
});
|
||||
}
|
||||
|
||||
// Buttons to clear cart (header + footer)
|
||||
var clearCartBtns = [
|
||||
document.getElementById("clear-cart-btn"),
|
||||
|
|
@ -1553,6 +1599,17 @@
|
|||
merge_action: "replace",
|
||||
};
|
||||
|
||||
// Include delivery preference: read from toggle button state,
|
||||
// falling back to the page-level home-delivery-enabled attribute.
|
||||
var deliveryBtn = document.getElementById("home-delivery-btn");
|
||||
if (deliveryBtn) {
|
||||
orderData.is_delivery = deliveryBtn.classList.contains("active");
|
||||
} else {
|
||||
var wrap = document.getElementById("wrap");
|
||||
var enabledAttr = wrap && wrap.getAttribute("data-home-delivery-enabled");
|
||||
orderData.is_delivery = enabledAttr === "true";
|
||||
}
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.open("POST", "/eskaera/save-order", true);
|
||||
xhr.setRequestHeader("Content-Type", "application/json");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue