import { useTranslation } from 'react-i18next'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/components/ui/collapsible'; import { Plus, ChevronDown, Settings2, Trash2 } from 'lucide-react'; import { cn } from '@/lib/utils'; import type { BuildNode } from '@/api'; import type { EnvVar } from './types'; export interface AdvancedSettingsPanelProps { open: boolean; onOpenChange: (open: boolean) => void; buildNodeId: string; onBuildNodeIdChange: (v: string) => void; buildNodes: BuildNode[]; jobName: string; onJobNameChange: (v: string) => void; triggerMode: string; onTriggerModeChange: (v: string) => void; watchBranches: string; onWatchBranchesChange: (v: string) => void; cronExpr: string; onCronExprChange: (v: string) => void; envVars: EnvVar[]; onEnvVarsChange: (vars: EnvVar[]) => void; } export function AdvancedSettingsPanel({ open, onOpenChange, buildNodeId, onBuildNodeIdChange, buildNodes, jobName, onJobNameChange, triggerMode, onTriggerModeChange, watchBranches, onWatchBranchesChange, cronExpr, onCronExprChange, envVars, onEnvVarsChange, }: AdvancedSettingsPanelProps) { const { t } = useTranslation(); return (
onJobNameChange(e.target.value)} className="h-8 text-xs font-mono dg-input" />
{triggerMode === 'git_push' && ( onWatchBranchesChange(e.target.value)} placeholder="监听分支,如 main, release/*" className="h-8 text-xs font-mono dg-input" /> )} {triggerMode === 'cron' && ( onCronExprChange(e.target.value)} placeholder="0 2 * * *" className="h-8 text-xs font-mono dg-input" /> )}
{envVars.map((v, i) => (
{ const nv = [...envVars]; nv[i] = { ...nv[i], key: e.target.value }; onEnvVarsChange(nv); }} placeholder="KEY" className="h-7 text-xs font-mono dg-input flex-1" /> { const nv = [...envVars]; nv[i] = { ...nv[i], value: e.target.value }; onEnvVarsChange(nv); }} placeholder="value" className="h-7 text-xs font-mono dg-input flex-[2]" />
))}
); }