diff --git a/eslint.config.js b/eslint.config.js index 3b09afc894..6edf43f002 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -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, @@ -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, @@ -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, diff --git a/package.json b/package.json index dffebcc66b..a4d25d69a7 100644 --- a/package.json +++ b/package.json @@ -52,9 +52,9 @@ "postpublish": "git push --follow-tags origin HEAD" }, "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", @@ -62,32 +62,32 @@ "@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.3", + "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": { diff --git a/src/EditCell.tsx b/src/EditCell.tsx index c497929a44..1138192035 100644 --- a/src/EditCell.tsx +++ b/src/EditCell.tsx @@ -53,7 +53,8 @@ const cellEditing = css` type SharedCellRendererProps = Pick, 'colSpan'>; interface EditCellProps - extends Omit, 'onRowChange' | 'onClose'>, + extends + Omit, 'onRowChange' | 'onClose'>, SharedCellRendererProps { rowIdx: number; onRowChange: (row: R, commitChanges: boolean, shouldFocusCell: boolean) => void; diff --git a/src/TreeDataGrid.tsx b/src/TreeDataGrid.tsx index 383866dd10..5194d770a8 100644 --- a/src/TreeDataGrid.tsx +++ b/src/TreeDataGrid.tsx @@ -25,11 +25,10 @@ import { useDefaultRenderers } from './DataGridDefaultRenderersContext'; import GroupedRow from './GroupRow'; import { defaultRenderRow } from './Row'; -export interface TreeDataGridProps - extends Omit< - DataGridProps, - 'columns' | 'role' | 'aria-rowcount' | 'rowHeight' | 'onFill' | 'isRowSelectionDisabled' - > { +export interface TreeDataGridProps extends Omit< + DataGridProps, + 'columns' | 'role' | 'aria-rowcount' | 'rowHeight' | 'onFill' | 'isRowSelectionDisabled' +> { columns: readonly Column, NoInfer>[]; rowHeight?: Maybe>) => number)>; groupBy: readonly string[]; diff --git a/src/types.ts b/src/types.ts index 3222b60e26..f635ed2d0e 100644 --- a/src/types.ts +++ b/src/types.ts @@ -161,7 +161,8 @@ export interface RenderHeaderCellProps { } interface BaseCellRendererProps - extends Omit, 'children'>, + extends + Omit, 'children'>, Pick< DataGridProps, 'onCellMouseDown' | 'onCellClick' | 'onCellDoubleClick' | 'onCellContextMenu' @@ -170,8 +171,10 @@ interface BaseCellRendererProps selectCell: (position: Position, options?: SelectCellOptions) => void; } -export interface CellRendererProps - extends BaseCellRendererProps { +export interface CellRendererProps extends BaseCellRendererProps< + TRow, + TSummaryRow +> { column: CalculatedColumn; row: TRow; colSpan: number | undefined; @@ -229,8 +232,10 @@ export type CellMouseEventHandler = Maybe< (args: CellMouseArgs, NoInfer>, event: CellMouseEvent) => void >; -export interface BaseRenderRowProps - extends BaseCellRendererProps { +export interface BaseRenderRowProps extends BaseCellRendererProps< + TRow, + TSummaryRow +> { viewportColumns: readonly CalculatedColumn[]; rowIdx: number; selectedCellIdx: number | undefined; @@ -239,8 +244,10 @@ export interface BaseRenderRowProps gridRowStart: number; } -export interface RenderRowProps - extends BaseRenderRowProps { +export interface RenderRowProps extends BaseRenderRowProps< + TRow, + TSummaryRow +> { row: TRow; lastFrozenColumnIndex: number; draggedOverCellIdx: number | undefined; @@ -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; } diff --git a/test/browser/column/key.test.ts b/test/browser/column/key.test.ts index 07ef5b4fe4..48817be9bb 100644 --- a/test/browser/column/key.test.ts +++ b/test/browser/column/key.test.ts @@ -11,5 +11,5 @@ test('key is escaped in query selectors', () => { expect(async () => { await setup({ columns, rows: [] }); - }).not.toThrow(); + }).not.toThrowError(); }); diff --git a/test/browser/column/renderEditCell.test.tsx b/test/browser/column/renderEditCell.test.tsx index dedd460149..10570bb904 100644 --- a/test/browser/column/renderEditCell.test.tsx +++ b/test/browser/column/renderEditCell.test.tsx @@ -337,7 +337,8 @@ describe('Editor', () => { }); interface EditorTestProps - extends Pick, 'editorOptions' | 'editable'>, + extends + Pick, 'editorOptions' | 'editable'>, Pick, 'onCellKeyDown'> { onSave?: (rows: readonly Row[]) => void; gridRows?: readonly Row[];