import { ViewTemplate } from '@ni/fast-element'; import { TableColumnAlignment, TableColumnSortDirection, type TableFieldName } from '../../../table/types'; import type { TableCell } from '../../../table/components/cell'; import { TableColumnSortOperation } from '../types'; import type { TableGroupRow } from '../../../table/components/group-row'; import type { ColumnValidator } from './column-validator'; export interface ColumnInternalsOptions = ColumnValidator<[]>> { /** * The tag (element name) of the custom element that renders the cell content for the column. * That element should derive from TableCellView. */ readonly cellViewTag: string; /** * The names of the fields that should be present in TCellRecord. * This array is parallel with the field names specified by `dataRecordFieldNames`. */ readonly cellRecordFieldNames: readonly TableFieldName[]; /** * The tag to use to render the group header content for a column. * The element this tag refers to must derive from TableGroupHeaderView. */ readonly groupHeaderViewTag?: string; /** * The names of events that should be delegated from the cell view to the column. */ readonly delegatedEvents: readonly string[]; /** * The names of slots that need to be forwarded into a cell. */ readonly slotNames?: readonly string[]; /** * The sort operation to use for the column (defaults to TableColumnSortOperation.basic) */ readonly sortOperation?: TableColumnSortOperation; /** * The validator for the column */ readonly validator: TColumnValidator; } /** * Internal column state configured by plugin authors * @internal */ export declare class ColumnInternals> { /** * @see ColumnInternalsOptions.cellRecordFieldNames */ readonly cellRecordFieldNames: readonly TableFieldName[]; /** * A unique id used internally in the table to identify specific column instances */ readonly uniqueId: string; /** * Template for the cell view */ readonly cellViewTemplate: ViewTemplate; /** * The names of events that should be delegated from the cell view to the column. */ readonly delegatedEvents: readonly string[]; /** * The names of slots that need to be forwarded into a cell. */ readonly slotNames: readonly string[]; /** * The relevant, static configuration a column requires its cell view to have access to. */ columnConfig?: TColumnConfig; /** * The name of the data field that will be used for operations on the table, such as sorting and grouping. */ operandDataRecordFieldName?: TableFieldName; /** * The operation to use when sorting the table by this column. */ sortOperation: TableColumnSortOperation; /** * The names of the fields from the row's record that correlate to the data that will be in TCellRecord. * This array is parallel with the field names specified by `cellRecordFieldNames`. */ dataRecordFieldNames: readonly (TableFieldName | undefined)[]; /** * Template for the group header view */ readonly groupHeaderViewTemplate?: ViewTemplate; /** * Whether or not this column can be used to group rows by */ groupingDisabled: boolean; /** * Specifies the grouping precedence of the column within the set of all columns participating in grouping. * Columns are rendered in the grouping tree from lowest group-index as the tree root to highest * group-index as tree leaves. */ groupIndex?: number; /** * Used by column plugins to set a specific pixel width. Sets currentPixelWidth when changed. */ pixelWidth?: number; /** * Used by column plugins to size a column proportionally to the available * width of a row. Sets currentFractionalWidth when changed. */ fractionalWidth: number; /** * The minimum size in pixels according to the design doc */ minPixelWidth: number; /** * Whether or not resizing the column has been disabled. */ resizingDisabled: boolean; /** * Whether or not the grouping and sorting indicators should be hidden in the column header * when the column is grouped or sorted. */ hideHeaderIndicators: boolean; /** * How to align the header content. */ headerAlignment: TableColumnAlignment; /** * @internal Do not write to this value directly. It is used by the Table in order to store * the resolved value of the fractionalWidth after updates programmatic or interactive updates. */ currentFractionalWidth: number; /** * @internal Do not write to this value directly. It is used by the Table in order to store * the resolved value of the pixelWidth after programmatic or interactive updates. */ currentPixelWidth?: number; /** * Whether or not this column can be sorted */ sortingDisabled: boolean; /** * @internal Do not write to this value directly. It is used by the Table in order to store * the resolved value of the sortIndex after programmatic or interactive updates. */ currentSortIndex?: number; /** * @internal Do not write to this value directly. It is used by the Table in order to store * the resolved value of the sortDirection after programmatic or interactive updates. */ currentSortDirection: TableColumnSortDirection; readonly validator: TColumnValidator; constructor(options: ColumnInternalsOptions); protected fractionalWidthChanged(): void; protected pixelWidthChanged(): void; } export declare function isColumnInternalsProperty(changedProperty: string, ...args: (keyof ColumnInternals>)[]): boolean;