Skip to content

Commit e4ac73f

Browse files
committed
AgentTypeahead: prefer below and fit viewport
1 parent a93a55c commit e4ac73f

2 files changed

Lines changed: 17 additions & 2 deletions

File tree

projects/birdhouse/frontend/src/components/ui/AgentTypeahead.test.tsx

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,10 @@ const popoverMockState = vi.hoisted(() => ({
2727
modal: undefined as boolean | undefined,
2828
trapFocus: undefined as boolean | undefined,
2929
closeOnOutsidePointer: undefined as boolean | undefined,
30+
closeOnOutsideFocus: undefined as boolean | undefined,
31+
closeOnEscapeKeyDown: undefined as boolean | undefined,
3032
strategy: undefined as string | undefined,
33+
placement: undefined as string | undefined,
3134
floatingOptions: undefined as unknown,
3235
onOpenChange: undefined as ((open: boolean) => void) | undefined,
3336
}));
@@ -52,16 +55,22 @@ vi.mock("corvu/popover", () => {
5255
open?: boolean;
5356
modal?: boolean;
5457
trapFocus?: boolean;
58+
closeOnEscapeKeyDown?: boolean;
5559
closeOnOutsidePointer?: boolean;
60+
closeOnOutsideFocus?: boolean;
5661
strategy?: string;
62+
placement?: string;
5763
floatingOptions?: unknown;
5864
onOpenChange?: (open: boolean) => void;
5965
}) => {
6066
popoverMockState.open = props.open;
6167
popoverMockState.modal = props.modal;
6268
popoverMockState.trapFocus = props.trapFocus;
69+
popoverMockState.closeOnEscapeKeyDown = props.closeOnEscapeKeyDown;
6370
popoverMockState.closeOnOutsidePointer = props.closeOnOutsidePointer;
71+
popoverMockState.closeOnOutsideFocus = props.closeOnOutsideFocus;
6472
popoverMockState.strategy = props.strategy;
73+
popoverMockState.placement = props.placement;
6574
popoverMockState.floatingOptions = props.floatingOptions;
6675
popoverMockState.onOpenChange = props.onOpenChange;
6776
return <>{props.children}</>;
@@ -139,8 +148,11 @@ describe("AgentTypeahead", () => {
139148
popoverMockState.open = undefined;
140149
popoverMockState.modal = undefined;
141150
popoverMockState.trapFocus = undefined;
151+
popoverMockState.closeOnEscapeKeyDown = undefined;
142152
popoverMockState.closeOnOutsidePointer = undefined;
153+
popoverMockState.closeOnOutsideFocus = undefined;
143154
popoverMockState.strategy = undefined;
155+
popoverMockState.placement = undefined;
144156
popoverMockState.floatingOptions = undefined;
145157
popoverMockState.onOpenChange = undefined;
146158
vi.clearAllMocks();
@@ -157,8 +169,12 @@ describe("AgentTypeahead", () => {
157169
expect(popoverMockState.open).toBe(true);
158170
expect(popoverMockState.modal).toBe(false);
159171
expect(popoverMockState.trapFocus).toBe(false);
172+
expect(popoverMockState.closeOnEscapeKeyDown).toBe(false);
160173
expect(popoverMockState.closeOnOutsidePointer).toBe(false);
174+
expect(popoverMockState.closeOnOutsideFocus).toBe(false);
161175
expect(popoverMockState.strategy).toBe("fixed");
176+
expect(popoverMockState.placement).toBe("bottom-start");
177+
expect(screen.getByTestId("popover-content").style.maxHeight).toBe("");
162178
});
163179

164180
it("confirm maps the selected agent back to @@ replacement metadata", () => {

projects/birdhouse/frontend/src/components/ui/AgentTypeahead.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ export const AgentTypeahead: Component<AgentTypeaheadProps> = (props) => {
131131
closeOnOutsidePointer={false}
132132
closeOnOutsideFocus={false}
133133
strategy="fixed"
134-
placement="top-start"
134+
placement="bottom-start"
135135
floatingOptions={TYPEAHEAD_POPOVER_FLOATING_OPTIONS}
136136
>
137137
<Popover.Anchor class="w-full">{props.children}</Popover.Anchor>
@@ -140,7 +140,6 @@ export const AgentTypeahead: Component<AgentTypeaheadProps> = (props) => {
140140
<Popover.Content
141141
class="flex flex-col rounded-xl border border-border bg-surface-overlay shadow-xl overflow-hidden"
142142
style={{
143-
"max-height": "min(80vh, 36rem)",
144143
"min-width": "min(20rem, 85vw)",
145144
"max-width": "min(calc(100vw - 2rem), 42rem)",
146145
"z-index": baseZIndex,

0 commit comments

Comments
 (0)