Skip to content

Column Group Panel

HTMLRevoGridElement (Extended from global)

Section titled “HTMLRevoGridElement (Extended from global)”
interface HTMLRevoGridElement {
/** Configuration for the column group panel. */
columnGroupPanel?: ColumnGroupPanelConfig;
/** Kebab-case alias for framework bindings. */
'column-group-panel'?: ColumnGroupPanelConfig
}

HTMLRevoGridElementEventMap (Extended from global)

Section titled “HTMLRevoGridElementEventMap (Extended from global)”
interface HTMLRevoGridElementEventMap {
columngroupingchange: ColumnGroupPanelChangeDetail
}

AdditionalData (Extended from @revolist/revogrid)

Section titled “AdditionalData (Extended from @revolist/revogrid)”
interface AdditionalData {
/** @deprecated Use `grid.columnGroupPanel` instead. */
columnGroupPanel?: ColumnGroupPanelConfig;
/** @deprecated Use `grid.columnGroupPanel` instead. */
columnGroupingPanel?: ColumnGroupPanelConfig
}
interface ColumnGroupPanelChangeDetail {
props: ColumnProp[];
grouping: GroupingOptions
}

interface ColumnGroupPanelConfig {
/**
* Text to display in the group panel when no columns are grouped.
* @default 'Drag columns here to group by row.'
*/
emptyPanelText?: string;
/** Show the grouping position before each key. @default true */
showOrder?: boolean
}

Adds a header panel for creating, removing, and reordering row groupings.

Example:

const grid = document.createElement('revo-grid');
grid.plugins = [ColumnGroupPanelPlugin];
grid.columnGroupPanel = { emptyPanelText: 'Drop columns here' };
  • Config integration core-grouping: Writes grid grouping props through the core grouping API.
  • Event integration columndragstart, columndragmousemove, beforecolumndragend, columndragend: Shares the column-move gesture lifecycle for header-to-panel grouping.
class ColumnGroupPanelPlugin {
addGrouping(columnProp: ColumnProp);
removeGrouping(indexOrProp: number | ColumnProp);
reorderGrouping(draggedProp: ColumnProp, targetIndex: number);
setGroupings(props: ColumnProp[]);
getGroupings(): ColumnProp[];
destroy();
}

class ColumnGroupPanelDragController {
destroy();
}

export function normalizeColumnGroupings(props?: ColumnProp[]): ColumnProp[];

export function moveColumnGrouping(
groupings: ColumnProp[],
draggedProp: ColumnProp,
rawTargetIndex: number,
): ColumnProp[];

export function resolveColumnGroupingDropIndex(
currentIndex: number,
measuredTargetIndex: number,
): number;

export function withColumnGroupings(
grouping: GroupingOptions | undefined,
props: ColumnProp[],
): GroupingOptions;

class ColumnGroupPanelView {
setConfig(config: ColumnGroupPanelConfig);
render(groupings: ColumnProp[]);
showDropPreview(index: number, label: string);
clearDropPreview();
getDropIndex(clientX: number): number;
getPanelDropIndex(clientX: number, clientY: number): number | null;
destroy();
}