Skip to content

Commit 1eac561

Browse files
authored
Merge branch 'canary' into ts42
2 parents 8dae46c + d7095c5 commit 1eac561

File tree

5 files changed

+37
-10
lines changed

5 files changed

+37
-10
lines changed

README.md

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,17 @@
1-
# react-data-grid [![npm-badge]][npm-url] [![ci-badge]][ci-url]
1+
# react-data-grid
2+
3+
[![npm-badge]][npm-url]
4+
[![type-badge]][npm-url]
5+
[![size-badge]][size-url]
6+
[![ci-badge]][ci-url]
27

38
[npm-badge]: https://img.shields.io/npm/v/react-data-grid
49
[npm-url]: https://www.npmjs.com/package/react-data-grid
10+
[size-badge]: https://img.shields.io/bundlephobia/minzip/react-data-grid
11+
[size-url]: https://bundlephobia.com/result?p=react-data-grid
12+
[type-badge]: https://img.shields.io/npm/types/react-data-grid
513
[ci-badge]: https://github.com/adazzle/react-data-grid/workflows/CI/badge.svg
6-
[ci-url]: https://github.com/adazzle/react-data-grid/actions?query=workflow%3ACI
14+
[ci-url]: https://github.com/adazzle/react-data-grid/actions
715

816
## Install
917

browserslist

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ last 2 chrome versions
22
last 2 edge versions
33
last 2 firefox versions
44
last 2 safari versions
5+
maintained node versions

src/DataGrid.tsx

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import type {
3030
Filters,
3131
Position,
3232
RowRendererProps,
33+
RowsChangeData,
3334
SelectRowEvent,
3435
SelectedCellProps,
3536
EditCellProps,
@@ -87,7 +88,7 @@ export interface DataGridProps<R, SR = unknown> extends SharedDivProps {
8788
summaryRows?: readonly SR[];
8889
/** The getter should return a unique key for each row */
8990
rowKeyGetter?: (row: R) => React.Key;
90-
onRowsChange?: (rows: R[]) => void;
91+
onRowsChange?: (rows: R[], data: RowsChangeData<R, SR>) => void;
9192

9293
/**
9394
* Dimensions props
@@ -454,7 +455,10 @@ function DataGrid<R, SR>({
454455
if (typeof onRowsChange !== 'function') return;
455456
const updatedRows = [...rawRows];
456457
updatedRows[rowIdx] = row;
457-
onRowsChange(updatedRows);
458+
onRowsChange(updatedRows, {
459+
indexes: [rowIdx],
460+
column: columns[selectedPosition.idx]
461+
});
458462
}
459463

460464
function commitEditorChanges() {
@@ -536,13 +540,17 @@ function DataGrid<R, SR>({
536540
const startRowIndex = rowIdx < overRowIdx ? rowIdx + 1 : overRowIdx;
537541
const endRowIndex = rowIdx < overRowIdx ? overRowIdx + 1 : rowIdx;
538542
const targetRows = rawRows.slice(startRowIndex, endRowIndex);
539-
540-
const updatedTargetRows = onFill({ columnKey: columns[idx].key, sourceRow, targetRows });
543+
const column = columns[idx];
544+
const updatedTargetRows = onFill({ columnKey: column.key, sourceRow, targetRows });
541545
const updatedRows = [...rawRows];
546+
const indexes: number[] = [];
547+
542548
for (let i = startRowIndex; i < endRowIndex; i++) {
543549
updatedRows[i] = updatedTargetRows[i - startRowIndex];
550+
indexes.push(i);
544551
}
545-
onRowsChange(updatedRows);
552+
553+
onRowsChange(updatedRows, { indexes, column });
546554
setDraggedOverRowIdx(undefined);
547555
}
548556

@@ -574,13 +582,17 @@ function DataGrid<R, SR>({
574582
const { idx, rowIdx } = selectedPosition;
575583
const sourceRow = rawRows[rowIdx];
576584
const targetRows = rawRows.slice(rowIdx + 1);
577-
578-
const updatedTargetRows = onFill({ columnKey: columns[idx].key, sourceRow, targetRows });
585+
const column = columns[idx];
586+
const updatedTargetRows = onFill({ columnKey: column.key, sourceRow, targetRows });
579587
const updatedRows = [...rawRows];
588+
const indexes: number[] = [];
589+
580590
for (let i = rowIdx + 1; i < updatedRows.length; i++) {
581591
updatedRows[i] = updatedTargetRows[i - rowIdx - 1];
592+
indexes.push(i);
582593
}
583-
onRowsChange(updatedRows);
594+
595+
onRowsChange(updatedRows, { indexes, column });
584596
}
585597

586598
function handleEditorRowChange(row: Readonly<R>, commitChanges?: boolean) {

src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ export type {
2222
RowRendererProps,
2323
FilterRendererProps,
2424
Filters,
25+
RowsChangeData,
2526
SelectRowEvent,
2627
FillEvent,
2728
PasteEvent

src/types.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,11 @@ export interface FilterRendererProps<TRow, TFilterValue = unknown, TSummaryRow =
183183

184184
export type Filters = Record<string, any>;
185185

186+
export interface RowsChangeData<R, SR = unknown> {
187+
indexes: number[];
188+
column: CalculatedColumn<R, SR>;
189+
}
190+
186191
export interface SelectRowEvent {
187192
rowIdx: number;
188193
checked: boolean;

0 commit comments

Comments
 (0)