Attribute table widget

A bottom panel that shows feature rows in a sortable, filterable table tied to one or more map layers.

basic

The Attribute table widget is a slide-up table at the bottom of the map that displays rows from one or more layers. Use for "I need to see the data behind the dots."

What it shows

A table with one row per feature. Columns are the layer's fields (configurable). Selecting a row in the table highlights the feature on the map; clicking a feature on the map highlights its row.

A layer dropdown in the table header switches between configured layers (one layer's table at a time).

Default behavior

  • Sortable by clicking column headers.
  • Filterable by typing a string in the per-column filter row.
  • The current map view's filter applies to the table (when the layer is filtered on the map, the table shows the matching rows only).
  • Selecting a row zooms to its feature.

Bulk actions

For users with edit access to the layer:

  • Edit a single row's attributes (inline editing in the table cell).
  • Delete selected rows.
  • Export selected to CSV / XLSX.

Widget config

  • Bound layers. One or more; the table dropdown picks among them.
  • Visible columns per layer. Default: all fields except internal ones (id, created_at, edited_at). Add/remove and reorder.
  • Default page size. 50 by default; up to 1000.
  • Allow editing (default: yes if the viewer has edit access, no otherwise).
  • Allow bulk-export (default: yes).
  • Open by default (default: closed; user opens via a widget button).

Performance

The table queries features lazily: only the rows visible in the table are fetched, plus a small look-ahead. Scrolling fast or sorting on an unindexed field can produce a brief loading state.

Notes

  • No cross-layer joins in the table view. Use a derived layer if you need a combined view.
  • Geometry isn't shown in the table cell. The map handles geometry rendering; the table shows attributes.
  • Read-only on derived layers. Derived layers are materialized outputs; editing a derived row doesn't propagate back to the source. The table reflects this by hiding the edit affordance on derived-layer rows.