import type { AutoSize, CellMenuOption, CustomTooltipOption, Editor, EditorConstructor, EditorValidator, Formatter, FormatterResultWithHtml, FormatterResultWithText, GroupTotalsFormatter, Grouping, HeaderButtonsOrMenu } from './index.js'; import type { SlickGrid } from '../slick.grid.js'; type PathsToStringProps = T extends string | number | boolean | Date ? [] : { [K in Extract]: [K, ...PathsToStringProps]; }[Extract]; type AllowedJoinTypes = string | number | boolean; type Join = T extends [] ? never : T extends [infer F] ? F : T extends [infer F, ...infer R] ? F extends AllowedJoinTypes ? string extends F ? string : `${F}${D}${Join, D>}` : never : string; export type FormatterOverrideCallback = (row: number, cell: number, val: any, columnDef: Column, item: any, grid: SlickGrid) => string | FormatterResultWithHtml | FormatterResultWithText; export interface Column { /** Defaults to false, should we always render the column? */ alwaysRenderColumn?: boolean; /** async background post-rendering formatter */ asyncPostRender?: (domCellNode: HTMLElement, row: number, dataContext: TData, columnDef: Column, process?: boolean) => void; /** async background post-render cleanup callback function */ asyncPostRenderCleanup?: (node: HTMLElement, rowIdx: number, column: Column) => void; /** column autosize feature */ autoSize?: AutoSize; /** optional Behavior of a column with action, for example it's used by the Row Move Manager Plugin */ behavior?: string; /** cell attributes */ cellAttrs?: any; /** Options that can be provide to the Cell Context Menu Plugin */ cellMenu?: CellMenuOption; /** header cell attributes */ headerCellAttrs?: any; /** Block event triggering of a new row insert */ cannotTriggerInsert?: boolean; /** Column group name for grouping of column headers spanning accross multiple columns */ columnGroup?: string; /** Column span in cell count or use `*` to span across the entire row */ colspan?: number | string | '*'; /** CSS class to add to the column cell */ cssClass?: string; /** * Custom Tooltip Options, the tooltip could be defined in any of the Column Definition or in the Grid Options, * it will first try to find it in the Column that the user is hovering over or else (when not found) it will try to find it in the Grid Options */ customTooltip?: CustomTooltipOption; /** Do we want default sort to be ascending? True by default */ defaultSortAsc?: boolean; /** Defaults to false, do we want to deny executing a Paste (from a Copy of CellExternalCopyManager)? */ denyPaste?: boolean; /** * defaults to False, optionally enable/disable tooltip. * This is typically used on a specific column that you would like to completely disable the custom/regular tooltip. */ disableTooltip?: boolean; /** Any inline editor function that implements Editor for the cell value or ColumnEditor */ editor?: Editor | EditorConstructor | null; /** Editor number fixed decimal places */ editorFixedDecimalPlaces?: number; /** Default to false, which leads to exclude the column title from the Column Picker. */ excludeFromColumnPicker?: boolean; /** Default to false, which leads to exclude the column from the export. */ excludeFromExport?: boolean; /** Default to false, which leads to exclude the column title from the Grid Menu. */ excludeFromGridMenu?: boolean; /** Defaults to false, which leads to exclude the field from the query (typically a backend service query) */ excludeFromQuery?: boolean; /** Defaults to false, which leads to exclude the column from getting a header menu. For example, the checkbox row selection should not have a header menu. */ excludeFromHeaderMenu?: boolean; /** * Field property name to use from the dataset that is used to display the column data. * For example: { id: 'firstName', field: 'firstName' } */ field: Join, '.'>; /** are we allowed to focus on the column? */ focusable?: boolean; /** Formatter function is meant to format, or visually change, the data shown in the grid (UI) in a different way without affecting the source. */ formatter?: Formatter; /** Formatter override function */ formatterOverride?: { ReturnsTextOnly: boolean; } | FormatterOverrideCallback; /** Grouping option used by a Draggable Grouping Column */ grouping?: Grouping; /** Group Totals Formatter function that can be used to add grouping totals in the grid */ groupTotalsFormatter?: GroupTotalsFormatter; /** Options that can be provided to the Header Menu Plugin */ header?: HeaderButtonsOrMenu; /** CSS class that can be added to the column header */ headerCssClass?: string | null; /** is the column hidden? */ hidden?: boolean; /** ID of the column, each column definition ID must be unique or else SlickGrid will throw an error. */ id: number | string; /** Maximum Width of the column in pixels (number only). */ maxWidth?: number; /** Minimum Width of the column in pixels (number only). */ minWidth?: number; /** Column Title Name to be displayed in the Grid (UI) */ name?: string | HTMLElement | DocumentFragment; /** column offset width */ offsetWidth?: number; /** extra custom generic parameters that could be used by your Formatter/Editor or anything else */ params?: any | any[]; /** column previous width */ previousWidth?: number; /** * Defaults to true, makes the column reorderable to another position in the grid. * NOTE: Works best when used as first or last columns of the grid (e.g.: row selection checkbox as first column). */ reorderable?: boolean; /** Should we re-render when onResize is being triggered? */ rerenderOnResize?: boolean; /** Is the column resizable, can we make it wider/thinner? A resize cursor will show on the right side of the column when enabled. */ resizable?: boolean; /** Row span in cell count or use `*` to span across the entire row */ rowspan?: number; /** Is the column selectable? Goes with grid option "enableCellNavigation: true". */ selectable?: boolean; /** Is the column sortable? Goes with grid option "enableSorting: true". */ sortable?: boolean; /** Custom Tooltip that can ben shown to the column */ toolTip?: string; /** Defaults to false, when set to True will lead to the column being unselected in the UI */ unselectable?: boolean; /** Editor Validator */ validator?: EditorValidator; /** Width of the column in pixels (number only). */ width?: number; /** column width request when resizing */ widthRequest?: number; } export {}; //# sourceMappingURL=column.interface.d.ts.map