import preview from "#.storybook/preview"; import { Component, createSignal } from "solid-js"; import { DataTable, DataTableColumnDef, } from "../../src/ts/components/ui/table/DataTable"; type Person = { name: string; age: number; email: string; role: string; }; const sampleData: Person[] = [ { name: "Alice", age: 28, email: "alice@example.com", role: "Engineer" }, { name: "Bob", age: 34, email: "bob@example.com", role: "Designer" }, { name: "Charlie", age: 22, email: "charlie@example.com", role: "Manager" }, { name: "Diana", age: 31, email: "diana@example.com", role: "Engineer" }, { name: "Eve", age: 27, email: "eve@example.com", role: "Designer" }, ]; const columns: DataTableColumnDef[] = [ { accessorKey: "name", header: "Name", enableSorting: true, }, { accessorKey: "age", header: "Age", enableSorting: true, meta: { align: "right" as const }, }, { accessorKey: "email", header: "Email", enableSorting: false, }, { accessorKey: "role", header: "Role", enableSorting: true, }, ]; const meta = preview.meta({ title: "UI/DataTable", component: DataTable as Component, parameters: { layout: "padded", }, tags: ["autodocs"], }); export const Default = meta.story({ render: () => ( ), }); export const WithRowSelection = meta.story({ render: () => { const [activeRow, setActiveRow] = createSignal(null); return (

Click a row to select it. Active: {activeRow() ?? "none"}

({ ...col, meta: { ...col.meta, cellMeta: () => ({ style: "cursor: pointer", onClick: () => { const key = (col as { accessorKey?: string }).accessorKey; if (key === "name") return; }, }), }, }))} data={sampleData} rowSelection={{ getRowId: (row) => row.name, class: "bg-main/10", activeRow, }} />
{sampleData.map((p) => ( ))}
); }, }); export const Empty = meta.story({ render: () => , }); export const EmptyWithNoDataRow = meta.story({ render: () => ( ), }); export const EmptyWithCustomNoData = meta.story({ render: () => ( No results found. Try a different search. ), }} /> ), }); export const HiddenHeader = meta.story({ render: () => ( ), });