fix(HEL-114): P3a验收三条整改——选股抽屉分类胶囊横排+策略列表辨识度/聊天输入区键盘避让/追问与预置胶囊渲染
Co-authored-by: multica-agent <github@multica.ai>
This commit is contained in:
@@ -2323,6 +2323,8 @@
|
|||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
.m-chat-preset-list .m-source-tab {
|
.m-chat-preset-list .m-source-tab {
|
||||||
|
flex: 0 0 auto;
|
||||||
|
white-space: nowrap;
|
||||||
border: 1px solid var(--border-strong);
|
border: 1px solid var(--border-strong);
|
||||||
background: var(--surface);
|
background: var(--surface);
|
||||||
color: var(--text-secondary);
|
color: var(--text-secondary);
|
||||||
@@ -2344,6 +2346,11 @@
|
|||||||
max-width: 82%;
|
max-width: 82%;
|
||||||
}
|
}
|
||||||
.m-chat-followup-row .m-source-tab {
|
.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);
|
border: 1px solid var(--border-strong);
|
||||||
background: var(--surface);
|
background: var(--surface);
|
||||||
color: var(--text-secondary);
|
color: var(--text-secondary);
|
||||||
@@ -2374,7 +2381,6 @@
|
|||||||
border-top: 1px solid var(--border);
|
border-top: 1px solid var(--border);
|
||||||
/* 键盘弹起时由 --m-keyboard-inset 推上 */
|
/* 键盘弹起时由 --m-keyboard-inset 推上 */
|
||||||
transform: translateY(calc(-1 * var(--m-keyboard-inset, 0px)));
|
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 {
|
.m-chat-input-wrap {
|
||||||
@@ -2613,6 +2619,29 @@
|
|||||||
margin-bottom: 8px;
|
margin-bottom: 8px;
|
||||||
flex-wrap: wrap;
|
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 {
|
.m-screener-drawer-list {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
@@ -2633,6 +2662,7 @@
|
|||||||
color: var(--text-primary);
|
color: var(--text-primary);
|
||||||
}
|
}
|
||||||
.m-screener-drawer-row:active { background: var(--surface-hover); }
|
.m-screener-drawer-row:active { background: var(--surface-hover); }
|
||||||
|
.m-screener-drawer-row.is-current { background: var(--surface-selected); }
|
||||||
.m-screener-drawer-main {
|
.m-screener-drawer-main {
|
||||||
flex: 1 1 auto;
|
flex: 1 1 auto;
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
|
|||||||
@@ -39,7 +39,9 @@
|
|||||||
app.style.setProperty("--m-keyboard-inset", "0px");
|
app.style.setProperty("--m-keyboard-inset", "0px");
|
||||||
return;
|
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");
|
app.style.setProperty("--m-keyboard-inset", inset + "px");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2080,7 +2080,7 @@
|
|||||||
const status = screenerStrategyStatusTextFor(s, state.screener.data);
|
const status = screenerStrategyStatusTextFor(s, state.screener.data);
|
||||||
const statusCls = status === "数据不足" ? 'm-strategy-status--warn' : (status === "暂无信号" || status === "等待盘后" ? 'm-strategy-status--muted' : '');
|
const statusCls = status === "数据不足" ? 'm-strategy-status--warn' : (status === "暂无信号" || status === "等待盘后" ? 'm-strategy-status--muted' : '');
|
||||||
const regimeText = screenerStrategyRegimeText(s);
|
const regimeText = screenerStrategyRegimeText(s);
|
||||||
return '<button class="m-screener-drawer-row" type="button" data-screener-row="' + escapeHtml(String(s.id)) + '">' +
|
return '<button class="m-screener-drawer-row' + (isCurrent ? ' is-current' : '') + '" type="button" data-screener-row="' + escapeHtml(String(s.id)) + '">' +
|
||||||
'<span class="m-screener-drawer-main">' +
|
'<span class="m-screener-drawer-main">' +
|
||||||
'<span class="m-screener-drawer-name">' + escapeHtml(s.name) + (isCurrent ? ' <span class="m-strategy-check">' + icon("check", 16) + '</span>' : '') + '</span>' +
|
'<span class="m-screener-drawer-name">' + escapeHtml(s.name) + (isCurrent ? ' <span class="m-strategy-check">' + icon("check", 16) + '</span>' : '') + '</span>' +
|
||||||
(regimeText ? '<small class="m-screener-drawer-sub">' + escapeHtml(regimeText) + '</small>' : '') +
|
(regimeText ? '<small class="m-screener-drawer-sub">' + escapeHtml(regimeText) + '</small>' : '') +
|
||||||
@@ -2090,6 +2090,10 @@
|
|||||||
}).join("") || '<div class="m-state m-state--error"><p>无匹配策略</p></div>';
|
}).join("") || '<div class="m-state m-state--error"><p>无匹配策略</p></div>';
|
||||||
return '<div class="m-form-field m-screener-drawer-search"><span class="m-screener-drawer-search-icon">' + icon("search", 16) + '</span><input type="search" placeholder="搜索策略" data-screener-drawer-search></div>' +
|
return '<div class="m-form-field m-screener-drawer-search"><span class="m-screener-drawer-search-icon">' + icon("search", 16) + '</span><input type="search" placeholder="搜索策略" data-screener-drawer-search></div>' +
|
||||||
'<div class="m-source-tabs m-screener-drawer-cats" role="tablist">' + catPills + '</div>' +
|
'<div class="m-source-tabs m-screener-drawer-cats" role="tablist">' + catPills + '</div>' +
|
||||||
|
'<div class="m-screener-drawer-section">' +
|
||||||
|
'<span class="m-screener-drawer-section-title">选择策略</span>' +
|
||||||
|
'<span class="m-screener-drawer-section-count">' + filtered.length + ' 套</span>' +
|
||||||
|
'</div>' +
|
||||||
'<div class="m-screener-drawer-list">' + rows + '</div>';
|
'<div class="m-screener-drawer-list">' + rows + '</div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user