teqo/src/components/campaign
Francisco Ignácio Fontoura Solla adb1773be8 Harden the level control now that it also renders as a Drawer.
The migration put this control on a phone for the first time and it was still
mouse-sized: a 28px submit and checkbox rows with no minimum height, where the
siblings size both for touch. Closing the overlay mid-submit was worse — it
unmounts the Alert and the live region while nothing aborts the request, so a
failure went unreported; it now uses the same `reportFailure` the trend and
estimate cells do.

The rest is what the reviewers found around it: the trigger reports `aria-busy`
like every other overlay caller, `canSubmit` carries the override rule that was
stranded in the JSX, the two-level-jump check reads
`ENGAGEMENT_LEVEL_RULES.maxStepsWithoutShock` instead of a literal so E15 cannot
desync the checkbox from the rule behind it, and the route echoes
`updated.engagementLevel` rather than the requested one — with
`overrideAccess: false` Payload drops a field the actor cannot write instead of
refusing, so the request is not evidence the movement landed.

The cell's state stopped being nullable, which meant splitting it from the
route's success payload: a success always names a level, a row need not have
one. And the control joins `overlayCases`, the table that exists to catch
exactly the kind of container mistake this migration could have made.
2026-07-27 22:17:44 -03:00
..
activity B33+: shared list filter navigation hook 2026-07-27 09:05:08 -03:00
advisor Fix /campanha/liderancas 500: RSC-safe phone display 2026-07-26 20:16:01 -03:00
auth Tooling: prettier como autoridade de formatacao (organize-imports deterministico, scripts format/format:check, normalizacao mecanica de 312 arquivos; artefatos gerados e migrations excluidos via .prettierignore) 2026-07-25 17:22:20 -03:00
dashboard simplify(B14): corrige o mecanismo da fronteira, estado unsupported e duplicatas 2026-07-26 18:03:44 -03:00
demand C13: renomeia "Plano de Acao" para "Atividade" em toda a vertical /campanha 2026-07-25 20:50:38 -03:00
invite B30: convite WhatsApp na lista de lideranças 2026-07-26 20:47:11 -03:00
leadership B42: Drawer quick-edit and a tappable card on the mobile municipalities list. 2026-07-27 20:49:41 -03:00
map B8+: escala das malhas em unidades reais, contrato do map key e degradacao 2026-07-27 01:59:36 -03:00
municipality Harden the level control now that it also renders as a Drawer. 2026-07-27 22:17:44 -03:00
organization Tooling: prettier como autoridade de formatacao (organize-imports deterministico, scripts format/format:check, normalizacao mecanica de 312 arquivos; artefatos gerados e migrations excluidos via .prettierignore) 2026-07-25 17:22:20 -03:00
shared B42: Drawer quick-edit and a tappable card on the mobile municipalities list. 2026-07-27 20:49:41 -03:00
shell B38: sidebar recolhido em tablet no shell /campanha 2026-07-26 18:40:31 -03:00
stateDeputy B33+: close the /simplify rounds on the shared list filter hook 2026-07-27 09:39:15 -03:00
supporter B33+: shared list filter navigation hook 2026-07-27 09:05:08 -03:00
tour E13: visit eligibility checklist and the tour composer. 2026-07-27 21:04:04 -03:00
votePledge B42: Drawer quick-edit and a tappable card on the mobile municipalities list. 2026-07-27 20:49:41 -03:00