allow setting a global link target
This commit is contained in:
parent
75244cc40e
commit
20ac15b18c
7 changed files with 26 additions and 25 deletions
|
@ -1,15 +1,10 @@
|
|||
import List from "components/bookmarks/list";
|
||||
|
||||
export default function BookmarksGroup({ group }) {
|
||||
export default function BookmarksGroup({ group, target }) {
|
||||
return (
|
||||
<div
|
||||
key={group.name}
|
||||
className="basis-full md:basis-1/2 lg:basis-1/3 xl:basis-1/4 flex-1 p-1"
|
||||
>
|
||||
<h2 className="text-theme-800 dark:text-theme-300 text-xl font-medium">
|
||||
{group.name}
|
||||
</h2>
|
||||
<List bookmarks={group.bookmarks} />
|
||||
<div key={group.name} className="basis-full md:basis-1/2 lg:basis-1/3 xl:basis-1/4 flex-1 p-1">
|
||||
<h2 className="text-theme-800 dark:text-theme-300 text-xl font-medium">{group.name}</h2>
|
||||
<List bookmarks={group.bookmarks} target={target} />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
export default function Item({ bookmark }) {
|
||||
export default function Item({ bookmark, target = "_blank" }) {
|
||||
const { hostname } = new URL(bookmark.href);
|
||||
|
||||
return (
|
||||
<li key={bookmark.name}>
|
||||
<button
|
||||
type="button"
|
||||
onClick={() => window.open(bookmark.href, "_blank").focus()}
|
||||
<a
|
||||
href={bookmark.href}
|
||||
title={bookmark.name}
|
||||
target={target}
|
||||
className="w-full text-left mb-3 cursor-pointer rounded-md font-medium text-theme-700 hover:text-theme-700 dark:text-theme-200 dark:hover:text-theme-300 shadow-md shadow-black/10 dark:shadow-black/20 bg-white/50 hover:bg-theme-300/10 dark:bg-white/10 dark:hover:bg-white/20"
|
||||
>
|
||||
<div className="flex">
|
||||
|
@ -17,7 +18,7 @@ export default function Item({ bookmark }) {
|
|||
<div className="px-2 py-2 truncate text-theme-500 dark:text-theme-400 opacity-50 text-xs">{hostname}</div>
|
||||
</div>
|
||||
</div>
|
||||
</button>
|
||||
</a>
|
||||
</li>
|
||||
);
|
||||
}
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
import Item from "components/bookmarks/item";
|
||||
|
||||
export default function List({ bookmarks }) {
|
||||
export default function List({ bookmarks, target }) {
|
||||
return (
|
||||
<ul className="mt-3 flex flex-col">
|
||||
{bookmarks.map((bookmark) => (
|
||||
<Item key={bookmark.name} bookmark={bookmark} />
|
||||
<Item key={bookmark.name} bookmark={bookmark} target={target} />
|
||||
))}
|
||||
</ul>
|
||||
);
|
||||
|
|
|
@ -2,7 +2,7 @@ import classNames from "classnames";
|
|||
|
||||
import List from "components/services/list";
|
||||
|
||||
export default function ServicesGroup({ services, layout }) {
|
||||
export default function ServicesGroup({ services, target, layout }) {
|
||||
return (
|
||||
<div
|
||||
key={services.name}
|
||||
|
@ -12,7 +12,7 @@ export default function ServicesGroup({ services, layout }) {
|
|||
)}
|
||||
>
|
||||
<h2 className="text-theme-800 dark:text-theme-300 text-xl font-medium">{services.name}</h2>
|
||||
<List services={services.services} layout={layout} />
|
||||
<List services={services.services} target={target} layout={layout} />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
|
|
@ -21,7 +21,7 @@ function resolveIcon(icon) {
|
|||
return `https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/${icon}.png`;
|
||||
}
|
||||
|
||||
export default function Item({ service }) {
|
||||
export default function Item({ service, target = "_blank" }) {
|
||||
const hasLink = service.href && service.href !== "#";
|
||||
|
||||
return (
|
||||
|
@ -37,7 +37,7 @@ export default function Item({ service }) {
|
|||
(hasLink ? (
|
||||
<a
|
||||
href={service.href}
|
||||
target="_blank"
|
||||
target={target}
|
||||
rel="noreferrer"
|
||||
className="flex-shrink-0 flex items-center justify-center w-12 "
|
||||
>
|
||||
|
@ -52,7 +52,7 @@ export default function Item({ service }) {
|
|||
{hasLink ? (
|
||||
<a
|
||||
href={service.href}
|
||||
target="_blank"
|
||||
target={target}
|
||||
rel="noreferrer"
|
||||
className="flex-1 flex items-center justify-between rounded-r-md "
|
||||
>
|
||||
|
|
|
@ -14,7 +14,7 @@ const columnMap = [
|
|||
"grid-cols-1 md:grid-cols-2 lg:grid-cols-8",
|
||||
];
|
||||
|
||||
export default function List({ services, layout }) {
|
||||
export default function List({ services, target, layout }) {
|
||||
return (
|
||||
<ul
|
||||
className={classNames(
|
||||
|
@ -23,7 +23,7 @@ export default function List({ services, layout }) {
|
|||
)}
|
||||
>
|
||||
{services.map((service) => (
|
||||
<Item key={service.name} service={service} />
|
||||
<Item key={service.name} target={target} service={service} />
|
||||
))}
|
||||
</ul>
|
||||
);
|
||||
|
|
|
@ -133,7 +133,12 @@ function Home({ settings }) {
|
|||
{services && (
|
||||
<div className="flex flex-wrap p-8 items-start">
|
||||
{services.map((group) => (
|
||||
<ServicesGroup key={group.name} services={group} layout={settings.layout?.[group.name]} />
|
||||
<ServicesGroup
|
||||
key={group.name}
|
||||
services={group}
|
||||
target={settings?.target}
|
||||
layout={settings.layout?.[group.name]}
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
)}
|
||||
|
@ -141,7 +146,7 @@ function Home({ settings }) {
|
|||
{bookmarks && (
|
||||
<div className="grow flex flex-wrap pt-0 p-8">
|
||||
{bookmarks.map((group) => (
|
||||
<BookmarksGroup key={group.name} group={group} />
|
||||
<BookmarksGroup key={group.name} group={group} target={settings?.target} />
|
||||
))}
|
||||
</div>
|
||||
)}
|
||||
|
|
Loading…
Add table
Reference in a new issue