fix(revenue): stop poster modal from blocking the whole revenue page

Two regressions from the previous commit made /user/revenue/ unusable.

The rewrite dropped data-aksrt-affiliate-poster-modal from the modal shell.
That single attribute was both the JS lookup key and the CSS hook, so
initAffiliatePoster() bailed at `if (!button || !modal) return` — which is
why the 推广海报 button never got un-hidden — and no CSS could target the
shell. Restore it.

With the shell back but still visible, main.css's .flex{display:flex} loads
after bootstrap and matches .modal{display:none} on specificity, so the
resting modal rendered as a full-viewport flex box. Combined with .fade's
opacity:0 that is an invisible overlay swallowing every click on the page.
Pin the resting state to display:none and the open state to flex, the same
way credits.css already does for the charge and points-pay modals — that
file documents this exact trap.

Add a contract test asserting the markup, JS selector and CSS hook share
one attribute and that the resting state is explicitly hidden.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
kate522andClaude Fable 5 committed 2026-10-21 19:26:48 +08:00
1 parent de0e5cd481
commit 9a22c7eb8b
3 files changed
+29 -1

No files matched your search

+11
View File
@@ -190,6 +190,17 @@
display: flex;
}
/* 推广海报弹窗壳与上面两个同构(服务端静态输出 .modal.flex.jc.fade),
静止态同样必须显式隐藏,否则 .flex 工具类会使其铺满全屏形成隐形遮罩,
拦截整页点击。打开态由 initAffiliatePoster 的内联 display:flex 驱动,
关闭撤除内联样式后即回到隐藏规则。 */
.modal[data-aksrt-affiliate-poster-modal] {
display: none;
}
.modal[data-aksrt-affiliate-poster-modal].in {
display: flex;
}
.balance-charge-form .zib-widget {
clear: both;
background-color: var(--main-bg-color);