# Interactivity > Make dashboards explorable with cross-filtering, dashboard filters and controls, and click-to-drill. *[View this page in the Flax docs](https://flax-analytics.com/docs/visualizations/interactivity)* Flax dashboards are interactive: viewers filter the whole board, click a chart to narrow the rest, and drill into a mark to see the detail behind it. This page covers all three. Interactivity never widens access — governance and row-access rules are enforced independently in the warehouse, so a filter can only ever show you rows you were already allowed to see. ## Cross-filtering Click a mark on any chart — a bar, a slice, a point — and the clicked value becomes a filter applied to the other tiles, which re-run against it. This is **cross-filtering**: one chart drives the rest of the board. A "Clear cross-filter" control removes it. Under the hood, the clicked tile emits a `{field, op, values}` selection that subscribing tiles add to their query; re-runs are coalesced so one click can't storm the warehouse. ## Dashboard filters and controls A dashboard exposes shared filters and controls that apply across its tiles: | Control | Behavior | | --- | --- | | **Defaults** | Seed the viewer's filter bar; viewers can override them. | | **Locked** | Always applied and not overridable — use for governance-style scoping. | | **Grain** | Switch the time grain across time-based tiles. | | **Parameters** | A value control, or a *field-swap* that changes which dimension a chart groups by, chosen from a defined set of options. | Viewer filter state lives in the URL, so a filtered view is shareable as a link. ## Drill-down Clicking a mark can also reveal what's behind an aggregate. Click, right-click and tap all open the **same menu** at your cursor, headed by the value you clicked — no gesture performs an action by itself. The menu offers what applies on that surface: | Item | Where | | --- | --- | | **Filter dashboard to this** | Dashboards only. Becomes **Remove this filter** when that selection is already applied. | | **Drill to detail** | Everywhere. | | **View in sheet** | Everywhere — the chart's query narrowed to the clicked value. | | **Ask AI about this** | Where the assistant is available; the question is grounded on the narrowed query. | | **Copy value** | Everywhere. | Filtering is the first item, so it takes focus as the menu opens: click then Enter applies it. If you cross-filter constantly, **⌘-click** (Ctrl-click on Windows/Linux) applies the filter directly and skips the menu. ### Without a mouse A chart is a focus stop, and its marks are traversable: | Key | Does | | --- | --- | | **Tab** | Move focus to the chart. | | **← →** | Step between marks (**↑ ↓** on a horizontal bar chart, where the categories run down the side). | | **↑ ↓** | Switch series, when the chart has more than one (**← →** on a horizontal bar chart). | | **Home / End** | Jump to the first or last mark. | | **Enter** or **Space** | Open the menu for the focused mark. | | **Esc** | Clear the focused mark — or close the menu, if one is open. | The focused mark is highlighted and shows its tooltip, exactly as hovering does. Closing a mark's menu returns focus to the chart on the same mark, so you can act on several marks in a row without starting over. Drill-down itself offers two behaviors: - **View detail rows** — a modal shows the applied-filter chips and the underlying warehouse rows (capped, with CSV export). - **Drill into a child** — when the clicked dimension declares a child (country → city, month → day), rewrite the query in place with a breadcrumb and a way back. Each dashboard tile drills independently — drill state is tile-local and ephemeral, never saved to the chart. For the full model, see [Drill-down](/docs/exploring/drill-down). ## Related - [Drill-down](/docs/exploring/drill-down) — the complete interaction model. - [Dashboards](/docs/visualizations/dashboards) — layout, tabs, and filters. - [Actions](/docs/automation-ai/actions) — turn a control change into an automation.