Fix back-button DOM restoration: process OOB swaps on popstate, disable editor font overrides
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 2m43s
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 2m43s
- Process sx-swap-oob and hx-swap-oob elements in the popstate handler so sidebar, filter, menu, and headers are restored on back navigation - Disable the 62.5% base font-size hack that leaked globally and caused all fonts to shrink when navigating to/from the editor - Cache-bust sx.js to v=20260301d Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -2188,6 +2188,33 @@
|
||||
var popDom = Sx.render(text);
|
||||
var popContainer = document.createElement("div");
|
||||
popContainer.appendChild(popDom);
|
||||
|
||||
// Process OOB swaps (sidebar, filter, menu, headers)
|
||||
var oobs = popContainer.querySelectorAll("[sx-swap-oob]");
|
||||
oobs.forEach(function (oob) {
|
||||
var oobSwap = oob.getAttribute("sx-swap-oob") || "outerHTML";
|
||||
var oobTarget = document.getElementById(oob.id);
|
||||
oob.removeAttribute("sx-swap-oob");
|
||||
oob.parentNode.removeChild(oob);
|
||||
if (oobTarget) {
|
||||
_swapDOM(oobTarget, oob, oobSwap);
|
||||
Sx.hydrate(oobTarget);
|
||||
SxEngine.process(oobTarget);
|
||||
}
|
||||
});
|
||||
var hxOobs = popContainer.querySelectorAll("[hx-swap-oob]");
|
||||
hxOobs.forEach(function (oob) {
|
||||
var oobSwap = oob.getAttribute("hx-swap-oob") || "outerHTML";
|
||||
var oobTarget = document.getElementById(oob.id);
|
||||
oob.removeAttribute("hx-swap-oob");
|
||||
oob.parentNode.removeChild(oob);
|
||||
if (oobTarget) {
|
||||
_swapDOM(oobTarget, oob, oobSwap);
|
||||
Sx.hydrate(oobTarget);
|
||||
SxEngine.process(oobTarget);
|
||||
}
|
||||
});
|
||||
|
||||
var newMain = popContainer.querySelector("#main-panel");
|
||||
_morphChildren(main, newMain || popContainer);
|
||||
_activateScripts(main);
|
||||
@@ -2204,6 +2231,29 @@
|
||||
// HTML response — parse and morph
|
||||
var parser = new DOMParser();
|
||||
var doc = parser.parseFromString(text, "text/html");
|
||||
|
||||
// Process OOB swaps from HTML response
|
||||
var hOobs = doc.querySelectorAll("[sx-swap-oob]");
|
||||
hOobs.forEach(function (oob) {
|
||||
var oobSwap = oob.getAttribute("sx-swap-oob") || "outerHTML";
|
||||
var oobTarget = document.getElementById(oob.id);
|
||||
oob.removeAttribute("sx-swap-oob");
|
||||
if (oobTarget) {
|
||||
_swapContent(oobTarget, oob.outerHTML, oobSwap);
|
||||
}
|
||||
oob.parentNode.removeChild(oob);
|
||||
});
|
||||
var hhOobs = doc.querySelectorAll("[hx-swap-oob]");
|
||||
hhOobs.forEach(function (oob) {
|
||||
var oobSwap = oob.getAttribute("hx-swap-oob") || "outerHTML";
|
||||
var oobTarget = document.getElementById(oob.id);
|
||||
oob.removeAttribute("hx-swap-oob");
|
||||
if (oobTarget) {
|
||||
_swapContent(oobTarget, oob.outerHTML, oobSwap);
|
||||
}
|
||||
oob.parentNode.removeChild(oob);
|
||||
});
|
||||
|
||||
var newMain = doc.getElementById("main-panel");
|
||||
if (newMain) {
|
||||
_morphChildren(main, newMain);
|
||||
|
||||
Reference in New Issue
Block a user