import { useState } from "react"; import { closestCenter, DndContext, KeyboardSensor, PointerSensor, useSensor, useSensors, } from "@dnd-kit/core"; import { arrayMove, SortableContext, sortableKeyboardCoordinates, verticalListSortingStrategy, } from "@dnd-kit/sortable"; import { LuPlus } from "react-icons/lu"; import { newCronTrigger, newHttpTrigger, newWorkflowTrigger } from "../../lib/workflow-doc.js"; import { AddTriggerDialog, TriggerCard } from "./TriggerCard.jsx"; export function TriggersTab({ doc, onPatch, disabled, owner, auths = [], pages = [], }) { const [addOpen, setAddOpen] = useState(false); const sensors = useSensors( useSensor(PointerSensor, { activationConstraint: { distance: 6 } }), useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates }), ); const triggers = doc?.triggers ?? []; const ids = triggers.map((t) => t.uiId); function patchTriggers(next) { onPatch((d) => { d.triggers = next; }); } function onDragEnd(event) { const { active, over } = event; if (!over || active.id === over.id) return; const oldIndex = ids.indexOf(active.id); const newIndex = ids.indexOf(over.id); if (oldIndex < 0 || newIndex < 0) return; patchTriggers(arrayMove(triggers, oldIndex, newIndex)); } return (
How this workflow is started. Manual Run from the Test panel is always available.
No triggers. The Test panel can still run a saved workflow.
) : (