mirror of
https://github.com/hicccc77/WeFlow.git
synced 2026-03-25 07:16:51 +00:00
feat: animate load detail entry icon
This commit is contained in:
@@ -52,6 +52,62 @@
|
|||||||
color: var(--text-primary);
|
color: var(--text-primary);
|
||||||
background: color-mix(in srgb, var(--primary) 8%, var(--bg-secondary));
|
background: color-mix(in srgb, var(--primary) 8%, var(--bg-secondary));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&.active {
|
||||||
|
border-color: color-mix(in srgb, var(--primary) 42%, var(--border-color));
|
||||||
|
background: color-mix(in srgb, var(--primary) 8%, var(--bg-secondary));
|
||||||
|
color: var(--text-primary);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.session-load-detail-entry-icon {
|
||||||
|
width: 16px;
|
||||||
|
height: 14px;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: flex-end;
|
||||||
|
justify-content: center;
|
||||||
|
gap: 2px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.session-load-detail-entry-bar {
|
||||||
|
width: 3px;
|
||||||
|
border-radius: 999px;
|
||||||
|
background: color-mix(in srgb, var(--primary) 78%, var(--text-tertiary));
|
||||||
|
opacity: 0.82;
|
||||||
|
animation: sessionLoadDetailBars 1.8s ease-in-out infinite;
|
||||||
|
|
||||||
|
&:nth-child(1) {
|
||||||
|
height: 7px;
|
||||||
|
animation-delay: 0s;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-child(2) {
|
||||||
|
height: 11px;
|
||||||
|
animation-delay: 0.18s;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-child(3) {
|
||||||
|
height: 9px;
|
||||||
|
animation-delay: 0.36s;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.session-load-detail-entry.active .session-load-detail-entry-bar {
|
||||||
|
animation-duration: 1.1s;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes sessionLoadDetailBars {
|
||||||
|
0%, 100% {
|
||||||
|
transform: scaleY(0.72);
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
50% {
|
||||||
|
transform: scaleY(1.18);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.export-section-title {
|
.export-section-title {
|
||||||
|
|||||||
@@ -5580,6 +5580,14 @@ function ExportPage() {
|
|||||||
}
|
}
|
||||||
return latest
|
return latest
|
||||||
}, [sessionLoadDetailRows])
|
}, [sessionLoadDetailRows])
|
||||||
|
const isSessionLoadDetailActive = useMemo(() => (
|
||||||
|
sessionLoadDetailRows.some(row => (
|
||||||
|
row.messageCount.statusLabel.startsWith('加载中') ||
|
||||||
|
row.mediaMetrics.statusLabel.startsWith('加载中') ||
|
||||||
|
row.snsPostCounts.statusLabel.startsWith('加载中') ||
|
||||||
|
row.mutualFriends.statusLabel.startsWith('加载中')
|
||||||
|
))
|
||||||
|
), [sessionLoadDetailRows])
|
||||||
const closeTaskCenter = useCallback(() => {
|
const closeTaskCenter = useCallback(() => {
|
||||||
setIsTaskCenterOpen(false)
|
setIsTaskCenterOpen(false)
|
||||||
setExpandedPerfTaskId(null)
|
setExpandedPerfTaskId(null)
|
||||||
@@ -6093,11 +6101,15 @@ function ExportPage() {
|
|||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
<button
|
<button
|
||||||
className="session-load-detail-entry"
|
className={`session-load-detail-entry ${isSessionLoadDetailActive ? 'active' : ''}`}
|
||||||
type="button"
|
type="button"
|
||||||
onClick={() => setShowSessionLoadDetailModal(true)}
|
onClick={() => setShowSessionLoadDetailModal(true)}
|
||||||
>
|
>
|
||||||
<ClipboardList size={14} />
|
<span className="session-load-detail-entry-icon" aria-hidden="true">
|
||||||
|
<span className="session-load-detail-entry-bar" />
|
||||||
|
<span className="session-load-detail-entry-bar" />
|
||||||
|
<span className="session-load-detail-entry-bar" />
|
||||||
|
</span>
|
||||||
<span>数据加载详情</span>
|
<span>数据加载详情</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user