diff --git a/src/contexts/GridContext.tsx b/src/contexts/GridContext.tsx index 9e8254e5..5f656262 100644 --- a/src/contexts/GridContext.tsx +++ b/src/contexts/GridContext.tsx @@ -3,6 +3,7 @@ import { CsvExportParams } from "ag-grid-community/dist/lib/interfaces/exportPar import { createContext, useContext } from "react"; import { ColDefT, GridBaseRow } from "../components"; +import {Column} from "ag-grid-community/dist/lib/entities/column"; export type GridFilterExternal = (data: RowType, rowNode: RowNode) => boolean; @@ -39,6 +40,7 @@ export interface GridContextType { autoSizeColumns: (props?: AutoSizeColumnsProps) => AutoSizeColumnsResult; sizeColumnsToFit: () => void; cancelEdit: () => void; + startEditing: (rowIndex: number, colKey: string | Column, rowPinned?: string) => void; stopEditing: () => void; updatingCells: ( props: { selectedRows: GridBaseRow[]; field?: string }, @@ -147,6 +149,9 @@ export const GridContext = createContext>({ cancelEdit: () => { console.error("no context provider for cancelEdit"); }, + startEditing: () => { + console.error("no context provider for startEditing"); + }, stopEditing: () => { console.error("no context provider for stopEditing"); }, diff --git a/src/contexts/GridContextProvider.tsx b/src/contexts/GridContextProvider.tsx index 07f4b396..b8fa0da3 100644 --- a/src/contexts/GridContextProvider.tsx +++ b/src/contexts/GridContextProvider.tsx @@ -10,6 +10,7 @@ import { ColDefT, GridBaseRow } from "../components"; import { isNotEmpty, sanitiseFileName, wait } from "../utils/util"; import { AutoSizeColumnsProps, AutoSizeColumnsResult, GridContext, GridFilterExternal } from "./GridContext"; import { GridUpdatingContext } from "./GridUpdatingContext"; +import {Column} from "ag-grid-community/dist/lib/entities/column"; interface GridContextProps { children: ReactNode; @@ -377,6 +378,19 @@ export const GridContextProvider = (props: GridCont gridApi.stopEditing(); }, [gridApi]); + const startEditing = useCallback( + (rowIndex: number, colKey: string | Column, rowPinned?: string): void => { + if (!gridApi) return; + gridApi.setFocusedCell(rowIndex, colKey, rowPinned); + gridApi.startEditingCell({ + rowIndex, + colKey, + rowPinned, + }); + }, + [gridApi], + ); + /** * This differs from stopEdit in that it will also invoke cellEditingCompleteCallback */ @@ -618,6 +632,7 @@ export const GridContextProvider = (props: GridCont ensureSelectedRowIsVisible, sizeColumnsToFit, autoSizeColumns, + startEditing, stopEditing, cancelEdit, updatingCells,