diff --git a/packages/rdx-ui/package.json b/packages/rdx-ui/package.json index d993e6bd..a8a1818b 100644 --- a/packages/rdx-ui/package.json +++ b/packages/rdx-ui/package.json @@ -35,7 +35,7 @@ "react": "^19.1.0", "react-dom": "^19.1.0", "typescript": "^5.6.0", - "tailwindcss": "^4.1.5", + "tailwindcss": "^4.1.10", "tsup": "^8.4.0", "tw-animate-css": "^1.2.9", "typescript-plugin-css-modules": "^5.1.0", diff --git a/packages/rdx-ui/src/components/datatable/data-table-view-options.tsx b/packages/rdx-ui/src/components/datatable/data-table-view-options.tsx index ad1d135a..d15765ea 100644 --- a/packages/rdx-ui/src/components/datatable/data-table-view-options.tsx +++ b/packages/rdx-ui/src/components/datatable/data-table-view-options.tsx @@ -9,7 +9,7 @@ import { DropdownMenuSeparator, DropdownMenuTrigger, } from "@repo/shadcn-ui/components"; -import type { Table } from "@tanstack/react-table"; +import type { Column, Table } from "@tanstack/react-table"; import { Settings2 } from "lucide-react"; import { useTranslation } from "../../locales/i18n.ts"; @@ -24,7 +24,7 @@ export function DataTableViewOptions({ table }: { table: Table }) {t("components.datatable_view_options.view_button")} - + {t("components.datatable_view_options.toggle_columns")} @@ -36,11 +36,10 @@ export function DataTableViewOptions({ table }: { table: Table }) return ( column.toggleVisibility(!!value)} > - {column.id} + {getColumnLabel(column)} ); })} @@ -48,3 +47,19 @@ export function DataTableViewOptions({ table }: { table: Table }) ); } + +const getColumnLabel = (column: Column): string => { + let label = String(column.id); + const h = column.columnDef.header; + + // header como string literal + if (typeof h === "string") label = h; + + // header función → intentar obtener title si lo usas en tus componentes + if (typeof h === "function") { + // tu DataTableColumnHeader recibe `title` como prop → está en column.columnDef.meta + const meta = column.columnDef.meta as { title?: string } | undefined; + label = meta?.title ?? column.id; + } + return label; +}; diff --git a/packages/rdx-ui/src/components/datatable/data-table.tsx b/packages/rdx-ui/src/components/datatable/data-table.tsx index fdd84353..9ad95136 100644 --- a/packages/rdx-ui/src/components/datatable/data-table.tsx +++ b/packages/rdx-ui/src/components/datatable/data-table.tsx @@ -75,11 +75,12 @@ export interface DataTableProps { meta?: DataTableMeta; // Configuración + columnVisibility?: VisibilityState; readOnly?: boolean; enablePagination?: boolean; pageSize?: number; enableRowSelection?: boolean; - EditorComponent?: React.ComponentType<{ row: TData; index: number; onClose: () => void }>; + EditorComponent?: React.ComponentType<{ row?: TData; index: number; onClose: () => void }>; getRowId?: (originalRow: TData, index: number, parent?: Row) => string; @@ -99,6 +100,7 @@ export function DataTable({ data, meta, + columnVisibility: inititalcolumnVisibility = {}, readOnly = false, enablePagination = true, pageSize = 10, @@ -119,7 +121,8 @@ export function DataTable({ const [rowSelection, setRowSelection] = React.useState({}); const [sorting, setSorting] = React.useState([]); - const [columnVisibility, setColumnVisibility] = React.useState({}); + const [columnVisibility, setColumnVisibility] = + React.useState(inititalcolumnVisibility); const [columnFilters, setColumnFilters] = React.useState([]); const [colSizes, setColSizes] = React.useState({}); const [editIndex, setEditIndex] = React.useState(null);