diff --git a/package-lock.json b/package-lock.json index 52e353f..7362c29 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,6 +7,7 @@ "": { "name": "generics-ts", "version": "0.0.0", + "license": "MIT", "dependencies": { "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/src/stacked-table.tsx b/src/stacked-table.tsx index b9151a7..388f044 100644 --- a/src/stacked-table.tsx +++ b/src/stacked-table.tsx @@ -1,16 +1,18 @@ +/** Purpose: Make it easy to make collapsable tables with Tailwind + * + * TODO: Tailwind's purge functionality is cleaning up our classes and the only workaround so far is to add the classes to safelist in the + * TODO. Maybe if we use the classes more explicitely, this will work. + * + **/ + import { ReactElement } from "react"; import { clsx } from "clsx"; -// type ValueOf< -// ObjectType, -// ValueType extends keyof ObjectType = keyof ObjectType -// > = ObjectType[ValueType]; - type TableFieldMap = { [K in keyof Entity]: TableField; }; -type Breakpoint = "sm" | "md" | "lg"; +type Breakpoint = "sm" | "md" | "lg" | "xl"; type TableField = { label: string; @@ -56,18 +58,24 @@ export function StackedTable({ - {fieldList.map((fc) => ( - - ))} + {fieldList.map((fc) => { + const bp = fc.config.collapse?.breakpoint; + return ( + + ); + })} @@ -76,12 +84,16 @@ export function StackedTable({ {fieldList.map((fc) => { const fieldValue = row[fc.key as keyof typeof row]; + const bp = fc.config.collapse?.breakpoint; return ( @@ -156,7 +173,3 @@ function defaultFieldRenderer(value: unknown) { return "[missing renderer]"; } } - -function breakPointColumn(c: TableField) { - return c.collapse && `hidden ${c.collapse.breakpoint}:table-cell`; -} diff --git a/tailwind.config.cjs b/tailwind.config.cjs index cd81baf..5c01112 100644 --- a/tailwind.config.cjs +++ b/tailwind.config.cjs @@ -1,7 +1,7 @@ /** @type {import('tailwindcss').Config} */ module.exports = { content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"], - safelist: ["sm:table-cell", "md:table-cell", "lg:table-cell"], + safelist: ["md:hidden"], theme: { extend: {}, },
- {fc.config.label} - + {fc.config.label} +
<> @@ -103,30 +115,35 @@ export function StackedTable({ } return true; }) - .map((cfc) => ( - <> -
{cfc.config.label}
-
- {cfc.config.renderField - ? cfc.config.renderField({ - value: fieldValue, - config: cfc.config, - row, - }) - : defaultFieldRenderer( - row[cfc.key as keyof typeof row] - )} -
- - ))} + .map((cfc) => { + const bp = cfc.config.collapse?.breakpoint; + return ( + <> +
+ {cfc.config.label} +
+
+ {cfc.config.renderField + ? cfc.config.renderField({ + value: fieldValue, + config: cfc.config, + row, + }) + : defaultFieldRenderer( + row[cfc.key as keyof typeof row] + )} +
+ + ); + })}