{"id":15173156,"url":"https://github.com/supabase/react-data-grid","last_synced_at":"2025-10-01T10:31:26.696Z","repository":{"id":36984280,"uuid":"364112128","full_name":"supabase/react-data-grid","owner":"supabase","description":"Excel-like grid component built with React, with editors, keyboard navigation, copy \u0026 paste, and the like","archived":true,"fork":true,"pushed_at":"2024-01-08T01:22:59.000Z","size":114621,"stargazers_count":29,"open_issues_count":10,"forks_count":10,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-25T06:32:38.158Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"Comcast/react-data-grid","license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/supabase.png","metadata":{"funding":{"github":["supabase"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null},"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null}},"created_at":"2021-05-04T01:54:12.000Z","updated_at":"2025-09-22T17:19:15.000Z","dependencies_parsed_at":"2023-10-11T01:10:49.968Z","dependency_job_id":null,"html_url":"https://github.com/supabase/react-data-grid","commit_stats":{"total_commits":2013,"total_committers":135,"mean_commits":"14.911111111111111","dds":0.7719821162444114,"last_synced_commit":"039e5f800f4534ab5de996b4cf5c1bf050f7fd3c"},"previous_names":[],"tags_count":100,"template":false,"template_full_name":null,"purl":"pkg:github/supabase/react-data-grid","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/supabase%2Freact-data-grid","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/supabase%2Freact-data-grid/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/supabase%2Freact-data-grid/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/supabase%2Freact-data-grid/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/supabase","download_url":"https://codeload.github.com/supabase/react-data-grid/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/supabase%2Freact-data-grid/sbom","scorecard":{"id":859186,"data":{"date":"2025-08-11","repo":{"name":"github.com/supabase/react-data-grid","commit":"b1395c96eefa79924c745211f12d06350ea8fb4a"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.7,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/ci.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"project is archived","details":["Warn: Repository is archived."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":0,"reason":"Found 1/23 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/supabase/react-data-grid/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/supabase/react-data-grid/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/supabase/react-data-grid/ci.yml/main?enable=pin","Warn: npmCommand not pinned by hash: .github/workflows/ci.yml:27","Info:   0 out of   3 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 9 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"38 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-hpx4-r86g-5jrg","Warn: Project is vulnerable to: GHSA-prr3-c3m5-p7q2","Warn: Project is vulnerable to: GHSA-968p-4wvh-cqc8","Warn: Project is vulnerable to: GHSA-qwcr-r2fm-qrc7","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-v2mw-5mch-w8c5","Warn: Project is vulnerable to: GHSA-pxg6-pf52-xh8x","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-gx9m-whjm-85jf","Warn: Project is vulnerable to: GHSA-mmhx-hmjr-r674","Warn: Project is vulnerable to: GHSA-vhxf-7vqr-mrjg","Warn: Project is vulnerable to: GHSA-rv95-896h-c2vc","Warn: Project is vulnerable to: GHSA-qw6h-vgh9-j6wx","Warn: Project is vulnerable to: GHSA-jchw-25xp-jwwc","Warn: Project is vulnerable to: GHSA-cxjh-pqwp-8mfp","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-c7qv-q95q-8v27","Warn: Project is vulnerable to: GHSA-4www-5p9h-95mh","Warn: Project is vulnerable to: GHSA-9gqv-wp59-fq42","Warn: Project is vulnerable to: GHSA-w532-jxjh-hjhj","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-mwcw-c2x4-8c55","Warn: Project is vulnerable to: GHSA-76c9-3jph-rj3q","Warn: Project is vulnerable to: GHSA-9wv6-86v2-598j","Warn: Project is vulnerable to: GHSA-rhx6-c78j-4q9w","Warn: Project is vulnerable to: GHSA-gcx4-mw62-g8wm","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-m6fv-jmcg-4jfg","Warn: Project is vulnerable to: GHSA-76p7-773f-r4q5","Warn: Project is vulnerable to: GHSA-cm22-4g7w-348p","Warn: Project is vulnerable to: GHSA-4vvj-4cpr-p986","Warn: Project is vulnerable to: GHSA-wr3j-pwj9-hqq6","Warn: Project is vulnerable to: GHSA-4v9v-hfq4-rm2v","Warn: Project is vulnerable to: GHSA-9jgg-88mc-972h","Warn: Project is vulnerable to: GHSA-j8xg-fqg3-53r7","Warn: Project is vulnerable to: GHSA-3h5v-q93c-6h6q","Warn: Project is vulnerable to: GHSA-5pgg-2g8v-p4x9"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-24T00:45:15.134Z","repository_id":36984280,"created_at":"2025-08-24T00:45:15.134Z","updated_at":"2025-08-24T00:45:15.134Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":277009206,"owners_count":25744538,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-25T02:00:09.612Z","response_time":80,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-09-27T10:41:37.889Z","updated_at":"2025-10-01T10:31:26.270Z","avatar_url":"https://github.com/supabase.png","language":"TypeScript","funding_links":["https://github.com/sponsors/supabase"],"categories":[],"sub_categories":[],"readme":"# react-data-grid\n\n[![npm-badge]][npm-url]\n[![type-badge]][npm-url]\n[![size-badge]][size-url]\n[![ci-badge]][ci-url]\n\n[npm-badge]: https://img.shields.io/npm/v/@supabase/react-data-grid\n[npm-url]: https://www.npmjs.com/package/@supabase/react-data-grid\n[size-badge]: https://img.shields.io/bundlephobia/minzip/@supabase/react-data-grid\n[size-url]: https://bundlephobia.com/result?p=@supabase/react-data-grid\n[type-badge]: https://img.shields.io/npm/types/@supabase/react-data-grid\n[ci-badge]: https://github.com/supabase/react-data-grid/workflows/CI/badge.svg\n[ci-url]: https://github.com/supabase/react-data-grid/actions\n\n## Features\n\n- [React 16.14+ \u0026 17.0+](package.json) support\n- [Evergreen browsers and server-side rendering](browserslist) support\n- Tree-shaking support and only [one npm dependency](package.json) to keep your bundles slim\n- Great performance thanks to virtualization: columns and rows outside the viewport are not rendered\n- Strictly typed with TypeScript\n- [Keyboard accessibility](\u003c(https://adazzle.github.io/react-data-grid/#/common-features)\u003e)\n- Light and dark mode support out of the box. The light or dark themes can be enforced using the `rdg-light` or `rdg-dark` classes.\n- [Frozen columns](https://adazzle.github.io/react-data-grid/#/common-features)\n- [Column resizing](https://adazzle.github.io/react-data-grid/#/common-features)\n- [Multi-column sorting](https://adazzle.github.io/react-data-grid/#/common-features)\n  - Click on a sortable column header to toggle between its ascending/descending sort order\n  - Ctrl+Click / Meta+Click to sort an additional column\n- [Column spanning](https://adazzle.github.io/react-data-grid/#/column-spanning)\n- [Row selection](https://adazzle.github.io/react-data-grid/#/common-features)\n- [Row grouping](https://adazzle.github.io/react-data-grid/#/grouping)\n- [Summary rows](https://adazzle.github.io/react-data-grid/#/common-features)\n- [Dynamic row heights](https://adazzle.github.io/react-data-grid/#/variable-row-height)\n- [No rows fallback](https://adazzle.github.io/react-data-grid/#/no-rows)\n- [Cell formatting](https://adazzle.github.io/react-data-grid/#/common-features)\n- [Cell editing](https://adazzle.github.io/react-data-grid/#/common-features)\n- [Cell copy / pasting](https://adazzle.github.io/react-data-grid/#/all-features)\n- [Cell value dragging / filling](https://adazzle.github.io/react-data-grid/#/all-features)\n\n## Links\n\n- [Examples website](https://adazzle.github.io/react-data-grid/)\n  - [Source code](website)\n- [Old website for react-data-grid v6](https://adazzle.github.io/react-data-grid/old/)\n- [Changelog](CHANGELOG.md)\n- [Contributing](CONTRIBUTING.md)\n\n## Install\n\n```sh\nnpm install @supabase/react-data-grid\n```\n\n`react-data-grid` is published as ECMAScript modules for evergreen browsers / bundlers, and CommonJS for server-side rendering / Jest.\n\n## Quick start\n\n```jsx\nimport DataGrid from 'react-data-grid';\n\nconst columns = [\n  { key: 'id', name: 'ID' },\n  { key: 'title', name: 'Title' }\n];\n\nconst rows = [\n  { id: 0, title: 'Example' },\n  { id: 1, title: 'Demo' }\n];\n\nfunction App() {\n  return \u003cDataGrid columns={columns} rows={rows} /\u003e;\n}\n```\n\n## API\n\n### Components\n\n#### `\u003cDataGrid /\u003e`\n\n##### Props\n\n###### `columns: readonly Column\u003cR, SR\u003e[]`\n\nSee [`Column`](#column).\n\nAn array describing the grid's columns.\n\n:warning: Passing a new `columns` array will trigger a re-render for the whole grid, avoid changing it as much as possible for optimal performance.\n\n###### `rows: readonly R[]`\n\nAn array of rows, the rows data can be of any type.\n\n###### `summaryRows?: Maybe\u003creadonly SR[]\u003e`\n\nAn optional array of summary rows, usually used to display total values for example.\n\n###### `rowKeyGetter?: Maybe\u003c(row: R) =\u003e K\u003e`\n\nA function returning a unique key/identifier per row. `rowKeyGetter` is required for row selection to work.\n\n```tsx\nimport DataGrid from 'react-data-grid';\n\ninterface Row {\n  id: number;\n  name: string;\n}\n\nfunction rowKeyGetter(row: Row) {\n  return row.id;\n}\n\nfunction MyGrid() {\n  return \u003cDataGrid columns={columns} rows={rows} rowKeyGetter={rowKeyGetter} /\u003e;\n}\n```\n\n:bulb: While optional, setting this prop is recommended for optimal performance as the returned value is used to set the `key` prop on the row elements.\n\n###### `onRowsChange?: Maybe\u003c(rows: R[], data: RowsChangeData\u003cR, SR\u003e) =\u003e void\u003e`\n\nA function receiving row updates.\nThe first parameter is a new rows array with both the updated rows and the other untouched rows.\nThe second parameter is an object with an `indexes` array highlighting which rows have changed by their index, and the `column` where the change happened.\n\n```tsx\nimport { useState } from 'react';\nimport DataGrid from 'react-data-grid';\n\nfunction MyGrid() {\n  const [rows, setRows] = useState(initialRows);\n\n  return \u003cDataGrid columns={columns} rows={rows} onRowsChange={setRows} /\u003e;\n}\n```\n\n###### `rowHeight?: Maybe\u003cnumber | ((args: RowHeightArgs\u003cR\u003e) =\u003e number)\u003e`\n\n**Default:** `35` pixels\n\nEither a number defining the height of row in pixels, or a function returning dynamic row heights.\n\n###### `headerRowHeight?: Maybe\u003cnumber\u003e`\n\n**Default:** `35` pixels\n\nA number defining the height of the header row.\n\n###### `summaryRowHeight?: Maybe\u003cnumber\u003e`\n\n**Default:** `35` pixels\n\nA number defining the height of summary rows.\n\n###### `selectedRows?: Maybe\u003cReadonlySet\u003cK\u003e\u003e`\n\n###### `onSelectedRowsChange?: Maybe\u003c(selectedRows: Set\u003cK\u003e) =\u003e void\u003e`\n\n###### `sortColumns?: Maybe\u003creadonly SortColumn[]\u003e`\n\n###### `onSortColumnsChange?: Maybe\u003c(sortColumns: SortColumn[]) =\u003e void\u003e`\n\n###### `defaultColumnOptions?: Maybe\u003cDefaultColumnOptions\u003cR, SR\u003e\u003e`\n\n###### `groupBy?: Maybe\u003creadonly string[]\u003e`\n\n###### `rowGrouper?: Maybe\u003c(rows: readonly R[], columnKey: string) =\u003e Record\u003cstring, readonly R[]\u003e\u003e`\n\n###### `expandedGroupIds?: Maybe\u003cReadonlySet\u003cunknown\u003e\u003e`\n\n###### `onExpandedGroupIdsChange?: Maybe\u003c(expandedGroupIds: Set\u003cunknown\u003e) =\u003e void\u003e`\n\n###### `onFill?: Maybe\u003c(event: FillEvent\u003cR\u003e) =\u003e R\u003e`\n\n###### `onPaste?: Maybe\u003c(event: PasteEvent\u003cR\u003e) =\u003e R\u003e`\n\n###### `onRowClick?: Maybe\u003c(row: R, column: CalculatedColumn\u003cR, SR\u003e) =\u003e void\u003e`\n\n###### `onRowDoubleClick?: Maybe\u003c(row: R, column: CalculatedColumn\u003cR, SR\u003e) =\u003e void\u003e`\n\n###### `onScroll?: Maybe\u003c(event: React.UIEvent\u003cHTMLDivElement\u003e) =\u003e void\u003e`\n\n###### `onColumnResize?: Maybe\u003c(idx: number, width: number) =\u003e void\u003e`\n\n###### `cellNavigationMode?: Maybe\u003cCellNavigationMode\u003e`\n\n###### `enableVirtualization?: Maybe\u003cboolean\u003e`\n\n###### \u003cspan name=\"rowRenderer\"\u003e`rowRenderer?: Maybe\u003cReact.ComponentType\u003cRowRendererProps\u003cR, SR\u003e\u003e\u003e`\u003c/span\u003e\n\nThe default `\u003cRow /\u003e` component can be wrapped via the `rowRenderer` prop to add context providers or tweak props for example.\n\n```tsx\nimport DataGrid, { Row, RowRendererProps } from 'react-data-grid';\n\nfunction MyRowRenderer(props: RowRendererProps\u003cRow\u003e) {\n  return (\n    \u003cMyContext.Provider value={123}\u003e\n      \u003cRow {...props} /\u003e\n    \u003c/MyContext.Provider\u003e\n  );\n}\n\nfunction MyGrid() {\n  return \u003cDataGrid columns={columns} rows={rows} rowRenderer={MyRowRenderer} /\u003e;\n}\n```\n\n:warning: To prevent all rows from being unmounted on re-renders, make sure to pass a static or memoized component to `rowRenderer`.\n\n###### `noRowsFallback?: React.ReactNode`\n\n###### `rowClass?: Maybe\u003c(row: R) =\u003e Maybe\u003cstring\u003e\u003e`\n\n###### `className?: string | undefined`\n\n###### `style?: CSSProperties | undefined`\n\n###### `'aria-label'?: string | undefined`\n\n###### `'aria-labelledby'?: string | undefined`\n\n###### `'aria-describedby'?: string | undefined`\n\n###### `'data-testid'?: Maybe\u003cstring\u003e`\n\n#### `\u003cTextEditor /\u003e`\n\n##### Props\n\nSee [`EditorProps`](#editorprops)\n\n#### `\u003cRow /\u003e`\n\nSee [`rowRenderer`](#rowRenderer)\n\n##### Props\n\nSee [`RowRendererProps`](#rowrendererprops)\n\nThe `ref` prop is supported.\n\n#### `\u003cSortableHeaderCell /\u003e`\n\n##### Props\n\n###### `onSort: (ctrlClick: boolean) =\u003e void`\n\n###### `sortDirection: SortDirection | undefined`\n\n###### `priority: number | undefined`\n\n###### `isCellSelected: boolean`\n\n###### `children: React.ReactNode`\n\n#### `\u003cValueFormatter /\u003e`\n\n##### Props\n\nSee [`FormatterProps`](#formatterprops)\n\n#### `\u003cSelectCellFormatter /\u003e`\n\n##### Props\n\n###### `value: boolean`\n\n###### `isCellSelected: boolean`\n\n###### `disabled?: boolean | undefined`\n\n###### `onChange: (value: boolean, isShiftClick: boolean) =\u003e void`\n\n###### `onClick?: MouseEventHandler\u003cT\u003e | undefined`\n\n###### `'aria-label'?: string | undefined`\n\n###### `'aria-labelledby'?: string | undefined`\n\n#### `\u003cToggleGroupFormatter /\u003e`\n\n##### Props\n\nSee [`GroupFormatterProps`](#groupformatterprops)\n\n### Hooks\n\n#### `useRowSelection\u003cR\u003e(): [boolean, (selectRowEvent: SelectRowEvent\u003cR\u003e) =\u003e void]`\n\n### Other\n\n#### `SelectColumn: Column\u003cany, any\u003e`\n\n#### `SELECT_COLUMN_KEY = 'select-row'`\n\n### Types\n\n#### `Column`\n\n#### `DataGridHandle`\n\n#### `EditorProps`\n\n#### `FormatterProps`\n\n#### `GroupFormatterProps`\n\n#### `RowRendererProps`\n\n### Generics\n\n- `R`, `TRow`: Row type\n- `SR`, `TSummaryRow`: Summary row type\n- `K`: Row key type\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsupabase%2Freact-data-grid","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsupabase%2Freact-data-grid","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsupabase%2Freact-data-grid/lists"}