diff --git a/src/components/campaign/shell/CampaignQuickActionsOverlay.tsx b/src/components/campaign/shell/CampaignQuickActionsOverlay.tsx index 348ed427..4ede26fd 100644 --- a/src/components/campaign/shell/CampaignQuickActionsOverlay.tsx +++ b/src/components/campaign/shell/CampaignQuickActionsOverlay.tsx @@ -1,7 +1,7 @@ 'use client' import { usePathname } from 'next/navigation' -import { useEffect } from 'react' +import { useEffect, useRef } from 'react' import { CampaignGlobalSearchBody } from '@/components/campaign/dashboard/CampaignGlobalSearchMount' import { CampaignHomeActionStrip } from '@/components/campaign/dashboard/CampaignHomeActionStrip' @@ -117,6 +117,7 @@ export const CampaignQuickActionsOverlay = ({ }) => { const isMobile = useIsMobile() const { clear } = useHomeSearch() + const titleRef = useRef(null) useEffect(() => { if (!open) clear() @@ -127,10 +128,12 @@ export const CampaignQuickActionsOverlay = ({ - Ações rápidas + + Ações rápidas + Ações do contexto e busca na campanha @@ -147,10 +150,15 @@ export const CampaignQuickActionsOverlay = ({ event.preventDefault()} + onOpenAutoFocus={(event) => { + event.preventDefault() + titleRef.current?.focus() + }} > - Ações rápidas + + Ações rápidas + Ações do contexto e busca na campanha
diff --git a/tests/unit/campaignQuickActionsDrawer.unit.spec.tsx b/tests/unit/campaignQuickActionsDrawer.unit.spec.tsx index 773528d6..160bf305 100644 --- a/tests/unit/campaignQuickActionsDrawer.unit.spec.tsx +++ b/tests/unit/campaignQuickActionsDrawer.unit.spec.tsx @@ -58,6 +58,15 @@ let innerWidthSpy: ReturnType | undefined const stubMobileViewport = () => { innerWidthSpy = vi.spyOn(window, 'innerWidth', 'get').mockReturnValue(375) + matchMediaMock.mockImplementation((query: string) => ({ + matches: query.includes('max-width'), + media: query, + addEventListener: vi.fn(), + removeEventListener: vi.fn(), + addListener: vi.fn(), + removeListener: vi.fn(), + dispatchEvent: vi.fn(), + })) } beforeEach(() => { @@ -359,23 +368,16 @@ describe('CampaignQuickActionsOverlay (B126)', () => { const input = screen.getByLabelText('Buscar na campanha') const actionsChrome = document.querySelector('[data-slot="quick-actions-chrome"]') + const title = screen.getByText('Ações rápidas') expect(document.activeElement).not.toBe(input) + expect(document.activeElement).toBe(title) expect(actionsChrome?.getAttribute('data-retracted')).toBeNull() expect(actionsChrome?.className).not.toContain('grid-rows-[0fr]') }) it('shows swipe handle and no dialog close on mobile (B146)', () => { stubMobileViewport() - matchMediaMock.mockImplementation((query: string) => ({ - matches: query.includes('max-width'), - media: query, - addEventListener: vi.fn(), - removeEventListener: vi.fn(), - addListener: vi.fn(), - removeListener: vi.fn(), - dispatchEvent: vi.fn(), - })) vi.mocked(postCampaignJson).mockResolvedValue({ ok: true, @@ -403,15 +405,6 @@ describe('CampaignQuickActionsOverlay (B126)', () => { it('uses mobile drawer with actions above search', () => { stubMobileViewport() - matchMediaMock.mockImplementation((query: string) => ({ - matches: query.includes('max-width'), - media: query, - addEventListener: vi.fn(), - removeEventListener: vi.fn(), - addListener: vi.fn(), - removeListener: vi.fn(), - dispatchEvent: vi.fn(), - })) vi.mocked(postCampaignJson).mockResolvedValue({ ok: true,