Merge pull request #1999 from StijnGroenen/feature/custom-field-url

feat(templates): added url support for custom fields
This commit is contained in:
Amruth Pillai
2024-07-22 12:04:36 +02:00
committed by GitHub
12 changed files with 87 additions and 13 deletions

View File

@ -64,7 +64,13 @@ const Header = () => {
{basics.customFields.map((item) => ( {basics.customFields.map((item) => (
<div key={item.id} className="flex items-center gap-x-1.5"> <div key={item.id} className="flex items-center gap-x-1.5">
<i className={cn(`ph ph-bold ph-${item.icon}`, "text-primary")} /> <i className={cn(`ph ph-bold ph-${item.icon}`, "text-primary")} />
<span>{[item.name, item.value].filter(Boolean).join(": ")}</span> {isUrl(item.value) ? (
<a href={item.value} target="_blank" rel="noreferrer noopener nofollow">
{item.name || item.value}
</a>
) : (
<span>{[item.name, item.value].filter(Boolean).join(": ")}</span>
)}
</div> </div>
))} ))}
</div> </div>

View File

@ -64,7 +64,13 @@ const Header = () => {
{basics.customFields.map((item) => ( {basics.customFields.map((item) => (
<div key={item.id} className="flex items-center gap-x-1.5"> <div key={item.id} className="flex items-center gap-x-1.5">
<i className={cn(`ph ph-bold ph-${item.icon}`, "text-primary")} /> <i className={cn(`ph ph-bold ph-${item.icon}`, "text-primary")} />
<span>{[item.name, item.value].filter(Boolean).join(": ")}</span> {isUrl(item.value) ? (
<a href={item.value} target="_blank" rel="noreferrer noopener nofollow">
{item.name || item.value}
</a>
) : (
<span>{[item.name, item.value].filter(Boolean).join(": ")}</span>
)}
</div> </div>
))} ))}
</div> </div>

View File

@ -65,7 +65,13 @@ const Header = () => {
{basics.customFields.map((item) => ( {basics.customFields.map((item) => (
<div key={item.id} className="flex items-center gap-x-1.5"> <div key={item.id} className="flex items-center gap-x-1.5">
<i className={cn(`ph ph-bold ph-${item.icon}`, "text-primary")} /> <i className={cn(`ph ph-bold ph-${item.icon}`, "text-primary")} />
<span>{[item.name, item.value].filter(Boolean).join(": ")}</span> {isUrl(item.value) ? (
<a href={item.value} target="_blank" rel="noreferrer noopener nofollow">
{item.name || item.value}
</a>
) : (
<span>{[item.name, item.value].filter(Boolean).join(": ")}</span>
)}
</div> </div>
))} ))}
</div> </div>

View File

@ -82,7 +82,13 @@ const Header = () => {
<Fragment key={item.id}> <Fragment key={item.id}>
<div className="flex items-center gap-x-1.5"> <div className="flex items-center gap-x-1.5">
<i className={cn(`ph ph-bold ph-${item.icon}`, "text-primary")} /> <i className={cn(`ph ph-bold ph-${item.icon}`, "text-primary")} />
<span>{[item.name, item.value].filter(Boolean).join(": ")}</span> {isUrl(item.value) ? (
<a href={item.value} target="_blank" rel="noreferrer noopener nofollow">
{item.name || item.value}
</a>
) : (
<span>{[item.name, item.value].filter(Boolean).join(": ")}</span>
)}
</div> </div>
<div className="bg-text size-1 rounded-full last:hidden" /> <div className="bg-text size-1 rounded-full last:hidden" />
</Fragment> </Fragment>

View File

@ -65,7 +65,13 @@ const Header = () => {
<Fragment key={item.id}> <Fragment key={item.id}>
<div className="flex items-center gap-x-1.5"> <div className="flex items-center gap-x-1.5">
<i className={cn(`ph ph-bold ph-${item.icon}`)} /> <i className={cn(`ph ph-bold ph-${item.icon}`)} />
<span>{[item.name, item.value].filter(Boolean).join(": ")}</span> {isUrl(item.value) ? (
<a href={item.value} target="_blank" rel="noreferrer noopener nofollow">
{item.name || item.value}
</a>
) : (
<span>{[item.name, item.value].filter(Boolean).join(": ")}</span>
)}
</div> </div>
</Fragment> </Fragment>
))} ))}

View File

