feat(export): adjust path actions and compact sns card

This commit is contained in:
tisonhuang
2026-03-01 16:49:23 +08:00
parent d99c0ff8b2
commit 96aa9d0813
2 changed files with 55 additions and 44 deletions

View File

@@ -51,36 +51,52 @@
.path-value {
border: 1px dashed var(--border-color);
border-radius: 10px;
padding: 10px 12px;
background: var(--bg-secondary);
display: flex;
align-items: stretch;
min-width: 0;
flex: 1;
overflow: hidden;
}
.path-link {
border: none;
background: transparent;
font-size: 13px;
color: var(--text-primary);
background: var(--bg-secondary);
text-align: left;
padding: 10px 12px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
min-width: 0;
flex: 1;
}
.path-link {
cursor: pointer;
text-align: left;
&:hover:not(:disabled) {
border-color: var(--primary);
&:hover {
color: var(--primary);
}
&:disabled {
cursor: not-allowed;
opacity: 0.65;
&:focus-visible {
outline: none;
}
}
.path-actions {
display: flex;
gap: 8px;
.path-change-btn {
border: none;
border-left: 1px dashed var(--border-color);
background: transparent;
color: var(--text-secondary);
font-size: 12px;
font-weight: 600;
padding: 0 12px;
cursor: pointer;
flex-shrink: 0;
&:hover {
border-color: var(--primary);
color: var(--primary);
}
}
.write-layout-control {
@@ -1072,9 +1088,8 @@
flex-wrap: wrap;
}
.path-actions {
width: 100%;
justify-content: flex-end;
.path-inline-row > .secondary-btn {
margin-left: auto;
}
}

View File

@@ -1174,7 +1174,6 @@ function ExportPage() {
label: '朋友圈',
stats: [
{ label: '朋友圈条数', value: snsStats.totalPosts },
{ label: '好友数', value: snsStats.totalFriends },
{ label: '已导出朋友圈条数', value: snsExportedCount }
]
}
@@ -1373,6 +1372,17 @@ function ExportPage() {
() => visibleSessions.map(renderRow),
[visibleSessions, selectedSessions, sessionMetrics, activeTab, runningSessionIds, queuedSessionIds, nowTick, lastExportBySession]
)
const chooseExportFolder = useCallback(async () => {
const result = await window.electronAPI.dialog.openFile({
title: '选择导出目录',
properties: ['openDirectory']
})
if (!result.canceled && result.filePaths.length > 0) {
const nextPath = result.filePaths[0]
setExportFolder(nextPath)
await configService.setExportPath(nextPath)
}
}, [])
return (
<div className="export-board-page">
@@ -1381,36 +1391,22 @@ function ExportPage() {
<div className="path-control">
<span className="control-label"></span>
<div className="path-inline-row">
<button
className="path-value path-link"
type="button"
title={exportFolder}
disabled={!exportFolder}
onClick={() => exportFolder && void window.electronAPI.shell.openPath(exportFolder)}
>
{exportFolder || '未设置'}
</button>
<div className="path-actions">
<button className="secondary-btn" onClick={() => exportFolder && void window.electronAPI.shell.openPath(exportFolder)}>
<ExternalLink size={14} />
</button>
<div className="path-value">
<button
className="secondary-btn"
onClick={async () => {
const result = await window.electronAPI.dialog.openFile({
title: '选择导出目录',
properties: ['openDirectory']
})
if (!result.canceled && result.filePaths.length > 0) {
const nextPath = result.filePaths[0]
setExportFolder(nextPath)
await configService.setExportPath(nextPath)
}
}}
className="path-link"
type="button"
title={exportFolder}
onClick={() => void chooseExportFolder()}
>
<FolderOpen size={14} />
{exportFolder || '未设置'}
</button>
<button className="path-change-btn" type="button" onClick={() => void chooseExportFolder()}>
</button>
</div>
<button className="secondary-btn" onClick={() => exportFolder && void window.electronAPI.shell.openPath(exportFolder)}>
<ExternalLink size={14} />
</button>
</div>
</div>