투자관리 화면 수정
This commit is contained in:
@@ -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}
|
||||
>
|
||||
|
||||
Reference in New Issue
Block a user