diff --git a/components/modals/RepoFormModal.tsx b/components/modals/RepoFormModal.tsx index 9545779..355afcb 100644 --- a/components/modals/RepoFormModal.tsx +++ b/components/modals/RepoFormModal.tsx @@ -32,6 +32,8 @@ import { TagIcon } from '../icons/TagIcon'; import { CubeIcon } from '../icons/CubeIcon'; import { ChevronsUpIcon } from '../icons/ChevronsUpIcon'; import { ChevronsDownIcon } from '../icons/ChevronsDownIcon'; +import { ChevronDownIcon } from '../icons/ChevronDownIcon'; +import { ChevronRightIcon } from '../icons/ChevronRightIcon'; import ReactMarkdown from 'react-markdown'; import remarkGfm from 'remark-gfm'; import { PencilIcon } from '../icons/PencilIcon'; @@ -131,6 +133,19 @@ const STEP_DEFINITIONS: Record([ + TaskStepType.GitCheckout, + TaskStepType.SvnSwitch, + TaskStepType.DelphiBuild, + TaskStepType.LAZARUS_BUILD, + TaskStepType.LAZARUS_BUILD_PACKAGE, + TaskStepType.FPC_TEST_FPCUNIT, + TaskStepType.DELPHI_PACKAGE_INNO, + TaskStepType.DELPHI_PACKAGE_NSIS, + TaskStepType.DELPHI_TEST_DUNITX, + TaskStepType.RunCommand, +]); + const STEP_CATEGORIES = [ { name: 'General', types: [TaskStepType.RunCommand] }, { name: 'Git', types: [TaskStepType.GitPull, TaskStepType.GitFetch, TaskStepType.GitCheckout, TaskStepType.GitStash] }, @@ -217,12 +232,21 @@ const TaskStepItem: React.FC<{ const logger = useLogger(); const stepDef = STEP_DEFINITIONS[step.type]; const isEnabled = step.enabled ?? true; + const hasDetails = STEPS_WITH_DETAILS.has(step.type); + const [isCollapsed, setIsCollapsed] = useState(false); + const detailsId = useMemo(() => `task-step-${step.id}-details`, [step.id]); // --- HOOKS MOVED TO TOP --- const toggleTooltip = useTooltip(isEnabled ? 'Disable Step' : 'Enable Step'); const duplicateTooltip = useTooltip('Duplicate Step'); const moveToTopTooltip = useTooltip('Move Step to Top'); const moveToBottomTooltip = useTooltip('Move Step to Bottom'); + + useEffect(() => { + if (!hasDetails) { + setIsCollapsed(false); + } + }, [hasDetails]); const selectedDelphiProject = useMemo(() => { return projectInfo?.delphi?.projects.find(p => p.path === step.delphiProjectFile); @@ -301,47 +325,8 @@ const TaskStepItem: React.FC<{ ); - return ( -
-
-
- -
-

{label}

-

Step {index + 1}

-
-
-
- - - - - - - -
-
+ const detailFields = ( + <> {(step.type === TaskStepType.GitCheckout || step.type === TaskStepType.SvnSwitch) && (