From 4f338cade7adc47bc5e119a87f08e0dcaf0ba1c4 Mon Sep 17 00:00:00 2001
From: Josh Slaughter <8338893+jdslaugh@users.noreply.github.com>
Date: Tue, 26 Mar 2024 16:07:45 -0700
Subject: [PATCH] frontend: Adjusting ProjectCatalog chipsRow to allow a target
and auto-set based on location (#2965)
---
frontend/package.json | 6 ++---
.../src/details/info/chipsRow.tsx | 22 +++++++++++++++++--
2 files changed, 23 insertions(+), 5 deletions(-)
diff --git a/frontend/package.json b/frontend/package.json
index 0a8c12930d..be93d7efca 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -40,9 +40,9 @@
"start": "yarn clean && yarn compile:watch & FORCE_COLOR=true yarn workspace @clutch-sh/app start | cat",
"storybook": "rm -rf node_modules/.cache/storybook/ && start-storybook --disable-telemetry -p 6006 -h localhost",
"storybook:build": "NODE_OPTIONS=--max_old_space_size=4096 build-storybook --no-dll -o netlify/storybook-static",
- "test": "lerna run test --stream --no-bail --",
- "test:coverage": "lerna run test:coverage --stream --no-bail --",
- "test:e2e": "lerna run test:e2e",
+ "test": "lerna run test --stream --no-bail -- --silent",
+ "test:coverage": "lerna run test:coverage --stream --no-bail -- --silent",
+ "test:e2e": "lerna run test:e2e --stream --no-bail --",
"test:licenses": "node license-linter.js",
"test:update": "yarn test:coverage -u",
"test:watch": "lerna run test:watch --parallel"
diff --git a/frontend/workflows/projectCatalog/src/details/info/chipsRow.tsx b/frontend/workflows/projectCatalog/src/details/info/chipsRow.tsx
index 358e74f7de..4dcf50358e 100644
--- a/frontend/workflows/projectCatalog/src/details/info/chipsRow.tsx
+++ b/frontend/workflows/projectCatalog/src/details/info/chipsRow.tsx
@@ -2,18 +2,20 @@ import React from "react";
import type { CHIP_VARIANTS } from "@clutch-sh/core";
import { Chip, Grid, Link, Tooltip } from "@clutch-sh/core";
import ChevronRightIcon from "@mui/icons-material/ChevronRight";
+import type { LinkProps } from "@mui/material";
export interface ProjectInfoChip {
text: string;
title?: string;
icon?: React.ReactElement;
url?: string;
+ urlTarget?: LinkProps["target"];
variant?: typeof CHIP_VARIANTS[number];
}
const ChipsRow = ({ chips = [] }: { chips: ProjectInfoChip[] }) => (
<>
- {chips.map(({ variant = "neutral", text, icon, title, url }) => {
+ {chips.map(({ variant = "neutral", text, icon, title, url, urlTarget }) => {
const chipText = (
{text}
@@ -21,9 +23,25 @@ const ChipsRow = ({ chips = [] }: { chips: ProjectInfoChip[] }) => (
);
const chipElem = ;
+
+ if (!urlTarget) {
+ const externalRoute = url && url.startsWith("http");
+
+ // eslint-disable-next-line no-param-reassign
+ urlTarget = externalRoute ? "_blank" : "_self";
+ }
+
return (
- {url ? {chipElem} : chipElem}
+
+ {url ? (
+
+ {chipElem}
+
+ ) : (
+ chipElem
+ )}
+
);
})}