fix(FN-4112): remove mobile preset grid scroll cap

- Remove the inner preset grid max-height and overflow cap in the New Agent dialog mobile layout
- Add a dashboard CSS regression test that asserts the mobile media block keeps the preset grid fully visible
- Add a patch changeset for @runfusion/fusion covering the mobile blank-space fix

Fusion-Task-Id: FN-4112
This commit is contained in:
Fusion
2026-05-12 07:44:52 -07:00
committed by gsxdsm
parent 4850fcb51f
commit 1d9bd52b41
3 changed files with 41 additions and 0 deletions

View File

@@ -670,4 +670,9 @@
.agent-dialog-interview-btn {
width: 100%;
}
.agent-presets-grid {
max-height: none;
overflow-y: visible;
}
}

View File

@@ -1,4 +1,5 @@
import { describe, it, expect, vi, beforeEach } from "vitest";
import { loadAllAppCss } from "../../test/cssFixture";
import { useState } from "react";
import { render, screen, fireEvent, waitFor, within, act } from "@testing-library/react";
import userEvent from "@testing-library/user-event";
@@ -191,6 +192,28 @@ function getStepZeroField(label: string | RegExp) {
return screen.getByLabelText(label);
}
function extractMobileMediaBlocks(content: string): string {
const blocks: string[] = [];
const regex = /@media\s*\(\s*max-width:\s*768px\s*\)\s*\{/g;
let match: RegExpExecArray | null;
while ((match = regex.exec(content)) !== null) {
const startIdx = match.index + match[0].length;
let braceCount = 1;
let endIdx = startIdx;
while (braceCount > 0 && endIdx < content.length) {
if (content[endIdx] === "{") braceCount++;
if (content[endIdx] === "}") braceCount--;
endIdx++;
}
if (braceCount === 0) {
blocks.push(content.slice(startIdx, endIdx - 1));
}
}
return blocks.join("\n");
}
describe("NewAgentDialog", () => {
const mockOnClose = vi.fn();
const mockOnCreated = vi.fn();
@@ -205,6 +228,14 @@ describe("NewAgentDialog", () => {
mockFetchDiscoveredSkills.mockResolvedValue(MOCK_SKILLS_RESPONSE);
});
describe("mobile layout", () => {
it("removes the preset grid scroll cap inside the mobile media block", () => {
const mobileCss = extractMobileMediaBlocks(loadAllAppCss());
expect(mobileCss).toMatch(/\.agent-presets-grid\s*\{[^}]*max-height:\s*none;[^}]*overflow-y:\s*visible;/);
});
});
describe("modal visibility", () => {
it("renders nothing when isOpen is false", () => {
const { container } = render(