투자관리 화면 수정

This commit is contained in:
Macbook
2026-05-31 17:34:26 +09:00
parent d6c2f3e451
commit 4f2d98d4ba
20 changed files with 696 additions and 56 deletions
@@ -27,6 +27,10 @@ interface Props {
tickers?: Map<string, TickerData>;
emptyText?: string;
className?: string;
selectedTradeId?: number | null;
/** 투자관리 — 체결 행 전체 전달(탭 유지·선택 표시) */
onSelectTrade?: (trade: PaperTradeDto) => void;
/** 가상투자 등 — 종목만 (기존 동작) */
onSelectMarket?: (market: string) => void;
}
@@ -36,6 +40,8 @@ const PaperTradeHistoryList: React.FC<Props> = ({
tickers,
emptyText = '거래 내역이 없습니다.',
className = '',
selectedTradeId = null,
onSelectTrade,
onSelectMarket,
}) => (
<div className={`ptd-trade-history vtd-trade-history${className ? ` ${className}` : ''}`}>
@@ -59,7 +65,12 @@ const PaperTradeHistoryList: React.FC<Props> = ({
? (strategyNames[t.strategyId] ?? `#${t.strategyId}`)
: '—';
const isBuy = t.side === 'BUY';
const clickable = Boolean(onSelectMarket);
const clickable = Boolean(onSelectTrade || onSelectMarket);
const selected = selectedTradeId != null && selectedTradeId === t.id;
const handleActivate = () => {
if (onSelectTrade) onSelectTrade(t);
else onSelectMarket?.(t.symbol);
};
const sideCls = isBuy ? 'vtd-trade-item--buy' : 'vtd-trade-item--sell';
const colorCls = isBuy ? 'vtd-target-up' : 'vtd-target-dn';
@@ -71,14 +82,16 @@ const PaperTradeHistoryList: React.FC<Props> = ({
'vtd-trade-item',
sideCls,
clickable ? 'vtd-trade-item--click' : '',
selected ? 'vtd-trade-item--selected' : '',
].filter(Boolean).join(' ')}
role={clickable ? 'button' : undefined}
tabIndex={clickable ? 0 : undefined}
onClick={clickable ? () => onSelectMarket!(t.symbol) : undefined}
aria-pressed={clickable ? selected : undefined}
onClick={clickable ? handleActivate : undefined}
onKeyDown={clickable ? e => {
if (e.key === 'Enter' || e.key === ' ') {
e.preventDefault();
onSelectMarket!(t.symbol);
handleActivate();
}
} : undefined}
>