diff --git a/app/frontend/m/css/features.css b/app/frontend/m/css/features.css index 921cd59..9d2c30a 100644 --- a/app/frontend/m/css/features.css +++ b/app/frontend/m/css/features.css @@ -2323,6 +2323,8 @@ white-space: nowrap; } .m-chat-preset-list .m-source-tab { + flex: 0 0 auto; + white-space: nowrap; border: 1px solid var(--border-strong); background: var(--surface); color: var(--text-secondary); @@ -2344,6 +2346,11 @@ max-width: 82%; } .m-chat-followup-row .m-source-tab { + flex: 0 0 auto; + white-space: nowrap; + max-width: 100%; + overflow: hidden; + text-overflow: ellipsis; border: 1px solid var(--border-strong); background: var(--surface); color: var(--text-secondary); @@ -2374,7 +2381,6 @@ border-top: 1px solid var(--border); /* 键盘弹起时由 --m-keyboard-inset 推上 */ transform: translateY(calc(-1 * var(--m-keyboard-inset, 0px))); - padding-bottom: calc(8px + var(--mobile-safe-bottom) + var(--m-keyboard-inset, 0px)); } .m-chat-input-wrap { @@ -2613,6 +2619,29 @@ margin-bottom: 8px; flex-wrap: wrap; } +.m-screener-drawer-cats .m-source-tab { + flex: 0 0 auto; + white-space: nowrap; + height: 32px; + border-radius: 999px; + padding: 0 14px; + font-size: 13px; +} +.m-screener-drawer-section { + display: flex; + align-items: baseline; + justify-content: space-between; + margin: 4px 0 8px; +} +.m-screener-drawer-section-title { + font-size: var(--font-size-label); + font-weight: 600; + color: var(--text-secondary); +} +.m-screener-drawer-section-count { + font-size: 12px; + color: var(--text-tertiary); +} .m-screener-drawer-list { display: flex; flex-direction: column; @@ -2633,6 +2662,7 @@ color: var(--text-primary); } .m-screener-drawer-row:active { background: var(--surface-hover); } +.m-screener-drawer-row.is-current { background: var(--surface-selected); } .m-screener-drawer-main { flex: 1 1 auto; min-width: 0; diff --git a/app/frontend/m/js/boot.js b/app/frontend/m/js/boot.js index eb1bb6b..9ecc085 100644 --- a/app/frontend/m/js/boot.js +++ b/app/frontend/m/js/boot.js @@ -39,7 +39,9 @@ app.style.setProperty("--m-keyboard-inset", "0px"); return; } - const inset = Math.max(0, global.innerHeight - visual.height - visual.offsetTop); + // 键盘高度 = 布局视口高度 - 可视视口高度。iOS 弹键盘时会同时抬升 offsetTop, + // 若再扣 offsetTop 会把 inset 算成 0,导致输入区/底栏不避让,故只按高度差计算。 + const inset = Math.max(0, global.innerHeight - visual.height); app.style.setProperty("--m-keyboard-inset", inset + "px"); } diff --git a/app/frontend/m/js/pages.js b/app/frontend/m/js/pages.js index ece020d..ece9f5e 100644 --- a/app/frontend/m/js/pages.js +++ b/app/frontend/m/js/pages.js @@ -2080,7 +2080,7 @@ const status = screenerStrategyStatusTextFor(s, state.screener.data); const statusCls = status === "数据不足" ? 'm-strategy-status--warn' : (status === "暂无信号" || status === "等待盘后" ? 'm-strategy-status--muted' : ''); const regimeText = screenerStrategyRegimeText(s); - return '