The building picker is a multi-select

The top-bar building picker on the company picker's primitive: checkbox rows, the shared footer, several buildings in one selection.

23 Sept 2026 · branch feat/property-picker-multiselect · captured against propflow-stage · at 5823ea6a92

Data note. Every name and balance below comes from propflow-stage, which is anonymized by construction (ADR-0097/0110 — phones in the impossible +1000 NPA, emails @example.test). The identical capture against prod would carry real tenants' names and balances and is not safe to attach anywhere, which is why the generator refuses to run against one.

1 · 1 · Open under one company: checkbox rows and the company picker's footer

Fairhaven Residential (TEST) is picked in the rail. The building picker opens the same panel as the company picker: search, checkbox rows, and the footer with the count, Done and the all-state. Nothing ticked reads All Properties.

Asserted in the captured DOM — All Properties · Done · August Court · Brightwater Flats. The footer's Done and the all-state label are in the open panel.

1 · Open under one company: checkbox rows and the company picker's footer
The building picker open, nothing ticked.

2 · 2 · Two buildings ticked: the draft, before Done

Two rows ticked. The footer counts them, and nothing has navigated yet: a tick edits a draft, and Done commits once.

Asserted in the captured DOM — selected · Done · August Court · Brightwater Flats. The footer reads 'N of M selected' with two ticks.

2 · Two buildings ticked: the draft, before Done
Two buildings ticked in the draft.

3 · 3 · After Done: the trigger names two properties

Done commits both buildings as one selection (prop= carries both ids). The trigger now reads 2 properties.

Asserted in the captured DOM — 2 properties. The trigger names the committed count.

3 · After Done: the trigger names two properties
The committed two-building selection.

4 · 4 · Every company: the picker says to pick a company first

At Every company no company is named, so a building pick would be dropped by the selection model. The panel says what to do instead of listing rows that do nothing.

Asserted in the captured DOM — Pick a company in the top-left corner to choose buildings.. The fleet notice is in the open panel.

4 · Every company: the picker says to pick a company first
The picker at Every company.

5 · 5 · Two companies: one tick keeps the other company's buildings in the panel

Two companies are picked in the rail. The panel groups buildings under a header for each company. After ticking one Fairhaven building, the second company's header and rows are still in the open panel, so buildings from both companies can be picked together. The panel's companies come from the committed selection. A tick only edits buildings within them.

Asserted in the captured DOM — Fairhaven Residential (TEST) · August Court · selected · Done. Both company headers are required by the waits after the tick (a missing header aborts the run). The footer counts the tick.

5 · Two companies: one tick keeps the other company's buildings in the panel
Two companies open, one building ticked: both companies still listed.

What is next

Part 2 moves the Copy link action into this footer. It still sits beside the trigger in these frames.

PropFlow Docs