import type { Column, Table, TableFeature, TableOptions } from '../../hooks/useTable/types.js'; import type { DataTableV2RowData } from '../../public.api.js'; /** * 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 DataTableV2ColumnVisibilityState = Record; /** * @public */ export interface DataTableV2ColumnVisibilityBaseProps { /** * Callback that is called when the ColumnVisibility state of any column is changed. */ onColumnVisibilityChange?: (columnVisibility: DataTableV2ColumnVisibilityState) => void; } /** * @public */ export interface DataTableV2ColumnVisibilityControlledProps extends DataTableV2ColumnVisibilityBaseProps { /** * Lets you control the ColumnVisibility state of the individual columns. */ columnVisibility?: DataTableV2ColumnVisibilityState; /** * Lets you set the initial ColumnVisibility state of the individual columns. */ defaultColumnVisibility?: never; } /** * @public */ export interface DataTableV2ColumnVisibilityUncontrolledProps extends DataTableV2ColumnVisibilityBaseProps { /** * Lets you control the ColumnVisibility state of the individual columns. */ columnVisibility?: never; /** * Lets you set the initial ColumnVisibility state of the individual columns. */ defaultColumnVisibility?: DataTableV2ColumnVisibilityState; } /** * Interface defining the props on the DataTableV2 that control the ColumnVisibility feature. * @public */ export type DataTableV2ColumnVisibilityProps = DataTableV2ColumnVisibilityControlledProps | DataTableV2ColumnVisibilityUncontrolledProps; /** * Extension interface to extend the tanstack table column visibility state. * @internal */ export interface DataTableV2VisibilityOptions { originalColumnVisibility?: DataTableV2ColumnVisibilityState; } /** * Extension interface to extend the types of the columnDefinition from the tanstack table. * @public */ export interface DataTableV2VisibilityColumnDef { /** * 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 DataTableV2 toolbar. */ disableColumnHiding?: boolean; } /** * @internal */ export interface DataTableV2ColumnVisibilityInstance { getVisibleFlatColumns: () => Column[]; getVisibleLeafColumns: () => Column[]; /** * Returns an array of all visible leaf-node columns without the builtin prefix/suffix columns. */ getVisibleLeafColumnsWithoutBuiltin: () => Column[]; } /** * @internal */ export interface DataTableV2ColumnVisibilityColumn { /** * 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: () => Column[]; } /** * Helper function to not duplicate this logic for the slightly different use cases of user actions and column settings modal. * @internal */ export declare function getCanHide(table: Table, column: Column, isHideable: (columns: Column[]) => boolean): boolean; /** * Additional feature implementation for column visibility. * @internal */ export declare const DataTableV2ColumnVisibility: TableFeature; /** * Configuration hook for the DataTableV2 ColumnVisibility feature. * @internal */ export declare function useColumnVisibility(props: DataTableV2ColumnVisibilityProps, options: TableOptions): void;