Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,10 +66,10 @@ jobs:

# https://docs.npmjs.com/trusted-publishers
- name: Publish to npm
run: npm publish
run: npm publish --tag latest

- name: Push commit and tag
run: git push origin main --follow-tags
- name: Push tag
run: git push origin v${{ inputs.version }}

- name: Create GitHub Release
run: gh release create v${{ inputs.version }} --title "v${{ inputs.version }}" --generate-notes
Expand Down
5 changes: 4 additions & 1 deletion eslint.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ export default defineConfig([
'no-unsafe-finally': 1,
'no-unsafe-negation': [1, { enforceForOrderingRelations: true }],
'no-unsafe-optional-chaining': [1, { disallowArithmeticOperators: true }],
'no-unused-private-class-members': 0,
'no-unused-private-class-members': 0, // replaced by @typescript-eslint/no-unused-private-class-members
'no-unused-vars': 0, // replaced by @typescript-eslint/no-unused-vars
'no-use-before-define': 0,
'no-useless-backreference': 1,
Expand Down Expand Up @@ -588,6 +588,7 @@ export default defineConfig([
],
'@typescript-eslint/no-shadow': 0,
'@typescript-eslint/no-unused-expressions': 0,
'@typescript-eslint/no-unused-private-class-members': 0,
'@typescript-eslint/no-unused-vars': [1, { ignoreRestSiblings: true }],
'@typescript-eslint/no-use-before-define': 0,
'@typescript-eslint/no-useless-constructor': 0,
Expand Down Expand Up @@ -673,7 +674,9 @@ export default defineConfig([
'vitest/prefer-to-have-length': 1,
'vitest/prefer-todo': 1,
'vitest/prefer-vi-mocked': 1,
'vitest/require-awaited-expect-poll': 1,
'vitest/require-hook': 0,
'vitest/require-import-vi-mock': 1,
'vitest/require-local-test-context-for-concurrent-snapshots': 0,
'vitest/require-mock-type-parameters': 0,
'vitest/require-to-throw-message': 0,
Expand Down
38 changes: 18 additions & 20 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "react-data-grid",
"version": "7.0.0-beta.58",
"version": "7.0.0-beta.59",
"license": "MIT",
"description": "Feature-rich and customizable data grid React component",
"keywords": [
Expand Down Expand Up @@ -47,47 +47,45 @@
"eslint:fix": "node --run eslint -- --fix",
"prettier:check": "prettier --check .",
"prettier:format": "prettier --write .",
"typecheck": "tsc --build",
"prepublishOnly": "npm install && node --run build",
"postpublish": "git push --follow-tags origin HEAD"
"typecheck": "tsc --build"
},
"devDependencies": {
"@biomejs/biome": "2.3.7",
"@eslint-react/eslint-plugin": "^2.0.2",
"@eslint/markdown": "^7.3.0",
"@biomejs/biome": "2.3.8",
"@eslint-react/eslint-plugin": "^2.3.12",
"@eslint/markdown": "^7.5.1",
"@faker-js/faker": "^10.0.0",
"@ianvs/prettier-plugin-sort-imports": "^4.6.2",
"@tanstack/react-router": "^1.132.31",
"@tanstack/router-plugin": "^1.132.31",
"@types/node": "^24.8.0",
"@types/react": "^19.2.0",
"@types/react-dom": "^19.2.0",
"@typescript-eslint/eslint-plugin": "^8.39.1",
"@typescript-eslint/parser": "^8.39.1",
"@typescript-eslint/eslint-plugin": "^8.48.1",
"@typescript-eslint/parser": "^8.48.1",
"@vitejs/plugin-react": "^5.1.1",
"@vitest/browser-playwright": "^4.0.14",
"@vitest/coverage-istanbul": "^4.0.14",
"@vitest/eslint-plugin": "^1.3.4",
"@vitest/browser-playwright": "^4.0.15",
"@vitest/coverage-istanbul": "^4.0.15",
"@vitest/eslint-plugin": "^1.5.1",
"clsx": "^2.1.1",
"ecij": "^0.2.0",
"eslint": "^9.36.0",
"eslint": "^9.39.1",
"eslint-plugin-jest-dom": "^5.5.0",
"eslint-plugin-react": "^7.37.5",
"eslint-plugin-react-hooks": "^7.0.0",
"eslint-plugin-react-hooks": "^7.0.1",
"eslint-plugin-sonarjs": "^3.0.5",
"eslint-plugin-testing-library": "^7.10.0",
"eslint-plugin-testing-library": "^7.13.5",
"jspdf": "^3.0.1",
"jspdf-autotable": "^5.0.2",
"playwright": "^1.57.0",
"playwright": "~1.57.0",
"postcss": "^8.5.2",
"prettier": "3.6.2",
"react": "^19.2.0",
"react-dom": "^19.2.0",
"prettier": "3.7.4",
"react": "^19.2.1",
"react-dom": "^19.2.1",
"rolldown": "^1.0.0-beta.51",
"rolldown-plugin-dts": "^0.18.0",
"typescript": "~5.9.2",
"vite": "npm:rolldown-vite@^7.2.5",
"vitest": "^4.0.14",
"vitest": "^4.0.15",
"vitest-browser-react": "^2.0.2"
},
"peerDependencies": {
Expand Down
3 changes: 2 additions & 1 deletion src/EditCell.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,8 @@ const cellEditing = css`
type SharedCellRendererProps<R, SR> = Pick<CellRendererProps<R, SR>, 'colSpan'>;

interface EditCellProps<R, SR>
extends Omit<RenderEditCellProps<R, SR>, 'onRowChange' | 'onClose'>,
extends
Omit<RenderEditCellProps<R, SR>, 'onRowChange' | 'onClose'>,
SharedCellRendererProps<R, SR> {
rowIdx: number;
onRowChange: (row: R, commitChanges: boolean, shouldFocusCell: boolean) => void;
Expand Down
9 changes: 4 additions & 5 deletions src/TreeDataGrid.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,10 @@ import { useDefaultRenderers } from './DataGridDefaultRenderersContext';
import GroupedRow from './GroupRow';
import { defaultRenderRow } from './Row';

export interface TreeDataGridProps<R, SR = unknown, K extends Key = Key>
extends Omit<
DataGridProps<R, SR, K>,
'columns' | 'role' | 'aria-rowcount' | 'rowHeight' | 'onFill' | 'isRowSelectionDisabled'
> {
export interface TreeDataGridProps<R, SR = unknown, K extends Key = Key> extends Omit<
DataGridProps<R, SR, K>,
'columns' | 'role' | 'aria-rowcount' | 'rowHeight' | 'onFill' | 'isRowSelectionDisabled'
> {
columns: readonly Column<NoInfer<R>, NoInfer<SR>>[];
rowHeight?: Maybe<number | ((args: RowHeightArgs<NoInfer<R>>) => number)>;
groupBy: readonly string[];
Expand Down
30 changes: 18 additions & 12 deletions src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,8 @@ export interface RenderHeaderCellProps<TRow, TSummaryRow = unknown> {
}

interface BaseCellRendererProps<TRow, TSummaryRow = unknown>
extends Omit<React.ComponentProps<'div'>, 'children'>,
extends
Omit<React.ComponentProps<'div'>, 'children'>,
Pick<
DataGridProps<TRow, TSummaryRow>,
'onCellMouseDown' | 'onCellClick' | 'onCellDoubleClick' | 'onCellContextMenu'
Expand All @@ -170,8 +171,10 @@ interface BaseCellRendererProps<TRow, TSummaryRow = unknown>
selectCell: (position: Position, options?: SelectCellOptions) => void;
}

export interface CellRendererProps<TRow, TSummaryRow>
extends BaseCellRendererProps<TRow, TSummaryRow> {
export interface CellRendererProps<TRow, TSummaryRow> extends BaseCellRendererProps<
TRow,
TSummaryRow
> {
column: CalculatedColumn<TRow, TSummaryRow>;
row: TRow;
colSpan: number | undefined;
Expand Down Expand Up @@ -229,8 +232,10 @@ export type CellMouseEventHandler<R, SR> = Maybe<
(args: CellMouseArgs<NoInfer<R>, NoInfer<SR>>, event: CellMouseEvent) => void
>;

export interface BaseRenderRowProps<TRow, TSummaryRow = unknown>
extends BaseCellRendererProps<TRow, TSummaryRow> {
export interface BaseRenderRowProps<TRow, TSummaryRow = unknown> extends BaseCellRendererProps<
TRow,
TSummaryRow
> {
viewportColumns: readonly CalculatedColumn<TRow, TSummaryRow>[];
rowIdx: number;
selectedCellIdx: number | undefined;
Expand All @@ -239,8 +244,10 @@ export interface BaseRenderRowProps<TRow, TSummaryRow = unknown>
gridRowStart: number;
}

export interface RenderRowProps<TRow, TSummaryRow = unknown>
extends BaseRenderRowProps<TRow, TSummaryRow> {
export interface RenderRowProps<TRow, TSummaryRow = unknown> extends BaseRenderRowProps<
TRow,
TSummaryRow
> {
row: TRow;
lastFrozenColumnIndex: number;
draggedOverCellIdx: number | undefined;
Expand Down Expand Up @@ -317,11 +324,10 @@ export interface RenderSortPriorityProps {

export interface RenderSortStatusProps extends RenderSortIconProps, RenderSortPriorityProps {}

export interface RenderCheckboxProps
extends Pick<
React.ComponentProps<'input'>,
'aria-label' | 'aria-labelledby' | 'checked' | 'tabIndex' | 'disabled'
> {
export interface RenderCheckboxProps extends Pick<
React.ComponentProps<'input'>,
'aria-label' | 'aria-labelledby' | 'checked' | 'tabIndex' | 'disabled'
> {
indeterminate?: boolean | undefined;
onChange: (checked: boolean, shift: boolean) => void;
}
Expand Down
2 changes: 1 addition & 1 deletion test/browser/column/key.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,5 @@ test('key is escaped in query selectors', () => {

expect(async () => {
await setup({ columns, rows: [] });
}).not.toThrow();
}).not.toThrowError();
});
3 changes: 2 additions & 1 deletion test/browser/column/renderEditCell.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -337,7 +337,8 @@ describe('Editor', () => {
});

interface EditorTestProps
extends Pick<Column<Row>, 'editorOptions' | 'editable'>,
extends
Pick<Column<Row>, 'editorOptions' | 'editable'>,
Pick<DataGridProps<Row>, 'onCellKeyDown'> {
onSave?: (rows: readonly Row[]) => void;
gridRows?: readonly Row[];
Expand Down
Loading