From dc064aaaa701d3c9cd814816b6d7597f16c02d46 Mon Sep 17 00:00:00 2001 From: Matt Dawson Date: Mon, 31 Oct 2022 19:47:35 +1300 Subject: [PATCH] fix: cellrenderer is missing warning and info --- src/components/GridCell.tsx | 41 ++++++++++++------- .../gridRender/GridRenderGenericCell.tsx | 11 ++--- 2 files changed, 33 insertions(+), 19 deletions(-) diff --git a/src/components/GridCell.tsx b/src/components/GridCell.tsx index 01f8249d..44f296bb 100644 --- a/src/components/GridCell.tsx +++ b/src/components/GridCell.tsx @@ -6,6 +6,8 @@ import { GenericMultiEditCellClass } from "./GenericCellClass"; import { GenericCellRendererParams, GridRendererGenericCell } from "./gridRender/GridRenderGenericCell"; import { ColDef, ICellEditorParams, ICellRendererParams } from "ag-grid-community"; import { GridLoadableCell } from "./GridLoadableCell"; +import { GridIcon } from "@components/GridIcon"; +import { ValueFormatterParams } from "ag-grid-community/dist/lib/entities/colDef"; export interface GridFormProps { cellEditorParams: ICellEditorParams; @@ -30,21 +32,26 @@ export interface GenericCellEditorColDef< cellRendererParams?: GenericCellRendererParams; } -export const GridCellRenderer = (cellRendererParams: ICellRendererParams) => { +export const GridCellRenderer = (props: ICellRendererParams) => { const { checkUpdating } = useContext(UpdatingContext); - const colDef = cellRendererParams.colDef; - - return colDef?.cellRendererParams?.oldCellRenderer ? ( - - + const colDef = props.colDef as ColDef; + + const rendererParams = colDef.cellRendererParams as GenericCellRendererParams | undefined; + const warningFn = rendererParams?.warning; + const warningText = warningFn ? warningFn(props) : undefined; + const infoFn = rendererParams?.info; + const infoText = infoFn ? infoFn(props) : undefined; + + return colDef?.cellRendererParams?.originalCellRenderer ? ( + + <> + {typeof warningText === "string" && } + {typeof infoText === "string" && } + + ) : ( - + ); }; @@ -55,7 +62,6 @@ export const GridCell = , ): ColDef => { return { - cellRenderer: GridCellRenderer, sortable: !!(props?.field || props?.valueGetter), resizable: true, ...(props.cellEditorParams && { @@ -63,9 +69,16 @@ export const GridCell = { + const types = ["number", "undefined", "boolean", "string"]; + if (types.includes(typeof params.value)) return params.value; + else return JSON.stringify(params.value); + }, ...props, + cellRenderer: GridCellRenderer, cellRendererParams: { - originalCellRender: props.cellRenderer, + originalCellRenderer: props.cellRenderer, ...props.cellRendererParams, }, }; diff --git a/src/components/gridRender/GridRenderGenericCell.tsx b/src/components/gridRender/GridRenderGenericCell.tsx index 4755dc47..5467e160 100644 --- a/src/components/gridRender/GridRenderGenericCell.tsx +++ b/src/components/gridRender/GridRenderGenericCell.tsx @@ -20,21 +20,22 @@ export interface GenericCellColDef { singleClickEdit?: boolean; - warning?: (props: RowICellRendererParams) => string | boolean | undefined; - info?: (props: RowICellRendererParams) => string | boolean | undefined; + warning?: (props: RowICellRendererParams) => string | boolean | null | undefined; + info?: (props: RowICellRendererParams) => string | boolean | null | undefined; } export const GridRendererGenericCell = (props: ICellRendererParams): JSX.Element => { const { checkUpdating } = useContext(UpdatingContext); - const cellRendererParams = props.colDef?.cellRendererParams as GenericCellRendererParams | undefined; + const colDef = props.colDef as ColDef; + const cellRendererParams = colDef.cellRendererParams as GenericCellRendererParams | undefined; const warningFn = cellRendererParams?.warning; const warningText = warningFn ? warningFn(props) : undefined; const infoFn = cellRendererParams?.info; const infoText = infoFn ? infoFn(props) : undefined; const defaultFormatter = (props: ValueFormatterParams): string => props.value; - const formatter = props.colDef?.valueFormatter ?? defaultFormatter; + const formatter = colDef.valueFormatter ?? defaultFormatter; if (typeof formatter === "string") { console.error("valueFormatter must be a function"); return valueFormatter must be a function; @@ -42,7 +43,7 @@ export const GridRendererGenericCell = (props: ICel const formatted = formatter(props as ValueFormatterParams); return ( - + <> {typeof warningText === "string" && } {typeof infoText === "string" && }