/** * Configuration object for the column visibility state. * To define the column visibility for a column, provide the column ID along with the desired boolean value. * @public */ export type DataTableColumnVisibilityState = Record; /** * @public */ export interface DataTableColumnVisibilityBaseProps { /** * Callback that is called when the ColumnVisibility state of any column is changed. */ onColumnVisibilityChange?: (columnVisibility: DataTableColumnVisibilityState) => void; } /** * @public */ export interface DataTableColumnVisibilityControlledProps extends DataTableColumnVisibilityBaseProps { /** * Lets you control the ColumnVisibility state of the individual columns. */ columnVisibility?: DataTableColumnVisibilityState; /** * Lets you set the initial ColumnVisibility state of the individual columns. */ defaultColumnVisibility?: never; } /** * @public */ export interface DataTableColumnVisibilityUncontrolledProps extends DataTableColumnVisibilityBaseProps { /** * Lets you control the ColumnVisibility state of the individual columns. */ columnVisibility?: never; /** * Lets you set the initial ColumnVisibility state of the individual columns. */ defaultColumnVisibility?: DataTableColumnVisibilityState; } /** * Interface defining the props on the DataTable that control the ColumnVisibility feature. * @public */ export type DataTableColumnVisibilityProps = DataTableColumnVisibilityControlledProps | DataTableColumnVisibilityUncontrolledProps; /** * Extension interface to extend the types of the columnDefinition from the tanstack table. * @public */ export interface DataTableVisibilityColumnDef { /** * Controls the ability of the given column to toggle it's visibility. * This setting will affect if the column will be hidable in column actions or via * the modal controls of the DataTable toolbar. */ disableColumnHiding?: boolean; } /** * @internal */ export interface DataTableColumnVisibilityInstance { getVisibleFlatColumns: () => TColumn[]; getVisibleLeafColumns: () => TColumn[]; getLeftVisibleLeafColumns: () => TColumn[]; getCenterVisibleLeafColumns: () => TColumn[]; getRightVisibleLeafColumns: () => TColumn[]; /** * Returns an array of all visible leaf-node columns without the builtin prefix/suffix columns. */ getVisibleLeafColumnsWithoutBuiltin: () => TColumn[]; /** * Returns an array of all center visible leaf-node columns without the builtin prefix/suffix columns. */ getCenterVisibleLeafColumnsWithoutBuiltIn: () => TColumn[]; /** * Returns an array of all visible leaf-node columns ordered as: pinned left - unpinned - pinned right */ getOrderedVisibleLeafColumns: () => TColumn[]; /** * Returns the ids of all columns that are currently rendered by the virtualizer. */ getVisibleVirtualColumnIdsWithoutBuiltin: () => string[]; } /** * @internal */ export interface DataTableColumnVisibilityColumn { /** * Returns whether the column is the last visible. * If the last column is a nested header, this is true for both parent and child columns. */ getIsLastVisibleColumn: () => boolean; /** * Returns an array of all visible leaf-node columns for this column. If a column has no children, it is considered the only leaf-node column. */ getVisibleLeafColumns: () => TColumn[]; /** * Returns an array of all visible center-leaf-node columns for this column. If a column has no children, it is considered the only leaf-node column. */ getCenterVisibleLeafColumns: () => TColumn[]; /** * Returns an array of all visible left-leaf-node columns for this column. */ getLeftVisibleLeafColumns: () => TColumn[]; /** * Returns an array of all visible right-leaf-node columns for this column. */ getRightVisibleLeafColumns: () => TColumn[]; } /** * Extension interface to extend the tanstack table column visibility state. * @internal */ export interface DataTableVisibilityOptions { originalColumnVisibility?: DataTableColumnVisibilityState; }