---
id: "packages/active-grid/api/controls"
title: "Controls"
description: "GridPagination, GroupingToolbar: generated from the source of active-grid."
url: "/packages/active-grid/api/controls"
locale: "en"
revision: "g0mvjxwj5c-88bdbe1c:controls"
---

# Controls

Exported by `@workspace/active-grid`. Generated from the package source; part of [the index of every export](/packages/active-grid/api).

## `GridPagination`

| Prop | Type | Required | Description |
| --- | --- | --- | --- |
| `grid` | `Grid<TData>` | yes |  |
| `totalCount` | `number` | yes |  |
| `config` | `GridPaginationOptions` | no |  |
| `isLoading` | `boolean` | no | First load in flight — no answer has arrived yet. Same signal the body's empty-state guard uses (`body.tsx`), passed here so the footer cannot claim a result count the grid does not have. Defaults to `false` for direct callers outside the grid. |
| `isRefetching` | `boolean` | no | Refetch in flight. See `isLoading`. |
| `styleConfig` | `GridPaginationStyleConfig` | no |  |
| `suppressSelectionCount` | `boolean` | no | Hide the footer's selection counter because the selection action bar is already stating it. Internal: the grid decides, never a consumer. |

## `GroupingToolbar`

| Prop | Type | Required | Description |
| --- | --- | --- | --- |
| `grid` | `Grid<TData>` | yes |  |
| `canAcceptDrop` | `((columnId: string) => boolean)` | no | Optional predicate override for drop-acceptance.  Default (when omitted): the toolbar calls `column.getCanGroup()` which checks the engine's `enableGrouping` option. That works for client-mode grouping, but in **server-grouping mode** the engine's `enableGrouping` is intentionally `false` (the engine doesn't compute its own grouped row-model; we synthesise group rows via `useServerGrouping`). Without an override, every drop is rejected — see ADR-014.  Pass a custom predicate when in server-grouping mode that consults `column.columnDef.server?.groupBy` instead of the engine flag. `<ActiveGrid>` wires this automatically; standalone consumers of `<GroupingToolbar>` only need to pass it when their grouping-source is also server-side. |