@ -65,7 +65,13 @@ const Header = () => {
{basics.customFields.map((item) => ( {basics.customFields.map((item) => (
<div key={item.id} className="flex items-center gap-x-1.5"> <div key={item.id} className="flex items-center gap-x-1.5">
<i className={cn(`ph ph-bold ph-${item.icon} text-primary`)} /> <i className={cn(`ph ph-bold ph-${item.icon} text-primary`)} />
<span>{[item.name, item.value].filter(Boolean).join(": ")}</span> {isUrl(item.value) ? (
<a href={item.value} target="_blank" rel="noreferrer noopener nofollow">
{item.name || item.value}
</a>
) : (
<span>{[item.name, item.value].filter(Boolean).join(": ")}</span>
)}
</div> </div>
))} ))}
</div> </div>

View File

@ -65,7 +65,13 @@ const Header = () => {
{basics.customFields.map((item) => ( {basics.customFields.map((item) => (
<div key={item.id} className="flex items-center gap-x-1.5"> <div key={item.id} className="flex items-center gap-x-1.5">
<i className={cn(`ph ph-bold ph-${item.icon}`, "text-primary")} /> <i className={cn(`ph ph-bold ph-${item.icon}`, "text-primary")} />
<span>{[item.name, item.value].filter(Boolean).join(": ")}</span> {isUrl(item.value) ? (
<a href={item.value} target="_blank" rel="noreferrer noopener nofollow">
{item.name || item.value}
</a>
) : (
<span>{[item.name, item.value].filter(Boolean).join(": ")}</span>
)}
</div> </div>
))} ))}
</div> </div>

View File

@ -81,7 +81,13 @@ const Header = () => {
{basics.customFields.map((item) => ( {basics.customFields.map((item) => (
<div key={item.id} className="flex items-center gap-x-1.5"> <div key={item.id} className="flex items-center gap-x-1.5">
<i className={cn(`ph ph-bold ph-${item.icon}`, "text-primary")} /> <i className={cn(`ph ph-bold ph-${item.icon}`, "text-primary")} />
<span>{[item.name, item.value].filter(Boolean).join(": ")}</span> {isUrl(item.value) ? (
<a href={item.value} target="_blank" rel="noreferrer noopener nofollow">
{item.name || item.value}
</a>
) : (
<span>{[item.name, item.value].filter(Boolean).join(": ")}</span>
)}
</div> </div>
))} ))}
</div> </div>

View File

@ -70,8 +70,16 @@ const Header = () => {
{basics.customFields.map((item) => ( {basics.customFields.map((item) => (
<div key={item.id} className="flex items-center gap-x-1.5"> <div key={item.id} className="flex items-center gap-x-1.5">
<i className={cn(`ph ph-bold ph-${item.icon}`, "text-primary")} /> <i className={cn(`ph ph-bold ph-${item.icon}`, "text-primary")} />
<span className="text-primary">{item.name}</span> {isUrl(item.value) ? (
<span>{item.value}</span> <a href={item.value} target="_blank" rel="noreferrer noopener nofollow">
{item.name || item.value}
</a>
) : (
<>
<span className="text-primary">{item.name}</span>
<span>{item.value}</span>
</>
)}
</div> </div>
))} ))}
</div> </div>

View File

@ -66,7 +66,13 @@ const Header = () => {
{basics.customFields.map((item) => ( {basics.customFields.map((item) => (
<div key={item.id} className="flex items-center gap-x-1.5"> <div key={item.id} className="flex items-center gap-x-1.5">
<i className={cn(`ph ph-bold ph-${item.icon}`, "text-primary")} /> <i className={cn(`ph ph-bold ph-${item.icon}`, "text-primary")} />
<span>{[item.name, item.value].filter(Boolean).join(": ")}</span> {isUrl(item.value) ? (
<a href={item.value} target="_blank" rel="noreferrer noopener nofollow">
{item.name || item.value}
</a>
) : (
<span>{[item.name, item.value].filter(Boolean).join(": ")}</span>
)}
</div> </div>
))} ))}
</div> </div>

View File

@ -84,7 +84,13 @@ const Header = () => {
<Fragment key={item.id}> <Fragment key={item.id}>
<div className="flex items-center gap-x-1.5"> <div className="flex items-center gap-x-1.5">
<i className={cn(`ph ph-bold ph-${item.icon}`)} /> <i className={cn(`ph ph-bold ph-${item.icon}`)} />
<span>{[item.name, item.value].filter(Boolean).join(": ")}</span> {isUrl(item.value) ? (
<a href={item.value} target="_blank" rel="noreferrer noopener nofollow">
{item.name || item.value}
</a>
) : (
<span>{[item.name, item.value].filter(Boolean).join(": ")}</span>
)}
</div> </div>
<div className="size-1 rounded-full bg-background last:hidden" /> <div className="size-1 rounded-full bg-background last:hidden" />
</Fragment> </Fragment>

View File

@ -66,7 +66,13 @@ const Header = () => {
className="flex items-center gap-x-1.5 border-r pr-2 last:border-r-0 last:pr-0" className="flex items-center gap-x-1.5 border-r pr-2 last:border-r-0 last:pr-0"
> >
<i className={cn(`ph ph-bold ph-${item.icon}`, "text-primary")} /> <i className={cn(`ph ph-bold ph-${item.icon}`, "text-primary")} />
<span>{[item.name, item.value].filter(Boolean).join(": ")}</span> {isUrl(item.value) ? (
<a href={item.value} target="_blank" rel="noreferrer noopener nofollow">
{item.name || item.value}
</a>
) : (
<span>{[item.name, item.value].filter(Boolean).join(": ")}</span>
)}
</div> </div>
))} ))}
</div> </div>