Avoid hub iframe overlay on embed shell tab switches.
Use in-shell content loading state instead of parent postMessage so tab changes do not trigger the full instance-frame loading mask. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -6,7 +6,7 @@
|
|||||||
<script src="/static/instance_theme.js?v=17"></script>
|
<script src="/static/instance_theme.js?v=17"></script>
|
||||||
<link rel="stylesheet" href="/static/instance_theme_early.css?v=4">
|
<link rel="stylesheet" href="/static/instance_theme_early.css?v=4">
|
||||||
<link rel="stylesheet" href="/static/account_risk_badge.css?v=3">
|
<link rel="stylesheet" href="/static/account_risk_badge.css?v=3">
|
||||||
<link rel="stylesheet" href="/static/instance_page.css?v=1">
|
<link rel="stylesheet" href="/static/instance_page.css?v=2">
|
||||||
<link rel="stylesheet" href="/static/instance_theme.css?v=18">
|
<link rel="stylesheet" href="/static/instance_theme.css?v=18">
|
||||||
<script src="/static/account_risk_badge.js?v=3"></script>
|
<script src="/static/account_risk_badge.js?v=3"></script>
|
||||||
<meta name="theme-color" content="#0b0d14">
|
<meta name="theme-color" content="#0b0d14">
|
||||||
@@ -115,6 +115,6 @@
|
|||||||
<script src="/static/manual_order_rr_preview.js?v=3"></script>
|
<script src="/static/manual_order_rr_preview.js?v=3"></script>
|
||||||
<script src="/static/key_monitor_form.js?v=1"></script>
|
<script src="/static/key_monitor_form.js?v=1"></script>
|
||||||
{% include 'embed_boot_scripts.html' %}
|
{% include 'embed_boot_scripts.html' %}
|
||||||
<script src="/static/instance_embed.js?v=1"></script>
|
<script src="/static/instance_embed.js?v=2"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -3368,6 +3368,7 @@
|
|||||||
const d = ev.data;
|
const d = ev.data;
|
||||||
if (!d || typeof d !== "object") return;
|
if (!d || typeof d !== "object") return;
|
||||||
if (d.type === "instance-frame-navigating") {
|
if (d.type === "instance-frame-navigating") {
|
||||||
|
if (d.embedShellTab) return;
|
||||||
setInstanceFrameNavLoading(true);
|
setInstanceFrameNavLoading(true);
|
||||||
} else if (d.type === "instance-frame-ready") {
|
} else if (d.type === "instance-frame-ready") {
|
||||||
setInstanceFrameNavLoading(false);
|
setInstanceFrameNavLoading(false);
|
||||||
|
|||||||
@@ -33,16 +33,9 @@
|
|||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
function notifyParentNavStart() {
|
function setRootLoading(on) {
|
||||||
try {
|
const root = document.getElementById("embed-page-root");
|
||||||
window.parent.postMessage({ type: "instance-frame-navigating" }, "*");
|
if (root) root.classList.toggle("is-embed-tab-loading", !!on);
|
||||||
} catch (_) {}
|
|
||||||
}
|
|
||||||
|
|
||||||
function notifyParentReady() {
|
|
||||||
try {
|
|
||||||
window.parent.postMessage({ type: "instance-frame-ready" }, "*");
|
|
||||||
} catch (_) {}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function setNavActive(tab) {
|
function setNavActive(tab) {
|
||||||
@@ -99,7 +92,7 @@
|
|||||||
if (!tab || loadingTab) return;
|
if (!tab || loadingTab) return;
|
||||||
const token = ++navToken;
|
const token = ++navToken;
|
||||||
loadingTab = true;
|
loadingTab = true;
|
||||||
notifyParentNavStart();
|
setRootLoading(true);
|
||||||
try {
|
try {
|
||||||
const qs = listWindowQueryString();
|
const qs = listWindowQueryString();
|
||||||
const url = "/api/embed/page/" + encodeURIComponent(tab) + (qs ? "?" + qs : "");
|
const url = "/api/embed/page/" + encodeURIComponent(tab) + (qs ? "?" + qs : "");
|
||||||
@@ -122,7 +115,7 @@
|
|||||||
} finally {
|
} finally {
|
||||||
if (token === navToken) {
|
if (token === navToken) {
|
||||||
loadingTab = false;
|
loadingTab = false;
|
||||||
notifyParentReady();
|
setRootLoading(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -214,7 +207,9 @@
|
|||||||
patchHardNavigations();
|
patchHardNavigations();
|
||||||
bindNav();
|
bindNav();
|
||||||
runPageInit(getTab());
|
runPageInit(getTab());
|
||||||
notifyParentReady();
|
try {
|
||||||
|
window.parent.postMessage({ type: "instance-frame-ready" }, "*");
|
||||||
|
} catch (_) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
global.InstanceEmbed = {
|
global.InstanceEmbed = {
|
||||||
|
|||||||
@@ -218,3 +218,5 @@
|
|||||||
.stats-period-block:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}
|
.stats-period-block:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}
|
||||||
.stats-period-block h3{font-size:1rem;color:#dbe4ff;margin-bottom:4px}
|
.stats-period-block h3{font-size:1rem;color:#dbe4ff;margin-bottom:4px}
|
||||||
.stats-period-block .sub{font-size:.78rem;color:#8892b0;margin-bottom:10px;line-height:1.4}
|
.stats-period-block .sub{font-size:.78rem;color:#8892b0;margin-bottom:10px;line-height:1.4}
|
||||||
|
#embed-page-root{transition:opacity .12s ease}
|
||||||
|
#embed-page-root.is-embed-tab-loading{opacity:.55;pointer-events:none}
|
||||||
|
|||||||
Reference in New Issue
Block a user