Skip to content

GroupingRow

HTMLRevoGridElementEventMap (Extended from global)

Section titled “HTMLRevoGridElementEventMap (Extended from global)”

grid.addEventListener(GROUP_EXPAND_EVENT, (e: OnExpandEvent) => { console.log(e) })

interface HTMLRevoGridElementEventMap {
[GROUP_EXPAND_EVENT]: OnExpandEvent
}
GROUP_DEPTH: string;

PSEUDO_GROUP_ITEM: string;

PSEUDO_GROUP_ITEM_ID: string;

PSEUDO_GROUP_ITEM_VALUE: string;

PSEUDO_GROUP_COLUMN: string;

GROUP_EXPANDED: string;

GROUP_COLUMN_PROP: string;

GROUP_ORIGINAL_INDEX: string;

GROUP_EXPAND_BTN: string;

GROUP_EXPAND_EVENT: string;

GROUPING_ROW_TYPE: DimensionRows;

export declare function doCollapse(pIndex: number, source: DataType[]): {
trimmed: Record<number, boolean>;
};;

@param pIndex - physical index

@param vIndex - virtual index, need to update item collection

@param source - data source

@param rowItemsIndexes - rgRow indexes

export declare function doExpand(vIndex: number, source: DataType[], rowItemsIndexes: number[]): {
trimmed: Record<number, boolean>;
items?: number[];
};;

class GroupingRowPlugin {
getStore(type?: DimensionRows): Observable<DSourceState<DataType, DimensionRows>>;;
/**
* External call to apply grouping. Called by revogrid when prop changed.
*/
setGrouping(options: GroupingOptions): void;;
clearGrouping(): void;;
}

RowGroupingProps (Extended from grouping.row.plugin.d.ts)

Section titled “RowGroupingProps (Extended from grouping.row.plugin.d.ts)”
export type RowGroupingProps = GroupRowPros & PositionItem & {
/**
* Visible columns in the grid, can be used to get the width of the column and position of the column
* to calculate the position of the cells in the grouping row
*/
columnItems: VirtualPositionItem[];
};

GroupRowPros (Extended from grouping.row.plugin.d.ts)

Section titled “GroupRowPros (Extended from grouping.row.plugin.d.ts)”
interface GroupRowPros {
model: DataType;
hasExpand: boolean;
providers: Providers;
groupingCustomRenderer?: GroupLabelTemplateFunc | null;
groupingCellRenderer?: GroupCellTemplateFunc | null;
additionalData?: any
}

export type GroupLabelTemplateFunc = (createElement: HyperFunc<VNode>, props: GroupTemplateProp & RowGroupingProps, ...args: any[]) => any;

GroupCellTemplateProp (Extended from grouping.row.plugin.d.ts)

Section titled “GroupCellTemplateProp (Extended from grouping.row.plugin.d.ts)”
interface GroupCellTemplateProp {
/**
* Column viewport type that owns the cell.
*/
colType: DimensionCols | 'rowHeaders';
/**
* Current virtual column position. Only columns rendered by the viewport are
* passed to the group cell template.
*/
columnItem: VirtualPositionItem;
/**
* Current virtual row position.
*/
rowItem: VirtualPositionItem;
/**
* Semantic information about the synthetic group row.
*/
group: {
name: string;
depth: number;
expanded: boolean;
prop: ColumnProp;
isLabelColumn: boolean;
canExpand: boolean;
onExpand(event: MouseEvent): void;
}
}

export type GroupCellTemplateFunc = (createElement: HyperFunc<VNode>, props: GroupCellTemplateProp, additionalData?: any) => any;

GroupingOptions (Extended from grouping.row.plugin.d.ts)

Section titled “GroupingOptions (Extended from grouping.row.plugin.d.ts)”
export type GroupingOptions = {
/**
* Column props to which grouping will be applied
*/
props?: ColumnProp[];
/**
* Should grouping be preserved on source update.
* default: true
*/
preserveGroupingOnUpdate?: boolean;
/**
* Custom group label template
*/
groupLabelTemplate?: GroupLabelTemplateFunc;
/**
* Custom template for cells in synthetic group rows.
* When provided, group rows render only the columns in the current horizontal
* viewport and this template takes precedence over `groupLabelTemplate`.
*/
groupCellTemplate?: GroupCellTemplateFunc;
} & ExpandedOptions;

export type BeforeSourceSetEvent = {
type: DimensionRows;
source: DataType[];
};

export type OnExpandEvent = {
model: DataType;
virtualIndex: number;
};

export type ExpandedOptions = {
/**
* Currently expanded items. to set expanded: '{ 'a': true, 'a,b': true, 'a,b,c': true }'
*/
prevExpanded?: Record<string, boolean>;
/**
* Is expanded by default
*/
expandedAll?: boolean;
/**
* Custom group label value parser
*/
getGroupValue?(item: DataType, prop: string | number): any;
/**
* Replacement group value for `null` and `undefined` keys.
* Used by the default group value resolver.
* @default ''
*/
emptyGroupValue?: any;
/**
* Custom group label template
*/
groupLabelTemplate?: GroupLabelTemplateFunc;
/**
* Custom template for virtualized cells in synthetic group rows.
*/
groupCellTemplate?: GroupCellTemplateFunc;
};

export declare function getSource(source: DataType[], items: number[], withoutGrouping?: boolean): Required<SourceGather>;;

export declare function getExpanded(model?: DataType): any;;

Gather data for grouping

@param array - flat data array

@param columnProps - ids of groups

@param expanded - potentially expanded items if present

export declare function gatherGrouping(array: DataType[], columnProps: ColumnProp[], { prevExpanded, expandedAll, getGroupValue, emptyGroupValue, }: ExpandedOptions): {
sourceWithGroups: DataType[];
depth: number;
trimmed: Record<number, boolean>;
oldNewIndexMap: Record<number, number>;
};;

export declare function getGroupingName(rgRow?: DataType): any;;

export declare function isGrouping(rgRow?: DataType): rgRow is GroupingItem;;

export declare function isGroupingColumn(column?: ColumnRegular): boolean;;

export declare function measureEqualDepth<T>(groupA: T[], groupB: T[]): number;;

export declare function getParsedGroup(id: string): any[] | null;;

export declare function isSameGroup(currentGroup: any[], currentModel: DataType, nextModel: DataType): boolean;;

export declare function expandEvent(e: MouseEvent, model: DataType, virtualIndex: number): void;;

export declare function renderGroupCells(props: RowGroupingProps, { name, expanded, depth, }: {
name: string;
expanded: boolean;
depth: number;
}): VNodeResponse[];;

GroupingRowRenderer: (props: RowGroupingProps) => any;

expandSvgIconVNode: (expanded?: boolean | undefined) => any;

GroupingRowRenderer: (props: RowGroupingProps) => any;