@tetrascience-npm/tetrascience-react-ui 0.5.0-beta.42.1 → 0.5.0-beta.43.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/ui/data-table/data-table.cjs +1 -1
- package/dist/components/ui/data-table/data-table.cjs.map +1 -1
- package/dist/components/ui/data-table/data-table.js +299 -243
- package/dist/components/ui/data-table/data-table.js.map +1 -1
- package/dist/components/ui/table.cjs +1 -1
- package/dist/components/ui/table.cjs.map +1 -1
- package/dist/components/ui/table.js +26 -21
- package/dist/components/ui/table.js.map +1 -1
- package/dist/index.css +1 -1
- package/dist/index.d.ts +15 -4
- package/dist/index.tailwind.css +1 -1
- package/dist/providers/athena.d.ts +7 -0
- package/dist/providers/databricks.d.ts +7 -0
- package/dist/providers/snowflake.d.ts +7 -0
- package/dist/server.d.ts +7 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-table.js","sources":["../../../../src/components/ui/data-table/data-table.tsx"],"sourcesContent":["\"use client\"\n\nimport {\n closestCenter,\n DndContext,\n type DragEndEvent,\n DragOverlay,\n type DragStartEvent,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\"\nimport { restrictToHorizontalAxis } from \"@dnd-kit/modifiers\"\nimport {\n arrayMove,\n horizontalListSortingStrategy,\n SortableContext,\n sortableKeyboardCoordinates,\n useSortable,\n} from \"@dnd-kit/sortable\"\nimport { CSS } from \"@dnd-kit/utilities\"\nimport {\n type ColumnDef,\n type ColumnOrderState,\n type Header,\n type PaginationState,\n type SortingState,\n type Table as TanStackTable,\n type VisibilityState,\n flexRender,\n getCoreRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from \"@tanstack/react-table\"\nimport { ArrowDownIcon, ArrowUpDownIcon, ArrowUpIcon, GripVerticalIcon } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { DataTablePagination } from \"./data-table-pagination\"\n\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"@/components/ui/table\"\nimport { cn } from \"@/lib/utils\"\n\n// ---------------------------------------------------------------------------\n// Filter types\n// ---------------------------------------------------------------------------\n\ntype FilterOperator =\n | \"contains\"\n | \"equals\"\n | \"not_equals\"\n | \"starts_with\"\n | \"ends_with\"\n | \"is_empty\"\n | \"is_not_empty\"\n\ninterface FilterCondition {\n /** Stable unique key for React reconciliation. */\n id: string\n columnId: string\n operator: FilterOperator\n value: string\n}\n\ninterface FilterColumnConfig {\n columnId: string\n label?: string\n operators?: FilterOperator[]\n}\n\nfunction applyFilterCondition(\n cellValue: string,\n operator: FilterOperator,\n filterValue: string,\n): boolean {\n const cell = cellValue.toLowerCase().trim()\n const filter = filterValue.toLowerCase().trim()\n switch (operator) {\n case \"contains\": return cell.includes(filter)\n case \"equals\": return cell === filter\n case \"not_equals\": return cell !== filter\n case \"starts_with\": return cell.startsWith(filter)\n case \"ends_with\": return cell.endsWith(filter)\n case \"is_empty\": return cell === \"\"\n case \"is_not_empty\": return cell !== \"\"\n default: {\n const _exhaustive: never = operator\n void _exhaustive\n return true\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Context\n// ---------------------------------------------------------------------------\n\ninterface TableContextValue<TData> {\n table: TanStackTable<TData>\n columnLabels: Record<string, string>\n setColumnLabel: (columnId: string, label: string) => void\n filters: FilterCondition[]\n setFilters: (filters: FilterCondition[]) => void\n filterConfig: FilterColumnConfig[]\n enableFiltering: boolean\n}\n\nconst TableContext = React.createContext<TableContextValue<unknown> | null>(null)\n\nfunction useDataTable<TData = unknown>() {\n const ctx = React.useContext(TableContext) as TableContextValue<TData> | null\n if (!ctx) {\n throw new Error(\"useDataTable must be used within a <DataTable>\")\n }\n return ctx\n}\n\n// ---------------------------------------------------------------------------\n// DraggableHeader\n// ---------------------------------------------------------------------------\n\nfunction DraggableHeader<TData>({\n header,\n children,\n position,\n numeric,\n}: {\n header: Header<TData, unknown>\n children: React.ReactNode\n position?: \"first\" | \"last\" | \"middle\"\n numeric?: boolean\n}) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id: header.column.id })\n\n const style: React.CSSProperties = {\n transform: CSS.Transform.toString(\n transform ? { ...transform, scaleX: 1, scaleY: 1 } : null,\n ),\n transition,\n position: \"relative\",\n }\n\n return (\n <TableHead\n ref={setNodeRef}\n style={style}\n variant={numeric ? \"numeric\" : undefined}\n className={cn(\n \"group/header transition-shadow duration-150\",\n !isDragging && position === \"first\" && \"hover:shadow-[inset_-1px_0_0_0_var(--color-border)]\",\n !isDragging && position === \"last\" && \"hover:shadow-[inset_1px_0_0_0_var(--color-border)]\",\n !isDragging && position === \"middle\" && \"hover:shadow-[inset_1px_0_0_0_var(--color-border),inset_-1px_0_0_0_var(--color-border)]\",\n isDragging && \"opacity-40\",\n )}\n >\n <div className={cn(\"flex items-center gap-1\", numeric && \"flex-row-reverse\")}>\n <div className=\"flex-1\">{children}</div>\n <button\n type=\"button\"\n data-drag-handle=\"\"\n className=\"cursor-grab touch-none text-muted-foreground hover:text-foreground active:cursor-grabbing opacity-0 group-hover/header:opacity-100 transition-opacity\"\n {...attributes}\n {...listeners}\n >\n <GripVerticalIcon className=\"size-3.5\" />\n </button>\n </div>\n </TableHead>\n )\n}\n\n// ---------------------------------------------------------------------------\n// Shared header / body renderers (extracted to reduce cognitive complexity)\n// ---------------------------------------------------------------------------\n\ninterface SortableHeaderContentProps {\n header: Header<unknown, unknown>\n enableSorting: boolean\n numericColumns: Set<string>\n columnLabels: Record<string, string>\n}\n\nfunction SortableHeaderContent({\n header,\n enableSorting,\n numericColumns,\n columnLabels,\n}: SortableHeaderContentProps) {\n if (header.isPlaceholder) return null\n const canSort = enableSorting && header.column.getCanSort()\n const sorted = header.column.getIsSorted()\n const isNumeric = numericColumns.has(header.column.id)\n\n return (\n <div\n className={cn(\n \"flex items-center gap-1\",\n canSort && \"group/sort cursor-pointer select-none\",\n isNumeric && \"flex-row-reverse\",\n )}\n onClick={canSort ? header.column.getToggleSortingHandler() : undefined}\n onKeyDown={(e) => {\n if ((e.key === \"Enter\" || e.key === \" \") && canSort) {\n header.column.getToggleSortingHandler()\n }\n }}\n >\n {columnLabels[header.column.id] ??\n flexRender(header.column.columnDef.header, header.getContext())}\n {canSort && (\n <span\n className={cn(\n !sorted && \"opacity-0 group-hover/sort:opacity-100 transition-opacity\",\n )}\n >\n {sorted === \"asc\" ? (\n <ArrowUpIcon className=\"size-3.5 text-foreground\" />\n ) : sorted === \"desc\" ? (\n <ArrowDownIcon className=\"size-3.5 text-foreground\" />\n ) : (\n <ArrowUpDownIcon className=\"size-3.5 text-muted-foreground\" />\n )}\n </span>\n )}\n </div>\n )\n}\n\nfunction DataTableRows<TData>({\n table,\n columns,\n numericColumns,\n}: {\n table: TanStackTable<TData>\n columns: ColumnDef<TData, unknown>[]\n numericColumns: Set<string>\n}) {\n if (table.getRowModel().rows.length === 0) {\n return (\n <TableRow>\n <TableCell colSpan={columns.length} className=\"h-24 text-center text-muted-foreground\">\n No results.\n </TableCell>\n </TableRow>\n )\n }\n\n return table.getRowModel().rows.map((row) => (\n <TableRow key={row.id} data-state={row.getIsSelected() ? \"selected\" : undefined}>\n {row.getVisibleCells().map((cell) => (\n <TableCell key={cell.id} variant={numericColumns.has(cell.column.id) ? \"numeric\" : undefined}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n ))}\n </TableRow>\n ))\n}\n\n// ---------------------------------------------------------------------------\n// Slot categorization\n// ---------------------------------------------------------------------------\n\nfunction categorizeSlots(children: React.ReactNode) {\n const toolbarSlots: React.ReactNode[] = []\n const filterSlots: React.ReactNode[] = []\n const paginationSlots: React.ReactNode[] = []\n const restSlots: React.ReactNode[] = []\n React.Children.forEach(children, (child) => {\n if (React.isValidElement(child) && child.type === TableToolbar) {\n toolbarSlots.push(child)\n } else if (\n React.isValidElement(child) &&\n (child.type as React.ComponentType).displayName === \"DataTableFilter\"\n ) {\n filterSlots.push(child)\n } else if (React.isValidElement(child) && child.type === DataTablePagination) {\n paginationSlots.push(child)\n } else {\n restSlots.push(child)\n }\n })\n return { toolbarSlots, filterSlots, paginationSlots, restSlots }\n}\n\n// ---------------------------------------------------------------------------\n// DataTable\n// ---------------------------------------------------------------------------\n\ninterface DataTableProps<TData, TValue> {\n columns: ColumnDef<TData, TValue>[]\n data: TData[]\n /** @deprecated Use `<TableToolbar>` as a child instead */\n toolbar?: React.ReactNode\n enableSorting?: boolean\n enableColumnVisibility?: boolean\n columnOrder?: ColumnOrderState\n onColumnOrderChange?: (order: ColumnOrderState) => void\n columnVisibility?: VisibilityState\n onColumnVisibilityChange?: (vis: VisibilityState) => void\n columnLabels?: Record<string, string>\n onColumnLabelChange?: (columnId: string, label: string) => void\n enablePagination?: boolean\n defaultPageSize?: number\n pagination?: PaginationState\n onPaginationChange?: (pagination: PaginationState) => void\n enableColumnReorder?: boolean\n enableFiltering?: boolean\n filters?: FilterCondition[]\n onFiltersChange?: (filters: FilterCondition[]) => void\n filterConfig?: FilterColumnConfig[]\n /** When true, filtering is handled externally — onFiltersChange fires but rows are not filtered client-side. */\n manualFiltering?: boolean\n density?: \"compact\" | \"default\" | \"relaxed\"\n children?: React.ReactNode\n className?: string\n /** Variant passed to the base Table component */\n variant?: React.ComponentProps<typeof Table>[\"variant\"]\n /** className passed to the base Table's container div */\n containerClassName?: React.ComponentProps<typeof Table>[\"containerClassName\"]\n}\n\nfunction DataTable<TData, TValue>({\n columns,\n data,\n toolbar,\n enableSorting = false,\n enableColumnVisibility = false,\n children,\n columnOrder: controlledColumnOrder,\n onColumnOrderChange,\n columnVisibility: controlledColumnVisibility,\n onColumnVisibilityChange,\n columnLabels: controlledColumnLabels,\n onColumnLabelChange,\n enablePagination = false,\n defaultPageSize = 10,\n pagination: controlledPagination,\n onPaginationChange,\n enableColumnReorder = false,\n enableFiltering = false,\n filters: controlledFilters,\n onFiltersChange,\n filterConfig,\n manualFiltering = false,\n density = \"default\",\n className,\n variant = \"card\",\n containerClassName,\n}: DataTableProps<TData, TValue>) {\n const [sorting, setSorting] = React.useState<SortingState>([])\n const [internalColumnVisibility, setInternalColumnVisibility] =\n React.useState<VisibilityState>({})\n const [internalColumnOrder, setInternalColumnOrder] =\n React.useState<ColumnOrderState>([])\n const [internalColumnLabels, setInternalColumnLabels] = React.useState<\n Record<string, string>\n >({})\n const [internalPagination, setInternalPagination] =\n React.useState<PaginationState>({\n pageIndex: 0,\n pageSize: defaultPageSize,\n })\n const [internalFilters, setInternalFilters] = React.useState<FilterCondition[]>([])\n\n const pagination = controlledPagination ?? internalPagination\n const filters = controlledFilters ?? internalFilters\n\n const columnVisibility =\n controlledColumnVisibility ?? internalColumnVisibility\n const columnOrder = controlledColumnOrder ?? internalColumnOrder\n const columnLabels = controlledColumnLabels ?? internalColumnLabels\n\n const handlePaginationChange = React.useMemo(() => {\n if (!enablePagination) return\n if (onPaginationChange) {\n return (updater: PaginationState | ((prev: PaginationState) => PaginationState)) => {\n const next = typeof updater === \"function\" ? updater(controlledPagination!) : updater\n onPaginationChange(next)\n }\n }\n return setInternalPagination\n }, [enablePagination, onPaginationChange, controlledPagination])\n\n const handleVisibilityChange = React.useMemo(() => {\n if (!enableColumnVisibility) return\n return (updater: VisibilityState | ((prev: VisibilityState) => VisibilityState)) => {\n const next = typeof updater === \"function\" ? updater(columnVisibility) : updater\n ;(onColumnVisibilityChange ?? setInternalColumnVisibility)(next)\n }\n }, [enableColumnVisibility, columnVisibility, onColumnVisibilityChange])\n\n const handleFiltersChange = React.useCallback(\n (newFilters: FilterCondition[]) => {\n ;(onFiltersChange ?? setInternalFilters)(newFilters)\n },\n [onFiltersChange],\n )\n\n const resolvedFilterConfig: FilterColumnConfig[] = React.useMemo(() => {\n if (filterConfig) return filterConfig\n return columns\n .filter((col) => \"accessorKey\" in col)\n .map((col) => ({ columnId: String((col as { accessorKey: unknown }).accessorKey) }))\n }, [filterConfig, columns])\n\n const filteredData = React.useMemo((): TData[] => {\n if (!enableFiltering || manualFiltering) return data\n const active = filters.filter(\n (f) =>\n f.columnId &&\n f.operator &&\n (f.value.trim() !== \"\" || f.operator === \"is_empty\" || f.operator === \"is_not_empty\"),\n )\n if (active.length === 0) return data\n return data.filter((row) =>\n active.every((condition) => {\n const cellValue = String(\n (row as Record<string, unknown>)[condition.columnId] ?? \"\",\n )\n return applyFilterCondition(cellValue, condition.operator, condition.value)\n }),\n )\n }, [data, filters, enableFiltering, manualFiltering])\n\n const handleColumnOrderChange = React.useCallback(\n (updater: ColumnOrderState | ((prev: ColumnOrderState) => ColumnOrderState)) => {\n const next = typeof updater === \"function\" ? updater(columnOrder) : updater\n ;(onColumnOrderChange ?? setInternalColumnOrder)(next)\n },\n [columnOrder, onColumnOrderChange],\n )\n\n const table = useReactTable({\n data: filteredData,\n columns,\n state: {\n sorting: enableSorting ? sorting : undefined,\n columnVisibility: enableColumnVisibility ? columnVisibility : undefined,\n columnOrder: columnOrder.length > 0 ? columnOrder : undefined,\n ...(enablePagination ? { pagination } : {}),\n },\n onSortingChange: enableSorting ? setSorting : undefined,\n onPaginationChange: handlePaginationChange,\n onColumnVisibilityChange: handleVisibilityChange,\n onColumnOrderChange: handleColumnOrderChange,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: enableSorting ? getSortedRowModel() : undefined,\n getPaginationRowModel: enablePagination ? getPaginationRowModel() : undefined,\n })\n\n const setColumnLabel = React.useCallback(\n (columnId: string, label: string) => {\n ;(onColumnLabelChange ?? ((id: string, l: string) => setInternalColumnLabels((prev) => ({ ...prev, [id]: l }))))(columnId, label)\n },\n [onColumnLabelChange],\n )\n\n const reorderSensors = useSensors(\n useSensor(PointerSensor, { activationConstraint: { distance: 5 } }),\n useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates }),\n )\n\n const [draggingColumnId, setDraggingColumnId] = React.useState<string | null>(null)\n\n const handleColumnDragStart = React.useCallback(\n (event: DragStartEvent) => {\n setDraggingColumnId(String(event.active.id))\n },\n [],\n )\n\n const handleColumnDragEnd = React.useCallback(\n (event: DragEndEvent) => {\n setDraggingColumnId(null)\n const { active, over } = event\n if (!over || active.id === over.id) return\n const currentOrder =\n columnOrder.length > 0 ? columnOrder : table.getAllLeafColumns().map((column) => column.id)\n const oldIdx = currentOrder.indexOf(String(active.id))\n const newIdx = currentOrder.indexOf(String(over.id))\n if (oldIdx === -1 || newIdx === -1) return\n const newOrder = arrayMove(currentOrder, oldIdx, newIdx)\n table.setColumnOrder(newOrder)\n },\n [columnOrder, table],\n )\n\n const draggingHeader = draggingColumnId\n ? table.getFlatHeaders().find((h) => h.column.id === draggingColumnId)\n : null\n\n // Infer which columns are numeric from the first data row\n const numericColumns = React.useMemo(() => {\n if (data.length === 0) return new Set<string>()\n const first = data[0] as Record<string, unknown>\n const ids = new Set<string>()\n for (const col of columns) {\n const key = \"accessorKey\" in col ? String(col.accessorKey) : \"\"\n if (key && typeof first[key] === \"number\") ids.add(key)\n }\n return ids\n }, [data, columns])\n\n // Not memoized: TanStack's table instance is a stable reference that mutates\n // internally, so children reading table.getState() need fresh context on each render.\n const ctx = {\n table,\n columnLabels,\n setColumnLabel,\n filters,\n setFilters: handleFiltersChange,\n filterConfig: resolvedFilterConfig,\n enableFiltering,\n } as TableContextValue<unknown>\n\n const { toolbarSlots, filterSlots, paginationSlots, restSlots } = categorizeSlots(children)\n\n return (\n <TableContext.Provider value={ctx}>\n <div data-slot=\"data-table\" className={cn(\"w-full space-y-2\", className)}>\n {toolbar}\n {toolbarSlots}\n {filterSlots}\n {enableColumnReorder ? (\n <DndContext\n sensors={reorderSensors}\n collisionDetection={closestCenter}\n modifiers={[restrictToHorizontalAxis]}\n onDragStart={handleColumnDragStart}\n onDragEnd={handleColumnDragEnd}\n >\n <SortableContext\n items={table.getFlatHeaders().map((h) => h.column.id)}\n strategy={horizontalListSortingStrategy}\n >\n <Table data-density={density} variant={variant} containerClassName={containerClassName}>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header, headerIdx) => (\n <DraggableHeader\n key={header.id}\n header={header}\n position={headerIdx === 0 ? \"first\" : headerIdx === headerGroup.headers.length - 1 ? \"last\" : \"middle\"}\n numeric={numericColumns.has(header.column.id)}\n >\n <SortableHeaderContent\n header={header as Header<unknown, unknown>}\n enableSorting={enableSorting}\n numericColumns={numericColumns}\n columnLabels={columnLabels}\n />\n </DraggableHeader>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n <DataTableRows table={table} columns={columns} numericColumns={numericColumns} />\n </TableBody>\n </Table>\n </SortableContext>\n <DragOverlay dropAnimation={null}>\n {draggingHeader && (\n <div className=\"rounded-md border bg-background px-4 py-3 text-sm font-medium shadow-lg\">\n {columnLabels[draggingHeader.column.id] ??\n (typeof draggingHeader.column.columnDef.header === \"string\"\n ? draggingHeader.column.columnDef.header\n : draggingHeader.column.id)}\n </div>\n )}\n </DragOverlay>\n </DndContext>\n ) : (\n <Table data-density={density} variant={variant} containerClassName={containerClassName}>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => (\n <TableHead key={header.id} variant={numericColumns.has(header.column.id) ? \"numeric\" : undefined}>\n <SortableHeaderContent\n header={header as Header<unknown, unknown>}\n enableSorting={enableSorting}\n numericColumns={numericColumns}\n columnLabels={columnLabels}\n />\n </TableHead>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n <DataTableRows table={table} columns={columns} numericColumns={numericColumns} />\n </TableBody>\n </Table>\n )}\n {paginationSlots}\n {restSlots}\n </div>\n </TableContext.Provider>\n )\n}\n\n// ---------------------------------------------------------------------------\n// TableToolbar\n// ---------------------------------------------------------------------------\n\nfunction TableToolbar({\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"table-toolbar\"\n className={cn(\"flex items-center justify-end gap-2\", className)}\n {...props}\n >\n {children}\n </div>\n )\n}\n\nexport { DataTable, TableToolbar, useDataTable }\nexport type { DataTableProps, FilterCondition, FilterOperator, FilterColumnConfig }\n"],"names":["applyFilterCondition","cellValue","operator","filterValue","cell","filter","TableContext","React","useDataTable","ctx","DraggableHeader","header","children","position","numeric","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","style","CSS","jsx","TableHead","cn","GripVerticalIcon","SortableHeaderContent","enableSorting","numericColumns","columnLabels","canSort","sorted","isNumeric","jsxs","e","flexRender","ArrowUpIcon","ArrowDownIcon","ArrowUpDownIcon","DataTableRows","table","columns","TableRow","TableCell","row","categorizeSlots","toolbarSlots","filterSlots","paginationSlots","restSlots","child","TableToolbar","DataTablePagination","DataTable","data","toolbar","enableColumnVisibility","controlledColumnOrder","onColumnOrderChange","controlledColumnVisibility","onColumnVisibilityChange","controlledColumnLabels","onColumnLabelChange","enablePagination","defaultPageSize","controlledPagination","onPaginationChange","enableColumnReorder","enableFiltering","controlledFilters","onFiltersChange","filterConfig","manualFiltering","density","className","variant","containerClassName","sorting","setSorting","internalColumnVisibility","setInternalColumnVisibility","internalColumnOrder","setInternalColumnOrder","internalColumnLabels","setInternalColumnLabels","internalPagination","setInternalPagination","internalFilters","setInternalFilters","pagination","filters","columnVisibility","columnOrder","handlePaginationChange","updater","next","handleVisibilityChange","handleFiltersChange","newFilters","resolvedFilterConfig","col","filteredData","active","f","condition","handleColumnOrderChange","useReactTable","getCoreRowModel","getSortedRowModel","getPaginationRowModel","setColumnLabel","columnId","label","id","l","prev","reorderSensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","draggingColumnId","setDraggingColumnId","handleColumnDragStart","event","handleColumnDragEnd","over","currentOrder","column","oldIdx","newIdx","newOrder","arrayMove","draggingHeader","h","first","ids","key","DndContext","closestCenter","restrictToHorizontalAxis","SortableContext","horizontalListSortingStrategy","Table","TableHeader","headerGroup","headerIdx","TableBody","DragOverlay","props"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"data-table.js","sources":["../../../../src/components/ui/data-table/data-table.tsx"],"sourcesContent":["\"use client\"\n\nimport {\n closestCenter,\n DndContext,\n type DragEndEvent,\n DragOverlay,\n type DragStartEvent,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\"\nimport { restrictToHorizontalAxis } from \"@dnd-kit/modifiers\"\nimport {\n arrayMove,\n horizontalListSortingStrategy,\n SortableContext,\n sortableKeyboardCoordinates,\n useSortable,\n} from \"@dnd-kit/sortable\"\nimport { CSS } from \"@dnd-kit/utilities\"\nimport {\n type ColumnDef,\n type ColumnOrderState,\n type Header,\n type PaginationState,\n type RowData,\n type SortingState,\n type Table as TanStackTable,\n type VisibilityState,\n flexRender,\n getCoreRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from \"@tanstack/react-table\"\nimport { ArrowDownIcon, ArrowUpDownIcon, ArrowUpIcon, GripVerticalIcon } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { DataTablePagination } from \"./data-table-pagination\"\n\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"@/components/ui/table\"\nimport { cn } from \"@/lib/utils\"\n\n// ---------------------------------------------------------------------------\n// Module augmentation — column meta\n// ---------------------------------------------------------------------------\n\ndeclare module \"@tanstack/react-table\" {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n interface ColumnMeta<TData extends RowData, TValue> {\n truncate?: boolean\n }\n}\n\n// ---------------------------------------------------------------------------\n// Filter types\n// ---------------------------------------------------------------------------\n\ntype FilterOperator =\n | \"contains\"\n | \"equals\"\n | \"not_equals\"\n | \"starts_with\"\n | \"ends_with\"\n | \"is_empty\"\n | \"is_not_empty\"\n\ninterface FilterCondition {\n /** Stable unique key for React reconciliation. */\n id: string\n columnId: string\n operator: FilterOperator\n value: string\n}\n\ninterface FilterColumnConfig {\n columnId: string\n label?: string\n operators?: FilterOperator[]\n}\n\nfunction applyFilterCondition(\n cellValue: string,\n operator: FilterOperator,\n filterValue: string,\n): boolean {\n const cell = cellValue.toLowerCase().trim()\n const filter = filterValue.toLowerCase().trim()\n switch (operator) {\n case \"contains\": return cell.includes(filter)\n case \"equals\": return cell === filter\n case \"not_equals\": return cell !== filter\n case \"starts_with\": return cell.startsWith(filter)\n case \"ends_with\": return cell.endsWith(filter)\n case \"is_empty\": return cell === \"\"\n case \"is_not_empty\": return cell !== \"\"\n default: {\n const _exhaustive: never = operator\n void _exhaustive\n return true\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Context\n// ---------------------------------------------------------------------------\n\ninterface TableContextValue<TData> {\n table: TanStackTable<TData>\n columnLabels: Record<string, string>\n setColumnLabel: (columnId: string, label: string) => void\n filters: FilterCondition[]\n setFilters: (filters: FilterCondition[]) => void\n filterConfig: FilterColumnConfig[]\n enableFiltering: boolean\n}\n\nconst TableContext = React.createContext<TableContextValue<unknown> | null>(null)\n\nfunction useDataTable<TData = unknown>() {\n const ctx = React.useContext(TableContext) as TableContextValue<TData> | null\n if (!ctx) {\n throw new Error(\"useDataTable must be used within a <DataTable>\")\n }\n return ctx\n}\n\n// ---------------------------------------------------------------------------\n// DraggableHeader\n// ---------------------------------------------------------------------------\n\nfunction DraggableHeader<TData>({\n header,\n children,\n position,\n numeric,\n truncate,\n}: {\n header: Header<TData, unknown>\n children: React.ReactNode\n position?: \"first\" | \"last\" | \"middle\"\n numeric?: boolean\n truncate?: boolean\n}) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id: header.column.id })\n\n const style: React.CSSProperties = {\n transform: CSS.Transform.toString(\n transform ? { ...transform, scaleX: 1, scaleY: 1 } : null,\n ),\n transition,\n position: \"relative\",\n }\n\n return (\n <TableHead\n ref={setNodeRef}\n style={style}\n variant={numeric ? \"numeric\" : undefined}\n truncate={truncate}\n className={cn(\n \"group/header transition-shadow duration-150\",\n !isDragging && position === \"first\" && \"hover:shadow-[inset_-1px_0_0_0_var(--color-border)]\",\n !isDragging && position === \"last\" && \"hover:shadow-[inset_1px_0_0_0_var(--color-border)]\",\n !isDragging && position === \"middle\" && \"hover:shadow-[inset_1px_0_0_0_var(--color-border),inset_-1px_0_0_0_var(--color-border)]\",\n isDragging && \"opacity-40\",\n )}\n >\n <div className={cn(\"flex items-center gap-1 min-w-0\", numeric && \"flex-row-reverse\")}>\n <div className=\"flex-1 min-w-0\">{children}</div>\n <button\n type=\"button\"\n data-drag-handle=\"\"\n className=\"cursor-grab touch-none text-muted-foreground hover:text-foreground active:cursor-grabbing opacity-0 group-hover/header:opacity-100 transition-opacity\"\n {...attributes}\n {...listeners}\n >\n <GripVerticalIcon className=\"size-3.5\" />\n </button>\n </div>\n </TableHead>\n )\n}\n\n// ---------------------------------------------------------------------------\n// Shared header / body renderers (extracted to reduce cognitive complexity)\n// ---------------------------------------------------------------------------\n\ninterface SortableHeaderContentProps {\n header: Header<unknown, unknown>\n enableSorting: boolean\n numericColumns: Set<string>\n columnLabels: Record<string, string>\n truncate?: boolean\n}\n\nfunction SortableHeaderContent({\n header,\n enableSorting,\n numericColumns,\n columnLabels,\n truncate,\n}: SortableHeaderContentProps) {\n if (header.isPlaceholder) return null\n const canSort = enableSorting && header.column.getCanSort()\n const sorted = header.column.getIsSorted()\n const isNumeric = numericColumns.has(header.column.id)\n\n return (\n <div\n className={cn(\n \"flex items-center gap-1 min-w-0\",\n canSort && \"group/sort cursor-pointer select-none\",\n isNumeric && \"flex-row-reverse\",\n )}\n onClick={canSort ? header.column.getToggleSortingHandler() : undefined}\n onKeyDown={(e) => {\n if ((e.key === \"Enter\" || e.key === \" \") && canSort) {\n header.column.getToggleSortingHandler()\n }\n }}\n >\n <span className={cn(\"min-w-0\", truncate && \"truncate\")}>\n {columnLabels[header.column.id] ??\n flexRender(header.column.columnDef.header, header.getContext())}\n </span>\n {canSort && (\n <span\n className={cn(\n !sorted && \"opacity-0 group-hover/sort:opacity-100 transition-opacity\",\n )}\n >\n {sorted === \"asc\" ? (\n <ArrowUpIcon className=\"size-3.5 text-foreground\" />\n ) : sorted === \"desc\" ? (\n <ArrowDownIcon className=\"size-3.5 text-foreground\" />\n ) : (\n <ArrowUpDownIcon className=\"size-3.5 text-muted-foreground\" />\n )}\n </span>\n )}\n </div>\n )\n}\n\nfunction DataTableRows<TData>({\n table,\n columns,\n numericColumns,\n truncate,\n}: {\n table: TanStackTable<TData>\n columns: ColumnDef<TData, unknown>[]\n numericColumns: Set<string>\n truncate?: boolean\n}) {\n if (table.getRowModel().rows.length === 0) {\n return (\n <TableRow>\n <TableCell colSpan={columns.length} className=\"h-24 text-center text-muted-foreground\">\n No results.\n </TableCell>\n </TableRow>\n )\n }\n\n return table.getRowModel().rows.map((row) => (\n <TableRow key={row.id} data-state={row.getIsSelected() ? \"selected\" : undefined}>\n {row.getVisibleCells().map((cell) => (\n <TableCell\n key={cell.id}\n variant={numericColumns.has(cell.column.id) ? \"numeric\" : undefined}\n truncate={truncate && (cell.column.columnDef.meta?.truncate ?? true)}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n ))}\n </TableRow>\n ))\n}\n\n// ---------------------------------------------------------------------------\n// Slot categorization\n// ---------------------------------------------------------------------------\n\nfunction categorizeSlots(children: React.ReactNode) {\n const toolbarSlots: React.ReactNode[] = []\n const filterSlots: React.ReactNode[] = []\n const paginationSlots: React.ReactNode[] = []\n const restSlots: React.ReactNode[] = []\n React.Children.forEach(children, (child) => {\n if (React.isValidElement(child) && child.type === TableToolbar) {\n toolbarSlots.push(child)\n } else if (\n React.isValidElement(child) &&\n (child.type as React.ComponentType).displayName === \"DataTableFilter\"\n ) {\n filterSlots.push(child)\n } else if (React.isValidElement(child) && child.type === DataTablePagination) {\n paginationSlots.push(child)\n } else {\n restSlots.push(child)\n }\n })\n return { toolbarSlots, filterSlots, paginationSlots, restSlots }\n}\n\n// ---------------------------------------------------------------------------\n// DataTable\n// ---------------------------------------------------------------------------\n\ninterface DataTableProps<TData, TValue> {\n columns: ColumnDef<TData, TValue>[]\n data: TData[]\n /** @deprecated Use `<TableToolbar>` as a child instead */\n toolbar?: React.ReactNode\n enableSorting?: boolean\n enableColumnVisibility?: boolean\n columnOrder?: ColumnOrderState\n onColumnOrderChange?: (order: ColumnOrderState) => void\n columnVisibility?: VisibilityState\n onColumnVisibilityChange?: (vis: VisibilityState) => void\n columnLabels?: Record<string, string>\n onColumnLabelChange?: (columnId: string, label: string) => void\n enablePagination?: boolean\n defaultPageSize?: number\n pagination?: PaginationState\n onPaginationChange?: (pagination: PaginationState) => void\n enableColumnReorder?: boolean\n enableFiltering?: boolean\n filters?: FilterCondition[]\n onFiltersChange?: (filters: FilterCondition[]) => void\n filterConfig?: FilterColumnConfig[]\n /** When true, filtering is handled externally — onFiltersChange fires but rows are not filtered client-side. */\n manualFiltering?: boolean\n density?: \"compact\" | \"default\" | \"relaxed\"\n children?: React.ReactNode\n className?: string\n /** Variant passed to the base Table component */\n variant?: React.ComponentProps<typeof Table>[\"variant\"]\n /** className passed to the base Table's container div */\n containerClassName?: React.ComponentProps<typeof Table>[\"containerClassName\"]\n truncate?: boolean\n}\n\nfunction DataTable<TData, TValue>({\n columns,\n data,\n toolbar,\n enableSorting = false,\n enableColumnVisibility = false,\n children,\n columnOrder: controlledColumnOrder,\n onColumnOrderChange,\n columnVisibility: controlledColumnVisibility,\n onColumnVisibilityChange,\n columnLabels: controlledColumnLabels,\n onColumnLabelChange,\n enablePagination = false,\n defaultPageSize = 10,\n pagination: controlledPagination,\n onPaginationChange,\n enableColumnReorder = false,\n enableFiltering = false,\n filters: controlledFilters,\n onFiltersChange,\n filterConfig,\n manualFiltering = false,\n density = \"default\",\n className,\n variant = \"card\",\n containerClassName,\n truncate = true,\n}: DataTableProps<TData, TValue>) {\n const [sorting, setSorting] = React.useState<SortingState>([])\n const [internalColumnVisibility, setInternalColumnVisibility] =\n React.useState<VisibilityState>({})\n const [internalColumnOrder, setInternalColumnOrder] =\n React.useState<ColumnOrderState>([])\n const [internalColumnLabels, setInternalColumnLabels] = React.useState<\n Record<string, string>\n >({})\n const [internalPagination, setInternalPagination] =\n React.useState<PaginationState>({\n pageIndex: 0,\n pageSize: defaultPageSize,\n })\n const [internalFilters, setInternalFilters] = React.useState<FilterCondition[]>([])\n\n const pagination = controlledPagination ?? internalPagination\n const filters = controlledFilters ?? internalFilters\n\n const columnVisibility =\n controlledColumnVisibility ?? internalColumnVisibility\n const columnOrder = controlledColumnOrder ?? internalColumnOrder\n const columnLabels = controlledColumnLabels ?? internalColumnLabels\n\n const handlePaginationChange = React.useMemo(() => {\n if (!enablePagination) return\n if (onPaginationChange) {\n return (updater: PaginationState | ((prev: PaginationState) => PaginationState)) => {\n const next = typeof updater === \"function\" ? updater(controlledPagination!) : updater\n onPaginationChange(next)\n }\n }\n return setInternalPagination\n }, [enablePagination, onPaginationChange, controlledPagination])\n\n const handleVisibilityChange = React.useMemo(() => {\n if (!enableColumnVisibility) return\n return (updater: VisibilityState | ((prev: VisibilityState) => VisibilityState)) => {\n const next = typeof updater === \"function\" ? updater(columnVisibility) : updater\n ;(onColumnVisibilityChange ?? setInternalColumnVisibility)(next)\n }\n }, [enableColumnVisibility, columnVisibility, onColumnVisibilityChange])\n\n const handleFiltersChange = React.useCallback(\n (newFilters: FilterCondition[]) => {\n ;(onFiltersChange ?? setInternalFilters)(newFilters)\n },\n [onFiltersChange],\n )\n\n const resolvedFilterConfig: FilterColumnConfig[] = React.useMemo(() => {\n if (filterConfig) return filterConfig\n return columns\n .filter((col) => \"accessorKey\" in col)\n .map((col) => ({ columnId: String((col as { accessorKey: unknown }).accessorKey) }))\n }, [filterConfig, columns])\n\n const filteredData = React.useMemo((): TData[] => {\n if (!enableFiltering || manualFiltering) return data\n const active = filters.filter(\n (f) =>\n f.columnId &&\n f.operator &&\n (f.value.trim() !== \"\" || f.operator === \"is_empty\" || f.operator === \"is_not_empty\"),\n )\n if (active.length === 0) return data\n return data.filter((row) =>\n active.every((condition) => {\n const cellValue = String(\n (row as Record<string, unknown>)[condition.columnId] ?? \"\",\n )\n return applyFilterCondition(cellValue, condition.operator, condition.value)\n }),\n )\n }, [data, filters, enableFiltering, manualFiltering])\n\n const handleColumnOrderChange = React.useCallback(\n (updater: ColumnOrderState | ((prev: ColumnOrderState) => ColumnOrderState)) => {\n const next = typeof updater === \"function\" ? updater(columnOrder) : updater\n ;(onColumnOrderChange ?? setInternalColumnOrder)(next)\n },\n [columnOrder, onColumnOrderChange],\n )\n\n const table = useReactTable({\n data: filteredData,\n columns,\n state: {\n sorting: enableSorting ? sorting : undefined,\n columnVisibility: enableColumnVisibility ? columnVisibility : undefined,\n columnOrder: columnOrder.length > 0 ? columnOrder : undefined,\n ...(enablePagination ? { pagination } : {}),\n },\n onSortingChange: enableSorting ? setSorting : undefined,\n onPaginationChange: handlePaginationChange,\n onColumnVisibilityChange: handleVisibilityChange,\n onColumnOrderChange: handleColumnOrderChange,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: enableSorting ? getSortedRowModel() : undefined,\n getPaginationRowModel: enablePagination ? getPaginationRowModel() : undefined,\n })\n\n const setColumnLabel = React.useCallback(\n (columnId: string, label: string) => {\n ;(onColumnLabelChange ?? ((id: string, l: string) => setInternalColumnLabels((prev) => ({ ...prev, [id]: l }))))(columnId, label)\n },\n [onColumnLabelChange],\n )\n\n const reorderSensors = useSensors(\n useSensor(PointerSensor, { activationConstraint: { distance: 5 } }),\n useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates }),\n )\n\n const [draggingColumnId, setDraggingColumnId] = React.useState<string | null>(null)\n\n const handleColumnDragStart = React.useCallback(\n (event: DragStartEvent) => {\n setDraggingColumnId(String(event.active.id))\n },\n [],\n )\n\n const handleColumnDragEnd = React.useCallback(\n (event: DragEndEvent) => {\n setDraggingColumnId(null)\n const { active, over } = event\n if (!over || active.id === over.id) return\n const currentOrder =\n columnOrder.length > 0 ? columnOrder : table.getAllLeafColumns().map((column) => column.id)\n const oldIdx = currentOrder.indexOf(String(active.id))\n const newIdx = currentOrder.indexOf(String(over.id))\n if (oldIdx === -1 || newIdx === -1) return\n const newOrder = arrayMove(currentOrder, oldIdx, newIdx)\n table.setColumnOrder(newOrder)\n },\n [columnOrder, table],\n )\n\n const draggingHeader = draggingColumnId\n ? table.getFlatHeaders().find((h) => h.column.id === draggingColumnId)\n : null\n\n // Infer which columns are numeric from the first data row\n const numericColumns = React.useMemo(() => {\n if (data.length === 0) return new Set<string>()\n const first = data[0] as Record<string, unknown>\n const ids = new Set<string>()\n for (const col of columns) {\n const key = \"accessorKey\" in col ? String(col.accessorKey) : \"\"\n if (key && typeof first[key] === \"number\") ids.add(key)\n }\n return ids\n }, [data, columns])\n\n const hasExplicitSize = columns.some((c) => c.size != null)\n\n // Not memoized: TanStack's table instance is a stable reference that mutates\n // internally, so children reading table.getState() need fresh context on each render.\n const ctx = {\n table,\n columnLabels,\n setColumnLabel,\n filters,\n setFilters: handleFiltersChange,\n filterConfig: resolvedFilterConfig,\n enableFiltering,\n } as TableContextValue<unknown>\n\n const { toolbarSlots, filterSlots, paginationSlots, restSlots } = categorizeSlots(children)\n\n return (\n <TableContext.Provider value={ctx}>\n <div data-slot=\"data-table\" className={cn(\"w-full space-y-2\", className)}>\n {toolbar}\n {toolbarSlots}\n {filterSlots}\n {enableColumnReorder ? (\n <DndContext\n sensors={reorderSensors}\n collisionDetection={closestCenter}\n modifiers={[restrictToHorizontalAxis]}\n onDragStart={handleColumnDragStart}\n onDragEnd={handleColumnDragEnd}\n >\n <SortableContext\n items={table.getFlatHeaders().map((h) => h.column.id)}\n strategy={horizontalListSortingStrategy}\n >\n <Table\n data-density={density}\n variant={variant}\n containerClassName={containerClassName}\n layout={hasExplicitSize ? \"fixed\" : undefined}\n >\n {hasExplicitSize && (\n <colgroup>\n {table.getHeaderGroups()[0]?.headers.map((header) => (\n <col\n key={header.id}\n style={{ width: header.column.getSize() }}\n />\n ))}\n </colgroup>\n )}\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header, headerIdx) => (\n <DraggableHeader\n key={header.id}\n header={header}\n position={headerIdx === 0 ? \"first\" : headerIdx === headerGroup.headers.length - 1 ? \"last\" : \"middle\"}\n numeric={numericColumns.has(header.column.id)}\n truncate={truncate && (header.column.columnDef.meta?.truncate ?? true)}\n >\n <SortableHeaderContent\n header={header as Header<unknown, unknown>}\n enableSorting={enableSorting}\n numericColumns={numericColumns}\n columnLabels={columnLabels}\n truncate={truncate && (header.column.columnDef.meta?.truncate ?? true)}\n />\n </DraggableHeader>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n <DataTableRows table={table} columns={columns} numericColumns={numericColumns} truncate={truncate} />\n </TableBody>\n </Table>\n </SortableContext>\n <DragOverlay dropAnimation={null}>\n {draggingHeader && (\n <div className=\"rounded-md border bg-background px-4 py-3 text-sm font-medium shadow-lg\">\n {columnLabels[draggingHeader.column.id] ??\n (typeof draggingHeader.column.columnDef.header === \"string\"\n ? draggingHeader.column.columnDef.header\n : draggingHeader.column.id)}\n </div>\n )}\n </DragOverlay>\n </DndContext>\n ) : (\n <Table\n data-density={density}\n variant={variant}\n containerClassName={containerClassName}\n layout={hasExplicitSize ? \"fixed\" : undefined}\n >\n {hasExplicitSize && (\n <colgroup>\n {table.getHeaderGroups()[0]?.headers.map((header) => (\n <col\n key={header.id}\n style={header.column.columnDef.size == null ? undefined : { width: header.column.columnDef.size }}\n />\n ))}\n </colgroup>\n )}\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => (\n <TableHead\n key={header.id}\n variant={numericColumns.has(header.column.id) ? \"numeric\" : undefined}\n truncate={truncate && (header.column.columnDef.meta?.truncate ?? true)}\n >\n <SortableHeaderContent\n header={header as Header<unknown, unknown>}\n enableSorting={enableSorting}\n numericColumns={numericColumns}\n columnLabels={columnLabels}\n truncate={truncate && (header.column.columnDef.meta?.truncate ?? true)}\n />\n </TableHead>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n <DataTableRows table={table} columns={columns} numericColumns={numericColumns} truncate={truncate} />\n </TableBody>\n </Table>\n )}\n {paginationSlots}\n {restSlots}\n </div>\n </TableContext.Provider>\n )\n}\n\n// ---------------------------------------------------------------------------\n// TableToolbar\n// ---------------------------------------------------------------------------\n\nfunction TableToolbar({\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"table-toolbar\"\n className={cn(\"flex items-center justify-end gap-2\", className)}\n {...props}\n >\n {children}\n </div>\n )\n}\n\nexport { DataTable, TableToolbar, useDataTable }\nexport type { DataTableProps, FilterCondition, FilterOperator, FilterColumnConfig }\n"],"names":["applyFilterCondition","cellValue","operator","filterValue","cell","filter","TableContext","React","useDataTable","ctx","DraggableHeader","header","children","position","numeric","truncate","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","style","CSS","jsx","TableHead","cn","GripVerticalIcon","SortableHeaderContent","enableSorting","numericColumns","columnLabels","canSort","sorted","isNumeric","jsxs","e","flexRender","ArrowUpIcon","ArrowDownIcon","ArrowUpDownIcon","DataTableRows","table","columns","TableRow","TableCell","row","categorizeSlots","toolbarSlots","filterSlots","paginationSlots","restSlots","child","TableToolbar","DataTablePagination","DataTable","data","toolbar","enableColumnVisibility","controlledColumnOrder","onColumnOrderChange","controlledColumnVisibility","onColumnVisibilityChange","controlledColumnLabels","onColumnLabelChange","enablePagination","defaultPageSize","controlledPagination","onPaginationChange","enableColumnReorder","enableFiltering","controlledFilters","onFiltersChange","filterConfig","manualFiltering","density","className","variant","containerClassName","sorting","setSorting","internalColumnVisibility","setInternalColumnVisibility","internalColumnOrder","setInternalColumnOrder","internalColumnLabels","setInternalColumnLabels","internalPagination","setInternalPagination","internalFilters","setInternalFilters","pagination","filters","columnVisibility","columnOrder","handlePaginationChange","updater","next","handleVisibilityChange","handleFiltersChange","newFilters","resolvedFilterConfig","col","filteredData","active","f","condition","handleColumnOrderChange","useReactTable","getCoreRowModel","getSortedRowModel","getPaginationRowModel","setColumnLabel","columnId","label","id","l","prev","reorderSensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","draggingColumnId","setDraggingColumnId","handleColumnDragStart","event","handleColumnDragEnd","over","currentOrder","column","oldIdx","newIdx","newOrder","arrayMove","draggingHeader","h","first","ids","key","hasExplicitSize","c","DndContext","closestCenter","restrictToHorizontalAxis","SortableContext","horizontalListSortingStrategy","Table","TableHeader","headerGroup","headerIdx","TableBody","DragOverlay","props"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),o=require("../../lib/utils.cjs");function
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),o=require("../../lib/utils.cjs");function d({className:e,containerClassName:t,variant:r,layout:l="auto",...n}){return a.jsx("div",{"data-slot":"table-container","data-variant":r,className:o.cn("relative w-full overflow-auto",r==="card"&&"rounded-lg border bg-card",t),children:a.jsx("table",{"data-slot":"table",className:o.cn("w-full caption-bottom text-sm",l==="fixed"&&"table-fixed",e),...n})})}function c({className:e,variant:t,...r}){return a.jsx("thead",{"data-slot":"table-header",className:o.cn("bg-muted/50 [&_tr]:border-b",t==="sticky"&&"sticky top-0 z-10 bg-background",e),...r})}function i({className:e,...t}){return a.jsx("tbody",{"data-slot":"table-body",className:o.cn("[&_tr:last-child]:border-0",e),...t})}function s({className:e,...t}){return a.jsx("tfoot",{"data-slot":"table-footer",className:o.cn("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",e),...t})}function b({className:e,...t}){return a.jsx("tr",{"data-slot":"table-row",className:o.cn("group/row border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted in-data-[striped]:even:bg-muted/30 in-data-[striped]:hover:bg-muted/50",e),...t})}function u({className:e,variant:t,truncate:r,...l}){return a.jsx("th",{"data-slot":"table-head",className:o.cn("h-12 px-4 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0","in-data-[density=compact]:h-8 in-data-[density=relaxed]:h-14",t==="numeric"&&"text-right",t==="action"&&"w-10",r&&"truncate",e),...l})}function m({className:e,variant:t,truncate:r,...l}){return a.jsx("td",{"data-slot":"table-cell",className:o.cn("p-4 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0","in-data-[density=compact]:py-2 in-data-[density=relaxed]:py-5",t==="numeric"&&"text-right tabular-nums",t==="action"&&"opacity-0 group-hover/row:opacity-100 group-focus-within/row:opacity-100 focus-within:opacity-100 transition-opacity",r&&"truncate",e),...l})}function p({className:e,...t}){return a.jsx("caption",{"data-slot":"table-caption",className:o.cn("mt-4 text-sm text-muted-foreground",e),...t})}exports.Table=d;exports.TableBody=i;exports.TableCaption=p;exports.TableCell=m;exports.TableFooter=s;exports.TableHead=u;exports.TableHeader=c;exports.TableRow=b;
|
|
2
2
|
//# sourceMappingURL=table.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.cjs","sources":["../../../src/components/ui/table.tsx"],"sourcesContent":["import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Table({\n className,\n containerClassName,\n variant,\n ...props\n}: React.ComponentProps<\"table\"> & {\n containerClassName?: string\n variant?: \"default\" | \"card\"\n}) {\n return (\n <div\n data-slot=\"table-container\"\n data-variant={variant}\n className={cn(\n \"relative w-full overflow-auto\",\n variant === \"card\" && \"rounded-lg border bg-card\",\n containerClassName,\n )}\n >\n <table\n data-slot=\"table\"\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n )\n}\n\nfunction TableHeader({\n className,\n variant,\n ...props\n}: React.ComponentProps<\"thead\"> & {\n variant?: \"default\" | \"sticky\"\n}) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn(\n \"bg-muted/50 [&_tr]:border-b\",\n variant === \"sticky\" && \"sticky top-0 z-10 bg-background\",\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\n \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\n \"group/row border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted in-data-[striped]:even:bg-muted/30 in-data-[striped]:hover:bg-muted/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableHead({\n className,\n variant,\n ...props\n}: React.ComponentProps<\"th\"> & {\n variant?: \"default\" | \"numeric\" | \"action\"\n}) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n \"h-12 px-4 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0\",\n \"in-data-[density=compact]:h-8 in-data-[density=relaxed]:h-14\",\n variant === \"numeric\" && \"text-right\",\n variant === \"action\" && \"w-10\",\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction TableCell({\n className,\n variant,\n ...props\n}: React.ComponentProps<\"td\"> & {\n variant?: \"default\" | \"numeric\" | \"action\"\n}) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n \"p-4 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0\",\n \"in-data-[density=compact]:py-2 in-data-[density=relaxed]:py-5\",\n variant === \"numeric\" && \"text-right tabular-nums\",\n variant === \"action\" &&\n \"opacity-0 group-hover/row:opacity-100 group-focus-within/row:opacity-100 focus-within:opacity-100 transition-opacity\",\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n"],"names":["Table","className","containerClassName","variant","props","jsx","cn","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption"],"mappings":"sJAIA,SAASA,EAAM,CACb,UAAAC,EACA,mBAAAC,EACA,QAAAC,EACA,GAAGC,CACL,
|
|
1
|
+
{"version":3,"file":"table.cjs","sources":["../../../src/components/ui/table.tsx"],"sourcesContent":["import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Table({\n className,\n containerClassName,\n variant,\n layout = \"auto\",\n ...props\n}: React.ComponentProps<\"table\"> & {\n containerClassName?: string\n variant?: \"default\" | \"card\"\n layout?: \"auto\" | \"fixed\"\n}) {\n return (\n <div\n data-slot=\"table-container\"\n data-variant={variant}\n className={cn(\n \"relative w-full overflow-auto\",\n variant === \"card\" && \"rounded-lg border bg-card\",\n containerClassName,\n )}\n >\n <table\n data-slot=\"table\"\n className={cn(\"w-full caption-bottom text-sm\", layout === \"fixed\" && \"table-fixed\", className)}\n {...props}\n />\n </div>\n )\n}\n\nfunction TableHeader({\n className,\n variant,\n ...props\n}: React.ComponentProps<\"thead\"> & {\n variant?: \"default\" | \"sticky\"\n}) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn(\n \"bg-muted/50 [&_tr]:border-b\",\n variant === \"sticky\" && \"sticky top-0 z-10 bg-background\",\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\n \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\n \"group/row border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted in-data-[striped]:even:bg-muted/30 in-data-[striped]:hover:bg-muted/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableHead({\n className,\n variant,\n truncate,\n ...props\n}: React.ComponentProps<\"th\"> & {\n variant?: \"default\" | \"numeric\" | \"action\"\n truncate?: boolean\n}) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n \"h-12 px-4 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0\",\n \"in-data-[density=compact]:h-8 in-data-[density=relaxed]:h-14\",\n variant === \"numeric\" && \"text-right\",\n variant === \"action\" && \"w-10\",\n truncate && \"truncate\",\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction TableCell({\n className,\n variant,\n truncate,\n ...props\n}: React.ComponentProps<\"td\"> & {\n variant?: \"default\" | \"numeric\" | \"action\"\n truncate?: boolean\n}) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n \"p-4 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0\",\n \"in-data-[density=compact]:py-2 in-data-[density=relaxed]:py-5\",\n variant === \"numeric\" && \"text-right tabular-nums\",\n variant === \"action\" &&\n \"opacity-0 group-hover/row:opacity-100 group-focus-within/row:opacity-100 focus-within:opacity-100 transition-opacity\",\n truncate && \"truncate\",\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n"],"names":["Table","className","containerClassName","variant","layout","props","jsx","cn","TableHeader","TableBody","TableFooter","TableRow","TableHead","truncate","TableCell","TableCaption"],"mappings":"sJAIA,SAASA,EAAM,CACb,UAAAC,EACA,mBAAAC,EACA,QAAAC,EACA,OAAAC,EAAS,OACT,GAAGC,CACL,EAIG,CACD,OACEC,EAAAA,IAAC,MAAA,CACC,YAAU,kBACV,eAAcH,EACd,UAAWI,EAAAA,GACT,gCACAJ,IAAY,QAAU,4BACtBD,CAAA,EAGF,SAAAI,EAAAA,IAAC,QAAA,CACC,YAAU,QACV,UAAWC,EAAAA,GAAG,gCAAiCH,IAAW,SAAW,cAAeH,CAAS,EAC5F,GAAGI,CAAA,CAAA,CACN,CAAA,CAGN,CAEA,SAASG,EAAY,CACnB,UAAAP,EACA,QAAAE,EACA,GAAGE,CACL,EAEG,CACD,OACEC,EAAAA,IAAC,QAAA,CACC,YAAU,eACV,UAAWC,EAAAA,GACT,8BACAJ,IAAY,UAAY,kCACxBF,CAAA,EAED,GAAGI,CAAA,CAAA,CAGV,CAEA,SAASI,EAAU,CAAE,UAAAR,EAAW,GAAGI,GAAwC,CACzE,OACEC,EAAAA,IAAC,QAAA,CACC,YAAU,aACV,UAAWC,EAAAA,GAAG,6BAA8BN,CAAS,EACpD,GAAGI,CAAA,CAAA,CAGV,CAEA,SAASK,EAAY,CAAE,UAAAT,EAAW,GAAGI,GAAwC,CAC3E,OACEC,EAAAA,IAAC,QAAA,CACC,YAAU,eACV,UAAWC,EAAAA,GACT,0DACAN,CAAA,EAED,GAAGI,CAAA,CAAA,CAGV,CAEA,SAASM,EAAS,CAAE,UAAAV,EAAW,GAAGI,GAAqC,CACrE,OACEC,EAAAA,IAAC,KAAA,CACC,YAAU,YACV,UAAWC,EAAAA,GACT,+JACAN,CAAA,EAED,GAAGI,CAAA,CAAA,CAGV,CAEA,SAASO,EAAU,CACjB,UAAAX,EACA,QAAAE,EACA,SAAAU,EACA,GAAGR,CACL,EAGG,CACD,OACEC,EAAAA,IAAC,KAAA,CACC,YAAU,aACV,UAAWC,EAAAA,GACT,+GACA,+DACAJ,IAAY,WAAa,aACzBA,IAAY,UAAY,OACxBU,GAAY,WACZZ,CAAA,EAED,GAAGI,CAAA,CAAA,CAGV,CAEA,SAASS,EAAU,CACjB,UAAAb,EACA,QAAAE,EACA,SAAAU,EACA,GAAGR,CACL,EAGG,CACD,OACEC,EAAAA,IAAC,KAAA,CACC,YAAU,aACV,UAAWC,EAAAA,GACT,mEACA,gEACAJ,IAAY,WAAa,0BACzBA,IAAY,UACV,uHACFU,GAAY,WACZZ,CAAA,EAED,GAAGI,CAAA,CAAA,CAGV,CAEA,SAASU,EAAa,CACpB,UAAAd,EACA,GAAGI,CACL,EAAoC,CAClC,OACEC,EAAAA,IAAC,UAAA,CACC,YAAU,gBACV,UAAWC,EAAAA,GAAG,qCAAsCN,CAAS,EAC5D,GAAGI,CAAA,CAAA,CAGV"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { jsx as a } from "react/jsx-runtime";
|
|
2
2
|
import { cn as o } from "../../lib/utils.js";
|
|
3
|
-
function
|
|
3
|
+
function c({
|
|
4
4
|
className: e,
|
|
5
5
|
containerClassName: t,
|
|
6
6
|
variant: r,
|
|
7
|
-
|
|
7
|
+
layout: d = "auto",
|
|
8
|
+
...l
|
|
8
9
|
}) {
|
|
9
10
|
return /* @__PURE__ */ a(
|
|
10
11
|
"div",
|
|
@@ -20,14 +21,14 @@ function i({
|
|
|
20
21
|
"table",
|
|
21
22
|
{
|
|
22
23
|
"data-slot": "table",
|
|
23
|
-
className: o("w-full caption-bottom text-sm", e),
|
|
24
|
-
...
|
|
24
|
+
className: o("w-full caption-bottom text-sm", d === "fixed" && "table-fixed", e),
|
|
25
|
+
...l
|
|
25
26
|
}
|
|
26
27
|
)
|
|
27
28
|
}
|
|
28
29
|
);
|
|
29
30
|
}
|
|
30
|
-
function
|
|
31
|
+
function s({
|
|
31
32
|
className: e,
|
|
32
33
|
variant: t,
|
|
33
34
|
...r
|
|
@@ -45,7 +46,7 @@ function c({
|
|
|
45
46
|
}
|
|
46
47
|
);
|
|
47
48
|
}
|
|
48
|
-
function
|
|
49
|
+
function u({ className: e, ...t }) {
|
|
49
50
|
return /* @__PURE__ */ a(
|
|
50
51
|
"tbody",
|
|
51
52
|
{
|
|
@@ -68,7 +69,7 @@ function b({ className: e, ...t }) {
|
|
|
68
69
|
}
|
|
69
70
|
);
|
|
70
71
|
}
|
|
71
|
-
function
|
|
72
|
+
function m({ className: e, ...t }) {
|
|
72
73
|
return /* @__PURE__ */ a(
|
|
73
74
|
"tr",
|
|
74
75
|
{
|
|
@@ -81,10 +82,11 @@ function u({ className: e, ...t }) {
|
|
|
81
82
|
}
|
|
82
83
|
);
|
|
83
84
|
}
|
|
84
|
-
function
|
|
85
|
+
function p({
|
|
85
86
|
className: e,
|
|
86
87
|
variant: t,
|
|
87
|
-
|
|
88
|
+
truncate: r,
|
|
89
|
+
...d
|
|
88
90
|
}) {
|
|
89
91
|
return /* @__PURE__ */ a(
|
|
90
92
|
"th",
|
|
@@ -95,16 +97,18 @@ function m({
|
|
|
95
97
|
"in-data-[density=compact]:h-8 in-data-[density=relaxed]:h-14",
|
|
96
98
|
t === "numeric" && "text-right",
|
|
97
99
|
t === "action" && "w-10",
|
|
100
|
+
r && "truncate",
|
|
98
101
|
e
|
|
99
102
|
),
|
|
100
|
-
...
|
|
103
|
+
...d
|
|
101
104
|
}
|
|
102
105
|
);
|
|
103
106
|
}
|
|
104
|
-
function
|
|
107
|
+
function f({
|
|
105
108
|
className: e,
|
|
106
109
|
variant: t,
|
|
107
|
-
|
|
110
|
+
truncate: r,
|
|
111
|
+
...d
|
|
108
112
|
}) {
|
|
109
113
|
return /* @__PURE__ */ a(
|
|
110
114
|
"td",
|
|
@@ -115,13 +119,14 @@ function p({
|
|
|
115
119
|
"in-data-[density=compact]:py-2 in-data-[density=relaxed]:py-5",
|
|
116
120
|
t === "numeric" && "text-right tabular-nums",
|
|
117
121
|
t === "action" && "opacity-0 group-hover/row:opacity-100 group-focus-within/row:opacity-100 focus-within:opacity-100 transition-opacity",
|
|
122
|
+
r && "truncate",
|
|
118
123
|
e
|
|
119
124
|
),
|
|
120
|
-
...
|
|
125
|
+
...d
|
|
121
126
|
}
|
|
122
127
|
);
|
|
123
128
|
}
|
|
124
|
-
function
|
|
129
|
+
function h({
|
|
125
130
|
className: e,
|
|
126
131
|
...t
|
|
127
132
|
}) {
|
|
@@ -135,13 +140,13 @@ function f({
|
|
|
135
140
|
);
|
|
136
141
|
}
|
|
137
142
|
export {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
143
|
+
c as Table,
|
|
144
|
+
u as TableBody,
|
|
145
|
+
h as TableCaption,
|
|
146
|
+
f as TableCell,
|
|
142
147
|
b as TableFooter,
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
148
|
+
p as TableHead,
|
|
149
|
+
s as TableHeader,
|
|
150
|
+
m as TableRow
|
|
146
151
|
};
|
|
147
152
|
//# sourceMappingURL=table.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.js","sources":["../../../src/components/ui/table.tsx"],"sourcesContent":["import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Table({\n className,\n containerClassName,\n variant,\n ...props\n}: React.ComponentProps<\"table\"> & {\n containerClassName?: string\n variant?: \"default\" | \"card\"\n}) {\n return (\n <div\n data-slot=\"table-container\"\n data-variant={variant}\n className={cn(\n \"relative w-full overflow-auto\",\n variant === \"card\" && \"rounded-lg border bg-card\",\n containerClassName,\n )}\n >\n <table\n data-slot=\"table\"\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n )\n}\n\nfunction TableHeader({\n className,\n variant,\n ...props\n}: React.ComponentProps<\"thead\"> & {\n variant?: \"default\" | \"sticky\"\n}) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn(\n \"bg-muted/50 [&_tr]:border-b\",\n variant === \"sticky\" && \"sticky top-0 z-10 bg-background\",\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\n \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\n \"group/row border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted in-data-[striped]:even:bg-muted/30 in-data-[striped]:hover:bg-muted/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableHead({\n className,\n variant,\n ...props\n}: React.ComponentProps<\"th\"> & {\n variant?: \"default\" | \"numeric\" | \"action\"\n}) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n \"h-12 px-4 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0\",\n \"in-data-[density=compact]:h-8 in-data-[density=relaxed]:h-14\",\n variant === \"numeric\" && \"text-right\",\n variant === \"action\" && \"w-10\",\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction TableCell({\n className,\n variant,\n ...props\n}: React.ComponentProps<\"td\"> & {\n variant?: \"default\" | \"numeric\" | \"action\"\n}) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n \"p-4 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0\",\n \"in-data-[density=compact]:py-2 in-data-[density=relaxed]:py-5\",\n variant === \"numeric\" && \"text-right tabular-nums\",\n variant === \"action\" &&\n \"opacity-0 group-hover/row:opacity-100 group-focus-within/row:opacity-100 focus-within:opacity-100 transition-opacity\",\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n"],"names":["Table","className","containerClassName","variant","props","jsx","cn","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption"],"mappings":";;AAIA,SAASA,EAAM;AAAA,EACb,WAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,
|
|
1
|
+
{"version":3,"file":"table.js","sources":["../../../src/components/ui/table.tsx"],"sourcesContent":["import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Table({\n className,\n containerClassName,\n variant,\n layout = \"auto\",\n ...props\n}: React.ComponentProps<\"table\"> & {\n containerClassName?: string\n variant?: \"default\" | \"card\"\n layout?: \"auto\" | \"fixed\"\n}) {\n return (\n <div\n data-slot=\"table-container\"\n data-variant={variant}\n className={cn(\n \"relative w-full overflow-auto\",\n variant === \"card\" && \"rounded-lg border bg-card\",\n containerClassName,\n )}\n >\n <table\n data-slot=\"table\"\n className={cn(\"w-full caption-bottom text-sm\", layout === \"fixed\" && \"table-fixed\", className)}\n {...props}\n />\n </div>\n )\n}\n\nfunction TableHeader({\n className,\n variant,\n ...props\n}: React.ComponentProps<\"thead\"> & {\n variant?: \"default\" | \"sticky\"\n}) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn(\n \"bg-muted/50 [&_tr]:border-b\",\n variant === \"sticky\" && \"sticky top-0 z-10 bg-background\",\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\n \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\n \"group/row border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted in-data-[striped]:even:bg-muted/30 in-data-[striped]:hover:bg-muted/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableHead({\n className,\n variant,\n truncate,\n ...props\n}: React.ComponentProps<\"th\"> & {\n variant?: \"default\" | \"numeric\" | \"action\"\n truncate?: boolean\n}) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n \"h-12 px-4 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0\",\n \"in-data-[density=compact]:h-8 in-data-[density=relaxed]:h-14\",\n variant === \"numeric\" && \"text-right\",\n variant === \"action\" && \"w-10\",\n truncate && \"truncate\",\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction TableCell({\n className,\n variant,\n truncate,\n ...props\n}: React.ComponentProps<\"td\"> & {\n variant?: \"default\" | \"numeric\" | \"action\"\n truncate?: boolean\n}) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n \"p-4 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0\",\n \"in-data-[density=compact]:py-2 in-data-[density=relaxed]:py-5\",\n variant === \"numeric\" && \"text-right tabular-nums\",\n variant === \"action\" &&\n \"opacity-0 group-hover/row:opacity-100 group-focus-within/row:opacity-100 focus-within:opacity-100 transition-opacity\",\n truncate && \"truncate\",\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n"],"names":["Table","className","containerClassName","variant","layout","props","jsx","cn","TableHeader","TableBody","TableFooter","TableRow","TableHead","truncate","TableCell","TableCaption"],"mappings":";;AAIA,SAASA,EAAM;AAAA,EACb,WAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,SAAAC;AAAA,EACA,QAAAC,IAAS;AAAA,EACT,GAAGC;AACL,GAIG;AACD,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAcH;AAAA,MACd,WAAWI;AAAA,QACT;AAAA,QACAJ,MAAY,UAAU;AAAA,QACtBD;AAAA,MAAA;AAAA,MAGF,UAAA,gBAAAI;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,aAAU;AAAA,UACV,WAAWC,EAAG,iCAAiCH,MAAW,WAAW,eAAeH,CAAS;AAAA,UAC5F,GAAGI;AAAA,QAAA;AAAA,MAAA;AAAA,IACN;AAAA,EAAA;AAGN;AAEA,SAASG,EAAY;AAAA,EACnB,WAAAP;AAAA,EACA,SAAAE;AAAA,EACA,GAAGE;AACL,GAEG;AACD,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAJ,MAAY,YAAY;AAAA,QACxBF;AAAA,MAAA;AAAA,MAED,GAAGI;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASI,EAAU,EAAE,WAAAR,GAAW,GAAGI,KAAwC;AACzE,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC,EAAG,8BAA8BN,CAAS;AAAA,MACpD,GAAGI;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASK,EAAY,EAAE,WAAAT,GAAW,GAAGI,KAAwC;AAC3E,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAN;AAAA,MAAA;AAAA,MAED,GAAGI;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASM,EAAS,EAAE,WAAAV,GAAW,GAAGI,KAAqC;AACrE,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAN;AAAA,MAAA;AAAA,MAED,GAAGI;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASO,EAAU;AAAA,EACjB,WAAAX;AAAA,EACA,SAAAE;AAAA,EACA,UAAAU;AAAA,EACA,GAAGR;AACL,GAGG;AACD,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACA;AAAA,QACAJ,MAAY,aAAa;AAAA,QACzBA,MAAY,YAAY;AAAA,QACxBU,KAAY;AAAA,QACZZ;AAAA,MAAA;AAAA,MAED,GAAGI;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASS,EAAU;AAAA,EACjB,WAAAb;AAAA,EACA,SAAAE;AAAA,EACA,UAAAU;AAAA,EACA,GAAGR;AACL,GAGG;AACD,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACA;AAAA,QACAJ,MAAY,aAAa;AAAA,QACzBA,MAAY,YACV;AAAA,QACFU,KAAY;AAAA,QACZZ;AAAA,MAAA;AAAA,MAED,GAAGI;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASU,EAAa;AAAA,EACpB,WAAAd;AAAA,EACA,GAAGI;AACL,GAAoC;AAClC,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC,EAAG,sCAAsCN,CAAS;AAAA,MAC5D,GAAGI;AAAA,IAAA;AAAA,EAAA;AAGV;"}
|