ag-grid-community
Version:
Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
46 lines (45 loc) • 3 kB
TypeScript
import type { ColumnState, ColumnStateParams } from '../columns/columnStateUtils';
import type { AgColumn } from '../entities/agColumn';
import type { ColAggFunc, ColKey } from '../entities/colDef';
import type { ColumnEventType } from '../events';
/** `columnChanged`-family event dispatched by a cols service. @internal AG_GRID_INTERNAL - Not for public use. Can change / be removed at any time. */
export type ColumnChangedEventType = 'columnValueChanged' | 'columnPivotChanged' | 'columnRowGroupChanged';
/** Shared base for all three cols services; service-specific ops live on sub-interfaces. @internal AG_GRID_INTERNAL - Not for public use. Can change / be removed at any time. */
export interface IColsService {
columns: AgColumn[];
/** Cols staged since the last flush; non-null = awaiting dispatch. {@link ColumnModel.flushColChanges} */
readonly pendingChanged: Set<AgColumn> | null;
/** Dispatch this service's staged change (if any); called by {@link ColumnModel.flushColChanges}. */
dispatchColChange(source: ColumnEventType): void;
setColumns(colKeys: ColKey[] | undefined, source: ColumnEventType): void;
addColumns(keys: (ColKey | null | undefined)[] | undefined, source: ColumnEventType): void;
removeColumns(keys: (ColKey | null | undefined)[] | undefined, source: ColumnEventType): void;
/** Recompute active cols with a shared scan: call {@link extractCol} per primary col, then finalise via {@link commitExtract}. */
extractCol(col: AgColumn, colIsNew: boolean): void;
commitExtract(source: ColumnEventType): void;
syncColState(column: AgColumn, stateItem: ColumnState | null, defaultState: ColumnStateParams | undefined, source: ColumnEventType): void;
}
/** @internal AG_GRID_INTERNAL - Not for public use. Can change / be removed at any time. */
export interface IOrderedColsService extends IColsService {
/** Assigns synthetic indexes to `incoming` and adds new entries to `accumulator`; both mutated. */
restoreColumnOrder(incoming: {
[colId: string]: ColumnState;
}, accumulator: {
[colId: string]: ColumnState;
}): void;
sortByPendingState(): void;
}
/** @internal AG_GRID_INTERNAL - Not for public use. Can change / be removed at any time. */
export interface IRowGroupColsService extends IOrderedColsService {
moveColumn(fromIndex: number, toIndex: number, source: ColumnEventType): void;
}
/** @internal AG_GRID_INTERNAL - Not for public use. Can change / be removed at any time. */
export interface IPivotColsService extends IOrderedColsService {
isStrictColumnOrder(): boolean;
}
/** @internal AG_GRID_INTERNAL - Not for public use. Can change / be removed at any time. */
export interface IValueColsService extends IColsService {
setColumnAggFunc(key: ColKey | undefined, aggFunc: ColAggFunc, source: ColumnEventType): void;
/** Re-order active value cols by the `valueIndex` recorded during the last `syncColState` pass. */
sortByPendingState(): void;
}