fix: MetalCard onClick 미전달 문제 수정
MetalCard가 onClick/sx props를 받지 않아 클릭 이벤트가 전달되지 않던 문제. 세션 카드와 템플릿 선택 카드를 Box로 감싸서 onClick 처리.
This commit is contained in:
parent
2b17bf47b7
commit
55774b64e0
4 changed files with 22 additions and 12 deletions
|
|
@ -32,7 +32,7 @@ npm run typecheck # tsc --noEmit
|
||||||
- 녹음 UI: 9개 웨이브 바, cos 분포, 100ms
|
- 녹음 UI: 9개 웨이브 바, cos 분포, 100ms
|
||||||
|
|
||||||
## 현재 상태
|
## 현재 상태
|
||||||
Phase 1~14.5 전체 완료 + 랜딩 페이지(site/).
|
Phase 1~15 전체 완료 + 랜딩 페이지(site/).
|
||||||
차단 이슈: @nut-tree-fork/nut-js 포크 사용
|
차단 이슈: @nut-tree-fork/nut-js 포크 사용
|
||||||
|
|
||||||
## 설계 문서 (구현 시 Read 도구로 참조)
|
## 설계 문서 (구현 시 Read 도구로 참조)
|
||||||
|
|
@ -51,6 +51,7 @@ Phase12+: FileTranscriptionService, MeetingSummaryService, DictationTemplateServ
|
||||||
Phase13+: VoiceConversationService, RAGService, VoiceActionService
|
Phase13+: VoiceConversationService, RAGService, VoiceActionService
|
||||||
Phase14: MeetingModeService
|
Phase14: MeetingModeService
|
||||||
Phase14.5: MeetingDocTemplateService + 다중 문서 생성/편집/내보내기
|
Phase14.5: MeetingDocTemplateService + 다중 문서 생성/편집/내보내기
|
||||||
|
Phase15: Auto Polish + AI 채팅 + 마인드맵 + 공유
|
||||||
|
|
||||||
## DS 컴포넌트 (src/renderer/components/ds/)
|
## DS 컴포넌트 (src/renderer/components/ds/)
|
||||||
CrtDisplay, InstrumentPanel, Led, PhysicalButton, MetalCard,
|
CrtDisplay, InstrumentPanel, Led, PhysicalButton, MetalCard,
|
||||||
|
|
|
||||||
|
|
@ -70,8 +70,12 @@ export function registerMeetingModeHandlers(): void {
|
||||||
|
|
||||||
ipcMain.handle(ch.GET_SESSION, (_event, params: MeetingGetSessionParams) => {
|
ipcMain.handle(ch.GET_SESSION, (_event, params: MeetingGetSessionParams) => {
|
||||||
try {
|
try {
|
||||||
return ipcSuccess(getMeetingModeService().getSession(params.sessionId))
|
logger.info(`getSession 호출: ${params.sessionId}`)
|
||||||
|
const result = getMeetingModeService().getSession(params.sessionId)
|
||||||
|
logger.info(`getSession 성공: documents=${result.documents.length}`)
|
||||||
|
return ipcSuccess(result)
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
logger.error(`getSession 실패: ${err instanceof Error ? err.message : String(err)}`)
|
||||||
return ipcError(ErrorCode.MeetingSessionNotFound, err instanceof Error ? err.message : String(err))
|
return ipcError(ErrorCode.MeetingSessionNotFound, err instanceof Error ? err.message : String(err))
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -107,7 +107,7 @@ export function AddDocumentDialog({
|
||||||
{/* 템플릿 목록 */}
|
{/* 템플릿 목록 */}
|
||||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 1 }}>
|
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 1 }}>
|
||||||
{templates.map((tp) => (
|
{templates.map((tp) => (
|
||||||
<MetalCard
|
<Box
|
||||||
key={tp.id}
|
key={tp.id}
|
||||||
onClick={() => !generating && setSelectedId(tp.id)}
|
onClick={() => !generating && setSelectedId(tp.id)}
|
||||||
sx={{
|
sx={{
|
||||||
|
|
@ -115,19 +115,22 @@ export function AddDocumentDialog({
|
||||||
opacity: generating ? 0.6 : 1,
|
opacity: generating ? 0.6 : 1,
|
||||||
border:
|
border:
|
||||||
selectedId === tp.id
|
selectedId === tp.id
|
||||||
? `1px solid ${d3roPalette.accent.amber}`
|
? `2px solid ${d3roPalette.accent.amber}`
|
||||||
: `1px solid ${d3roPalette.border.subtle}`,
|
: `2px solid transparent`,
|
||||||
|
borderRadius: d3roRadius.inner,
|
||||||
transition: 'border-color 0.15s',
|
transition: 'border-color 0.15s',
|
||||||
'&:hover': {
|
'&:hover': {
|
||||||
borderColor: generating ? undefined : d3roPalette.accent.amberDim,
|
borderColor: generating ? undefined : d3roPalette.accent.amberDim,
|
||||||
},
|
},
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
|
<MetalCard>
|
||||||
<PhosphorText variant="compact">{tp.name}</PhosphorText>
|
<PhosphorText variant="compact">{tp.name}</PhosphorText>
|
||||||
<PhosphorText variant="dim" sx={{ fontSize: 11, mt: 0.25 }}>
|
<PhosphorText variant="dim" sx={{ fontSize: 11, mt: 0.25 }}>
|
||||||
{tp.description}
|
{tp.description}
|
||||||
</PhosphorText>
|
</PhosphorText>
|
||||||
</MetalCard>
|
</MetalCard>
|
||||||
|
</Box>
|
||||||
))}
|
))}
|
||||||
</Box>
|
</Box>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -220,11 +220,12 @@ export function MeetingModePage(): React.ReactElement {
|
||||||
) : (
|
) : (
|
||||||
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 1.5 }}>
|
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 1.5 }}>
|
||||||
{sessions.map((session) => (
|
{sessions.map((session) => (
|
||||||
<MetalCard
|
<Box
|
||||||
key={session.id}
|
key={session.id}
|
||||||
sx={{ cursor: 'pointer', '&:hover': { opacity: 0.85 } }}
|
|
||||||
onClick={() => handleViewDetail(session.id)}
|
onClick={() => handleViewDetail(session.id)}
|
||||||
|
sx={{ cursor: 'pointer', '&:hover': { opacity: 0.85 } }}
|
||||||
>
|
>
|
||||||
|
<MetalCard>
|
||||||
<Box sx={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>
|
<Box sx={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>
|
||||||
<Box>
|
<Box>
|
||||||
<PhosphorText variant="label">
|
<PhosphorText variant="label">
|
||||||
|
|
@ -258,6 +259,7 @@ export function MeetingModePage(): React.ReactElement {
|
||||||
</Box>
|
</Box>
|
||||||
)}
|
)}
|
||||||
</MetalCard>
|
</MetalCard>
|
||||||
|
</Box>
|
||||||
))}
|
))}
|
||||||
</Box>
|
</Box>
|
||||||
)}
|
)}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue