What changed, and what is still sketch
This page and
Customers
are now the same code path — one BmsDesign::Grid::Query
over BmsDesign::Grid::Listable /
Filterable /
Scopeable declarations on two unrelated models. The
layout decisions of 19 Aug are unchanged; what moved underneath them is the data. The only
per-model code left is cell presentation, which is why the template plan puts a declarative
renderer in the gem rather than shipping a helper per grid.
Rows measure 33px — the tier — with the selection
column and the status badges present. They were 34px: a checkbox or badge is an
inline-level box, so it sat on the text baseline and grew the line box to 21px. D-A fixed it in
the tier with vertical-align: top plus 2px of optical
centring on the checkbox. Against legacy's 32px the tier is still 1px over, and that pixel is
the row separator, which no alignment rule can remove.
The static filter panel is gone. Filters are declared on the model
(grid_filter), so the funnel opens the real add-filter
popover and the chips are the applied state — one source of truth per attribute instead of a
label in a concern and a widget in a partial. The scope bar is new
(grid_scope): mutually exclusive credit states, applied
before filters, which narrow within them.
Still sketched in a lab controller rather than built as components: the "N selected" bulk bar (selection is page-scoped and client-side) and column-priority hiding — Branch ships hidden as the stand-in. The ag-grid direction of D-K is deliberately not started.
Keyboard: n r s f c e fire the accelerators; focus a row and use ↑ ↓ to walk, Enter to open.