fix(FN-2498): keep New Task more options collapsed by default

- Add an autoExpandMoreOptionsOnSelection prop to TaskForm and gate advanced-section auto-expansion behind it
- Disable auto-expansion in NewTaskModal so default-on workflow step preselection does not open More options on first render
- Mark collapsed advanced content with the hidden attribute to prevent interaction until expanded
- Add dashboard tests for default collapsed state, opt-out auto-expand behavior, and default-on workflow-step regression coverage
- Replace hardcoded spacing/transition values in NewTaskModal.css with design tokens
This commit is contained in:
Fusion
2026-04-25 11:21:35 -07:00
committed by gsxdsm
parent a8124da1ff
commit 79b73c343c
5 changed files with 93 additions and 16 deletions

View File

@@ -88,6 +88,8 @@ export interface TaskFormProps {
renderBelowPrimary?: React.ReactNode;
/** When true, skip rendering the Dependencies form-group inside "More options". Use when the parent renders its own dependency UI via renderBelowPrimary. */
hideDependencies?: boolean;
/** When true (default), More options auto-expands when non-default advanced selections are present. */
autoExpandMoreOptionsOnSelection?: boolean;
}
export function TaskForm({
@@ -128,6 +130,7 @@ export function TaskForm({
onClose,
renderBelowPrimary,
hideDependencies,
autoExpandMoreOptionsOnSelection = true,
reviewLevel,
onReviewLevelChange,
}: TaskFormProps) {
@@ -144,7 +147,9 @@ export function TaskForm({
reviewLevel !== undefined;
const [showDepDropdown, setShowDepDropdown] = useState(false);
const [showMoreOptions, setShowMoreOptions] = useState(hasInitialMoreOptions);
const [showMoreOptions, setShowMoreOptions] = useState(
autoExpandMoreOptionsOnSelection ? hasInitialMoreOptions : false,
);
const [depSearch, setDepSearch] = useState("");
const [availableModels, setAvailableModels] = useState<ModelInfo[]>([]);
const [favoriteProviders, setFavoriteProviders] = useState<string[]>([]);
@@ -243,11 +248,16 @@ export function TaskForm({
// Auto-expand advanced options when non-default values are present.
useEffect(() => {
if (!autoExpandMoreOptionsOnSelection) {
hadMoreOptionSelectionsRef.current = hasMoreOptionSelections;
return;
}
if (hasMoreOptionSelections && !hadMoreOptionSelectionsRef.current) {
setShowMoreOptions(true);
}
hadMoreOptionSelectionsRef.current = hasMoreOptionSelections;
}, [hasMoreOptionSelections]);
}, [hasMoreOptionSelections, autoExpandMoreOptionsOnSelection]);
// Keep dependency dropdown state clean when advanced options are collapsed.
useEffect(() => {
@@ -731,6 +741,7 @@ export function TaskForm({
id="task-form-more-options"
className={`task-form-more-options${showMoreOptions ? "" : " collapsed"}`}
aria-hidden={!showMoreOptions}
hidden={!showMoreOptions}
data-testid="task-form-more-options"
>
{/* Attachments */}