feat: add template card page

This commit is contained in:
Henry
2025-10-08 22:04:52 +01:00
parent 18e85ef6be
commit 4220b2bff9
4 changed files with 49 additions and 17 deletions

View File

@@ -0,0 +1,18 @@
import type { NextPageWithLayout } from "~/pages/_app";
import { getDashboardLayout } from "~/components/Dashboard";
import Popup from "~/components/Popup";
import CardView, { CardRightPanel } from "~/views/card";
const CardPage: NextPageWithLayout = () => {
return (
<>
<CardView isTemplate />
<Popup />
</>
);
};
CardPage.getLayout = (page) =>
getDashboardLayout(page, <CardRightPanel isTemplate />, true);
export default CardPage;

View File

@@ -39,7 +39,7 @@ import VisibilityButton from "./components/VisibilityButton";
type PublicListId = string;
export default function BoardPage({ isTemplate }: { isTemplate?: boolean }) {
const params = useParams() as { boardId: string[] } | null;
const params = useParams() as { boardId: string | string[] } | null;
const router = useRouter();
const utils = api.useUtils();
const { showPopup } = usePopup();
@@ -49,7 +49,13 @@ export default function BoardPage({ isTemplate }: { isTemplate?: boolean }) {
useState<PublicListId>("");
const [isInitialLoading, setIsInitialLoading] = useState(true);
const boardId = params?.boardId.length ? params.boardId[0] : null;
const boardId = params?.boardId
? Array.isArray(params.boardId)
? params.boardId[0]
: params.boardId
: null;
console.log("params", params);
const updateBoard = api.board.update.useMutation();
@@ -497,7 +503,11 @@ export default function BoardPage({ isTemplate }: { isTemplate?: boolean }) {
e.preventDefault();
}}
key={card.publicId}
href={`/cards/${card.publicId}`}
href={
isTemplate
? `/templates/${boardId}/cards/${card.publicId}`
: `/cards/${card.publicId}`
}
className={`mb-2 flex !cursor-pointer flex-col ${
card.publicId.startsWith(
"PLACEHOLDER",

View File

@@ -37,7 +37,7 @@ interface FormValues {
description: string;
}
export function CardRightPanel() {
export function CardRightPanel({ isTemplate }: { isTemplate?: boolean }) {
const router = useRouter();
const cardId = Array.isArray(router.query.cardId)
? router.query.cardId[0]
@@ -121,19 +121,21 @@ export function CardRightPanel() {
isLoading={!card}
/>
</div>
<div className="flex w-full flex-row">
<p className="my-2 mb-2 w-[100px] text-sm font-medium">{t`Members`}</p>
<MemberSelector
cardPublicId={cardId ?? ""}
members={formattedMembers}
isLoading={!card}
/>
</div>
{!isTemplate && (
<div className="flex w-full flex-row">
<p className="my-2 mb-2 w-[100px] text-sm font-medium">{t`Members`}</p>
<MemberSelector
cardPublicId={cardId ?? ""}
members={formattedMembers}
isLoading={!card}
/>
</div>
)}
</div>
);
}
export default function CardPage() {
export default function CardPage({ isTemplate }: { isTemplate?: boolean }) {
const router = useRouter();
const utils = api.useUtils();
const {
@@ -228,7 +230,7 @@ export default function CardPage() {
<>
<Link
className="whitespace-nowrap font-bold leading-[2.3rem] tracking-tight text-light-900 dark:text-dark-900 sm:text-[1.2rem]"
href={`/boards/${board?.publicId}`}
href={`${isTemplate ? "/templates" : "/boards"}/${board?.publicId}`}
>
{board?.name}
</Link>
@@ -296,9 +298,11 @@ export default function CardPage() {
isAdmin={workspace.role === "admin"}
/>
</div>
<div className="mt-6">
<NewCommentForm cardPublicId={cardId} />
</div>
{!isTemplate && (
<div className="mt-6">
<NewCommentForm cardPublicId={cardId} />
</div>
)}
</div>
</>
)}