diff --git a/admin-js/src/App.js b/admin-js/src/App.js index e4d911e9..ee814dd2 100644 --- a/admin-js/src/App.js +++ b/admin-js/src/App.js @@ -59,6 +59,8 @@ const DatagridSingle = (props) => ( const COMPONENTS = { Datagrid, DatagridSingle, + BulkDeleteButton, + BooleanField, DateField, NumberField, ReferenceField, ReferenceManyField, ReferenceOneField, SelectField, TextField, TimeField, diff --git a/aiohttp_admin/backends/sqlalchemy.py b/aiohttp_admin/backends/sqlalchemy.py index b9133078..d00f453d 100644 --- a/aiohttp_admin/backends/sqlalchemy.py +++ b/aiohttp_admin/backends/sqlalchemy.py @@ -229,6 +229,9 @@ def __init__(self, db: AsyncEngine, model_or_table: Union[sa.Table, type[Declara children.append(comp(field, c_props)) container = "Datagrid" if t == "ReferenceManyField" else "DatagridSingle" datagrid = comp(container, {"children": children, "rowClick": "show"}) + if t == "ReferenceManyField": + datagrid["props"]["bulkActionButtons"] = comp( + "BulkDeleteButton", {"mutationMode": "pessimistic"}) props["children"] = (datagrid,) self.fields[name] = comp(t, props) diff --git a/tests/test_backends_sqlalchemy.py b/tests/test_backends_sqlalchemy.py index c1cdce56..ea196880 100644 --- a/tests/test_backends_sqlalchemy.py +++ b/tests/test_backends_sqlalchemy.py @@ -146,7 +146,8 @@ class TestOne(base): # type: ignore[misc,valid-type] assert r.fields["ones"] == comp( "ReferenceManyField", {"children": (comp("Datagrid", { - "rowClick": "show", "children": [comp("NumberField", {"source": "id"})]}),), + "rowClick": "show", "children": [comp("NumberField", {"source": "id"})], + "bulkActionButtons": comp("BulkDeleteButton", {"mutationMode": "pessimistic"})}),), "label": "Ones", "reference": "one", "source": "id", "target": "many_id", "sortable": False}) assert "ones" not in r.inputs