teqo-backup/src/components/campaign/shared
Francisco Ignácio Fontoura Solla 5f11960c3a B32+: share the campaign JSON route wrapper, fetch helper and cell auto-save.
`campaignJsonMutationRoute` now builds every JSON POST route under /campanha —
`isSameOriginRequest` had been copied into five of them, so the CSRF policy was
failing open by omission; a convention guard sweeps all of `src/app` and names
its three exceptions. `postCampaignJson` is the only place that spells
`credentials: 'same-origin'`, and `useCampaignCellAutosave` is the debounce /
abort / revert / flush-on-close machine the quick-edit cells shipped three
times.

The shell keeps the `aria-live` region outside the Popover/Drawer, since closing
is what commits and it was unmounting the node that would announce the result;
`variant="sheet"` took a `footer` slot, which let the signal control drop the
overlay it only kept for one button.

Two bugs the extraction made visible: a revert issued while a different payload
was in flight was dropped silently, and `change()` never cleared a past failure,
which outranks everything the live region would otherwise say.
2026-07-28 08:07:29 -03:00
..
AsyncSearchCombobox.tsx 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
CampaignCellEditOverlay.tsx B32+: share the campaign JSON route wrapper, fetch helper and cell auto-save. 2026-07-28 08:07:29 -03:00
CampaignCellTooltip.tsx E10 /simplify: remove superficie morta, unifica o parser de enum repetivel e reusa o ranking A11 2026-07-25 22:33:16 -03:00
CampaignCopyableCell.tsx Fix /campanha/liderancas 500: RSC-safe phone display 2026-07-26 20:16:01 -03:00
CampaignFilterChips.tsx B33+: shared list filter navigation hook 2026-07-27 09:05:08 -03:00
CampaignHeaderFilterPopover.tsx B21: cria página própria dos territórios 2026-07-25 21:50:24 -03:00
CampaignHoverTooltip.tsx B34: editable município chips on the leaderships list. 2026-07-27 22:35:19 -03:00
CampaignInfoHint.tsx Pass 2 W2: components/campaign em subpastas por dominio 2026-07-25 14:52:17 -03:00
CampaignListEmptyState.tsx Pass 2 W2: components/campaign em subpastas por dominio 2026-07-25 14:52:17 -03:00
CampaignListFooter.tsx Pass 2 W2: components/campaign em subpastas por dominio 2026-07-25 14:52:17 -03:00
CampaignListPagination.tsx Pass 2 W4b: zero exports mortos; knip exports/types/enumMembers em ERROR no CI 2026-07-25 15:51:52 -03:00
CampaignListPending.tsx B33+: shared list filter navigation hook 2026-07-27 09:05:08 -03:00
CampaignMetricStrip.tsx Pass 2 W2: components/campaign em subpastas por dominio 2026-07-25 14:52:17 -03:00
CampaignMobileMultiFilterField.tsx B21: cria página própria dos territórios 2026-07-25 21:50:24 -03:00
CampaignScopeBadge.tsx Pass 2 W2: components/campaign em subpastas por dominio 2026-07-25 14:52:17 -03:00
CampaignSearchForm.tsx B33+: shared list filter navigation hook 2026-07-27 09:05:08 -03:00
CampaignSearchInput.tsx 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
CampaignSortableHead.tsx B21: cria página própria dos territórios 2026-07-25 21:50:24 -03:00
CampaignTable.tsx Deliver B29: header sort and filters on the leaderships list. 2026-07-28 01:43:44 -03:00
CampaignUserAvatar.tsx 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
ConsentText.tsx 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
ContactCombobox.tsx 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
LeadershipStateDeputyRelationCell.tsx B32+: share the campaign JSON route wrapper, fetch helper and cell auto-save. 2026-07-28 08:07:29 -03:00
MunicipalityPortfolioCell.tsx B32+: share the campaign JSON route wrapper, fetch helper and cell auto-save. 2026-07-28 08:07:29 -03:00
RelationMultiSelect.tsx Pass 2 W2: components/campaign em subpastas por dominio 2026-07-25 14:52:17 -03:00
StrictCombobox.tsx 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
useCampaignCellAutosave.ts B32+: share the campaign JSON route wrapper, fetch helper and cell auto-save. 2026-07-28 08:07:29 -03:00
useCampaignCellFailureChannel.ts B32+: share the campaign JSON route wrapper, fetch helper and cell auto-save. 2026-07-28 08:07:29 -03:00
useCampaignListFilterNavigation.ts B33+: close the /simplify rounds on the shared list filter hook 2026-07-27 09:39:15 -03:00