'use client' import { Button } from '@/components/ui/button' import { Label } from '@/components/ui/label' import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@/components/ui/select' import { Plus, Trash2 } from 'lucide-react' import type { AutomationTrigger, TriggerAndGroup, TriggerOrGroup, TriggerType, } from '@/lib/mail-automation/types' import { TRIGGER_LABELS } from '@/lib/mail-automation/node-definitions' import { AutomationSuggestInput } from './automation-suggest-input' const TRIGGER_TYPES: TriggerType[] = ['message_received', 'label_added', 'label_removed'] interface WorkflowTriggersPanelProps { triggers: TriggerOrGroup onChange: (triggers: TriggerOrGroup) => void disabled?: boolean } export function WorkflowTriggersPanel({ triggers, onChange, disabled, }: WorkflowTriggersPanelProps) { const groups = triggers.groups.length > 0 ? triggers.groups : [{ operator: 'and' as const, items: [{ type: 'message_received' as const }] }] function updateGroups(next: TriggerAndGroup[]) { onChange({ operator: 'or', groups: next.length > 0 ? next : [{ operator: 'and', items: [] }], }) } function updateGroup(gi: number, group: TriggerAndGroup) { const next = [...groups] next[gi] = group updateGroups(next) } function addOrGroup() { onChange({ operator: 'or', groups: [...groups, { operator: 'and', items: [{ type: 'message_received' }] }], }) } function removeOrGroup(gi: number) { updateGroups(groups.filter((_, i) => i !== gi)) } function removeTrigger(gi: number, ti: number) { const group = groups[gi] const items = group.items.filter((_, i) => i !== ti) if (items.length === 0) { removeOrGroup(gi) return } updateGroup(gi, { ...group, items }) } return (
{groups.map((group, gi) => (
{gi > 0 ? (

OU

) : ( )} {groups.length > 1 ? ( ) : null}
{group.items.length === 0 ? (

Aucun déclencheur — ajoutez-en un ci-dessous

) : null} {group.items.map((item, ti) => ( { const items = [...group.items] items[ti] = next updateGroup(gi, { ...group, items }) }} onRemove={() => removeTrigger(gi, ti)} /> ))}
))}
) } function TriggerRow({ item, onChange, onRemove, disabled, }: { item: AutomationTrigger onChange: (item: AutomationTrigger) => void onRemove: () => void disabled?: boolean }) { return (
{item.type === 'message_received' ? (
onChange({ ...item, folder_id: value || undefined })} />
) : (
onChange({ ...item, label: value || undefined })} />
)}
) }