Row Selection Feature Guide
Mantine React Table has a built-in row-selection feature and makes it easy to manage the selection state yourself. This guide will walk you through how to enable row selection and how to customize the selection behavior.
Relevant Table Options
# | Prop Name | Type | Default Value | More Info Links | |
---|---|---|---|---|---|
1 | boolean | true | MRT Row Selection Docs | ||
2 | boolean | true | MRT Row Selection Docs | ||
3 | boolean | (row: MRT_Row) => boolean |
| |||
4 | boolean | true | |||
5 | boolean | true | |||
6 | (originalRow: TData, index: number, parent?: MRT_Row<TData>) => string |
| TanStack Table Core Table Docs | ||
7 | CheckboxProps | ({ table }) => CheckboxProps |
| Mantine Checkbox Docs | ||
8 | CheckboxProps | ({ row, table }) => CheckboxProps |
| Mantine Checkbox Docs | ||
9 | OnChangeFn<RowSelectionState> |
| TanStack Table Row Selection Docs | ||
10 | 'bottom' | 'top' | 'head-overlay' | 'none' |
| |||
11 | 'all' | 'page' | 'page' | |||
12 | 'checkbox' | 'radio' | 'switch' | 'checkbox' | MRT Editing Docs | ||
Relevant State
# | State Option | Type | Default Value | More Info Links | |
---|---|---|---|---|---|
1 | Record<string, boolean> | {} | TanStack Table Row Selection Docs | ||
Enable Row Selection
Selection checkboxes can be enabled with the enableRowSelection
table option.
Batch Row Selection
By default, when the user holds down the Shift key and clicks a row, all rows between the last selected row and the clicked row will be selected. This can be disabled with the enableBatchRowSelection
table option.
Enable Row Selection Conditionally Per Row
You can also enable row selection conditionally per row with the same enableRowSelection
table option, but with a callback function instead of a boolean.
Access Row Selection State
There a couple of ways to access the selection state. You can either manage the selection state yourself or read it from the table instance.
Manage Row Selection State
The row selection state is managed internally by default, but more than likely, you will want to have access to that state yourself. Here is how you can simply get access to the row selection state, specifically.
Read Row Selection State or rows from Table Instance
Alternatively, you can read the selection state directly from the table
instance like so:
Useful Row IDs
By default, the row.id
for each row in the table is simply the index of the row in the table. You can override this and tell Mantine React Table to use a more useful Row ID with the getRowId
table option. For example, you may want some like this:
Now as rows get selected, the rowSelection
state will look like this:
This can be very useful when you are trying to read your selection state and do something with your data as the row selection changes.
First Name | Last Name | Age | Address | City | State | |
---|---|---|---|---|---|---|
Dylan | Murray | 22 | 261 Erdman Ford | East Daphne | Kentucky | |
Raquel | Kohler | 18 | 769 Dominic Grove | Columbus | Ohio |
Select Row on Row Click
By default, a row can only be selected by either clicking the checkbox or radio button in the mrt-row-select
column. If you want to be able to select a row by clicking anywhere on the row, you can add your own onClick
function to a table body row like this:
Disable Select All
By default, if you enable selection for each row, there will also be a select all checkbox in the header of the checkbox column. It can be hidden with the enableSelectAll
table option.
Position or Hide Alert Banner Selection Message
By default, an alert banner will be show as rows are selected. You can use the positionToolbarAlertBanner
table option to show the alert banner in the top toolbar, bottom toolbar, as an overlay in the table head, or hide it completely.
Alternate Switch and Radio Variants
By default, the selection inputs are Mantine checkboxes, but you can use switch or radio buttons instead with the selectDisplayMode
table option.
First Name | Last Name | Age | |
---|---|---|---|
Dylan | Murray | 22 | |
Raquel | Kohler | 18 |
Single Row Selection
By default, the enableMultiRowSelection
table option is set to true
, which means that multiple rows can be selected at once with a checkbox. If you want to only allow a single row to be selected at a time, you can set this table option to false
and a radio button will be used instead of a checkbox.
Select | First Name | Last Name | Age |
---|---|---|---|
Dylan | Murray | 22 | |
Raquel | Kohler | 18 |
Customize Select Checkboxes or Radio Buttons
The selection checkboxes can be customized with the mantineSelectCheckboxProps
table option. Any prop that can be passed to a Mantine Checkbox component can be specified here. For example, you may want to use a different color for the checkbox, or use some logic to disable certain rows from being selected.
Select | First Name | Last Name | Age |
---|---|---|---|
Dylan | Murray | 22 | |
Raquel | Kohler | 18 | |
Ervin | Reinger | 20 | |
Brittany | McCullough | 21 | |
Branson | Frami | 32 |
Manual Row Selection Without Checkboxes
You may have a use case where you want to be able to select rows by clicking them, but you do not want to show any checkboxes or radio buttons. You can do this by implementing a row selection feature yourself, while keeping the enableRowSelection
table option false
so that the default selection behavior is disabled.
First Name | Last Name | Age | Address | City | State |
---|---|---|---|---|---|
Dylan | Murray | 22 | 261 Erdman Ford | East Daphne | Kentucky |
Raquel | Kohler | 18 | 769 Dominic Grove | Columbus | Ohio |
View Extra Storybook Examples