Quantcast
Channel: Recent Questions - Stack Overflow
Viewing all articles
Browse latest Browse all 12111

Mixing shadcn/ui data-table and sheet components together in NextJs

$
0
0

It's my first time using the shadcn/ui library and I wanted to implement it in my new NextJs app, I created a data-table component (link: text), and I wanted to add a sheet component (link: text) which I wanted it to show when the user clicks on a row.I tried several attempts but every time It renders like this:as you can see all the data becomes inside the first column

here is my implementation:

"use client";import {    ColumnDef,    flexRender,    getCoreRowModel,    useReactTable,} from "@tanstack/react-table";import {    Table,    TableBody,    TableCell,    TableHead,    TableHeader,    TableRow,} from "@/components/ui/table";import {    Sheet,    SheetContent,    SheetDescription,    SheetHeader,    SheetTitle,    SheetTrigger,} from "@/components/ui/sheet";interface DataTableProps<TData, TValue> {    columns: ColumnDef<TData, TValue>[];    data: TData[];}export function DataTable<TData, TValue>({    columns,    data,}: DataTableProps<TData, TValue>) {    const table = useReactTable({        data,        columns,        getCoreRowModel: getCoreRowModel(),    });    return (<div className="rounded-md border"><Table><TableHeader>                    {table.getHeaderGroups().map((headerGroup) => (<TableRow key={headerGroup.id} className="w-32">                            {headerGroup.headers.map((header) => {                                return (<TableHead key={header.id} className="w-32">                                        {header.isPlaceholder                                            ? null                                            : flexRender(                                                  header.column.columnDef                                                      .header,                                                  header.getContext()                                              )}</TableHead>                                );                            })}</TableRow>                    ))}</TableHeader><TableBody>                    {table.getRowModel().rows?.length ? (                        table.getRowModel().rows.map((row) => (<Sheet key={row.id}><SheetTrigger key={row.id} asChild={true}><TableRow                                        key={row.id}                                        data-state={                                            row.getIsSelected() && "selected"                                        }>                                        {row.getVisibleCells().map((cell) => (<TableCell                                                key={cell.id}                                                className="w-fit">                                                {flexRender(                                                    cell.column.columnDef.cell,                                                    cell.getContext()                                                )}</TableCell>                                        ))}</TableRow></SheetTrigger><SheetContent><SheetHeader><SheetTitle>                                            Are you sure absolutely sure?</SheetTitle><SheetDescription>                                            This action cannot be undone. This                                            will permanently delete your account                                            and remove your data from our                                            servers.</SheetDescription></SheetHeader></SheetContent></Sheet>                        ))                    ) : (<TableRow><TableCell                                colSpan={columns.length}                                className="h-24 text-center">                                No results.</TableCell></TableRow>                    )}</TableBody></Table></div>    );}

I even tried to make the sheet into a function component that takes props but it didn't work either,If you have any ideas or suggestions please help.


Viewing all articles
Browse latest Browse all 12111

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>