말림목록 매매 버튼 추가
This commit is contained in:
@@ -12188,6 +12188,19 @@ html.theme-light .tam-disclaimer { color: #90a4ae; }
|
|||||||
}
|
}
|
||||||
.tnl-row-chart:hover { background: var(--bg4); color: var(--text); }
|
.tnl-row-chart:hover { background: var(--bg4); color: var(--text); }
|
||||||
|
|
||||||
|
.tnl-row-trade {
|
||||||
|
padding: 0 14px;
|
||||||
|
border: none;
|
||||||
|
border-left: 1px solid var(--border);
|
||||||
|
background: rgba(38, 132, 255, 0.15);
|
||||||
|
color: #2684ff;
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: 600;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: background 0.15s;
|
||||||
|
}
|
||||||
|
.tnl-row-trade:hover { background: rgba(38, 132, 255, 0.28); color: #5ba0ff; }
|
||||||
|
|
||||||
/* TopMenuBar 앱 다운로드 버튼 */
|
/* TopMenuBar 앱 다운로드 버튼 */
|
||||||
.tmb-app-download-btn {
|
.tmb-app-download-btn {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|||||||
@@ -190,6 +190,16 @@ export const TradeNotificationListPage: React.FC<Props> = ({
|
|||||||
setRightTab('trade');
|
setRightTab('trade');
|
||||||
}, [tickers]);
|
}, [tickers]);
|
||||||
|
|
||||||
|
/** 알림 목록 아이템 "매매" 버튼 — 우측 패널 열고 해당 종목 현재가 입력 */
|
||||||
|
const handleTradeFromAlert = useCallback((item: TradeNotificationItem) => {
|
||||||
|
if (!item.isRead) markAsRead(item.id);
|
||||||
|
const price = coerceFiniteNumber(tickers?.get(item.market)?.tradePrice)
|
||||||
|
?? coerceFiniteNumber(item.price);
|
||||||
|
handleSelectMarket(item.market, price ?? undefined);
|
||||||
|
setRightOpen(true);
|
||||||
|
setRightTab('trade');
|
||||||
|
}, [markAsRead, tickers, handleSelectMarket]);
|
||||||
|
|
||||||
const selectedCount = selectedIds.size;
|
const selectedCount = selectedIds.size;
|
||||||
|
|
||||||
const handleNotificationSelect = useCallback((item: TradeNotificationItem) => {
|
const handleNotificationSelect = useCallback((item: TradeNotificationItem) => {
|
||||||
@@ -509,6 +519,7 @@ export const TradeNotificationListPage: React.FC<Props> = ({
|
|||||||
markAsRead(item.id);
|
markAsRead(item.id);
|
||||||
setFullscreenItem(item);
|
setFullscreenItem(item);
|
||||||
}}
|
}}
|
||||||
|
onTrade={() => handleTradeFromAlert(item)}
|
||||||
tickers={tickers}
|
tickers={tickers}
|
||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
|
|||||||
@@ -51,6 +51,8 @@ interface Props {
|
|||||||
onDelete: (e: React.MouseEvent) => void;
|
onDelete: (e: React.MouseEvent) => void;
|
||||||
onDetail: () => void;
|
onDetail: () => void;
|
||||||
onGoToChart: () => void;
|
onGoToChart: () => void;
|
||||||
|
/** 매매 버튼 클릭 → 우측 매매 패널 열기 */
|
||||||
|
onTrade?: () => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
const MAX_INDICATOR_CARDS = 8;
|
const MAX_INDICATOR_CARDS = 8;
|
||||||
@@ -67,6 +69,7 @@ const TradeNotificationListRow: React.FC<Props> = ({
|
|||||||
onDelete,
|
onDelete,
|
||||||
onDetail,
|
onDetail,
|
||||||
onGoToChart,
|
onGoToChart,
|
||||||
|
onTrade,
|
||||||
}) => {
|
}) => {
|
||||||
useTradeAlertTimeFormat();
|
useTradeAlertTimeFormat();
|
||||||
const isBuy = item.signalType === 'BUY';
|
const isBuy = item.signalType === 'BUY';
|
||||||
@@ -309,6 +312,11 @@ const TradeNotificationListRow: React.FC<Props> = ({
|
|||||||
<button type="button" className="tnl-row-chart" onClick={onGoToChart}>
|
<button type="button" className="tnl-row-chart" onClick={onGoToChart}>
|
||||||
차트
|
차트
|
||||||
</button>
|
</button>
|
||||||
|
{onTrade && (
|
||||||
|
<button type="button" className="tnl-row-trade" onClick={onTrade}>
|
||||||
|
매매
|
||||||
|
</button>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
</article>
|
</article>
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user