Skip to content

Commit e1e83d1

Browse files
committed
Multiple renames for clarity and consistency
1 parent 48597e7 commit e1e83d1

37 files changed

Lines changed: 226 additions & 210 deletions

README.md

Lines changed: 36 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ Control column widths using the [`width`](#width-maybenumber--string), [`minWidt
242242

243243
### Custom Renderers
244244

245-
Replace default components with custom implementations using the [`renderers`](#renderers-mayberenderersr-sr) prop. Columns can also have custom renderers using the [`renderCell`](#rendercell-maybeprops-rendercellpropstrow-tsummaryrow--reactnode), [`renderHeaderCell`](#renderheadercell-maybeprops-renderheadercellpropstrow-tsummaryrow--reactnode), [`renderSummaryCell`](#rendersummarycell-maybeprops-rendersummarycellpropstsummaryrow-trow--reactnode), [`renderGroupCell`](#rendergroupcell-maybeprops-rendergroupcellpropstrow-tsummaryrow--reactnode), and [`renderEditCell`](#rendereditcell-maybeprops-rendereditcellpropstrow-tsummaryrow--reactnode) properties.
245+
Replace default components with custom implementations using the [`renderers`](#renderers-mayberenderersr-sr) prop. Columns can also have custom renderers using the [`renderCell`](#rendercell-maybeprops-rendercellcontentpropstrow-tsummaryrow--reactnode), [`renderHeaderCell`](#renderheadercell-maybeprops-renderheadercellcontentpropstrow-tsummaryrow--reactnode), [`renderSummaryCell`](#rendersummarycell-maybeprops-rendersummarycellcontentpropstsummaryrow-trow--reactnode), [`renderGroupCell`](#rendergroupcell-maybeprops-rendergroupcellcontentpropstrow-tsummaryrow--reactnode), and [`renderEditCell`](#rendereditcell-maybeprops-rendereditcellcontentpropstrow-tsummaryrow--reactnode) properties.
246246

247247
## API Reference
248248

@@ -869,6 +869,8 @@ function rowGrouper(rows: readonly Row[], columnKey: string): Record<string, rea
869869
}
870870
```
871871

872+
:warning: **Performance:** Define this function outside your component or memoize it with `useCallback` to prevent unnecessary re-renders.
873+
872874
###### `expandedGroupIds: ReadonlySet<unknown>`
873875

874876
**Required.** A set of group IDs that are currently expanded. Group IDs are generated by `groupIdGetter`.
@@ -898,6 +900,8 @@ function MyGrid() {
898900

899901
Function to generate unique IDs for group rows. If not provided, a default implementation is used that concatenates parent and group keys with `__`.
900902

903+
:warning: **Performance:** Define this function outside your component or memoize it with `useCallback` to prevent unnecessary re-renders.
904+
901905
###### `rowHeight?: Maybe<number | ((args: RowHeightArgs<R>) => number)>`
902906

903907
**Note:** Unlike `DataGrid`, the `rowHeight` function receives [`RowHeightArgs<R>`](#rowheightargstrow) which includes a `type` property to distinguish between regular rows and group rows:
@@ -927,11 +931,11 @@ The default cell component. Can be wrapped via the `renderers.renderCell` prop.
927931

928932
##### Props
929933

930-
[`CellRendererProps<TRow, TSummaryRow>`](#cellrendererpropstrow-tsummaryrow)
934+
[`RenderCellProps<TRow, TSummaryRow>`](#rendercellpropstrow-tsummaryrow)
931935

932-
#### `<SelectCellFormatter />`
936+
#### `<SelectCheckbox />`
933937

934-
A formatter component for rendering row selection checkboxes.
938+
A component for rendering row selection checkboxes.
935939

936940
##### Props
937941

@@ -1018,7 +1022,7 @@ Hook for managing row selection state. Used within custom cell renderers to impl
10181022
**Example:**
10191023

10201024
```tsx
1021-
function CustomSelectCell({ row }: RenderCellProps<Row>) {
1025+
function CustomSelectCell({ row }: RenderCellContentProps<Row>) {
10221026
const { isRowSelectionDisabled, isRowSelected, onRowSelectionChange } = useRowSelection();
10231027

10241028
return (
@@ -1040,7 +1044,7 @@ function CustomSelectCell({ row }: RenderCellProps<Row>) {
10401044

10411045
### Render Functions
10421046

1043-
#### `renderHeaderCell<R, SR>(props: RenderHeaderCellProps<R, SR>)`
1047+
#### `renderHeaderCell<R, SR>(props: RenderHeaderCellContentProps<R, SR>)`
10441048

10451049
The default header cell renderer. Renders sortable columns with sort indicators.
10461050

@@ -1059,7 +1063,7 @@ const columns: readonly Column<Row>[] = [
10591063
];
10601064
```
10611065

1062-
#### `renderTextEditor<TRow, TSummaryRow>(props: RenderEditCellProps<TRow, TSummaryRow>)`
1066+
#### `renderTextEditor<TRow, TSummaryRow>(props: RenderEditCellContentProps<TRow, TSummaryRow>)`
10631067

10641068
A basic text editor provided for convenience.
10651069

@@ -1119,13 +1123,13 @@ import { DataGrid, renderCheckbox } from 'react-data-grid';
11191123
/>;
11201124
```
11211125

1122-
#### `renderToggleGroup<R, SR>(props: RenderGroupCellProps<R, SR>)`
1126+
#### `renderToggleGroup<R, SR>(props: RenderGroupCellContentProps<R, SR>)`
11231127

11241128
The default group cell renderer used by the columns used for grouping (`groupBy` prop). This renders the expand/collapse toggle.
11251129

11261130
##### Props
11271131

1128-
[`RenderGroupCellProps<TRow, TSummaryRow>`](#rendergroupcellpropstrow-tsummaryrow)
1132+
[`RenderGroupCellContentProps<TRow, TSummaryRow>`](#rendergroupcellcontentpropstrow-tsummaryrow)
11291133

11301134
**Example:**
11311135

@@ -1141,7 +1145,7 @@ const columns: readonly Column<Row>[] = [
11411145
];
11421146
```
11431147

1144-
#### `renderValue<R, SR>(props: RenderCellProps<R, SR>)`
1148+
#### `renderValue<R, SR>(props: RenderCellContentProps<R, SR>)`
11451149

11461150
The default cell renderer that renders the value of `row[column.key]`.
11471151

@@ -1347,23 +1351,23 @@ Class name(s) for the header cell.
13471351

13481352
Class name(s) for summary cells. Can be a string or a function that returns a class name based on the summary row.
13491353

1350-
##### `renderCell?: Maybe<(props: RenderCellProps<TRow, TSummaryRow>) => ReactNode>`
1354+
##### `renderCell?: Maybe<(props: RenderCellContentProps<TRow, TSummaryRow>) => ReactNode>`
13511355

13521356
Render function to render the content of cells.
13531357

1354-
##### `renderHeaderCell?: Maybe<(props: RenderHeaderCellProps<TRow, TSummaryRow>) => ReactNode>`
1358+
##### `renderHeaderCell?: Maybe<(props: RenderHeaderCellContentProps<TRow, TSummaryRow>) => ReactNode>`
13551359

13561360
Render function to render the content of the header cell.
13571361

1358-
##### `renderSummaryCell?: Maybe<(props: RenderSummaryCellProps<TSummaryRow, TRow>) => ReactNode>`
1362+
##### `renderSummaryCell?: Maybe<(props: RenderSummaryCellContentProps<TSummaryRow, TRow>) => ReactNode>`
13591363

13601364
Render function to render the content of summary cells
13611365

1362-
##### `renderGroupCell?: Maybe<(props: RenderGroupCellProps<TRow, TSummaryRow>) => ReactNode>`
1366+
##### `renderGroupCell?: Maybe<(props: RenderGroupCellContentProps<TRow, TSummaryRow>) => ReactNode>`
13631367

13641368
Render function to render the content of group cells when using `TreeDataGrid`.
13651369

1366-
##### `renderEditCell?: Maybe<(props: RenderEditCellProps<TRow, TSummaryRow>) => ReactNode>`
1370+
##### `renderEditCell?: Maybe<(props: RenderEditCellContentProps<TRow, TSummaryRow>) => ReactNode>`
13671371

13681372
Render function to render the content of edit cells. When set, the column is automatically set to be editable
13691373

@@ -1533,12 +1537,12 @@ function getRowHeight(args: RowHeightArgs<Row>): number {
15331537
<TreeDataGrid rowHeight={getRowHeight} ... />
15341538
```
15351539

1536-
#### `RenderCellProps<TRow, TSummaryRow>`
1540+
#### `RenderCellContentProps<TRow, TSummaryRow>`
15371541

15381542
Props passed to custom cell renderers.
15391543

15401544
```tsx
1541-
interface RenderCellProps<TRow, TSummaryRow = unknown> {
1545+
interface RenderCellContentProps<TRow, TSummaryRow = unknown> {
15421546
column: CalculatedColumn<TRow, TSummaryRow>;
15431547
row: TRow;
15441548
rowIdx: number;
@@ -1551,9 +1555,9 @@ interface RenderCellProps<TRow, TSummaryRow = unknown> {
15511555
**Example:**
15521556

15531557
```tsx
1554-
import type { RenderCellProps } from 'react-data-grid';
1558+
import type { RenderCellContentProps } from 'react-data-grid';
15551559

1556-
function renderCell({ row, column, onRowChange }: RenderCellProps<MyRow>) {
1560+
function renderCell({ row, column, onRowChange }: RenderCellContentProps<MyRow>) {
15571561
return (
15581562
<div>
15591563
{row[column.key]}
@@ -1563,25 +1567,25 @@ function renderCell({ row, column, onRowChange }: RenderCellProps<MyRow>) {
15631567
}
15641568
```
15651569

1566-
#### `RenderHeaderCellProps<TRow, TSummaryRow>`
1570+
#### `RenderHeaderCellContentProps<TRow, TSummaryRow>`
15671571

15681572
Props passed to custom header cell renderers.
15691573

15701574
```tsx
1571-
interface RenderHeaderCellProps<TRow, TSummaryRow = unknown> {
1575+
interface RenderHeaderCellContentProps<TRow, TSummaryRow = unknown> {
15721576
column: CalculatedColumn<TRow, TSummaryRow>;
15731577
sortDirection: SortDirection | undefined;
15741578
priority: number | undefined;
15751579
tabIndex: number;
15761580
}
15771581
```
15781582

1579-
#### `RenderEditCellProps<TRow, TSummaryRow>`
1583+
#### `RenderEditCellContentProps<TRow, TSummaryRow>`
15801584

15811585
Props passed to custom edit cell renderers (editors).
15821586

15831587
```tsx
1584-
interface RenderEditCellProps<TRow, TSummaryRow = unknown> {
1588+
interface RenderEditCellContentProps<TRow, TSummaryRow = unknown> {
15851589
column: CalculatedColumn<TRow, TSummaryRow>;
15861590
row: TRow;
15871591
rowIdx: number;
@@ -1593,9 +1597,9 @@ interface RenderEditCellProps<TRow, TSummaryRow = unknown> {
15931597
**Example:**
15941598

15951599
```tsx
1596-
import type { RenderEditCellProps } from 'react-data-grid';
1600+
import type { RenderEditCellContentProps } from 'react-data-grid';
15971601

1598-
function CustomEditor({ row, column, onRowChange, onClose }: RenderEditCellProps<MyRow>) {
1602+
function renderEditor({ row, column, onRowChange, onClose }: RenderEditCellContentProps<MyRow>) {
15991603
return (
16001604
<input
16011605
autoFocus
@@ -1607,24 +1611,24 @@ function CustomEditor({ row, column, onRowChange, onClose }: RenderEditCellProps
16071611
}
16081612
```
16091613

1610-
#### `RenderSummaryCellProps<TSummaryRow, TRow>`
1614+
#### `RenderSummaryCellContentProps<TSummaryRow, TRow>`
16111615

16121616
Props passed to summary cell renderers.
16131617

16141618
```tsx
1615-
interface RenderSummaryCellProps<TSummaryRow, TRow = unknown> {
1619+
interface RenderSummaryCellContentProps<TSummaryRow, TRow = unknown> {
16161620
column: CalculatedColumn<TRow, TSummaryRow>;
16171621
row: TSummaryRow;
16181622
tabIndex: number;
16191623
}
16201624
```
16211625

1622-
#### `RenderGroupCellProps<TRow, TSummaryRow>`
1626+
#### `RenderGroupCellContentProps<TRow, TSummaryRow>`
16231627

16241628
Props passed to group cell renderers when using `TreeDataGrid`.
16251629

16261630
```tsx
1627-
interface RenderGroupCellProps<TRow, TSummaryRow = unknown> {
1631+
interface RenderGroupCellContentProps<TRow, TSummaryRow = unknown> {
16281632
groupKey: unknown;
16291633
column: CalculatedColumn<TRow, TSummaryRow>;
16301634
row: GroupRow<TRow>;
@@ -1650,14 +1654,14 @@ interface RenderRowProps<TRow, TSummaryRow = unknown> {
16501654
gridRowStart: number;
16511655
lastFrozenColumnIndex: number;
16521656
draggedOverCellIdx: number | undefined;
1653-
selectedCellEditor: ReactElement<RenderEditCellProps<TRow>> | undefined;
1657+
selectedCellEditor: ReactElement<RenderEditCellContentProps<TRow>> | undefined;
16541658
onRowChange: (column: CalculatedColumn<TRow, TSummaryRow>, rowIdx: number, newRow: TRow) => void;
16551659
rowClass: Maybe<(row: TRow, rowIdx: number) => Maybe<string>>;
16561660
// ... and event handlers
16571661
}
16581662
```
16591663

1660-
#### `CellRendererProps<TRow, TSummaryRow>`
1664+
#### `RenderCellProps<TRow, TSummaryRow>`
16611665

16621666
Props passed to the cell renderer when using `renderers.renderCell`.
16631667

@@ -1669,7 +1673,7 @@ Custom renderer configuration for the grid.
16691673

16701674
```tsx
16711675
interface Renderers<TRow, TSummaryRow> {
1672-
renderCell?: Maybe<(key: Key, props: CellRendererProps<TRow, TSummaryRow>) => ReactNode>;
1676+
renderCell?: Maybe<(key: Key, props: RenderCellProps<TRow, TSummaryRow>) => ReactNode>;
16731677
renderCheckbox?: Maybe<(props: RenderCheckboxProps) => ReactNode>;
16741678
renderRow?: Maybe<(key: Key, props: RenderRowProps<TRow, TSummaryRow>) => ReactNode>;
16751679
renderSortStatus?: Maybe<(props: RenderSortStatusProps) => ReactNode>;

src/Cell.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { css } from 'ecij';
33

44
import { useRovingTabIndex } from './hooks';
55
import { createCellEvent, getCellClassname, getCellStyle, isCellEditableUtil } from './utils';
6-
import type { CellMouseEventHandler, CellRendererProps } from './types';
6+
import type { CellMouseEventHandler, RenderCellProps } from './types';
77

88
const cellDraggedOver = css`
99
@layer rdg.Cell {
@@ -33,7 +33,7 @@ function Cell<R, SR>({
3333
selectCell,
3434
style,
3535
...props
36-
}: CellRendererProps<R, SR>) {
36+
}: RenderCellProps<R, SR>) {
3737
const { tabIndex, childTabIndex, onFocus } = useRovingTabIndex(isCellSelected);
3838

3939
const { cellClass } = column;
@@ -126,10 +126,10 @@ function Cell<R, SR>({
126126
);
127127
}
128128

129-
const CellComponent = memo(Cell) as <R, SR>(props: CellRendererProps<R, SR>) => React.JSX.Element;
129+
const MemoCell = memo(Cell) as <R, SR>(props: RenderCellProps<R, SR>) => React.JSX.Element;
130130

131-
export default CellComponent;
131+
export { MemoCell as Cell };
132132

133-
export function defaultRenderCell<R, SR>(key: React.Key, props: CellRendererProps<R, SR>) {
134-
return <CellComponent key={key} {...props} />;
133+
export function defaultRenderCell<R, SR>(key: React.Key, props: RenderCellProps<R, SR>) {
134+
return <MemoCell key={key} {...props} />;
135135
}

src/Columns.tsx

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,19 @@
11
import { useHeaderRowSelection, useRowSelection } from './hooks';
2-
import type { Column, RenderCellProps, RenderGroupCellProps, RenderHeaderCellProps } from './types';
3-
import { SelectCellFormatter } from './cellRenderers';
2+
import type {
3+
Column,
4+
RenderCellContentProps,
5+
RenderGroupCellContentProps,
6+
RenderHeaderCellContentProps
7+
} from './types';
8+
import { SelectCheckbox } from './cellRenderers';
49

510
export const SELECT_COLUMN_KEY = 'rdg-select-column';
611

7-
function HeaderRenderer(props: RenderHeaderCellProps<unknown>) {
12+
function SelectAllCell(props: RenderHeaderCellContentProps<unknown>) {
813
const { isIndeterminate, isRowSelected, onRowSelectionChange } = useHeaderRowSelection();
914

1015
return (
11-
<SelectCellFormatter
16+
<SelectCheckbox
1217
aria-label="Select All"
1318
tabIndex={props.tabIndex}
1419
indeterminate={isIndeterminate}
@@ -20,11 +25,11 @@ function HeaderRenderer(props: RenderHeaderCellProps<unknown>) {
2025
);
2126
}
2227

23-
function SelectFormatter(props: RenderCellProps<unknown>) {
28+
function RowSelectCell(props: RenderCellContentProps<unknown>) {
2429
const { isRowSelectionDisabled, isRowSelected, onRowSelectionChange } = useRowSelection();
2530

2631
return (
27-
<SelectCellFormatter
32+
<SelectCheckbox
2833
aria-label="Select"
2934
tabIndex={props.tabIndex}
3035
disabled={isRowSelectionDisabled}
@@ -36,11 +41,11 @@ function SelectFormatter(props: RenderCellProps<unknown>) {
3641
);
3742
}
3843

39-
function SelectGroupFormatter(props: RenderGroupCellProps<unknown>) {
44+
function GroupSelectCell(props: RenderGroupCellContentProps<unknown>) {
4045
const { isRowSelected, onRowSelectionChange } = useRowSelection();
4146

4247
return (
43-
<SelectCellFormatter
48+
<SelectCheckbox
4449
aria-label="Select Group"
4550
tabIndex={props.tabIndex}
4651
value={isRowSelected}
@@ -62,12 +67,12 @@ export const SelectColumn: Column<any, any> = {
6267
sortable: false,
6368
frozen: true,
6469
renderHeaderCell(props) {
65-
return <HeaderRenderer {...props} />;
70+
return <SelectAllCell {...props} />;
6671
},
6772
renderCell(props) {
68-
return <SelectFormatter {...props} />;
73+
return <RowSelectCell {...props} />;
6974
},
7075
renderGroupCell(props) {
71-
return <SelectGroupFormatter {...props} />;
76+
return <GroupSelectCell {...props} />;
7277
}
7378
};

src/DataGrid.tsx

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -469,15 +469,15 @@ export function DataGrid<R, SR = unknown, K extends Key = Key>(props: DataGridPr
469469
*/
470470
const handleColumnResizeLatest = useLatestFunc(handleColumnResize);
471471
const handleColumnResizeEndLatest = useLatestFunc(handleColumnResizeEnd);
472-
const onColumnsReorderLastest = useLatestFunc(onColumnsReorder);
472+
const onColumnsReorderLatest = useLatestFunc(onColumnsReorder);
473473
const onSortColumnsChangeLatest = useLatestFunc(onSortColumnsChange);
474474
const onCellMouseDownLatest = useLatestFunc(onCellMouseDown);
475475
const onCellClickLatest = useLatestFunc(onCellClick);
476476
const onCellDoubleClickLatest = useLatestFunc(onCellDoubleClick);
477477
const onCellContextMenuLatest = useLatestFunc(onCellContextMenu);
478478
const selectHeaderRowLatest = useLatestFunc(selectHeaderRow);
479479
const selectRowLatest = useLatestFunc(selectRow);
480-
const handleFormatterRowChangeLatest = useLatestFunc(updateRow);
480+
const updateRowLatest = useLatestFunc(updateRow);
481481
const selectCellLatest = useLatestFunc(selectCell);
482482
const selectHeaderCellLatest = useLatestFunc(selectHeaderCell);
483483

@@ -962,7 +962,8 @@ export function DataGrid<R, SR = unknown, K extends Key = Key>(props: DataGridPr
962962
const isLastRow = rowIdx === maxRowIdx;
963963
const columnWidth = getColumnWidth(column);
964964
const colSpan = column.colSpan?.({ type: 'ROW', row: rows[rowIdx] }) ?? 1;
965-
const { insetInlineStart, ...style } = getCellStyle(column, colSpan);
965+
const style = getCellStyle(column, colSpan);
966+
const { insetInlineStart } = style;
966967
const marginEnd = 'calc(var(--rdg-drag-handle-size) * -0.5 + 1px)';
967968
const isLastColumn = column.idx + colSpan - 1 === maxColIdx;
968969
const dragHandleStyle: React.CSSProperties = {
@@ -1127,7 +1128,7 @@ export function DataGrid<R, SR = unknown, K extends Key = Key>(props: DataGridPr
11271128
selectedCellIdx: selectedRowIdx === rowIdx ? selectedIdx : undefined,
11281129
draggedOverCellIdx: getDraggedOverCellIdx(rowIdx),
11291130
lastFrozenColumnIndex,
1130-
onRowChange: handleFormatterRowChangeLatest,
1131+
onRowChange: updateRowLatest,
11311132
selectCell: selectCellLatest,
11321133
selectedCellEditor: getCellEditor(rowIdx),
11331134
isTreeGrid
@@ -1222,7 +1223,7 @@ export function DataGrid<R, SR = unknown, K extends Key = Key>(props: DataGridPr
12221223
columns={getRowViewportColumns(mainHeaderRowIdx)}
12231224
onColumnResize={handleColumnResizeLatest}
12241225
onColumnResizeEnd={handleColumnResizeEndLatest}
1225-
onColumnsReorder={onColumnsReorderLastest}
1226+
onColumnsReorder={onColumnsReorderLatest}
12261227
sortColumns={sortColumns}
12271228
onSortColumnsChange={onSortColumnsChangeLatest}
12281229
lastFrozenColumnIndex={lastFrozenColumnIndex}

0 commit comments

Comments
 (0)