diff --git a/src/app/(protected)/workorders/_components/list/advanced-search/adv-parity-filter-sections.tsx b/src/app/(protected)/workorders/_components/list/advanced-search/adv-parity-filter-sections.tsx index 199cfcb8..dc2f1a8e 100644 --- a/src/app/(protected)/workorders/_components/list/advanced-search/adv-parity-filter-sections.tsx +++ b/src/app/(protected)/workorders/_components/list/advanced-search/adv-parity-filter-sections.tsx @@ -64,6 +64,7 @@ function IndicatorPill({ onClick={onClick} data-indicator={kind} data-selected={selected ? "true" : "false"} + aria-pressed={selected} className="inline-flex items-center gap-1.5" style={{ height: 26, diff --git a/src/components/ui/dot-toggle-pill.tsx b/src/components/ui/dot-toggle-pill.tsx index cd68e7c0..e01f3cad 100644 --- a/src/components/ui/dot-toggle-pill.tsx +++ b/src/components/ui/dot-toggle-pill.tsx @@ -37,6 +37,7 @@ export function DotTogglePill({ )} style={{ ...selectedStyle, ...style }} {...props} + aria-pressed={selected} > {children} diff --git a/src/components/ui/toggle-segment.tsx b/src/components/ui/toggle-segment.tsx index 2a2e2e9f..04c399f2 100644 --- a/src/components/ui/toggle-segment.tsx +++ b/src/components/ui/toggle-segment.tsx @@ -28,6 +28,7 @@ export function ToggleSegment({ className, )} {...props} + aria-pressed={selected} > {children} diff --git a/src/test/app/(protected)/workorders/work-orders-advanced-search-wiring.test.tsx b/src/test/app/(protected)/workorders/work-orders-advanced-search-wiring.test.tsx index e1339afd..5e604ee8 100644 --- a/src/test/app/(protected)/workorders/work-orders-advanced-search-wiring.test.tsx +++ b/src/test/app/(protected)/workorders/work-orders-advanced-search-wiring.test.tsx @@ -234,6 +234,28 @@ describe("WorkOrders Advanced Search page wiring (SH-121)", () => { expect(params.docStatuses).toEqual([2, 1, 3]); }); + it("exposes indicator selected state as aria-pressed", () => { + const view = renderWithProviders(, { + route: "/workorders", + withAuth: false, + }); + + fireEvent.click(screen.getByRole("button", { name: "Advanced Filters" })); + advOpen = true; + view.rerender(); + + const sheet = screen.getByRole("dialog", { name: "Advanced Filters" }); + fireEvent.click(within(sheet).getByRole("button", { name: /Indicators/i })); + + const names = [/Rescheduled ≥ 2/i, /Carried Over ≥ 2/i, /^Add-On$/i]; + for (const name of names) { + const pill = within(sheet).getByRole("button", { name }); + expect(pill).toHaveAttribute("aria-pressed", "false"); + fireEvent.click(pill); + expect(pill).toHaveAttribute("aria-pressed", "true"); + } + }); + it("applies Indicators, Flag, and Internal WO# through the public Advanced Filters sheet", () => { const view = renderWithProviders(, { route: "/workorders",