diff --git a/web/src/app/globals.css b/web/src/app/globals.css index dc98be74c..1df336331 100644 --- a/web/src/app/globals.css +++ b/web/src/app/globals.css @@ -120,3 +120,24 @@ @apply bg-background text-foreground; } } + +.line-clamp-3 { + display: -webkit-box; + -webkit-line-clamp: 3; + line-clamp: 3; + -webkit-box-orient: vertical; + overflow: hidden; +} + +.fade-out-bottom { + -webkit-mask-image: linear-gradient(180deg, #000 60%, transparent); + mask-image: linear-gradient(180deg, #000 60%, transparent); +} + +.resizer { + @apply absolute right-0 top-0 h-full w-[5px] cursor-col-resize select-none touch-none; +} + +.resizer.isResizing { + @apply bg-blue-500 opacity-50; +} diff --git a/web/src/components/filterlist-table/columns.tsx b/web/src/components/filterlist-table/columns.tsx index 64f47b958..af4839b98 100644 --- a/web/src/components/filterlist-table/columns.tsx +++ b/web/src/components/filterlist-table/columns.tsx @@ -10,9 +10,17 @@ const columnHelper = createColumnHelper(); export const columns = [ columnHelper.accessor((row) => row.name, { header: "Name", + size: 200, + cell: (info) => ( +
{info.getValue()}
+ ), }), columnHelper.accessor((row) => row.description, { header: "Description", + size: 400, + cell: (info) => ( +
{info.getValue()}
+ ), }), columnHelper.accessor((row) => row.syntaxIds, { header: "Syntaxes", @@ -32,8 +40,13 @@ export const columns = [ ] : []; }) ?? []; - return ; + return ( +
+ +
+ ); }, + size: 150, }), columnHelper.accessor((row) => row.languageIds, { header: "Languages", @@ -52,8 +65,13 @@ export const columns = [ ] : []; }) ?? []; - return ; + return ( +
+ +
+ ); }, + size: 150, }), columnHelper.accessor((row) => row.tagIds, { header: "Tags", @@ -72,8 +90,13 @@ export const columns = [ ] : []; }) ?? []; - return ; + return ( +
+ +
+ ); }, + size: 200, }), columnHelper.accessor((row) => row.licenseId, { header: "License", @@ -81,17 +104,20 @@ export const columns = [ const meta = info.table.options.meta as FilterListsTableMeta; const license = meta.licenses.find((l) => l.id === info.getValue()); return license ? ( - +
+ +
) : null; }, + size: 150, }), columnHelper.accessor((row) => row.maintainerIds, { header: "Maintainers", @@ -110,7 +136,12 @@ export const columns = [ ] : []; }) ?? []; - return ; + return ( +
+ +
+ ); }, + size: 200, }), ]; diff --git a/web/src/components/filterlist-table/index.tsx b/web/src/components/filterlist-table/index.tsx index f70fe14f3..047db0c5b 100644 --- a/web/src/components/filterlist-table/index.tsx +++ b/web/src/components/filterlist-table/index.tsx @@ -72,6 +72,7 @@ export function FilterListTable({ const table = useReactTable({ data, columns, + columnResizeMode: "onChange", getCoreRowModel: getCoreRowModel(), getPaginationRowModel: getPaginationRowModel(), meta: { @@ -85,16 +86,33 @@ export function FilterListTable({ return (
- +
{table.getHeaderGroups().map((headerGroup) => ( {headerGroup.headers.map((header) => ( - + {flexRender( header.column.columnDef.header, header.getContext(), )} +
))} @@ -102,10 +120,16 @@ export function FilterListTable({ {table.getRowModel().rows.map((row) => ( - + {row.getVisibleCells().map((cell) => ( - - {flexRender(cell.column.columnDef.cell, cell.getContext())} + +
+ {flexRender(cell.column.columnDef.cell, cell.getContext())} +
))}