fix(ban): hide scrollbars entirely in ban modals

申诉弹窗等内容区的细滚动条(mini-scrollbar 悬停显现的 3px 滚动条)也不予保留:
三个禁封弹窗(禁封/解封 max-vh7、申诉 max-vh5、禁封记录 max-vh5)的滚动容器
统一改用 no-scrollbar(scrollbar-width:none + ::-webkit-scrollbar{display:none}),
滚动能力保留但任何状态下都不显示滚动条。契约测试锁定:ban 相关helper 不得
再出现 mini-scrollbar。
This commit is contained in:
2026-09-22 19:53:03 +08:00
parent 7a3f5d7c34
commit 5201f2ab6f
2 changed files with 7 additions and 6 deletions
+4 -4
View File
@@ -294,10 +294,10 @@ function aksrt_get_user_ban_appeal_modal(int $user_id): string
}
$desc_html = (string) $settings['desc'] !== '' ? '<div class="mb10 em09">' . wp_kses_post(nl2br(esc_html((string) $settings['desc']))) . '</div>' : '';
// 滚动容器 1:1 参考主题申诉弹窗:scroll-y + mini-scrollbar(无侧边滚动栏)+ max-vh5(50vh,
// 滚动容器:scroll-y + no-scrollbar(完全隐藏滚动条,含细滚动条)+ max-vh5(50vh,
// 内层滚动、外层对话框不滚动);说明框保持 rows=3 自然高度,不做 autoHeight 压缩。
$html .= '<form class="aksrt-user-ban-appeal-form" data-aksrt-appeal-form>'
. '<div class="scroll-y mini-scrollbar max-vh5">' . $info_box . $input . $desc_html . '</div>'
. '<div class="scroll-y no-scrollbar max-vh5">' . $info_box . $input . $desc_html . '</div>'
. $footer . '</form>';
$html .= '</div>';
@@ -358,7 +358,7 @@ function aksrt_get_user_ban_log_modal(int $user_id): string
}
$html .= '<div class="c-yellow mb10">' . esc_html(sprintf(__('该用户共有%d次禁封记录', 'aksrt'), count($logs))) . '</div>';
$html .= '<div class="scroll-y mini-scrollbar max-vh5">';
$html .= '<div class="scroll-y no-scrollbar max-vh5">';
$i = 1;
foreach ($logs as $log) {
$type = (string) ($log['type'] ?? '');
@@ -715,7 +715,7 @@ function aksrt_get_user_ban_modal(int $user_id): string
: '';
$html .= '<form class="aksrt-user-ban-form" data-aksrt-ban-form data-aksrt-ban-mode="ban" data-aksrt-ban-user="' . esc_attr((string) $user_id) . '">';
$html .= '<div class="scroll-y mini-scrollbar max-vh7">';
$html .= '<div class="scroll-y no-scrollbar max-vh7">';
$html .= '<div class="mt10 mb20">' . $user_row . $log_view . '</div>';
// 禁封方式(1=拉入小黑屋 suspend / 2=禁封用户 ban)。
@@ -208,9 +208,10 @@ test('ban prompt surface mirrors the reference theme modals and block page', ()
assert.match(userBanHelper, /您的申诉正在审核中,请耐心等待/)
assert.match(userBanHelper, /name="data\[/)
assert.match(userBanHelper, /详细的说明更容易通过审核喔/)
// 申诉弹窗滚动容器 1:1 参考主题:scroll-y + mini-scrollbar(无侧边滚动栏)+ max-vh5;
// 申诉弹窗滚动容器:scroll-y + no-scrollbar(完全隐藏滚动条,含细滚动条)+ max-vh5;
// 说明框保持 rows=3 自然高度(禁封弹窗留言框才有 autoHeight/maxHeight)。
assert.match(userBanHelper, /scroll-y mini-scrollbar max-vh5/)
assert.match(userBanHelper, /scroll-y no-scrollbar max-vh5/)
assert.ok(!userBanHelper.includes('mini-scrollbar'), 'ban modals must not show any scrollbar (thin included)')
const appealModalFn = userBanHelper.slice(userBanHelper.indexOf('function aksrt_get_user_ban_appeal_modal'))
const appealModalBody = appealModalFn.slice(0, appealModalFn.indexOf('\n}'))
const appealTextarea = (appealModalBody.match(/<textarea[^>]*>/) || [''])[0]