diff --git a/examples/angular/basic-external-atoms/src/app/app.ts b/examples/angular/basic-external-atoms/src/app/app.ts
index ba5cf40d2d..99abe83fb2 100644
--- a/examples/angular/basic-external-atoms/src/app/app.ts
+++ b/examples/angular/basic-external-atoms/src/app/app.ts
@@ -1,8 +1,8 @@
import {
ChangeDetectionStrategy,
Component,
- effect,
Injector,
+ effect,
inject,
signal,
} from '@angular/core'
diff --git a/examples/angular/row-selection-signal/src/app/app.component.ts b/examples/angular/row-selection-signal/src/app/app.component.ts
index 0efb7be024..439bfebb49 100644
--- a/examples/angular/row-selection-signal/src/app/app.component.ts
+++ b/examples/angular/row-selection-signal/src/app/app.component.ts
@@ -1,8 +1,8 @@
import {
ChangeDetectionStrategy,
Component,
- computed,
Injector,
+ computed,
inject,
signal,
viewChild,
diff --git a/examples/angular/row-selection/src/app/app.ts b/examples/angular/row-selection/src/app/app.ts
index 03560f13c9..9de3acfd3c 100644
--- a/examples/angular/row-selection/src/app/app.ts
+++ b/examples/angular/row-selection/src/app/app.ts
@@ -1,8 +1,8 @@
import {
ChangeDetectionStrategy,
Component,
- computed,
Injector,
+ computed,
inject,
signal,
} from '@angular/core'
diff --git a/examples/angular/with-tanstack-form/src/app/app.ts b/examples/angular/with-tanstack-form/src/app/app.ts
index c36ef586db..1c731794c9 100644
--- a/examples/angular/with-tanstack-form/src/app/app.ts
+++ b/examples/angular/with-tanstack-form/src/app/app.ts
@@ -1,8 +1,8 @@
import {
ChangeDetectionStrategy,
Component,
- effect,
Injector,
+ effect,
inject,
signal,
untracked,
diff --git a/examples/react/kitchen-sink-chakra-ui/src/components/data-table/shared.tsx b/examples/react/kitchen-sink-chakra-ui/src/components/data-table/shared.tsx
index 2bbdb59d5a..5795a7635a 100644
--- a/examples/react/kitchen-sink-chakra-ui/src/components/data-table/shared.tsx
+++ b/examples/react/kitchen-sink-chakra-ui/src/components/data-table/shared.tsx
@@ -232,7 +232,7 @@ export function CheckboxField({
checked={indeterminate ? 'indeterminate' : checked}
onCheckedChange={(details) => onCheckedChange?.(details.checked === true)}
>
-
+
{label ? {label} : null}
diff --git a/examples/react/kitchen-sink-hero-ui/src/components/data-table/data-table-filter-list.tsx b/examples/react/kitchen-sink-hero-ui/src/components/data-table/data-table-filter-list.tsx
index 985dfc3ec6..fcfffc96b4 100644
--- a/examples/react/kitchen-sink-hero-ui/src/components/data-table/data-table-filter-list.tsx
+++ b/examples/react/kitchen-sink-hero-ui/src/components/data-table/data-table-filter-list.tsx
@@ -188,7 +188,7 @@ export function DataTableFilterList(): React.ReactNode {
setColumnFilters(
columnFilters.map((filter: ExtendedColumnFilter) =>
filter.filterId === filterId ? { ...filter, ...patch } : filter,
- ) as any,
+ ),
)
}
@@ -240,7 +240,7 @@ export function DataTableFilterList(): React.ReactNode {
columnFilters.map((item: ExtendedColumnFilter) => ({
...item,
joinOperator: joinOperator as 'and' | 'or',
- })) as any,
+ })),
)
}
/>
@@ -293,7 +293,7 @@ export function DataTableFilterList(): React.ReactNode {
columnFilters.filter(
(item: ExtendedColumnFilter) =>
item.filterId !== filter.filterId,
- ) as any,
+ ),
)
}
>
@@ -309,7 +309,7 @@ export function DataTableFilterList(): React.ReactNode {
diff --git a/examples/react/kitchen-sink-hero-ui/src/main.tsx b/examples/react/kitchen-sink-hero-ui/src/main.tsx
index 4676ffc00e..1a202206f0 100644
--- a/examples/react/kitchen-sink-hero-ui/src/main.tsx
+++ b/examples/react/kitchen-sink-hero-ui/src/main.tsx
@@ -6,10 +6,10 @@ import * as ReactDOM from 'react-dom/client'
import { useDebouncedCallback } from '@tanstack/react-pacer/debouncer'
import {
Button,
+ Table as HeroTable,
Input,
Surface,
Switch,
- Table as HeroTable,
Tooltip,
cn,
useTheme,
diff --git a/examples/react/kitchen-sink-mantine/src/components/data-table/data-table-filter-list.tsx b/examples/react/kitchen-sink-mantine/src/components/data-table/data-table-filter-list.tsx
index 2020e78f2e..efb3905fdc 100644
--- a/examples/react/kitchen-sink-mantine/src/components/data-table/data-table-filter-list.tsx
+++ b/examples/react/kitchen-sink-mantine/src/components/data-table/data-table-filter-list.tsx
@@ -18,12 +18,12 @@ import { IconFilter, IconTrash } from '@tabler/icons-react'
import type { Column, RowData } from '@tanstack/react-table'
import type { ExtendedColumnFilter } from '@/types'
import type { features } from '@/hooks/features'
-
-type AppColumn = Column
import { useTableContext } from '@/hooks/table'
import { getFilterOperators } from '@/lib/data-table'
import { toDateInputValue } from '@/components/data-table/shared'
+type AppColumn = Column
+
function FilterValueInput({
column,
filter,
diff --git a/examples/react/kitchen-sink-mantine/src/components/data-table/data-table-view-options.tsx b/examples/react/kitchen-sink-mantine/src/components/data-table/data-table-view-options.tsx
index 476401c250..6c7740fa3e 100644
--- a/examples/react/kitchen-sink-mantine/src/components/data-table/data-table-view-options.tsx
+++ b/examples/react/kitchen-sink-mantine/src/components/data-table/data-table-view-options.tsx
@@ -26,9 +26,9 @@ import type { DragEndEvent } from '@dnd-kit/core'
import type { Column, RowData } from '@tanstack/react-table'
import type { features } from '@/hooks/features'
import { useTableContext } from '@/hooks/table'
+import { SortableFrame } from '@/components/data-table/shared'
type AppColumn = Column
-import { SortableFrame } from '@/components/data-table/shared'
export function DataTableViewOptions(): React.ReactNode {
const table = useTableContext()
diff --git a/examples/react/kitchen-sink-material-ui/src/main.tsx b/examples/react/kitchen-sink-material-ui/src/main.tsx
index 9b7c5612e0..c48fde58a5 100644
--- a/examples/react/kitchen-sink-material-ui/src/main.tsx
+++ b/examples/react/kitchen-sink-material-ui/src/main.tsx
@@ -12,9 +12,9 @@ import {
InputAdornment,
Menu,
MenuItem,
+ Table as MuiTable,
Paper,
Stack,
- Table as MuiTable,
TableBody,
TableCell,
TableContainer,
diff --git a/examples/react/kitchen-sink-react-aria/src/components/data-table/data-table-filter-list.tsx b/examples/react/kitchen-sink-react-aria/src/components/data-table/data-table-filter-list.tsx
index 49d67ab39c..9620ca8202 100644
--- a/examples/react/kitchen-sink-react-aria/src/components/data-table/data-table-filter-list.tsx
+++ b/examples/react/kitchen-sink-react-aria/src/components/data-table/data-table-filter-list.tsx
@@ -197,7 +197,7 @@ export function DataTableFilterList(): React.ReactNode {
setColumnFilters(
columnFilters.map((filter) =>
filter.filterId === filterId ? { ...filter, ...patch } : filter,
- ) as any,
+ ),
)
}
@@ -212,8 +212,8 @@ export function DataTableFilterList(): React.ReactNode {
value: '',
operator: 'includesString',
joinOperator: columnFilters[0]?.joinOperator ?? 'and',
- } as ExtendedColumnFilter,
- ] as any)
+ },
+ ])
}
return (
@@ -249,7 +249,7 @@ export function DataTableFilterList(): React.ReactNode {
columnFilters.map((item) => ({
...item,
joinOperator: joinOperator as 'and' | 'or',
- })) as any,
+ })),
)
}
/>
@@ -299,7 +299,7 @@ export function DataTableFilterList(): React.ReactNode {
setColumnFilters(
columnFilters.filter(
(item) => item.filterId !== filter.filterId,
- ) as any,
+ ),
)
}
>
diff --git a/examples/react/kitchen-sink-shadcn-base/src/components/data-table/data-table-filter-list.tsx b/examples/react/kitchen-sink-shadcn-base/src/components/data-table/data-table-filter-list.tsx
index 1900ede680..ba06210b9c 100644
--- a/examples/react/kitchen-sink-shadcn-base/src/components/data-table/data-table-filter-list.tsx
+++ b/examples/react/kitchen-sink-shadcn-base/src/components/data-table/data-table-filter-list.tsx
@@ -9,11 +9,7 @@ import {
ListFilter,
Trash2,
} from 'lucide-react'
-import type {
- ExtendedColumnFilter,
- FilterOperator,
- JoinOperator,
-} from '@/types'
+import type { ExtendedColumnFilter, FilterOperator } from '@/types'
import type { Column, RowData } from '@tanstack/react-table'
import type { features } from '@/hooks/features'
@@ -670,7 +666,7 @@ export function DataTableFilterList(): React.ReactNode {
if (columnFilters.length > 0) {
const updatedFilters = columnFilters.map((f) => ({
...f,
- joinOperator: value as JoinOperator,
+ joinOperator: value,
}))
setColumnFilters(updatedFilters)
}
diff --git a/examples/react/material-react-table/src/main.tsx b/examples/react/material-react-table/src/main.tsx
index 664105ac50..e4a0a2e2af 100644
--- a/examples/react/material-react-table/src/main.tsx
+++ b/examples/react/material-react-table/src/main.tsx
@@ -16,6 +16,7 @@ import {
} from './material-react-table'
import { makeData } from './makeData'
import type { Person } from './makeData'
+import type { MRT_ColumnDef } from './material-react-table'
import './index.css'
const columnHelper = createMRTColumnHelper()
@@ -109,8 +110,8 @@ const theme = createTheme({
function App() {
const [data, setData] = React.useState(() => makeData(50))
- const table = useMaterialReactTable({
- columns,
+ const table = useMaterialReactTable({
+ columns: columns as Array>,
data,
enableColumnFilters: true,
enableColumnOrdering: true,
diff --git a/examples/react/material-react-table/src/material-react-table/components/MaterialReactTable.tsx b/examples/react/material-react-table/src/material-react-table/components/MaterialReactTable.tsx
index 8192420e02..fe2661a43a 100644
--- a/examples/react/material-react-table/src/material-react-table/components/MaterialReactTable.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/MaterialReactTable.tsx
@@ -32,5 +32,15 @@ export const MaterialReactTable = (
table = useMaterialReactTable(props)
}
- return
+ // `AppTable` (attached by `useAppTable`) provides the table via React context
+ // so MRT components can read it with `useTableContext()` instead of a prop.
+ const AppTable = (table as any).AppTable as React.FC<{
+ children: React.ReactNode
+ }>
+
+ return (
+
+
+
+ )
}
diff --git a/examples/react/material-react-table/src/material-react-table/components/body/MRT_TableBody.tsx b/examples/react/material-react-table/src/material-react-table/components/body/MRT_TableBody.tsx
index b738f2b2fa..85a0ddd0c7 100644
--- a/examples/react/material-react-table/src/material-react-table/components/body/MRT_TableBody.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/body/MRT_TableBody.tsx
@@ -4,28 +4,21 @@ import Typography from '@mui/material/Typography'
import { useMRT_RowVirtualizer } from '../../hooks/useMRT_RowVirtualizer'
import { useMRT_Rows } from '../../hooks/useMRT_Rows'
import { parseFromValuesOrFunc } from '../../utils/utils'
+import { useMRTContext } from '../../hooks/mrtTableHook'
import { MRT_TableBodyRow, Memo_MRT_TableBodyRow } from './MRT_TableBodyRow'
-import type {
- MRT_ColumnVirtualizer,
- MRT_Row,
- MRT_RowData,
- MRT_TableInstance,
-} from '../../types'
+import type { MRT_ColumnVirtualizer, MRT_Row, MRT_RowData } from '../../types'
import type { TableBodyProps } from '@mui/material/TableBody'
import type { VirtualItem } from '@tanstack/react-virtual'
-export interface MRT_TableBodyProps<
- TData extends MRT_RowData,
-> extends TableBodyProps {
+export interface MRT_TableBodyProps extends TableBodyProps {
columnVirtualizer?: MRT_ColumnVirtualizer
- table: MRT_TableInstance
}
-export const MRT_TableBody = ({
+export const MRT_TableBody = ({
columnVirtualizer,
- table,
...rest
-}: MRT_TableBodyProps) => {
+}: MRT_TableBodyProps) => {
+ const table = useMRTContext()
const {
getBottomRows,
getIsSomeRowsPinned,
@@ -75,7 +68,6 @@ export const MRT_TableBody = ({
const commonRowProps = {
columnVirtualizer,
numRows: rows.length,
- table,
}
return (
@@ -219,7 +211,4 @@ export const MRT_TableBody = ({
)
}
-export const Memo_MRT_TableBody = memo(
- MRT_TableBody,
- (prev, next) => prev.table.options.data === next.table.options.data,
-) as typeof MRT_TableBody
+export const Memo_MRT_TableBody = memo(MRT_TableBody) as typeof MRT_TableBody
diff --git a/examples/react/material-react-table/src/material-react-table/components/body/MRT_TableBodyCell.tsx b/examples/react/material-react-table/src/material-react-table/components/body/MRT_TableBodyCell.tsx
index b2becd7347..f99cdb0920 100644
--- a/examples/react/material-react-table/src/material-react-table/components/body/MRT_TableBodyCell.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/body/MRT_TableBodyCell.tsx
@@ -11,8 +11,9 @@ import { getCommonMRTCellStyles } from '../../utils/style.utils'
import { parseFromValuesOrFunc } from '../../utils/utils'
import { MRT_CopyButton } from '../buttons/MRT_CopyButton'
import { MRT_EditCellTextField } from '../inputs/MRT_EditCellTextField'
+import { useMRTContext } from '../../hooks/mrtTableHook'
import { MRT_TableBodyCellValue } from './MRT_TableBodyCellValue'
-import type { MRT_Cell, MRT_RowData, MRT_TableInstance } from '../../types'
+import type { MRT_Cell, MRT_RowData } from '../../types'
import type { TableCellProps } from '@mui/material/TableCell'
import type { DragEvent, MouseEvent, RefObject } from 'react'
@@ -24,7 +25,6 @@ export interface MRT_TableBodyCellProps<
rowRef: RefObject
staticColumnIndex?: number
staticRowIndex: number
- table: MRT_TableInstance
}
export const MRT_TableBodyCell = ({
@@ -33,9 +33,9 @@ export const MRT_TableBodyCell = ({
rowRef,
staticColumnIndex,
staticRowIndex,
- table,
...rest
}: MRT_TableBodyCellProps) => {
+ const table = useMRTContext()
const theme = useTheme()
const {
state,
@@ -185,7 +185,6 @@ export const MRT_TableBodyCell = ({
const cellValueProps = {
cell,
- table,
staticColumnIndex,
staticRowIndex,
}
@@ -316,9 +315,9 @@ export const MRT_TableBodyCell = ({
table,
})
) : isCreating || isEditing ? (
-
+
) : showClickToCopyButton && columnDef.enableClickToCopy !== false ? (
-
+
) : (
diff --git a/examples/react/material-react-table/src/material-react-table/components/body/MRT_TableBodyCellValue.tsx b/examples/react/material-react-table/src/material-react-table/components/body/MRT_TableBodyCellValue.tsx
index 87e65c8a12..5ad2d32ccf 100644
--- a/examples/react/material-react-table/src/material-react-table/components/body/MRT_TableBodyCellValue.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/body/MRT_TableBodyCellValue.tsx
@@ -1,7 +1,8 @@
import Box from '@mui/material/Box'
import highlightWords from 'highlight-words'
+import { useMRTContext } from '../../hooks/mrtTableHook'
import type { ReactNode, RefObject } from 'react'
-import type { MRT_Cell, MRT_RowData, MRT_TableInstance } from '../../types'
+import type { MRT_Cell, MRT_RowData } from '../../types'
const allowedTypes = ['string', 'number']
@@ -10,7 +11,6 @@ export interface MRT_TableBodyCellValueProps {
rowRef?: RefObject
staticColumnIndex?: number
staticRowIndex?: number
- table: MRT_TableInstance
}
export const MRT_TableBodyCellValue = ({
@@ -18,8 +18,8 @@ export const MRT_TableBodyCellValue = ({
rowRef,
staticColumnIndex,
staticRowIndex,
- table,
}: MRT_TableBodyCellValueProps) => {
+ const table = useMRTContext()
const {
state,
options: {
diff --git a/examples/react/material-react-table/src/material-react-table/components/body/MRT_TableBodyRow.tsx b/examples/react/material-react-table/src/material-react-table/components/body/MRT_TableBodyRow.tsx
index 7ad62b49c7..303b5ce12a 100644
--- a/examples/react/material-react-table/src/material-react-table/components/body/MRT_TableBodyRow.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/body/MRT_TableBodyRow.tsx
@@ -7,6 +7,7 @@ import {
getCommonPinnedCellStyles,
} from '../../utils/style.utils'
import { parseFromValuesOrFunc } from '../../utils/utils'
+import { useMRTContext } from '../../hooks/mrtTableHook'
import { MRT_TableDetailPanel } from './MRT_TableDetailPanel'
import { MRT_TableBodyCell, Memo_MRT_TableBodyCell } from './MRT_TableBodyCell'
import type {
@@ -15,7 +16,6 @@ import type {
MRT_Row,
MRT_RowData,
MRT_RowVirtualizer,
- MRT_TableInstance,
MRT_VirtualItem,
} from '../../types'
import type { Theme } from '@mui/material/styles'
@@ -32,7 +32,6 @@ export interface MRT_TableBodyRowProps<
row: MRT_Row
rowVirtualizer?: MRT_RowVirtualizer
staticRowIndex: number
- table: MRT_TableInstance
virtualRow?: VirtualItem
}
@@ -43,10 +42,10 @@ export const MRT_TableBodyRow = ({
row,
rowVirtualizer,
staticRowIndex,
- table,
virtualRow,
...rest
}: MRT_TableBodyRowProps) => {
+ const table = useMRTContext()
const theme = useTheme()
const {
@@ -244,7 +243,6 @@ export const MRT_TableBodyRow = ({
rowRef,
staticColumnIndex,
staticRowIndex,
- table,
}
const key = `${cell.id}-${staticRowIndex}`
return cell ? (
@@ -271,7 +269,6 @@ export const MRT_TableBodyRow = ({
row={row}
rowVirtualizer={rowVirtualizer}
staticRowIndex={staticRowIndex}
- table={table}
virtualRow={virtualRow}
/>
)}
diff --git a/examples/react/material-react-table/src/material-react-table/components/body/MRT_TableBodyRowGrabHandle.tsx b/examples/react/material-react-table/src/material-react-table/components/body/MRT_TableBodyRowGrabHandle.tsx
index 1dc8ee8c95..633d40fac5 100644
--- a/examples/react/material-react-table/src/material-react-table/components/body/MRT_TableBodyRowGrabHandle.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/body/MRT_TableBodyRowGrabHandle.tsx
@@ -1,23 +1,23 @@
import { parseFromValuesOrFunc } from '../../utils/utils'
+import { useMRTContext } from '../../hooks/mrtTableHook'
import { MRT_GrabHandleButton } from '../buttons/MRT_GrabHandleButton'
import type { DragEvent, RefObject } from 'react'
import type { IconButtonProps } from '@mui/material/IconButton'
-import type { MRT_Row, MRT_RowData, MRT_TableInstance } from '../../types'
+import type { MRT_Row, MRT_RowData } from '../../types'
export interface MRT_TableBodyRowGrabHandleProps<
TData extends MRT_RowData,
> extends IconButtonProps {
row: MRT_Row
rowRef: RefObject
- table: MRT_TableInstance
}
export const MRT_TableBodyRowGrabHandle = ({
row,
rowRef,
- table,
...rest
}: MRT_TableBodyRowGrabHandleProps) => {
+ const table = useMRTContext()
const {
options: { muiRowDragHandleProps },
} = table
@@ -52,7 +52,6 @@ export const MRT_TableBodyRowGrabHandle = ({
location="row"
onDragEnd={handleDragEnd}
onDragStart={handleDragStart}
- table={table}
/>
)
}
diff --git a/examples/react/material-react-table/src/material-react-table/components/body/MRT_TableBodyRowPinButton.tsx b/examples/react/material-react-table/src/material-react-table/components/body/MRT_TableBodyRowPinButton.tsx
index e527bbb4f9..79a941717d 100644
--- a/examples/react/material-react-table/src/material-react-table/components/body/MRT_TableBodyRowPinButton.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/body/MRT_TableBodyRowPinButton.tsx
@@ -1,21 +1,21 @@
import Box from '@mui/material/Box'
import { parseFromValuesOrFunc } from '../../utils/utils'
+import { useMRTContext } from '../../hooks/mrtTableHook'
import { MRT_RowPinButton } from '../buttons/MRT_RowPinButton'
import type { IconButtonProps } from '@mui/material/IconButton'
-import type { MRT_Row, MRT_RowData, MRT_TableInstance } from '../../types'
+import type { MRT_Row, MRT_RowData } from '../../types'
export interface MRT_TableBodyRowPinButtonProps<
TData extends MRT_RowData,
> extends IconButtonProps {
row: MRT_Row
- table: MRT_TableInstance
}
export const MRT_TableBodyRowPinButton = ({
row,
- table,
...rest
}: MRT_TableBodyRowPinButtonProps) => {
+ const table = useMRTContext()
const {
state,
options: { enableRowPinning, rowPinningDisplayMode },
@@ -28,7 +28,6 @@ export const MRT_TableBodyRowPinButton = ({
const rowPinButtonProps = {
row,
- table,
...rest,
}
diff --git a/examples/react/material-react-table/src/material-react-table/components/body/MRT_TableDetailPanel.tsx b/examples/react/material-react-table/src/material-react-table/components/body/MRT_TableDetailPanel.tsx
index 30db86f035..d3180b7fe0 100644
--- a/examples/react/material-react-table/src/material-react-table/components/body/MRT_TableDetailPanel.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/body/MRT_TableDetailPanel.tsx
@@ -2,12 +2,12 @@ import Collapse from '@mui/material/Collapse'
import TableCell from '@mui/material/TableCell'
import TableRow from '@mui/material/TableRow'
import { parseFromValuesOrFunc } from '../../utils/utils'
+import { useMRTContext } from '../../hooks/mrtTableHook'
import type { TableCellProps } from '@mui/material/TableCell'
import type {
MRT_Row,
MRT_RowData,
MRT_RowVirtualizer,
- MRT_TableInstance,
MRT_VirtualItem,
} from '../../types'
import type { RefObject } from 'react'
@@ -19,7 +19,6 @@ export interface MRT_TableDetailPanelProps<
row: MRT_Row
rowVirtualizer?: MRT_RowVirtualizer
staticRowIndex: number
- table: MRT_TableInstance
virtualRow?: MRT_VirtualItem
}
@@ -28,10 +27,10 @@ export const MRT_TableDetailPanel = ({
row,
rowVirtualizer,
staticRowIndex,
- table,
virtualRow,
...rest
}: MRT_TableDetailPanelProps) => {
+ const table = useMRTContext()
const {
state,
getVisibleLeafColumns,
diff --git a/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_ColumnPinningButtons.tsx b/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_ColumnPinningButtons.tsx
index 47d686937e..ada739c11e 100644
--- a/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_ColumnPinningButtons.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_ColumnPinningButtons.tsx
@@ -1,22 +1,22 @@
import Box from '@mui/material/Box'
import IconButton from '@mui/material/IconButton'
import Tooltip from '@mui/material/Tooltip'
+import { useMRTContext } from '../../hooks/mrtTableHook'
import { parseFromValuesOrFunc } from '../../utils/utils'
-import type { MRT_Column, MRT_RowData, MRT_TableInstance } from '../../types'
+import type { MRT_Column, MRT_RowData } from '../../types'
import type { BoxProps } from '@mui/material/Box'
export interface MRT_ColumnPinningButtonsProps<
TData extends MRT_RowData,
> extends BoxProps {
column: MRT_Column
- table: MRT_TableInstance
}
export const MRT_ColumnPinningButtons = ({
column,
- table,
...rest
}: MRT_ColumnPinningButtonsProps) => {
+ const table = useMRTContext()
const {
options: {
icons: { PushPinIcon },
diff --git a/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_CopyButton.tsx b/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_CopyButton.tsx
index 65077a808e..344e152663 100644
--- a/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_CopyButton.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_CopyButton.tsx
@@ -2,8 +2,9 @@ import { useState } from 'react'
import Button from '@mui/material/Button'
import Tooltip from '@mui/material/Tooltip'
import { getCommonTooltipProps } from '../../utils/style.utils'
+import { useMRTContext } from '../../hooks/mrtTableHook'
import { parseFromValuesOrFunc } from '../../utils/utils'
-import type { MRT_Cell, MRT_RowData, MRT_TableInstance } from '../../types'
+import type { MRT_Cell, MRT_RowData } from '../../types'
import type { ButtonProps } from '@mui/material/Button'
import type { MouseEvent } from 'react'
@@ -11,14 +12,13 @@ export interface MRT_CopyButtonProps<
TData extends MRT_RowData,
> extends ButtonProps {
cell: MRT_Cell
- table: MRT_TableInstance
}
export const MRT_CopyButton = ({
cell,
- table,
...rest
}: MRT_CopyButtonProps) => {
+ const table = useMRTContext()
const {
options: { localization, muiCopyButtonProps },
} = table
diff --git a/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_EditActionButtons.tsx b/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_EditActionButtons.tsx
index 6319105cd6..130c27f164 100644
--- a/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_EditActionButtons.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_EditActionButtons.tsx
@@ -3,24 +3,24 @@ import Button from '@mui/material/Button'
import CircularProgress from '@mui/material/CircularProgress'
import IconButton from '@mui/material/IconButton'
import Tooltip from '@mui/material/Tooltip'
+import { useMRTContext } from '../../hooks/mrtTableHook'
import { parseFromValuesOrFunc } from '../../utils/utils'
-import type { MRT_Row, MRT_RowData, MRT_TableInstance } from '../../types'
+import type { MRT_Row, MRT_RowData } from '../../types'
import type { BoxProps } from '@mui/material/Box'
export interface MRT_EditActionButtonsProps<
TData extends MRT_RowData,
> extends BoxProps {
row: MRT_Row
- table: MRT_TableInstance
variant?: 'icon' | 'text'
}
export const MRT_EditActionButtons = ({
row,
- table,
variant = 'icon',
...rest
}: MRT_EditActionButtonsProps) => {
+ const table = useMRTContext()
const {
state,
options: {
@@ -48,7 +48,7 @@ export const MRT_EditActionButtons = ({
onEditingRowCancel?.({ row, table })
setEditingRow(null)
}
- row._valuesCache = {} as any // reset values cache
+ row._valuesCache = {} // reset values cache
}
const handleSubmitRow = () => {
@@ -60,7 +60,6 @@ export const MRT_EditActionButtons = ({
input.value !== undefined &&
Object.hasOwn(row?._valuesCache, input.name)
) {
- // @ts-expect-error
row._valuesCache[input.name] = input.value
}
})
diff --git a/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_ExpandAllButton.tsx b/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_ExpandAllButton.tsx
index 9e9f60cee2..6c311bc62b 100644
--- a/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_ExpandAllButton.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_ExpandAllButton.tsx
@@ -1,20 +1,14 @@
import IconButton from '@mui/material/IconButton'
import Tooltip from '@mui/material/Tooltip'
import { getCommonTooltipProps } from '../../utils/style.utils'
+import { useMRTContext } from '../../hooks/mrtTableHook'
import { parseFromValuesOrFunc } from '../../utils/utils'
-import type { MRT_RowData, MRT_TableInstance } from '../../types'
import type { IconButtonProps } from '@mui/material/IconButton'
-export interface MRT_ExpandAllButtonProps<
- TData extends MRT_RowData,
-> extends IconButtonProps {
- table: MRT_TableInstance
-}
+export interface MRT_ExpandAllButtonProps extends IconButtonProps {}
-export const MRT_ExpandAllButton = ({
- table,
- ...rest
-}: MRT_ExpandAllButtonProps) => {
+export const MRT_ExpandAllButton = ({ ...rest }: MRT_ExpandAllButtonProps) => {
+ const table = useMRTContext()
const {
getCanSomeRowsExpand,
getIsAllRowsExpanded,
diff --git a/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_ExpandButton.tsx b/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_ExpandButton.tsx
index 2fc7e9e04c..ab2b213b13 100644
--- a/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_ExpandButton.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_ExpandButton.tsx
@@ -2,8 +2,9 @@ import IconButton from '@mui/material/IconButton'
import Tooltip from '@mui/material/Tooltip'
import { useTheme } from '@mui/material/styles'
import { getCommonTooltipProps } from '../../utils/style.utils'
+import { useMRTContext } from '../../hooks/mrtTableHook'
import { parseFromValuesOrFunc } from '../../utils/utils'
-import type { MRT_Row, MRT_RowData, MRT_TableInstance } from '../../types'
+import type { MRT_Row, MRT_RowData } from '../../types'
import type { IconButtonProps } from '@mui/material/IconButton'
import type { MouseEvent } from 'react'
@@ -12,14 +13,13 @@ export interface MRT_ExpandButtonProps<
> extends IconButtonProps {
row: MRT_Row
staticRowIndex?: number
- table: MRT_TableInstance
}
export const MRT_ExpandButton = ({
row,
staticRowIndex,
- table,
}: MRT_ExpandButtonProps) => {
+ const table = useMRTContext()
const theme = useTheme()
const {
state,
diff --git a/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_GrabHandleButton.tsx b/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_GrabHandleButton.tsx
index c02268c498..134b327bae 100644
--- a/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_GrabHandleButton.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_GrabHandleButton.tsx
@@ -1,26 +1,23 @@
import IconButton from '@mui/material/IconButton'
import Tooltip from '@mui/material/Tooltip'
import { getCommonTooltipProps } from '../../utils/style.utils'
+import { useMRTContext } from '../../hooks/mrtTableHook'
import { parseFromValuesOrFunc } from '../../utils/utils'
-import type { MRT_RowData, MRT_TableInstance } from '../../types'
import type { IconButtonProps } from '@mui/material/IconButton'
import type { DragEventHandler } from 'react'
-export interface MRT_GrabHandleButtonProps<
- TData extends MRT_RowData,
-> extends IconButtonProps {
+export interface MRT_GrabHandleButtonProps extends IconButtonProps {
iconButtonProps?: IconButtonProps
location?: 'column' | 'row'
onDragEnd: DragEventHandler
onDragStart: DragEventHandler
- table: MRT_TableInstance
}
-export const MRT_GrabHandleButton = ({
+export const MRT_GrabHandleButton = ({
location,
- table,
...rest
-}: MRT_GrabHandleButtonProps) => {
+}: MRT_GrabHandleButtonProps) => {
+ const table = useMRTContext()
const {
options: {
icons: { DragHandleIcon },
diff --git a/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_RowPinButton.tsx b/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_RowPinButton.tsx
index c91859abaf..87fd47c2c3 100644
--- a/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_RowPinButton.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_RowPinButton.tsx
@@ -2,26 +2,26 @@ import { useState } from 'react'
import IconButton from '@mui/material/IconButton'
import Tooltip from '@mui/material/Tooltip'
import { getCommonTooltipProps } from '../../utils/style.utils'
+import { useMRTContext } from '../../hooks/mrtTableHook'
import { parseFromValuesOrFunc } from '../../utils/utils'
import type { MouseEvent } from 'react'
import type { RowPinningPosition } from '@tanstack/react-table'
import type { IconButtonProps } from '@mui/material/IconButton'
-import type { MRT_Row, MRT_RowData, MRT_TableInstance } from '../../types'
+import type { MRT_Row, MRT_RowData } from '../../types'
export interface MRT_RowPinButtonProps<
TData extends MRT_RowData,
> extends IconButtonProps {
pinningPosition: RowPinningPosition
row: MRT_Row
- table: MRT_TableInstance
}
export const MRT_RowPinButton = ({
pinningPosition,
row,
- table,
...rest
}: MRT_RowPinButtonProps) => {
+ const table = useMRTContext()
const {
options: {
icons: { CloseIcon, PushPinIcon },
diff --git a/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_ShowHideColumnsButton.tsx b/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_ShowHideColumnsButton.tsx
index fbc6fedc9b..46a765484e 100644
--- a/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_ShowHideColumnsButton.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_ShowHideColumnsButton.tsx
@@ -2,20 +2,16 @@ import { useState } from 'react'
import IconButton from '@mui/material/IconButton'
import Tooltip from '@mui/material/Tooltip'
import { MRT_ShowHideColumnsMenu } from '../menus/MRT_ShowHideColumnsMenu'
+import { useMRTContext } from '../../hooks/mrtTableHook'
import type { MouseEvent } from 'react'
import type { IconButtonProps } from '@mui/material/IconButton'
-import type { MRT_RowData, MRT_TableInstance } from '../../types'
-export interface MRT_ShowHideColumnsButtonProps<
- TData extends MRT_RowData,
-> extends IconButtonProps {
- table: MRT_TableInstance
-}
+export interface MRT_ShowHideColumnsButtonProps extends IconButtonProps {}
-export const MRT_ShowHideColumnsButton = ({
- table,
+export const MRT_ShowHideColumnsButton = ({
...rest
-}: MRT_ShowHideColumnsButtonProps) => {
+}: MRT_ShowHideColumnsButtonProps) => {
+ const table = useMRTContext()
const {
options: {
icons: { ViewColumnIcon },
@@ -45,7 +41,6 @@ export const MRT_ShowHideColumnsButton = ({
)}
>
diff --git a/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_ToggleDensePaddingButton.tsx b/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_ToggleDensePaddingButton.tsx
index d1905a58c6..95dbe13f53 100644
--- a/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_ToggleDensePaddingButton.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_ToggleDensePaddingButton.tsx
@@ -1,18 +1,14 @@
import IconButton from '@mui/material/IconButton'
import Tooltip from '@mui/material/Tooltip'
+import { useMRTContext } from '../../hooks/mrtTableHook'
import type { IconButtonProps } from '@mui/material/IconButton'
-import type { MRT_RowData, MRT_TableInstance } from '../../types'
-export interface MRT_ToggleDensePaddingButtonProps<
- TData extends MRT_RowData,
-> extends IconButtonProps {
- table: MRT_TableInstance
-}
+export interface MRT_ToggleDensePaddingButtonProps extends IconButtonProps {}
-export const MRT_ToggleDensePaddingButton = ({
- table,
+export const MRT_ToggleDensePaddingButton = ({
...rest
-}: MRT_ToggleDensePaddingButtonProps) => {
+}: MRT_ToggleDensePaddingButtonProps) => {
+ const table = useMRTContext()
const {
state,
options: {
diff --git a/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_ToggleFiltersButton.tsx b/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_ToggleFiltersButton.tsx
index bbdd90cdca..2b9496203f 100644
--- a/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_ToggleFiltersButton.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_ToggleFiltersButton.tsx
@@ -1,18 +1,14 @@
import IconButton from '@mui/material/IconButton'
import Tooltip from '@mui/material/Tooltip'
+import { useMRTContext } from '../../hooks/mrtTableHook'
import type { IconButtonProps } from '@mui/material/IconButton'
-import type { MRT_RowData, MRT_TableInstance } from '../../types'
-export interface MRT_ToggleFiltersButtonProps<
- TData extends MRT_RowData,
-> extends IconButtonProps {
- table: MRT_TableInstance
-}
+export interface MRT_ToggleFiltersButtonProps extends IconButtonProps {}
-export const MRT_ToggleFiltersButton = ({
- table,
+export const MRT_ToggleFiltersButton = ({
...rest
-}: MRT_ToggleFiltersButtonProps) => {
+}: MRT_ToggleFiltersButtonProps) => {
+ const table = useMRTContext()
const {
state,
options: {
diff --git a/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_ToggleFullScreenButton.tsx b/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_ToggleFullScreenButton.tsx
index c999d0df19..7a67270cb6 100644
--- a/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_ToggleFullScreenButton.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_ToggleFullScreenButton.tsx
@@ -1,19 +1,15 @@
import { useState } from 'react'
import IconButton from '@mui/material/IconButton'
import Tooltip from '@mui/material/Tooltip'
+import { useMRTContext } from '../../hooks/mrtTableHook'
import type { IconButtonProps } from '@mui/material/IconButton'
-import type { MRT_RowData, MRT_TableInstance } from '../../types'
-export interface MRT_ToggleFullScreenButtonProps<
- TData extends MRT_RowData,
-> extends IconButtonProps {
- table: MRT_TableInstance
-}
+export interface MRT_ToggleFullScreenButtonProps extends IconButtonProps {}
-export const MRT_ToggleFullScreenButton = ({
- table,
+export const MRT_ToggleFullScreenButton = ({
...rest
-}: MRT_ToggleFullScreenButtonProps) => {
+}: MRT_ToggleFullScreenButtonProps) => {
+ const table = useMRTContext()
const {
state,
options: {
diff --git a/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_ToggleGlobalFilterButton.tsx b/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_ToggleGlobalFilterButton.tsx
index f365ad2173..10d8513718 100644
--- a/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_ToggleGlobalFilterButton.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_ToggleGlobalFilterButton.tsx
@@ -1,18 +1,14 @@
import IconButton from '@mui/material/IconButton'
import Tooltip from '@mui/material/Tooltip'
+import { useMRTContext } from '../../hooks/mrtTableHook'
import type { IconButtonProps } from '@mui/material/IconButton'
-import type { MRT_RowData, MRT_TableInstance } from '../../types'
-export interface MRT_ToggleGlobalFilterButtonProps<
- TData extends MRT_RowData,
-> extends IconButtonProps {
- table: MRT_TableInstance
-}
+export interface MRT_ToggleGlobalFilterButtonProps extends IconButtonProps {}
-export const MRT_ToggleGlobalFilterButton = ({
- table,
+export const MRT_ToggleGlobalFilterButton = ({
...rest
-}: MRT_ToggleGlobalFilterButtonProps) => {
+}: MRT_ToggleGlobalFilterButtonProps) => {
+ const table = useMRTContext()
const {
state,
options: {
diff --git a/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_ToggleRowActionMenuButton.tsx b/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_ToggleRowActionMenuButton.tsx
index e6f4db2d37..f0440f8154 100644
--- a/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_ToggleRowActionMenuButton.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/buttons/MRT_ToggleRowActionMenuButton.tsx
@@ -4,13 +4,9 @@ import Tooltip from '@mui/material/Tooltip'
import { getCommonTooltipProps } from '../../utils/style.utils'
import { parseFromValuesOrFunc } from '../../utils/utils'
import { MRT_RowActionMenu } from '../menus/MRT_RowActionMenu'
+import { useMRTContext } from '../../hooks/mrtTableHook'
import { MRT_EditActionButtons } from './MRT_EditActionButtons'
-import type {
- MRT_Cell,
- MRT_Row,
- MRT_RowData,
- MRT_TableInstance,
-} from '../../types'
+import type { MRT_Cell, MRT_Row, MRT_RowData } from '../../types'
import type { IconButtonProps } from '@mui/material/IconButton'
import type { MouseEvent } from 'react'
@@ -31,16 +27,15 @@ export interface MRT_ToggleRowActionMenuButtonProps<
cell: MRT_Cell
row: MRT_Row
staticRowIndex?: number
- table: MRT_TableInstance
}
export const MRT_ToggleRowActionMenuButton = ({
cell,
row,
staticRowIndex,
- table,
...rest
}: MRT_ToggleRowActionMenuButtonProps) => {
+ const table = useMRTContext()
const {
state,
options: {
@@ -83,7 +78,7 @@ export const MRT_ToggleRowActionMenuButton = ({
{renderRowActions && !showEditActionButtons ? (
renderRowActions({ cell, row, staticRowIndex, table })
) : showEditActionButtons ? (
-
+
) : !renderRowActionMenuItems &&
parseFromValuesOrFunc(enableEditing, row) &&
['modal', 'row'].includes(editDisplayMode!) ? (
@@ -120,7 +115,6 @@ export const MRT_ToggleRowActionMenuButton = ({
row={row}
setAnchorEl={setAnchorEl}
staticRowIndex={staticRowIndex}
- table={table}
/>
>
) : null}
diff --git a/examples/react/material-react-table/src/material-react-table/components/footer/MRT_TableFooter.tsx b/examples/react/material-react-table/src/material-react-table/components/footer/MRT_TableFooter.tsx
index 3a5480e511..6f850528b6 100644
--- a/examples/react/material-react-table/src/material-react-table/components/footer/MRT_TableFooter.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/footer/MRT_TableFooter.tsx
@@ -1,25 +1,19 @@
import TableFooter from '@mui/material/TableFooter'
import { parseFromValuesOrFunc } from '../../utils/utils'
+import { useMRTContext } from '../../hooks/mrtTableHook'
import { MRT_TableFooterRow } from './MRT_TableFooterRow'
-import type {
- MRT_ColumnVirtualizer,
- MRT_RowData,
- MRT_TableInstance,
-} from '../../types'
+import type { MRT_ColumnVirtualizer, MRT_RowData } from '../../types'
import type { TableFooterProps } from '@mui/material/TableFooter'
-export interface MRT_TableFooterProps<
- TData extends MRT_RowData,
-> extends TableFooterProps {
+export interface MRT_TableFooterProps extends TableFooterProps {
columnVirtualizer?: MRT_ColumnVirtualizer
- table: MRT_TableInstance
}
export const MRT_TableFooter = ({
columnVirtualizer,
- table,
...rest
-}: MRT_TableFooterProps) => {
+}: MRT_TableFooterProps) => {
+ const table = useMRTContext()
const {
state,
options: { enableStickyFooter, layoutMode, muiTableFooterProps },
@@ -82,7 +76,6 @@ export const MRT_TableFooter = ({
columnVirtualizer={columnVirtualizer}
footerGroup={footerGroup as any}
key={footerGroup.id}
- table={table}
/>
))}
diff --git a/examples/react/material-react-table/src/material-react-table/components/footer/MRT_TableFooterCell.tsx b/examples/react/material-react-table/src/material-react-table/components/footer/MRT_TableFooterCell.tsx
index 1ea8f04af8..9a9e1b3558 100644
--- a/examples/react/material-react-table/src/material-react-table/components/footer/MRT_TableFooterCell.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/footer/MRT_TableFooterCell.tsx
@@ -3,7 +3,8 @@ import { useTheme } from '@mui/material/styles'
import { getCommonMRTCellStyles } from '../../utils/style.utils'
import { parseFromValuesOrFunc } from '../../utils/utils'
import { cellKeyboardShortcuts } from '../../utils/cell.utils'
-import type { MRT_Header, MRT_RowData, MRT_TableInstance } from '../../types'
+import { useMRTContext } from '../../hooks/mrtTableHook'
+import type { MRT_Header, MRT_RowData } from '../../types'
import type { TableCellProps } from '@mui/material/TableCell'
export interface MRT_TableFooterCellProps<
@@ -11,15 +12,14 @@ export interface MRT_TableFooterCellProps<
> extends TableCellProps {
footer: MRT_Header
staticColumnIndex?: number
- table: MRT_TableInstance
}
export const MRT_TableFooterCell = ({
footer,
staticColumnIndex,
- table,
...rest
}: MRT_TableFooterCellProps) => {
+ const table = useMRTContext()
const theme = useTheme()
const {
state,
diff --git a/examples/react/material-react-table/src/material-react-table/components/footer/MRT_TableFooterRow.tsx b/examples/react/material-react-table/src/material-react-table/components/footer/MRT_TableFooterRow.tsx
index ee781d0bc0..22b8c0195e 100644
--- a/examples/react/material-react-table/src/material-react-table/components/footer/MRT_TableFooterRow.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/footer/MRT_TableFooterRow.tsx
@@ -1,12 +1,12 @@
import TableRow from '@mui/material/TableRow'
import { parseFromValuesOrFunc } from '../../utils/utils'
+import { useMRTContext } from '../../hooks/mrtTableHook'
import { MRT_TableFooterCell } from './MRT_TableFooterCell'
import type {
MRT_ColumnVirtualizer,
MRT_Header,
MRT_HeaderGroup,
MRT_RowData,
- MRT_TableInstance,
MRT_VirtualItem,
} from '../../types'
import type { TableRowProps } from '@mui/material/TableRow'
@@ -16,15 +16,14 @@ export interface MRT_TableFooterRowProps<
> extends TableRowProps {
columnVirtualizer?: MRT_ColumnVirtualizer
footerGroup: MRT_HeaderGroup
- table: MRT_TableInstance
}
export const MRT_TableFooterRow = ({
columnVirtualizer,
footerGroup,
- table,
...rest
}: MRT_TableFooterRowProps) => {
+ const table = useMRTContext()
const {
options: {
layoutMode,
@@ -83,7 +82,6 @@ export const MRT_TableFooterRow = ({
footer={footer}
key={footer.id}
staticColumnIndex={staticColumnIndex}
- table={table}
/>
) : null
},
diff --git a/examples/react/material-react-table/src/material-react-table/components/head/MRT_TableHead.tsx b/examples/react/material-react-table/src/material-react-table/components/head/MRT_TableHead.tsx
index cf406dd38a..712e05d74d 100644
--- a/examples/react/material-react-table/src/material-react-table/components/head/MRT_TableHead.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/head/MRT_TableHead.tsx
@@ -1,26 +1,20 @@
import TableHead from '@mui/material/TableHead'
import { parseFromValuesOrFunc } from '../../utils/utils'
import { MRT_ToolbarAlertBanner } from '../toolbar/MRT_ToolbarAlertBanner'
+import { useMRTContext } from '../../hooks/mrtTableHook'
import { MRT_TableHeadRow } from './MRT_TableHeadRow'
-import type {
- MRT_ColumnVirtualizer,
- MRT_RowData,
- MRT_TableInstance,
-} from '../../types'
+import type { MRT_ColumnVirtualizer, MRT_RowData } from '../../types'
import type { TableHeadProps } from '@mui/material/TableHead'
-export interface MRT_TableHeadProps<
- TData extends MRT_RowData,
-> extends TableHeadProps {
+export interface MRT_TableHeadProps extends TableHeadProps {
columnVirtualizer?: MRT_ColumnVirtualizer
- table: MRT_TableInstance
}
export const MRT_TableHead = ({
columnVirtualizer,
- table,
...rest
-}: MRT_TableHeadProps) => {
+}: MRT_TableHeadProps) => {
+ const table = useMRTContext()
const {
state,
options: {
@@ -73,7 +67,7 @@ export const MRT_TableHead = ({
padding: 0,
}}
>
-
+
) : (
@@ -84,7 +78,6 @@ export const MRT_TableHead = ({
columnVirtualizer={columnVirtualizer}
headerGroup={headerGroup as any}
key={headerGroup.id}
- table={table}
/>
))
)}
diff --git a/examples/react/material-react-table/src/material-react-table/components/head/MRT_TableHeadCell.tsx b/examples/react/material-react-table/src/material-react-table/components/head/MRT_TableHeadCell.tsx
index b51fc183db..49a7e4a6b6 100644
--- a/examples/react/material-react-table/src/material-react-table/components/head/MRT_TableHeadCell.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/head/MRT_TableHeadCell.tsx
@@ -5,6 +5,7 @@ import { useTheme } from '@mui/material/styles'
import { getCommonMRTCellStyles } from '../../utils/style.utils'
import { parseFromValuesOrFunc } from '../../utils/utils'
import { cellKeyboardShortcuts } from '../../utils/cell.utils'
+import { useMRTContext } from '../../hooks/mrtTableHook'
import { MRT_TableHeadCellColumnActionsButton } from './MRT_TableHeadCellColumnActionsButton'
import { MRT_TableHeadCellFilterContainer } from './MRT_TableHeadCellFilterContainer'
import { MRT_TableHeadCellFilterLabel } from './MRT_TableHeadCellFilterLabel'
@@ -15,7 +16,6 @@ import type {
MRT_ColumnVirtualizer,
MRT_Header,
MRT_RowData,
- MRT_TableInstance,
} from '../../types'
import type { Theme } from '@mui/material/styles'
import type { DragEvent } from 'react'
@@ -27,16 +27,15 @@ export interface MRT_TableHeadCellProps<
columnVirtualizer?: MRT_ColumnVirtualizer
header: MRT_Header
staticColumnIndex?: number
- table: MRT_TableInstance
}
export const MRT_TableHeadCell = ({
columnVirtualizer,
header,
staticColumnIndex,
- table,
...rest
}: MRT_TableHeadCellProps) => {
+ const table = useMRTContext()
const theme = useTheme()
const {
state,
@@ -309,10 +308,10 @@ export const MRT_TableHeadCell = ({
{HeaderElement}
{column.getCanFilter() && (
-
+
)}
{column.getCanSort() && (
-
+
)}
{columnDefType !== 'group' && (
@@ -325,27 +324,23 @@ export const MRT_TableHeadCell = ({
{showDragHandle && (
)}
{showColumnActions && (
-
+
)}
)}
{column.getCanResize() && (
-
+
)}
))}
{columnFilterDisplayMode === 'subheader' && column.getCanFilter() && (
-
+
)}
)
diff --git a/examples/react/material-react-table/src/material-react-table/components/head/MRT_TableHeadCellColumnActionsButton.tsx b/examples/react/material-react-table/src/material-react-table/components/head/MRT_TableHeadCellColumnActionsButton.tsx
index 37ba27b909..315fb2733b 100644
--- a/examples/react/material-react-table/src/material-react-table/components/head/MRT_TableHeadCellColumnActionsButton.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/head/MRT_TableHeadCellColumnActionsButton.tsx
@@ -4,7 +4,8 @@ import Tooltip from '@mui/material/Tooltip'
import { getCommonTooltipProps } from '../../utils/style.utils'
import { parseFromValuesOrFunc } from '../../utils/utils'
import { MRT_ColumnActionMenu } from '../menus/MRT_ColumnActionMenu'
-import type { MRT_Header, MRT_RowData, MRT_TableInstance } from '../../types'
+import { useMRTContext } from '../../hooks/mrtTableHook'
+import type { MRT_Header, MRT_RowData } from '../../types'
import type { IconButtonProps } from '@mui/material/IconButton'
import type { MouseEvent } from 'react'
@@ -12,16 +13,15 @@ export interface MRT_TableHeadCellColumnActionsButtonProps<
TData extends MRT_RowData,
> extends IconButtonProps {
header: MRT_Header
- table: MRT_TableInstance
}
export const MRT_TableHeadCellColumnActionsButton = <
TData extends MRT_RowData,
>({
header,
- table,
...rest
}: MRT_TableHeadCellColumnActionsButtonProps) => {
+ const table = useMRTContext()
const {
options: {
icons: { MoreVertIcon },
@@ -86,7 +86,6 @@ export const MRT_TableHeadCellColumnActionsButton = <
anchorEl={anchorEl}
header={header}
setAnchorEl={setAnchorEl}
- table={table}
/>
)}
>
diff --git a/examples/react/material-react-table/src/material-react-table/components/head/MRT_TableHeadCellFilterContainer.tsx b/examples/react/material-react-table/src/material-react-table/components/head/MRT_TableHeadCellFilterContainer.tsx
index 2ac9a2091b..db13f6ead5 100644
--- a/examples/react/material-react-table/src/material-react-table/components/head/MRT_TableHeadCellFilterContainer.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/head/MRT_TableHeadCellFilterContainer.tsx
@@ -4,21 +4,21 @@ import { MRT_FilterCheckbox } from '../inputs/MRT_FilterCheckbox'
import { MRT_FilterRangeFields } from '../inputs/MRT_FilterRangeFields'
import { MRT_FilterRangeSlider } from '../inputs/MRT_FilterRangeSlider'
import { MRT_FilterTextField } from '../inputs/MRT_FilterTextField'
-import type { MRT_Header, MRT_RowData, MRT_TableInstance } from '../../types'
+import { useMRTContext } from '../../hooks/mrtTableHook'
+import type { MRT_Header, MRT_RowData } from '../../types'
import type { CollapseProps } from '@mui/material/Collapse'
export interface MRT_TableHeadCellFilterContainerProps<
TData extends MRT_RowData,
> extends CollapseProps {
header: MRT_Header
- table: MRT_TableInstance
}
export const MRT_TableHeadCellFilterContainer = ({
header,
- table,
...rest
}: MRT_TableHeadCellFilterContainerProps) => {
+ const table = useMRTContext()
const {
state,
options: { columnFilterDisplayMode },
@@ -36,13 +36,13 @@ export const MRT_TableHeadCellFilterContainer = ({
{...rest}
>
{columnDef.filterVariant === 'checkbox' ? (
-
+
) : columnDef.filterVariant === 'range-slider' ? (
-
+
) : isRangeFilter ? (
-
+
) : (
-
+
)}
)
diff --git a/examples/react/material-react-table/src/material-react-table/components/head/MRT_TableHeadCellFilterLabel.tsx b/examples/react/material-react-table/src/material-react-table/components/head/MRT_TableHeadCellFilterLabel.tsx
index 2fd2568801..66484d1636 100644
--- a/examples/react/material-react-table/src/material-react-table/components/head/MRT_TableHeadCellFilterLabel.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/head/MRT_TableHeadCellFilterLabel.tsx
@@ -9,8 +9,9 @@ import {
useDropdownOptions,
} from '../../utils/column.utils'
import { getValueAndLabel, parseFromValuesOrFunc } from '../../utils/utils'
+import { useMRTContext } from '../../hooks/mrtTableHook'
import { MRT_TableHeadCellFilterContainer } from './MRT_TableHeadCellFilterContainer'
-import type { MRT_Header, MRT_RowData, MRT_TableInstance } from '../../types'
+import type { MRT_Header, MRT_RowData } from '../../types'
import type { IconButtonProps } from '@mui/material/IconButton'
import type { MouseEvent } from 'react'
@@ -18,14 +19,13 @@ export interface MRT_TableHeadCellFilterLabelProps<
TData extends MRT_RowData,
> extends IconButtonProps {
header: MRT_Header
- table: MRT_TableInstance
}
export const MRT_TableHeadCellFilterLabel = ({
header,
- table,
...rest
}: MRT_TableHeadCellFilterLabelProps) => {
+ const table = useMRTContext()
const {
options: {
columnFilterDisplayMode,
@@ -168,7 +168,7 @@ export const MRT_TableHeadCellFilterLabel = ({
}}
>
-
+
)}
diff --git a/examples/react/material-react-table/src/material-react-table/components/head/MRT_TableHeadCellGrabHandle.tsx b/examples/react/material-react-table/src/material-react-table/components/head/MRT_TableHeadCellGrabHandle.tsx
index e4ae9e969c..98d690159e 100644
--- a/examples/react/material-react-table/src/material-react-table/components/head/MRT_TableHeadCellGrabHandle.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/head/MRT_TableHeadCellGrabHandle.tsx
@@ -1,24 +1,24 @@
import { reorderColumn } from '../../utils/column.utils'
import { parseFromValuesOrFunc } from '../../utils/utils'
import { MRT_GrabHandleButton } from '../buttons/MRT_GrabHandleButton'
+import { useMRTContext } from '../../hooks/mrtTableHook'
import type { DragEvent, RefObject } from 'react'
import type { IconButtonProps } from '@mui/material/IconButton'
-import type { MRT_Column, MRT_RowData, MRT_TableInstance } from '../../types'
+import type { MRT_Column, MRT_RowData } from '../../types'
export interface MRT_TableHeadCellGrabHandleProps<
TData extends MRT_RowData,
> extends IconButtonProps {
column: MRT_Column
- table: MRT_TableInstance
tableHeadCellRef: RefObject
}
export const MRT_TableHeadCellGrabHandle = ({
column,
- table,
tableHeadCellRef,
...rest
}: MRT_TableHeadCellGrabHandleProps) => {
+ const table = useMRTContext()
const {
state,
options: { enableColumnOrdering, muiColumnDragHandleProps },
@@ -82,7 +82,6 @@ export const MRT_TableHeadCellGrabHandle = ({
{...iconButtonProps}
onDragEnd={handleDragEnd}
onDragStart={handleDragStart}
- table={table}
/>
)
}
diff --git a/examples/react/material-react-table/src/material-react-table/components/head/MRT_TableHeadCellResizeHandle.tsx b/examples/react/material-react-table/src/material-react-table/components/head/MRT_TableHeadCellResizeHandle.tsx
index bb708f30a8..962693ee35 100644
--- a/examples/react/material-react-table/src/material-react-table/components/head/MRT_TableHeadCellResizeHandle.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/head/MRT_TableHeadCellResizeHandle.tsx
@@ -1,21 +1,21 @@
import Box from '@mui/material/Box'
import Divider from '@mui/material/Divider'
import { parseFromValuesOrFunc } from '../../utils/utils'
+import { useMRTContext } from '../../hooks/mrtTableHook'
import type { DividerProps } from '@mui/material/Divider'
-import type { MRT_Header, MRT_RowData, MRT_TableInstance } from '../../types'
+import type { MRT_Header, MRT_RowData } from '../../types'
export interface MRT_TableHeadCellResizeHandleProps<
TData extends MRT_RowData,
> extends DividerProps {
header: MRT_Header
- table: MRT_TableInstance
}
export const MRT_TableHeadCellResizeHandle = ({
header,
- table,
...rest
}: MRT_TableHeadCellResizeHandleProps) => {
+ const table = useMRTContext()
const {
state,
options: { columnResizeDirection, columnResizeMode },
diff --git a/examples/react/material-react-table/src/material-react-table/components/head/MRT_TableHeadCellSortLabel.tsx b/examples/react/material-react-table/src/material-react-table/components/head/MRT_TableHeadCellSortLabel.tsx
index 5a14fcc00e..6db54a5b52 100644
--- a/examples/react/material-react-table/src/material-react-table/components/head/MRT_TableHeadCellSortLabel.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/head/MRT_TableHeadCellSortLabel.tsx
@@ -2,21 +2,21 @@ import Badge from '@mui/material/Badge'
import TableSortLabel from '@mui/material/TableSortLabel'
import Tooltip from '@mui/material/Tooltip'
import { parseFromValuesOrFunc } from '../../utils/utils'
+import { useMRTContext } from '../../hooks/mrtTableHook'
import type { TableSortLabelProps } from '@mui/material/TableSortLabel'
-import type { MRT_Header, MRT_RowData, MRT_TableInstance } from '../../types'
+import type { MRT_Header, MRT_RowData } from '../../types'
export interface MRT_TableHeadCellSortLabelProps<
TData extends MRT_RowData,
> extends TableSortLabelProps {
header: MRT_Header
- table: MRT_TableInstance
}
export const MRT_TableHeadCellSortLabel = ({
header,
- table,
...rest
}: MRT_TableHeadCellSortLabelProps) => {
+ const table = useMRTContext()
const {
state,
options: {
diff --git a/examples/react/material-react-table/src/material-react-table/components/head/MRT_TableHeadRow.tsx b/examples/react/material-react-table/src/material-react-table/components/head/MRT_TableHeadRow.tsx
index deb45b64b8..d29c0448a6 100644
--- a/examples/react/material-react-table/src/material-react-table/components/head/MRT_TableHeadRow.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/head/MRT_TableHeadRow.tsx
@@ -1,13 +1,13 @@
import TableRow from '@mui/material/TableRow'
import { alpha } from '@mui/material/styles'
import { parseFromValuesOrFunc } from '../../utils/utils'
+import { useMRTContext } from '../../hooks/mrtTableHook'
import { MRT_TableHeadCell } from './MRT_TableHeadCell'
import type {
MRT_ColumnVirtualizer,
MRT_Header,
MRT_HeaderGroup,
MRT_RowData,
- MRT_TableInstance,
MRT_VirtualItem,
} from '../../types'
import type { TableRowProps } from '@mui/material/TableRow'
@@ -17,15 +17,14 @@ export interface MRT_TableHeadRowProps<
> extends TableRowProps {
columnVirtualizer?: MRT_ColumnVirtualizer
headerGroup: MRT_HeaderGroup
- table: MRT_TableInstance
}
export const MRT_TableHeadRow = ({
columnVirtualizer,
headerGroup,
- table,
...rest
}: MRT_TableHeadRowProps) => {
+ const table = useMRTContext()
const {
options: {
enableStickyHeader,
@@ -78,7 +77,6 @@ export const MRT_TableHeadRow = ({
header={header}
key={header.id}
staticColumnIndex={staticColumnIndex}
- table={table}
/>
) : null
},
diff --git a/examples/react/material-react-table/src/material-react-table/components/inputs/MRT_EditCellTextField.tsx b/examples/react/material-react-table/src/material-react-table/components/inputs/MRT_EditCellTextField.tsx
index 95a9bd64b8..3aeaba819e 100644
--- a/examples/react/material-react-table/src/material-react-table/components/inputs/MRT_EditCellTextField.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/inputs/MRT_EditCellTextField.tsx
@@ -2,22 +2,22 @@ import { useState } from 'react'
import MenuItem from '@mui/material/MenuItem'
import TextField from '@mui/material/TextField'
import { getValueAndLabel, parseFromValuesOrFunc } from '../../utils/utils'
+import { useMRTContext } from '../../hooks/mrtTableHook'
import type { ChangeEvent, FocusEvent, KeyboardEvent } from 'react'
import type { TextFieldProps } from '@mui/material/TextField'
-import type { MRT_Cell, MRT_RowData, MRT_TableInstance } from '../../types'
+import type { MRT_Cell, MRT_RowData } from '../../types'
export interface MRT_EditCellTextFieldProps<
TData extends MRT_RowData,
> extends TextFieldProps<'standard'> {
cell: MRT_Cell
- table: MRT_TableInstance
}
export const MRT_EditCellTextField = ({
cell,
- table,
...rest
}: MRT_EditCellTextFieldProps) => {
+ const table = useMRTContext()
const {
state,
options: { createDisplayMode, editDisplayMode, muiEditTextFieldProps },
@@ -63,7 +63,6 @@ export const MRT_EditCellTextField = ({
const isSelectEdit = editVariant === 'select' || textFieldProps?.select
const saveInputValueToRowCache = (newValue: string) => {
- // @ts-expect-error
row._valuesCache[column.id] = newValue
if (isCreating) {
setCreatingRow(row)
diff --git a/examples/react/material-react-table/src/material-react-table/components/inputs/MRT_FilterCheckbox.tsx b/examples/react/material-react-table/src/material-react-table/components/inputs/MRT_FilterCheckbox.tsx
index 53c6773596..5cd4cfa33d 100644
--- a/examples/react/material-react-table/src/material-react-table/components/inputs/MRT_FilterCheckbox.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/inputs/MRT_FilterCheckbox.tsx
@@ -3,21 +3,21 @@ import FormControlLabel from '@mui/material/FormControlLabel'
import Tooltip from '@mui/material/Tooltip'
import { getCommonTooltipProps } from '../../utils/style.utils'
import { parseFromValuesOrFunc } from '../../utils/utils'
-import type { MRT_Column, MRT_RowData, MRT_TableInstance } from '../../types'
+import { useMRTContext } from '../../hooks/mrtTableHook'
+import type { MRT_Column, MRT_RowData } from '../../types'
import type { CheckboxProps } from '@mui/material/Checkbox'
export interface MRT_FilterCheckboxProps<
TData extends MRT_RowData,
> extends CheckboxProps {
column: MRT_Column
- table: MRT_TableInstance
}
export const MRT_FilterCheckbox = ({
column,
- table,
...rest
}: MRT_FilterCheckboxProps) => {
+ const table = useMRTContext()
const {
state,
options: { localization, muiFilterCheckboxProps },
diff --git a/examples/react/material-react-table/src/material-react-table/components/inputs/MRT_FilterRangeFields.tsx b/examples/react/material-react-table/src/material-react-table/components/inputs/MRT_FilterRangeFields.tsx
index d46853f403..650ec881d3 100644
--- a/examples/react/material-react-table/src/material-react-table/components/inputs/MRT_FilterRangeFields.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/inputs/MRT_FilterRangeFields.tsx
@@ -1,19 +1,17 @@
import Box from '@mui/material/Box'
import { parseFromValuesOrFunc } from '../../utils/utils'
import { MRT_FilterTextField } from './MRT_FilterTextField'
-import type { MRT_Header, MRT_RowData, MRT_TableInstance } from '../../types'
+import type { MRT_Header, MRT_RowData } from '../../types'
import type { BoxProps } from '@mui/material/Box'
export interface MRT_FilterRangeFieldsProps<
TData extends MRT_RowData,
> extends BoxProps {
header: MRT_Header
- table: MRT_TableInstance
}
export const MRT_FilterRangeFields = ({
header,
- table,
...rest
}: MRT_FilterRangeFieldsProps) => {
return (
@@ -31,7 +29,6 @@ export const MRT_FilterRangeFields = ({
header={header}
key={rangeFilterIndex}
rangeFilterIndex={rangeFilterIndex}
- table={table}
/>
))}
diff --git a/examples/react/material-react-table/src/material-react-table/components/inputs/MRT_FilterRangeSlider.tsx b/examples/react/material-react-table/src/material-react-table/components/inputs/MRT_FilterRangeSlider.tsx
index 599f903d23..46fe6155eb 100644
--- a/examples/react/material-react-table/src/material-react-table/components/inputs/MRT_FilterRangeSlider.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/inputs/MRT_FilterRangeSlider.tsx
@@ -3,21 +3,21 @@ import FormHelperText from '@mui/material/FormHelperText'
import Slider from '@mui/material/Slider'
import Stack from '@mui/material/Stack'
import { parseFromValuesOrFunc } from '../../utils/utils'
+import { useMRTContext } from '../../hooks/mrtTableHook'
import type { SliderProps } from '@mui/material/Slider'
-import type { MRT_Header, MRT_RowData, MRT_TableInstance } from '../../types'
+import type { MRT_Header, MRT_RowData } from '../../types'
export interface MRT_FilterRangeSliderProps<
TData extends MRT_RowData,
> extends SliderProps {
header: MRT_Header
- table: MRT_TableInstance
}
export const MRT_FilterRangeSlider = ({
header,
- table,
...rest
}: MRT_FilterRangeSliderProps) => {
+ const table = useMRTContext()
const {
options: { enableColumnFilterModes, localization, muiFilterSliderProps },
refs: { filterInputRefs },
@@ -25,7 +25,7 @@ export const MRT_FilterRangeSlider = ({
const { column } = header
const { columnDef } = column
- const currentFilterOption = columnDef._filterFn
+ const currentFilterOption = columnDef._filterFn!
const showChangeModeButton =
enableColumnFilterModes && columnDef.enableColumnFilterModes !== false
diff --git a/examples/react/material-react-table/src/material-react-table/components/inputs/MRT_FilterTextField.tsx b/examples/react/material-react-table/src/material-react-table/components/inputs/MRT_FilterTextField.tsx
index 5fd79525c0..94f9bf37fc 100644
--- a/examples/react/material-react-table/src/material-react-table/components/inputs/MRT_FilterTextField.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/inputs/MRT_FilterTextField.tsx
@@ -18,12 +18,8 @@ import {
} from '../../utils/column.utils'
import { getValueAndLabel, parseFromValuesOrFunc } from '../../utils/utils'
import { MRT_FilterOptionMenu } from '../menus/MRT_FilterOptionMenu'
-import type {
- DropdownOption,
- MRT_Header,
- MRT_RowData,
- MRT_TableInstance,
-} from '../../types'
+import { useMRTContext } from '../../hooks/mrtTableHook'
+import type { DropdownOption, MRT_Header, MRT_RowData } from '../../types'
import type { TextFieldProps } from '@mui/material/TextField'
import type { ChangeEvent, MouseEvent, SyntheticEvent } from 'react'
import type { AutocompleteInputChangeReason } from '@mui/material/Autocomplete'
@@ -33,15 +29,14 @@ export interface MRT_FilterTextFieldProps<
> extends TextFieldProps<'standard'> {
header: MRT_Header
rangeFilterIndex?: number
- table: MRT_TableInstance
}
export const MRT_FilterTextField = ({
header,
rangeFilterIndex,
- table,
...rest
}: MRT_FilterTextFieldProps) => {
+ const table = useMRTContext()
const {
options: {
enableColumnFilterModes,
@@ -103,11 +98,11 @@ export const MRT_FilterTextField = ({
const dropdownOptions = useDropdownOptions({ header, table })
- const filterChipLabel = ['empty', 'notEmpty'].includes(currentFilterOption)
+ const filterChipLabel = ['empty', 'notEmpty'].includes(currentFilterOption!)
? localization[
`filter${
- currentFilterOption?.charAt?.(0)?.toUpperCase() +
- currentFilterOption?.slice(1)
+ currentFilterOption!.charAt(0)?.toUpperCase() +
+ currentFilterOption!.slice(1)
}` as keyof typeof localization
]
: ''
@@ -312,8 +307,8 @@ export const MRT_FilterTextField = ({
'{filterType}',
localization[
`filter${
- currentFilterOption?.charAt(0)?.toUpperCase() +
- currentFilterOption?.slice(1)
+ currentFilterOption!.charAt(0)?.toUpperCase() +
+ currentFilterOption!.slice(1)
}` as keyof typeof localization
],
)}
@@ -568,7 +563,6 @@ export const MRT_FilterTextField = ({
header={header}
setAnchorEl={setAnchorEl}
setFilterValue={setFilterValue}
- table={table}
/>
>
)
diff --git a/examples/react/material-react-table/src/material-react-table/components/inputs/MRT_GlobalFilterTextField.tsx b/examples/react/material-react-table/src/material-react-table/components/inputs/MRT_GlobalFilterTextField.tsx
index ba86eaf588..acde4cbb49 100644
--- a/examples/react/material-react-table/src/material-react-table/components/inputs/MRT_GlobalFilterTextField.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/inputs/MRT_GlobalFilterTextField.tsx
@@ -7,20 +7,17 @@ import Tooltip from '@mui/material/Tooltip'
import { useDebouncedCallback } from '@tanstack/react-pacer/debouncer'
import { parseFromValuesOrFunc } from '../../utils/utils'
import { MRT_FilterOptionMenu } from '../menus/MRT_FilterOptionMenu'
-import type { MRT_RowData, MRT_TableInstance } from '../../types'
+import { useMRTContext } from '../../hooks/mrtTableHook'
+import type { MRT_RowData } from '../../types'
import type { TextFieldProps } from '@mui/material/TextField'
import type { ChangeEvent, MouseEvent } from 'react'
-export interface MRT_GlobalFilterTextFieldProps<
- TData extends MRT_RowData,
-> extends TextFieldProps<'standard'> {
- table: MRT_TableInstance
-}
+export interface MRT_GlobalFilterTextFieldProps extends TextFieldProps<'standard'> {}
export const MRT_GlobalFilterTextField = ({
- table,
...rest
-}: MRT_GlobalFilterTextFieldProps) => {
+}: MRT_GlobalFilterTextFieldProps) => {
+ const table = useMRTContext()
const {
state,
options: {
@@ -152,7 +149,6 @@ export const MRT_GlobalFilterTextField = ({
anchorEl={anchorEl}
onSelect={handleClear}
setAnchorEl={setAnchorEl}
- table={table}
/>
)
diff --git a/examples/react/material-react-table/src/material-react-table/components/inputs/MRT_SelectCheckbox.tsx b/examples/react/material-react-table/src/material-react-table/components/inputs/MRT_SelectCheckbox.tsx
index 6cc01b30f0..d85ead1543 100644
--- a/examples/react/material-react-table/src/material-react-table/components/inputs/MRT_SelectCheckbox.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/inputs/MRT_SelectCheckbox.tsx
@@ -8,7 +8,8 @@ import {
} from '../../utils/row.utils'
import { getCommonTooltipProps } from '../../utils/style.utils'
import { parseFromValuesOrFunc } from '../../utils/utils'
-import type { MRT_Row, MRT_RowData, MRT_TableInstance } from '../../types'
+import { useMRTContext } from '../../hooks/mrtTableHook'
+import type { MRT_Row, MRT_RowData } from '../../types'
import type { Theme } from '@mui/material/styles'
import type { RadioProps } from '@mui/material/Radio'
import type { CheckboxProps } from '@mui/material/Checkbox'
@@ -19,15 +20,14 @@ export interface MRT_SelectCheckboxProps<
> extends CheckboxProps {
row?: MRT_Row
staticRowIndex?: number
- table: MRT_TableInstance
}
export const MRT_SelectCheckbox = ({
row,
staticRowIndex,
- table,
...rest
}: MRT_SelectCheckboxProps) => {
+ const table = useMRTContext()
const {
state,
options: {
diff --git a/examples/react/material-react-table/src/material-react-table/components/menus/MRT_ActionMenuItem.tsx b/examples/react/material-react-table/src/material-react-table/components/menus/MRT_ActionMenuItem.tsx
index 3dbb9e54a6..5e4ac2bdb0 100644
--- a/examples/react/material-react-table/src/material-react-table/components/menus/MRT_ActionMenuItem.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/menus/MRT_ActionMenuItem.tsx
@@ -2,26 +2,23 @@ import Box from '@mui/material/Box'
import IconButton from '@mui/material/IconButton'
import ListItemIcon from '@mui/material/ListItemIcon'
import MenuItem from '@mui/material/MenuItem'
+import { useMRTContext } from '../../hooks/mrtTableHook'
import type { ReactNode } from 'react'
import type { MenuItemProps } from '@mui/material/MenuItem'
-import type { MRT_RowData, MRT_TableInstance } from '../../types'
-export interface MRT_ActionMenuItemProps<
- TData extends MRT_RowData,
-> extends MenuItemProps {
+export interface MRT_ActionMenuItemProps extends MenuItemProps {
icon: ReactNode
label: string
onOpenSubMenu?: MenuItemProps['onClick'] | MenuItemProps['onMouseEnter']
- table: MRT_TableInstance
}
-export const MRT_ActionMenuItem = ({
+export const MRT_ActionMenuItem = ({
icon,
label,
onOpenSubMenu,
- table,
...rest
-}: MRT_ActionMenuItemProps) => {
+}: MRT_ActionMenuItemProps) => {
+ const table = useMRTContext()
const {
options: {
icons: { ArrowRightIcon },
diff --git a/examples/react/material-react-table/src/material-react-table/components/menus/MRT_CellActionMenu.tsx b/examples/react/material-react-table/src/material-react-table/components/menus/MRT_CellActionMenu.tsx
index b049300d19..50cf04b115 100644
--- a/examples/react/material-react-table/src/material-react-table/components/menus/MRT_CellActionMenu.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/menus/MRT_CellActionMenu.tsx
@@ -1,20 +1,15 @@
import Menu from '@mui/material/Menu'
import { openEditingCell } from '../../utils/cell.utils'
import { parseFromValuesOrFunc } from '../../utils/utils'
+import { useMRTContext } from '../../hooks/mrtTableHook'
import { MRT_ActionMenuItem } from './MRT_ActionMenuItem'
-import type { MRT_RowData, MRT_TableInstance } from '../../types'
import type { MenuProps } from '@mui/material/Menu'
+import type { MRT_Cell, MRT_RowData } from '../../types'
-export interface MRT_CellActionMenuProps<
- TData extends MRT_RowData,
-> extends Partial {
- table: MRT_TableInstance
-}
+export interface MRT_CellActionMenuProps extends Partial {}
-export const MRT_CellActionMenu = ({
- table,
- ...rest
-}: MRT_CellActionMenuProps) => {
+export const MRT_CellActionMenu = ({ ...rest }: MRT_CellActionMenuProps) => {
+ const table = useMRTContext()
const {
state,
options: {
@@ -29,7 +24,9 @@ export const MRT_CellActionMenu = ({
refs: { actionCellRef },
} = table
const { actionCell, density } = state
- const cell = actionCell!
+ // `actionCell` is stored as `Cell` on the (non-generic) state
+ // map; narrow it back to the MRT cell shape for the render props below.
+ const cell = actionCell! as MRT_Cell
const { row } = cell
const { column } = cell
const { columnDef } = column
@@ -53,7 +50,6 @@ export const MRT_CellActionMenu = ({
navigator.clipboard.writeText(cell.getValue() as string)
handleClose()
}}
- table={table}
/>
),
parseFromValuesOrFunc(enableEditing, row) && editDisplayMode === 'cell' && (
@@ -65,7 +61,6 @@ export const MRT_CellActionMenu = ({
openEditingCell({ cell, table })
handleClose()
}}
- table={table}
/>
),
].filter(Boolean)
diff --git a/examples/react/material-react-table/src/material-react-table/components/menus/MRT_ColumnActionMenu.tsx b/examples/react/material-react-table/src/material-react-table/components/menus/MRT_ColumnActionMenu.tsx
index c8eb11038d..bda5933021 100644
--- a/examples/react/material-react-table/src/material-react-table/components/menus/MRT_ColumnActionMenu.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/menus/MRT_ColumnActionMenu.tsx
@@ -1,8 +1,9 @@
import { useState } from 'react'
import Menu from '@mui/material/Menu'
+import { useMRTContext } from '../../hooks/mrtTableHook'
import { MRT_ActionMenuItem } from './MRT_ActionMenuItem'
import { MRT_FilterOptionMenu } from './MRT_FilterOptionMenu'
-import type { MRT_Header, MRT_RowData, MRT_TableInstance } from '../../types'
+import type { MRT_Header, MRT_RowData } from '../../types'
import type { MenuProps } from '@mui/material/Menu'
import type { MouseEvent } from 'react'
@@ -12,16 +13,15 @@ export interface MRT_ColumnActionMenuProps<
anchorEl: HTMLElement | null
header: MRT_Header
setAnchorEl: (anchorEl: HTMLElement | null) => void
- table: MRT_TableInstance
}
export const MRT_ColumnActionMenu = ({
anchorEl,
header,
setAnchorEl,
- table,
...rest
}: MRT_ColumnActionMenuProps) => {
+ const table = useMRTContext()
const {
getAllLeafColumns,
state,
@@ -105,7 +105,7 @@ export const MRT_ColumnActionMenu = ({
const handleClearFilter = () => {
column.setFilterValue(undefined)
setAnchorEl(null)
- if (['empty', 'notEmpty'].includes(columnDef._filterFn)) {
+ if (['empty', 'notEmpty'].includes(columnDef._filterFn!)) {
setColumnFilterFns((prev) => ({
...prev,
[header.id]: allowedColumnFilterOptions?.[0] ?? 'fuzzy',
@@ -153,7 +153,6 @@ export const MRT_ColumnActionMenu = ({
key={0}
label={localization.clearSort}
onClick={handleClearSort}
- table={table}
/>
),
({
String(columnDef.header),
)}
onClick={handleSortAsc}
- table={table}
/>,
({
String(columnDef.header),
)}
onClick={handleSortDesc}
- table={table}
/>,
]
: []),
@@ -195,7 +192,6 @@ export const MRT_ColumnActionMenu = ({
key={3}
label={localization.clearFilter}
onClick={handleClearFilter}
- table={table}
/>,
columnFilterDisplayMode === 'subheader' && (
({
onOpenSubMenu={
showFilterModeSubMenu ? handleOpenFilterModeMenu : undefined
}
- table={table}
/>
),
showFilterModeSubMenu && (
@@ -225,7 +220,6 @@ export const MRT_ColumnActionMenu = ({
key={5}
onSelect={handleFilterByColumn}
setAnchorEl={setFilterMenuAnchorEl}
- table={table}
/>
),
].filter(Boolean)
@@ -240,7 +234,6 @@ export const MRT_ColumnActionMenu = ({
column.getIsGrouped() ? 'ungroupByColumn' : 'groupByColumn'
]?.replace('{column}', String(columnDef.header))}
onClick={handleGroupByColumn}
- table={table}
/>,
]
: []),
@@ -252,7 +245,6 @@ export const MRT_ColumnActionMenu = ({
key={7}
label={localization.pinToLeft}
onClick={() => handlePinColumn('left')}
- table={table}
/>,
({
key={8}
label={localization.pinToRight}
onClick={() => handlePinColumn('right')}
- table={table}
/>,
({
key={9}
label={localization.unpin}
onClick={() => handlePinColumn(false)}
- table={table}
/>,
]
: []),
@@ -281,7 +271,6 @@ export const MRT_ColumnActionMenu = ({
key={10}
label={localization.resetColumnSize}
onClick={handleResetColumnSize}
- table={table}
/>,
]
: []),
@@ -296,7 +285,6 @@ export const MRT_ColumnActionMenu = ({
String(columnDef.header),
)}
onClick={handleHideColumn}
- table={table}
/>,
({
String(columnDef.header),
)}
onClick={handleShowAllColumns}
- table={table}
/>,
]
: []),
diff --git a/examples/react/material-react-table/src/material-react-table/components/menus/MRT_FilterOptionMenu.tsx b/examples/react/material-react-table/src/material-react-table/components/menus/MRT_FilterOptionMenu.tsx
index 88272c9026..f84c6a062b 100644
--- a/examples/react/material-react-table/src/material-react-table/components/menus/MRT_FilterOptionMenu.tsx
+++ b/examples/react/material-react-table/src/material-react-table/components/menus/MRT_FilterOptionMenu.tsx
@@ -1,5 +1,6 @@
import { useMemo } from 'react'
import Menu from '@mui/material/Menu'
+import { useMRTContext } from '../../hooks/mrtTableHook'
import { MRT_ActionMenuItem } from './MRT_ActionMenuItem'
import type {
MRT_FilterOption,
@@ -7,7 +8,6 @@ import type {
MRT_InternalFilterOption,
MRT_Localization,
MRT_RowData,
- MRT_TableInstance,
} from '../../types'
import type { MenuProps } from '@mui/material/Menu'
@@ -113,7 +113,6 @@ export interface MRT_FilterOptionMenuProps<
onSelect?: () => void
setAnchorEl: (anchorEl: HTMLElement | null) => void
setFilterValue?: (filterValue: any) => void
- table: MRT_TableInstance