dash-mantine-datatable is a Dash wrapper around Mantine DataTable for apps that already use dash-mantine-components. It adds a Dash-friendly prop model, Mantine style props, component templates for renderers/editors/filters, and chainable Python helpers for columns, grouping, rows, selection, pagination, sorting, and search.
Read the full user guide and recipes on GitHub Pages.
pip install dash-mantine-datatableOptional demo dependencies for the live gallery in usage.py:
pip install "dash-mantine-datatable[demo]"from dash import Dash
import dash_mantine_components as dmc
import dash_mantine_datatable as dmdt
app = Dash()
app.layout = dmc.MantineProvider(
dmdt.DataTable(
id="employees",
data=[
{"id": 1, "name": "Avery Stone", "team": "Platform", "status": "On Track"},
{"id": 2, "name": "Mina Patel", "team": "Growth", "status": "Planning"},
],
columns=[
{"accessor": "name", "sortable": True},
{"accessor": "team", "sortable": True},
{"accessor": "status", "presentation": "badge"},
],
).update_layout(radius="lg", withTableBorder=True, striped=True)
)
if __name__ == "__main__":
app.run(debug=True)- Mantine-native styling via
radius,bg,classNames,styles, and related props - Fluent helpers:
update_layout(),update_table_properties(),update_columns(),group_columns(),update_rows(),update_selection(),update_pagination(),update_sorting(), andupdate_search() - Dash component slots for renderers, editors, filters, empty states, loaders, row expansion, and sort icons
- Client and server modes for pagination, sorting, and search
- Column filtering with Dash Mantine controls in header popovers
- Grouped headers, inline row grouping, nested child rows, and row expansion
- Checkbox selection with shift-range support, row dragging, inline editing, and callback payloads for row/cell interactions
- Generated Python, R, and Julia component packages from the same source tree
| Resource | Link |
|---|---|
| User guide + recipes | jeffgallini.github.io/dash-mantine-datatable |
| Interactive demo app | python usage.py |
| API reference (local pdoc) | python scripts/build_docs.py |
Build the public docs site locally:
python -m pip install -e ".[demo]"
python scripts/build_great_docs.pyRegenerate recipe pages from usage.py:
python scripts/generate_recipes.pyCapture README/recipe screenshots from the running demo:
python usage.py
python scripts/capture_docs_media.pytable = (
dmdt.DataTable(
data=[{"id": 1, "name": "Avery", "salary": 128000, "status": "On Track"}],
columns=[
dmdt.Column("name"),
dmdt.Column("salary", textAlign="right", presentation="currency", currency="USD"),
dmdt.Column("status", presentation="badge"),
],
)
.update_columns(selector="name", title="Employee")
.update_rows(selector={"status": "On Track"}, className="row-ok")
.update_selection(selectionTrigger="checkbox")
.update_pagination(recordsPerPage=10)
)| Area | dash-mantine-datatable |
dash-ag-grid |
|---|---|---|
| UI fit | Best when the app is already Mantine/DMC | Best when the grid is its own major product surface |
| Authoring model | Compact Dash API with Python helpers | Richer but more verbose AG Grid configuration |
| Dash component slots | Strong support for DMC renderers, editors, filters, and states | Strong custom rendering with a broader grid API |
| Common app-table features | Sorting, search, selection, pagination, expansion, dragging, grouped headers | Same core set plus spreadsheet-style tooling |
| Large-data strategy | Client/server pagination, sorting, and search | Additional row models and enterprise features |
| Best fit | Mantine-native Dash apps that want polished tables without AG Grid complexity | Data-heavy apps that need spreadsheet-grade grid mechanics |
npm install --legacy-peer-deps
python -m pip install -r requirements.txt -r tests/requirements.txt
npm run build
python -m pytest
python usage.pyPreflight locally:
.\scripts\check-release.ps1python scripts/check_release.pyRelease flow:
- Land changes on
staging. - Open a
staging -> mainPR titledv1.0.0 Release - Stable feature set, docs site, and bug fixes. - Merge to publish to PyPI, create the GitHub release, and deploy docs to GitHub Pages.
Required one-time setup:
- Protect
mainand require the Release PR Guard workflow. - Configure GitHub Pages to publish from GitHub Actions.
- Add
PYPI_API_TOKENto thepypienvironment.
See CONTRIBUTING.md and CHANGELOG.md for details.
