mega-plant/components
David d471dc2d88 Invoices: make the machine picker searchable
Booking a line meant scrolling a native <select> of 44 machines, where two
dozen near-identical "CASE TLB" entries sit next to each other. A native
select cannot be filtered, so finding TLB07 meant scrolling past most of the
list.

Replaced with a combobox that filters as you type, on the code, the name or
the category, and says how many of 44 machines matched. Still behaves like a
select rather than a text box: opening it, Up/Down to move, Enter to choose,
Escape to cancel, and a "Not booked" entry to clear.

The list stays grouped by category so the codes read the way the plant
register does, and every row is a 44px target with the list scrolling within
its own box, so it stays usable on a phone. It is an ARIA combobox —
aria-expanded, aria-autocomplete, aria-controls — and the highlighted row
scrolls into view as you arrow through it.

Booking behaviour is unchanged: still posts on selection, still rolls the
display back if the save fails, still refreshes on success.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-10-02 18:37:54 +02:00
..
ChartsGrid.tsx Fix: the mobile table was mislabelled and clipping its own totals 2026-10-02 15:34:19 +02:00
DashboardCharts.tsx Round 3 (Parts A-B): charts fixes + expenses/overheads cleanup 2026-09-12 11:24:18 +02:00
ExpenseSectionPage.tsx Fix: the mobile table was mislabelled and clipping its own totals 2026-10-02 15:34:19 +02:00
GlobalSearch.tsx Fix: the mobile table was mislabelled and clipping its own totals 2026-10-02 15:34:19 +02:00
IncomeView.tsx Fix: the mobile table was mislabelled and clipping its own totals 2026-10-02 15:34:19 +02:00
InvoiceIntake.tsx Fix: the mobile table was mislabelled and clipping its own totals 2026-10-02 15:34:19 +02:00
InvoiceList.tsx Sites: a real Sites list, with the unbooked lines bookable to a site 2026-10-02 16:24:06 +02:00
InvoiceTable.tsx Invoices: make the machine picker searchable 2026-10-02 18:37:54 +02:00
InvoiceUploader.tsx Invoices: line-item extraction, booking to plant items, VAT-inclusive income 2026-10-01 15:59:30 +02:00
MachineCombobox.tsx Invoices: make the machine picker searchable 2026-10-02 18:37:54 +02:00
MachineLineChart.tsx Round 4: regressions fixed + mobile standard 2026-09-12 12:05:43 +02:00
PlantMap.tsx Sites: give every site coordinates 2026-10-02 16:33:43 +02:00
PlantMapLoader.tsx Sites: a real Sites list, with the unbooked lines bookable to a site 2026-10-02 16:24:06 +02:00
PlantRegisterTable.tsx Sites: auto-allocate container lines to the container the site hires 2026-10-02 18:32:12 +02:00
RunningView.tsx Fix: the mobile table was mislabelled and clipping its own totals 2026-10-02 15:34:19 +02:00
ScrollFade.tsx Fix: the mobile table was mislabelled and clipping its own totals 2026-10-02 15:34:19 +02:00
Sidebar.tsx Sites: auto-allocate container lines to the container the site hires 2026-10-02 18:32:12 +02:00
SiteBookingSelect.tsx Sites: a real Sites list, with the unbooked lines bookable to a site 2026-10-02 16:24:06 +02:00
SiteContainerEditor.tsx Sites: auto-allocate container lines to the container the site hires 2026-10-02 18:32:12 +02:00
SiteCoordinateEditor.tsx Sites: give every site coordinates 2026-10-02 16:33:43 +02:00
Sparkline.tsx
ThemeProvider.tsx
ThemeToggle.tsx
Toast.tsx Invoices: a duplicate is a notice, not a broken invoice 2026-10-02 14:59:08 +02:00