mirror of
https://github.com/JOYCEQL/magic-resume.git
synced 2026-07-03 14:07:11 +02:00
perf: update project link rendering and add fallback for empty links
This commit is contained in:
@@ -15,9 +15,6 @@ const ProjectItem = React.forwardRef<HTMLDivElement, ProjectItemProps>(
|
||||
({ project, globalSettings }, ref) => {
|
||||
const centerSubtitle = globalSettings?.centerSubtitle;
|
||||
|
||||
// 根据centerSubtitle判断网格布局为几列
|
||||
const gridColumns = centerSubtitle ? 3 : 2;
|
||||
|
||||
return (
|
||||
<motion.div
|
||||
style={{
|
||||
@@ -25,7 +22,7 @@ const ProjectItem = React.forwardRef<HTMLDivElement, ProjectItemProps>(
|
||||
}}
|
||||
>
|
||||
<motion.div
|
||||
className={`grid grid-cols-${gridColumns} gap-2 items-center justify-items-start [&>*:last-child]:justify-self-end`}
|
||||
className={`grid grid-cols-3 gap-2 items-center justify-items-start [&>*:last-child]:justify-self-end`}
|
||||
>
|
||||
<div className="flex items-center gap-2">
|
||||
<h3
|
||||
@@ -36,22 +33,38 @@ const ProjectItem = React.forwardRef<HTMLDivElement, ProjectItemProps>(
|
||||
>
|
||||
{project.name}
|
||||
</h3>
|
||||
{project.link && !centerSubtitle && (
|
||||
<a
|
||||
href={
|
||||
project.link.startsWith("http")
|
||||
? project.link
|
||||
: `https://${project.link}`
|
||||
}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="text-blue-500 hover:underline"
|
||||
>
|
||||
{project.link}
|
||||
</a>
|
||||
)}
|
||||
</div>
|
||||
{globalSettings?.centerSubtitle && (
|
||||
|
||||
{project.link && !centerSubtitle && (
|
||||
<a
|
||||
href={
|
||||
project.link.startsWith("http")
|
||||
? project.link
|
||||
: `https://${project.link}`
|
||||
}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="underline"
|
||||
title={project.link}
|
||||
>
|
||||
{(() => {
|
||||
try {
|
||||
const url = new URL(
|
||||
project.link.startsWith("http")
|
||||
? project.link
|
||||
: `https://${project.link}`
|
||||
);
|
||||
return url.hostname.replace(/^www\./, "");
|
||||
} catch (e) {
|
||||
return project.link;
|
||||
}
|
||||
})()}
|
||||
</a>
|
||||
)}
|
||||
|
||||
{!project.link && !centerSubtitle && <div></div>}
|
||||
|
||||
{centerSubtitle && (
|
||||
<motion.div layout="position" className=" text-subtitleFont">
|
||||
{project.role}
|
||||
</motion.div>
|
||||
@@ -72,12 +85,13 @@ const ProjectItem = React.forwardRef<HTMLDivElement, ProjectItemProps>(
|
||||
}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="text-blue-500 hover:underline"
|
||||
className="underline"
|
||||
title={project.link}
|
||||
>
|
||||
{project.link}
|
||||
</a>
|
||||
)}
|
||||
{project.description && (
|
||||
{project.description ? (
|
||||
<motion.div
|
||||
layout="position"
|
||||
className="mt-2 text-baseFont"
|
||||
@@ -87,6 +101,8 @@ const ProjectItem = React.forwardRef<HTMLDivElement, ProjectItemProps>(
|
||||
}}
|
||||
dangerouslySetInnerHTML={{ __html: project.description }}
|
||||
></motion.div>
|
||||
) : (
|
||||
<div></div>
|
||||
)}
|
||||
</motion.div>
|
||||
);
|
||||
|
||||
+11
-7
@@ -13,22 +13,26 @@ export function getChangelog(): TimelineEntry[] {
|
||||
sections: [
|
||||
{
|
||||
title: "修复",
|
||||
items: ["修复多余分割线引起的导出PDF 400 错误"],
|
||||
items: ["修复多余分割线引起的导出PDF 400 错误"]
|
||||
},
|
||||
],
|
||||
{
|
||||
title: "优化",
|
||||
items: ["项目链接过长时的样式"]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
date: "2025-03-07",
|
||||
sections: [
|
||||
{
|
||||
title: "新增",
|
||||
items: ["工作台 Dock 栏支持复制简历", "仪表盘简历模板支持预览大图"],
|
||||
items: ["工作台 Dock 栏支持复制简历", "仪表盘简历模板支持预览大图"]
|
||||
},
|
||||
{
|
||||
title: "优化",
|
||||
items: ["服务端导出PDF 速度优化"],
|
||||
},
|
||||
],
|
||||
},
|
||||
items: ["服务端导出PDF 速度优化"]
|
||||
}
|
||||
]
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user