@linzjs/step-ag-grid
Version:
[](https://github.com/semantic-release/semantic-release) > Reusable [ag-grid](https://www.ag-grid.com/) component for LINZ / Toitū te whenua.
68 lines (67 loc) • 3.26 kB
TypeScript
import { ColDef, ColGroupDef, GridOptions, RowClickedEvent, RowDoubleClickedEvent } from 'ag-grid-community';
import { ReactElement } from 'react';
import { GridContextMenuComponent } from './gridHook';
import { GridBaseRow, GridOnRowDragEndProps } from './types';
export interface GridProps<TData extends GridBaseRow = GridBaseRow> {
['data-testid']?: string;
theme?: string;
loading?: boolean;
readOnly?: boolean;
suppressReadOnlyStyle?: boolean;
columnDefs: ColDef<TData>[] | ColGroupDef<TData>[];
defaultColDef?: GridOptions['defaultColDef'];
defaultPostSort?: boolean;
domLayout?: GridOptions['domLayout'];
pinnedBottomRowData?: GridOptions['pinnedBottomRowData'];
pinnedTopRowData?: GridOptions['pinnedTopRowData'];
rowData: GridOptions['rowData'];
rowClassRules?: GridOptions['rowClassRules'];
rowHeight?: number;
rowSelection?: 'single' | 'multiple';
sizeColumns?: 'fit' | 'auto' | 'auto-skip-headers' | 'none';
autoSelectFirstRow?: boolean;
enableClickSelection?: boolean;
enableRangeSelection?: boolean;
enableSelectionWithoutKeys?: boolean;
externalSelectedIds?: TData['id'][];
externalSelectedItems?: TData[];
hideSelectColumn?: boolean;
selectColumnPinned?: ColDef['pinned'];
selectable?: boolean;
setExternalSelectedIds?: (ids: TData['id'][]) => void;
setExternalSelectedItems?: (items: TData[]) => void;
onBulkEditingComplete?: () => Promise<void> | void;
singleClickEdit?: boolean;
stopEditingWhenCellsLoseFocus?: boolean;
contextMenu?: GridContextMenuComponent<TData>;
contextMenuSelectRow?: boolean;
onCellFocused?: (props: {
colDef: ColDef<TData>;
data: TData;
}) => void;
onColumnMoved?: GridOptions['onColumnMoved'];
onContentSize?: (props: {
width: number;
}) => void;
/**
* @deprecated You should drive your app off selection states. This will be deleted.
*/
onRowClicked?: (event: RowClickedEvent) => void;
/**
* @deprecated You should drive your app off selection states. This will be deleted.
*/
onRowDoubleClicked?: (event: RowDoubleClickedEvent) => void;
onRowDragEnd?: (props: GridOnRowDragEndProps<TData>) => Promise<void> | void;
animateRows?: boolean;
alwaysShowVerticalScroll?: boolean;
rowDragText?: GridOptions['rowDragText'];
noRowsOverlayText?: string;
noRowsMatchingOverlayText?: string;
maxInitialWidth?: number;
suppressCellFocus?: boolean;
suppressColumnVirtualization?: GridOptions['suppressColumnVirtualisation'];
}
/**
* Wrapper for AgGrid to add commonly used functionality.
*/
export declare const Grid: <TData extends GridBaseRow = GridBaseRow>({ theme, "data-testid": dataTestId, suppressReadOnlyStyle, defaultPostSort, rowData, rowHeight, rowSelection, sizeColumns, autoSelectFirstRow, enableRangeSelection, externalSelectedIds, externalSelectedItems, selectColumnPinned, selectable, setExternalSelectedIds, setExternalSelectedItems, singleClickEdit, stopEditingWhenCellsLoseFocus, contextMenuSelectRow, contextMenu, onCellFocused: paramsOnCellFocused, onColumnMoved, suppressColumnVirtualization, maxInitialWidth, ...params }: GridProps<TData>) => ReactElement;