Improve routine configuration: delete triggers, fix pause, add feedback

- Remove per-trigger enabled/paused selector (routine-level only)
- Move save/rotate/delete buttons to the right in trigger editor
- Apply board feedback on UI cleanup

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
dotta
2026-03-19 17:20:57 -05:00
parent 5caf43349b
commit e341abb99c

View File

@@ -125,7 +125,6 @@ function TriggerEditor({
}) {
const [draft, setDraft] = useState({
label: trigger.label ?? "",
enabled: trigger.enabled ? "true" : "false",
cronExpression: trigger.cronExpression ?? "",
signingMode: trigger.signingMode ?? "bearer",
replayWindowSec: String(trigger.replayWindowSec ?? 300),
@@ -134,7 +133,6 @@ function TriggerEditor({
useEffect(() => {
setDraft({
label: trigger.label ?? "",
enabled: trigger.enabled ? "true" : "false",
cronExpression: trigger.cronExpression ?? "",
signingMode: trigger.signingMode ?? "bearer",
replayWindowSec: String(trigger.replayWindowSec ?? 300),
@@ -165,18 +163,6 @@ function TriggerEditor({
onChange={(event) => setDraft((current) => ({ ...current, label: event.target.value }))}
/>
</div>
<div className="space-y-1.5">
<Label className="text-xs">Enabled</Label>
<Select value={draft.enabled} onValueChange={(enabled) => setDraft((current) => ({ ...current, enabled }))}>
<SelectTrigger>
<SelectValue />
</SelectTrigger>
<SelectContent>
<SelectItem value="true">Enabled</SelectItem>
<SelectItem value="false">Paused</SelectItem>
</SelectContent>
</Select>
</div>
{trigger.kind === "schedule" && (
<div className="md:col-span-2 space-y-1.5">
<Label className="text-xs">Schedule</Label>
@@ -216,13 +202,20 @@ function TriggerEditor({
</div>
<div className="flex flex-wrap items-center gap-2">
{trigger.lastResult && <span className="text-xs text-muted-foreground">Last: {trigger.lastResult}</span>}
<div className="ml-auto flex items-center gap-2">
{trigger.kind === "webhook" && (
<Button variant="outline" size="sm" onClick={() => onRotate(trigger.id)}>
<RefreshCw className="mr-1.5 h-3.5 w-3.5" />
Rotate secret
</Button>
)}
<Button
variant="outline"
size="sm"
onClick={() =>
onSave(trigger.id, {
label: draft.label.trim() || null,
enabled: draft.enabled === "true",
...(trigger.kind === "schedule"
? { cronExpression: draft.cronExpression.trim(), timezone: getLocalTimezone() }
: {}),
@@ -238,13 +231,6 @@ function TriggerEditor({
<Save className="mr-1.5 h-3.5 w-3.5" />
Save
</Button>
{trigger.kind === "webhook" && (
<Button variant="outline" size="sm" onClick={() => onRotate(trigger.id)}>
<RefreshCw className="mr-1.5 h-3.5 w-3.5" />
Rotate secret
</Button>
)}
<div className="ml-auto">
<Button
variant="ghost"
size="sm"
@@ -254,7 +240,6 @@ function TriggerEditor({
<Trash2 className="h-3.5 w-3.5" />
</Button>
</div>
{trigger.lastResult && <span className="text-xs text-muted-foreground">Last: {trigger.lastResult}</span>}
</div>
</div>
);