diff --git a/frontend/src/widgets/MultiselectWidget.test.tsx b/frontend/src/widgets/MultiselectWidget.test.tsx index 97d93b2b..ce87d65c 100644 --- a/frontend/src/widgets/MultiselectWidget.test.tsx +++ b/frontend/src/widgets/MultiselectWidget.test.tsx @@ -123,3 +123,22 @@ test("confirm is enabled when allow_empty is false but something is checked", as await userEvent.click(btn); expect(onRespond).toHaveBeenCalledWith({ id: "u1", kind: "multiselect", choices: ["x"] }); }); + +test("renders reserved controls and emits control on click", async () => { + const onRespond = vi.fn(); + render( + + ); + await userEvent.click(screen.getByRole("button", { name: /go back/i })); + expect(onRespond).toHaveBeenCalledWith({ id: "u1", control: "back" }); + await userEvent.click(screen.getByRole("button", { name: /^exit$/i })); + expect(onRespond).toHaveBeenCalledWith({ id: "u1", control: "exit" }); +}); diff --git a/frontend/src/widgets/MultiselectWidget.tsx b/frontend/src/widgets/MultiselectWidget.tsx index 38caf8c7..66b608c1 100644 --- a/frontend/src/widgets/MultiselectWidget.tsx +++ b/frontend/src/widgets/MultiselectWidget.tsx @@ -1,5 +1,6 @@ import { useState } from "react"; import type { WidgetProps } from "./types"; +import { ReservedControls } from "./ReservedControls"; export function MultiselectWidget({ descriptor, onRespond }: WidgetProps) { const options = descriptor.options ?? []; @@ -54,6 +55,10 @@ export function MultiselectWidget({ descriptor, onRespond }: WidgetProps) { > Confirm + onRespond({ id: descriptor.id, control: c })} + /> ); }