@xyne/workflow-ui 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/automations/AutomationCard.d.ts +8 -2
- package/dist/components/automations/AutomationCard.d.ts.map +1 -1
- package/dist/components/automations/AutomationCard.js +12 -2
- package/dist/components/automations/AutomationCard.js.map +1 -1
- package/dist/components/automations/AutomationListView.d.ts.map +1 -1
- package/dist/components/automations/AutomationListView.js +106 -7
- package/dist/components/automations/AutomationListView.js.map +1 -1
- package/dist/components/automations/CreateWorkflowDialog.d.ts +8 -2
- package/dist/components/automations/CreateWorkflowDialog.d.ts.map +1 -1
- package/dist/components/automations/CreateWorkflowDialog.js +26 -3
- package/dist/components/automations/CreateWorkflowDialog.js.map +1 -1
- package/dist/components/builder/v3/BranchContainer.d.ts +3 -1
- package/dist/components/builder/v3/BranchContainer.d.ts.map +1 -1
- package/dist/components/builder/v3/BranchContainer.js +42 -44
- package/dist/components/builder/v3/BranchContainer.js.map +1 -1
- package/dist/components/builder/v3/DeleteStepDialog.d.ts +14 -0
- package/dist/components/builder/v3/DeleteStepDialog.d.ts.map +1 -0
- package/dist/components/builder/v3/DeleteStepDialog.js +10 -0
- package/dist/components/builder/v3/DeleteStepDialog.js.map +1 -0
- package/dist/components/builder/v3/EnhancedSchemaFormRenderer.d.ts.map +1 -1
- package/dist/components/builder/v3/EnhancedSchemaFormRenderer.js +27 -4
- package/dist/components/builder/v3/EnhancedSchemaFormRenderer.js.map +1 -1
- package/dist/components/builder/v3/IssueBar.d.ts +16 -0
- package/dist/components/builder/v3/IssueBar.d.ts.map +1 -0
- package/dist/components/builder/v3/IssueBar.js +10 -0
- package/dist/components/builder/v3/IssueBar.js.map +1 -0
- package/dist/components/builder/v3/KeyValueEditor.d.ts.map +1 -1
- package/dist/components/builder/v3/KeyValueEditor.js +1 -1
- package/dist/components/builder/v3/KeyValueEditor.js.map +1 -1
- package/dist/components/builder/v3/SaveValidationDialog.d.ts +17 -0
- package/dist/components/builder/v3/SaveValidationDialog.d.ts.map +1 -0
- package/dist/components/builder/v3/SaveValidationDialog.js +16 -0
- package/dist/components/builder/v3/SaveValidationDialog.js.map +1 -0
- package/dist/components/builder/v3/SidePanel.d.ts +6 -1
- package/dist/components/builder/v3/SidePanel.d.ts.map +1 -1
- package/dist/components/builder/v3/SidePanel.js +2 -2
- package/dist/components/builder/v3/SidePanel.js.map +1 -1
- package/dist/components/builder/v3/StepConfigPanel.d.ts +4 -1
- package/dist/components/builder/v3/StepConfigPanel.d.ts.map +1 -1
- package/dist/components/builder/v3/StepConfigPanel.js +6 -3
- package/dist/components/builder/v3/StepConfigPanel.js.map +1 -1
- package/dist/components/builder/v3/StepNode.d.ts +5 -1
- package/dist/components/builder/v3/StepNode.d.ts.map +1 -1
- package/dist/components/builder/v3/StepNode.js +4 -3
- package/dist/components/builder/v3/StepNode.js.map +1 -1
- package/dist/components/builder/v3/TriggerConfigPanel.d.ts +4 -1
- package/dist/components/builder/v3/TriggerConfigPanel.d.ts.map +1 -1
- package/dist/components/builder/v3/TriggerConfigPanel.js +5 -2
- package/dist/components/builder/v3/TriggerConfigPanel.js.map +1 -1
- package/dist/components/builder/v3/TriggerNode.d.ts +3 -1
- package/dist/components/builder/v3/TriggerNode.d.ts.map +1 -1
- package/dist/components/builder/v3/TriggerNode.js +3 -3
- package/dist/components/builder/v3/TriggerNode.js.map +1 -1
- package/dist/components/builder/v3/VariablePickerPopover.d.ts +3 -1
- package/dist/components/builder/v3/VariablePickerPopover.d.ts.map +1 -1
- package/dist/components/builder/v3/VariablePickerPopover.js +2 -1
- package/dist/components/builder/v3/VariablePickerPopover.js.map +1 -1
- package/dist/components/builder/v3/VariableRefInput.d.ts +3 -1
- package/dist/components/builder/v3/VariableRefInput.d.ts.map +1 -1
- package/dist/components/builder/v3/VariableRefInput.js +2 -2
- package/dist/components/builder/v3/VariableRefInput.js.map +1 -1
- package/dist/components/builder/v3/WorkflowBuilderV3.d.ts.map +1 -1
- package/dist/components/builder/v3/WorkflowBuilderV3.js +80 -5
- package/dist/components/builder/v3/WorkflowBuilderV3.js.map +1 -1
- package/dist/components/builder/v3/WorkflowCanvas.d.ts +6 -1
- package/dist/components/builder/v3/WorkflowCanvas.d.ts.map +1 -1
- package/dist/components/builder/v3/WorkflowCanvas.js +2 -2
- package/dist/components/builder/v3/WorkflowCanvas.js.map +1 -1
- package/dist/components/builder/v3/WorkflowTree.d.ts +4 -1
- package/dist/components/builder/v3/WorkflowTree.d.ts.map +1 -1
- package/dist/components/builder/v3/WorkflowTree.js +7 -6
- package/dist/components/builder/v3/WorkflowTree.js.map +1 -1
- package/dist/components/execution/ExecutionTree.d.ts.map +1 -1
- package/dist/components/execution/ExecutionTree.js +1 -1
- package/dist/components/execution/ExecutionTree.js.map +1 -1
- package/dist/hooks/index.d.ts +4 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +2 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/use-folder-list.d.ts +13 -0
- package/dist/hooks/use-folder-list.d.ts.map +1 -0
- package/dist/hooks/use-folder-list.js +48 -0
- package/dist/hooks/use-folder-list.js.map +1 -0
- package/dist/hooks/use-variable-picker.js +18 -1
- package/dist/hooks/use-variable-picker.js.map +1 -1
- package/dist/hooks/use-workflow-counts.d.ts +12 -0
- package/dist/hooks/use-workflow-counts.d.ts.map +1 -0
- package/dist/hooks/use-workflow-counts.js +35 -0
- package/dist/hooks/use-workflow-counts.js.map +1 -0
- package/dist/hooks/use-workflow-list.d.ts +10 -1
- package/dist/hooks/use-workflow-list.d.ts.map +1 -1
- package/dist/hooks/use-workflow-list.js +15 -3
- package/dist/hooks/use-workflow-list.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/utils/issue-mapping.d.ts +26 -0
- package/dist/utils/issue-mapping.d.ts.map +1 -0
- package/dist/utils/issue-mapping.js +40 -0
- package/dist/utils/issue-mapping.js.map +1 -0
- package/package.json +2 -2
|
@@ -1,8 +1,14 @@
|
|
|
1
|
-
import type { WorkflowRecord } from '@xyne/workflow-sdk/client';
|
|
1
|
+
import type { WorkflowRecord, FolderRecord } from '@xyne/workflow-sdk/client';
|
|
2
2
|
export interface AutomationCardProps {
|
|
3
3
|
workflow: WorkflowRecord;
|
|
4
4
|
onClick: () => void;
|
|
5
5
|
onRun?: (() => void) | undefined;
|
|
6
|
+
/** Folders available to move this workflow into. Enables the move control. */
|
|
7
|
+
folders?: FolderRecord[] | undefined;
|
|
8
|
+
/** Move this workflow to another folder. */
|
|
9
|
+
onMove?: ((folderId: string) => void) | undefined;
|
|
10
|
+
/** Visual layout: a grid card (default) or a compact list row. */
|
|
11
|
+
layout?: 'card' | 'row' | undefined;
|
|
6
12
|
}
|
|
7
|
-
export declare function AutomationCard({ workflow, onClick, onRun }: AutomationCardProps): import("react").JSX.Element;
|
|
13
|
+
export declare function AutomationCard({ workflow, onClick, onRun, folders, onMove, layout }: AutomationCardProps): import("react").JSX.Element;
|
|
8
14
|
//# sourceMappingURL=AutomationCard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutomationCard.d.ts","sourceRoot":"","sources":["../../../src/components/automations/AutomationCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"AutomationCard.d.ts","sourceRoot":"","sources":["../../../src/components/automations/AutomationCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAgF9E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IACjC,8EAA8E;IAC9E,OAAO,CAAC,EAAE,YAAY,EAAE,GAAG,SAAS,CAAC;IACrC,4CAA4C;IAC5C,MAAM,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAClD,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;CACrC;AAID,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAe,EAAE,EAAE,mBAAmB,+BA2IjH"}
|
|
@@ -40,16 +40,26 @@ function TriggerIcon({ type }) {
|
|
|
40
40
|
return (_jsxs("span", { className: cn('flex h-5 w-5 shrink-0 items-center justify-center rounded-full', colorClass), title: `${title} trigger`, "aria-label": `${title} trigger`, children: [type.toLowerCase() === 'webhook' && (_jsxs("svg", { width: "10", height: "10", viewBox: "0 0 24 24", fill: "none", stroke: "white", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [_jsx("path", { d: "M18 16.98h-5.99c-1.1 0-1.95.94-2.48 1.9A4 4 0 0 1 2 17c.01-.7.2-1.4.57-2" }), _jsx("path", { d: "m6 17 3.13-5.78c.53-.97.1-2.18-.5-3.1a4 4 0 1 1 6.89-4.06" }), _jsx("path", { d: "m12 6 3.13 5.73C15.66 12.7 16.9 13 18 13a4 4 0 0 1 0 8" })] })), type.toLowerCase() === 'cron' && (_jsxs("svg", { width: "10", height: "10", viewBox: "0 0 24 24", fill: "none", stroke: "white", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [_jsx("circle", { cx: "12", cy: "12", r: "10" }), _jsx("polyline", { points: "12 6 12 12 16 14" })] })), type.toLowerCase() === 'event' && (_jsx("svg", { width: "10", height: "10", viewBox: "0 0 24 24", fill: "none", stroke: "white", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: _jsx("path", { d: "M13 2 3 14h9l-1 8 10-12h-9l1-8z" }) })), type.toLowerCase() === 'manual' && (_jsx("svg", { width: "10", height: "10", viewBox: "0 0 24 24", fill: "none", stroke: "white", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: _jsx("polygon", { points: "5 3 19 12 5 21 5 3" }) })), !['manual', 'webhook', 'cron', 'event'].includes(type.toLowerCase()) && (_jsx("svg", { width: "10", height: "10", viewBox: "0 0 24 24", fill: "none", stroke: "white", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: _jsx("circle", { cx: "12", cy: "12", r: "3" }) }))] }));
|
|
41
41
|
}
|
|
42
42
|
// ─── Component ────────────────────────────────────────────────────────────────
|
|
43
|
-
export function AutomationCard({ workflow, onClick, onRun }) {
|
|
43
|
+
export function AutomationCard({ workflow, onClick, onRun, folders, onMove, layout = 'card' }) {
|
|
44
44
|
const meta = safeParseMeta(workflow.metadata);
|
|
45
45
|
const config = safeParseConfig(workflow.config);
|
|
46
46
|
const name = meta.name ?? workflow.id;
|
|
47
47
|
const stepCount = config.steps?.length ?? 0;
|
|
48
48
|
const triggerType = config.trigger?.type ?? 'Unknown';
|
|
49
49
|
const variant = statusToVariant(workflow.status);
|
|
50
|
+
const moveControl = folders && onMove ? (_jsx("select", { value: workflow.folderId, onClick: (e) => e.stopPropagation(), onChange: (e) => { e.stopPropagation(); onMove(e.target.value); }, title: "Move to folder", "aria-label": `Move ${name} to folder`, className: cn('max-w-[8rem] truncate rounded-[var(--wui-radius)] px-1.5 py-1 text-xs', 'border border-[var(--wui-border)] bg-[var(--wui-bg-subtle)] text-[var(--wui-fg-muted)]', 'outline-none focus-visible:ring-2 focus-visible:ring-[var(--wui-primary)]'), children: folders.map((f) => (_jsx("option", { value: f.id, children: f.name }, f.id))) })) : null;
|
|
51
|
+
const runControl = onRun ? (_jsxs("button", { type: "button", onClick: (e) => { e.stopPropagation(); onRun(); }, className: cn('flex items-center gap-1.5 rounded-[var(--wui-radius)] px-2.5 py-1', 'text-xs font-medium text-[var(--wui-fg-muted)]', 'border border-[var(--wui-border)] bg-[var(--wui-bg-subtle)]', 'transition-colors hover:border-[var(--wui-primary)] hover:text-[var(--wui-primary)]', 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--wui-primary)]'), "aria-label": `Run ${name}`, children: [_jsx("svg", { width: "9", height: "9", viewBox: "0 0 24 24", fill: "currentColor", "aria-hidden": "true", children: _jsx("polygon", { points: "5 3 19 12 5 21 5 3" }) }), "Run"] })) : null;
|
|
52
|
+
// ─── List row layout ───
|
|
53
|
+
if (layout === 'row') {
|
|
54
|
+
return (_jsxs("div", { role: "button", tabIndex: 0, onClick: onClick, onKeyDown: (e) => { if (e.key === 'Enter' || e.key === ' ') {
|
|
55
|
+
e.preventDefault();
|
|
56
|
+
onClick();
|
|
57
|
+
} }, className: cn('group flex items-center gap-3 border-b border-[var(--wui-border)] px-4 py-2.5 text-left outline-none', 'cursor-pointer transition-colors hover:bg-[var(--wui-bg-subtle)]', 'focus-visible:ring-2 focus-visible:ring-[var(--wui-primary)] focus-visible:ring-inset'), children: [_jsx(TriggerIcon, { type: triggerType }), _jsx("span", { className: "min-w-0 flex-1 truncate text-sm font-medium text-[var(--wui-fg)]", title: name, children: name }), _jsx("span", { className: "hidden w-24 shrink-0 truncate text-xs text-[var(--wui-fg-muted)] sm:block", children: triggerType.charAt(0).toUpperCase() + triggerType.slice(1).toLowerCase() }), _jsxs("span", { className: "hidden w-16 shrink-0 text-xs text-[var(--wui-fg-muted)] md:block", children: [stepCount, " ", stepCount === 1 ? 'step' : 'steps'] }), _jsx("span", { className: "w-20 shrink-0", children: _jsx(StatusBadge, { status: variant, label: workflow.status }) }), _jsxs("div", { className: "flex shrink-0 items-center gap-2", children: [moveControl, runControl] })] }));
|
|
58
|
+
}
|
|
59
|
+
// ─── Grid card layout (default) ───
|
|
50
60
|
return (_jsxs("article", { role: "button", tabIndex: 0, onClick: onClick, onKeyDown: (e) => { if (e.key === 'Enter' || e.key === ' ') {
|
|
51
61
|
e.preventDefault();
|
|
52
62
|
onClick();
|
|
53
|
-
} }, className: cn('group relative flex flex-col gap-3 rounded-xl border border-[var(--wui-border)]', 'bg-[var(--wui-bg)] p-4 text-left outline-none', 'cursor-pointer transition-all duration-150', 'hover:shadow-[var(--wui-shadow-sm)] hover:-translate-y-px', 'focus-visible:ring-2 focus-visible:ring-[var(--wui-primary)] focus-visible:ring-offset-2'), children: [_jsxs("div", { className: "flex items-start gap-2.5", children: [_jsx(TriggerIcon, { type: triggerType }), _jsx("h3", { className: "flex-1 truncate text-sm font-semibold leading-tight text-[var(--wui-fg)]", title: name, children: name })] }), _jsxs("div", { className: "flex items-center gap-3 text-xs text-[var(--wui-fg-muted)]", children: [_jsxs("span", { className: "flex items-center gap-1", children: [_jsx("svg", { width: "11", height: "11", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: _jsx("path", { d: "m9 18 6-6-6-6" }) }), triggerType.charAt(0).toUpperCase() + triggerType.slice(1).toLowerCase()] }), _jsx("span", { className: "text-[var(--wui-border)]", children: "\u00B7" }), _jsxs("span", { className: "flex items-center gap-1", children: [_jsxs("svg", { width: "11", height: "11", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [_jsx("rect", { x: "3", y: "3", width: "18", height: "18", rx: "2" }), _jsx("path", { d: "M3 9h18M9 21V9" })] }), stepCount, " ", stepCount === 1 ? 'step' : 'steps'] })] }), _jsxs("div", { className: "flex items-center justify-between gap-2 pt-1", children: [_jsx(StatusBadge, { status: variant, label: workflow.status }),
|
|
63
|
+
} }, className: cn('group relative flex flex-col gap-3 rounded-xl border border-[var(--wui-border)]', 'bg-[var(--wui-bg)] p-4 text-left outline-none', 'cursor-pointer transition-all duration-150', 'hover:shadow-[var(--wui-shadow-sm)] hover:-translate-y-px', 'focus-visible:ring-2 focus-visible:ring-[var(--wui-primary)] focus-visible:ring-offset-2'), children: [_jsxs("div", { className: "flex items-start gap-2.5", children: [_jsx(TriggerIcon, { type: triggerType }), _jsx("h3", { className: "flex-1 truncate text-sm font-semibold leading-tight text-[var(--wui-fg)]", title: name, children: name })] }), _jsxs("div", { className: "flex items-center gap-3 text-xs text-[var(--wui-fg-muted)]", children: [_jsxs("span", { className: "flex items-center gap-1", children: [_jsx("svg", { width: "11", height: "11", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: _jsx("path", { d: "m9 18 6-6-6-6" }) }), triggerType.charAt(0).toUpperCase() + triggerType.slice(1).toLowerCase()] }), _jsx("span", { className: "text-[var(--wui-border)]", children: "\u00B7" }), _jsxs("span", { className: "flex items-center gap-1", children: [_jsxs("svg", { width: "11", height: "11", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [_jsx("rect", { x: "3", y: "3", width: "18", height: "18", rx: "2" }), _jsx("path", { d: "M3 9h18M9 21V9" })] }), stepCount, " ", stepCount === 1 ? 'step' : 'steps'] })] }), _jsxs("div", { className: "flex items-center justify-between gap-2 pt-1", children: [_jsx(StatusBadge, { status: variant, label: workflow.status }), _jsxs("div", { className: "ml-auto flex items-center gap-2", children: [moveControl, runControl] })] })] }));
|
|
54
64
|
}
|
|
55
65
|
//# sourceMappingURL=AutomationCard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutomationCard.js","sourceRoot":"","sources":["../../../src/components/automations/AutomationCard.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"AutomationCard.js","sourceRoot":"","sources":["../../../src/components/automations/AutomationCard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutomationListView.d.ts","sourceRoot":"","sources":["../../../src/components/automations/AutomationListView.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AutomationListView.d.ts","sourceRoot":"","sources":["../../../src/components/automations/AutomationListView.tsx"],"names":[],"mappings":"AAaA,MAAM,WAAW,uBAAuB;IACtC,gBAAgB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAOD,wBAAgB,kBAAkB,CAAC,EACjC,gBAAgB,EAChB,aAAa,EACb,SAAS,GACV,EAAE,uBAAuB,+BA0RzB"}
|
|
@@ -1,22 +1,121 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useState } from 'react';
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from 'react';
|
|
3
3
|
import { useWorkflowList } from '../../hooks/use-workflow-list.js';
|
|
4
|
+
import { useFolderList } from '../../hooks/use-folder-list.js';
|
|
5
|
+
import { useWorkflowCounts } from '../../hooks/use-workflow-counts.js';
|
|
6
|
+
import { useWorkflowClient } from '../../hooks/use-workflow-client.js';
|
|
4
7
|
import { cn } from '../shared/cn.js';
|
|
5
8
|
import { EmptyState } from '../shared/EmptyState.js';
|
|
6
9
|
import { LoadingSpinner } from '../shared/LoadingSpinner.js';
|
|
7
10
|
import { AutomationCard } from './AutomationCard.js';
|
|
8
11
|
import { CreateWorkflowDialog } from './CreateWorkflowDialog.js';
|
|
12
|
+
/** Workflows per page in the list view. */
|
|
13
|
+
const PAGE_SIZE = 25;
|
|
9
14
|
// ─── Component ────────────────────────────────────────────────────────────────
|
|
10
15
|
export function AutomationListView({ onSelectWorkflow, onRunWorkflow, className, }) {
|
|
11
|
-
const
|
|
16
|
+
const client = useWorkflowClient();
|
|
17
|
+
const [selectedFolderId, setSelectedFolderId] = useState('all');
|
|
18
|
+
const [page, setPage] = useState(0);
|
|
19
|
+
const counts = useWorkflowCounts();
|
|
20
|
+
const folderList = useFolderList();
|
|
21
|
+
const { folders } = folderList;
|
|
22
|
+
// Total for the current view drives pagination (from the cheap counts query).
|
|
23
|
+
const total = selectedFolderId === 'all'
|
|
24
|
+
? counts.total
|
|
25
|
+
: (counts.byFolder[selectedFolderId] ?? 0);
|
|
26
|
+
const pageCount = Math.max(1, Math.ceil(total / PAGE_SIZE));
|
|
27
|
+
const currentPage = Math.min(page, pageCount - 1);
|
|
28
|
+
// Folder-scoped + paginated server query.
|
|
29
|
+
const { workflows, isLoading, error, refetch } = useWorkflowList({
|
|
30
|
+
...(selectedFolderId === 'all' ? {} : { folderId: selectedFolderId }),
|
|
31
|
+
limit: PAGE_SIZE,
|
|
32
|
+
offset: currentPage * PAGE_SIZE,
|
|
33
|
+
});
|
|
34
|
+
// Reset to the first page whenever the folder changes.
|
|
35
|
+
useEffect(() => { setPage(0); }, [selectedFolderId]);
|
|
12
36
|
const [showCreateDialog, setShowCreateDialog] = useState(false);
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
37
|
+
const [addingFolder, setAddingFolder] = useState(false);
|
|
38
|
+
const [newFolderName, setNewFolderName] = useState('');
|
|
39
|
+
const [editingFolderId, setEditingFolderId] = useState(null);
|
|
40
|
+
const [editingName, setEditingName] = useState('');
|
|
41
|
+
const [railError, setRailError] = useState(null);
|
|
42
|
+
const handleNewFolder = async () => {
|
|
43
|
+
const name = newFolderName.trim();
|
|
44
|
+
if (!name) {
|
|
45
|
+
setAddingFolder(false);
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
setRailError(null);
|
|
49
|
+
try {
|
|
50
|
+
const folder = await folderList.create(name);
|
|
51
|
+
setNewFolderName('');
|
|
52
|
+
setAddingFolder(false);
|
|
53
|
+
setSelectedFolderId(folder.id);
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
setRailError(err instanceof Error ? err.message : String(err));
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
const handleRename = async (id) => {
|
|
60
|
+
const name = editingName.trim();
|
|
61
|
+
setEditingFolderId(null);
|
|
62
|
+
if (!name)
|
|
63
|
+
return;
|
|
64
|
+
try {
|
|
65
|
+
await folderList.rename(id, name);
|
|
66
|
+
}
|
|
67
|
+
catch (err) {
|
|
68
|
+
setRailError(err instanceof Error ? err.message : String(err));
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
const handleDelete = async (id) => {
|
|
72
|
+
setRailError(null);
|
|
73
|
+
try {
|
|
74
|
+
await folderList.remove(id);
|
|
75
|
+
if (selectedFolderId === id)
|
|
76
|
+
setSelectedFolderId('all');
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
setRailError(err instanceof Error ? err.message : 'Could not delete folder');
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
const handleMove = async (workflowId, folderId) => {
|
|
83
|
+
await client.workflows.update(workflowId, { folderId });
|
|
84
|
+
refetch(); // current folder's grid
|
|
85
|
+
counts.refetch(); // rail badges
|
|
86
|
+
};
|
|
87
|
+
const selectedFolderName = selectedFolderId === 'all'
|
|
88
|
+
? null
|
|
89
|
+
: folders.find((f) => f.id === selectedFolderId)?.name;
|
|
90
|
+
return (_jsxs("section", { className: cn('flex h-full min-h-0 bg-[var(--wui-bg)]', className), children: [_jsxs("aside", { className: "flex h-full w-60 shrink-0 flex-col border-r border-[var(--wui-border)]", children: [_jsx("div", { className: "px-4 pt-4 pb-2 text-[11px] font-bold uppercase tracking-widest text-[var(--wui-fg-muted)]", children: "Folders" }), _jsxs("nav", { className: "flex-1 space-y-0.5 overflow-y-auto px-2 pb-2", children: [_jsx(FolderRailItem, { kind: "all", label: "All workflows", count: counts.total, active: selectedFolderId === 'all', onClick: () => setSelectedFolderId('all') }), folders.map((f) => {
|
|
91
|
+
const count = counts.byFolder[f.id] ?? 0;
|
|
92
|
+
return (_jsx(FolderRailItem, { kind: "folder", label: f.name, count: count, active: selectedFolderId === f.id, editing: editingFolderId === f.id, editingValue: editingName, onEditingChange: setEditingName, onCommitEdit: () => void handleRename(f.id), onStartEdit: () => { setEditingFolderId(f.id); setEditingName(f.name); }, deletable: count === 0, onDelete: () => void handleDelete(f.id), onClick: () => setSelectedFolderId(f.id) }, f.id));
|
|
93
|
+
})] }), _jsxs("div", { className: "border-t border-[var(--wui-border)] p-2", children: [addingFolder ? (_jsx("input", { autoFocus: true, type: "text", value: newFolderName, onChange: (e) => setNewFolderName(e.target.value), onBlur: () => void handleNewFolder(), placeholder: "Folder name\u2026", className: cn('w-full rounded-md border border-indigo-300 bg-[var(--wui-bg)] px-2.5 py-1.5 text-[13px]', 'outline-none focus:ring-2 focus:ring-indigo-100'), onKeyDown: (e) => {
|
|
94
|
+
if (e.key === 'Enter')
|
|
95
|
+
void handleNewFolder();
|
|
96
|
+
else if (e.key === 'Escape') {
|
|
97
|
+
setNewFolderName('');
|
|
98
|
+
setAddingFolder(false);
|
|
99
|
+
}
|
|
100
|
+
} })) : (_jsxs("button", { type: "button", onClick: () => { setRailError(null); setAddingFolder(true); }, className: cn('flex w-full items-center gap-2 rounded-md px-2.5 py-1.5 text-[13px] font-medium', 'text-[var(--wui-fg-muted)] hover:bg-[var(--wui-bg-subtle)] hover:text-[var(--wui-fg)] transition-colors'), children: [_jsxs("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", children: [_jsx("path", { d: "M12 5v14" }), _jsx("path", { d: "M5 12h14" })] }), "New folder"] })), railError && (_jsx("p", { className: "mt-1.5 px-1 text-[11px] text-red-500", children: railError }))] })] }), _jsxs("div", { className: "flex h-full min-w-0 flex-1 flex-col", children: [_jsxs("header", { className: "flex items-center gap-3 border-b border-[var(--wui-border)] px-6 py-4", children: [_jsx("h2", { className: "text-base font-semibold text-[var(--wui-fg)]", children: selectedFolderName ?? 'All workflows' }), !isLoading && !error && (_jsx("span", { className: cn('inline-flex h-5 min-w-[1.25rem] items-center justify-center rounded-full px-1.5', 'bg-[var(--wui-bg-subtle)] text-xs font-medium text-[var(--wui-fg-muted)]', 'border border-[var(--wui-border)]'), children: total })), _jsx("div", { className: "ml-auto", children: _jsxs("button", { onClick: () => setShowCreateDialog(true), className: cn('inline-flex items-center gap-1.5 rounded-lg px-3 py-1.5', 'bg-indigo-500 text-[13px] font-medium text-white', 'hover:bg-indigo-600 transition-colors'), children: [_jsxs("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", children: [_jsx("path", { d: "M12 5v14" }), _jsx("path", { d: "M5 12h14" })] }), "Create"] }) })] }), _jsx("div", { className: "min-h-0 flex-1 overflow-y-auto px-6 py-6", children: isLoading ? (_jsx("div", { className: "flex h-40 items-center justify-center", children: _jsx(LoadingSpinner, { size: "lg" }) })) : error ? (_jsx("div", { className: "flex h-40 items-center justify-center text-sm text-[var(--wui-fg-muted)]", children: "Failed to load workflows" })) : total === 0 ? (_jsx(EmptyState, { title: selectedFolderName ? `No workflows in ${selectedFolderName}` : 'No workflows yet' })) : (_jsxs(_Fragment, { children: [_jsx("ul", { role: "list", className: "overflow-hidden rounded-lg border border-[var(--wui-border)]", children: workflows.map((workflow) => (_jsx("li", { children: _jsx(AutomationCard, { layout: "row", workflow: workflow, onClick: () => onSelectWorkflow(workflow.id), onRun: onRunWorkflow ? () => onRunWorkflow(workflow.id) : undefined, folders: folders, onMove: (folderId) => void handleMove(workflow.id, folderId) }) }, workflow.id))) }), _jsxs("div", { className: "mt-4 flex items-center justify-between text-xs text-[var(--wui-fg-muted)]", children: [_jsx("span", { children: total === 0
|
|
101
|
+
? '0 workflows'
|
|
102
|
+
: `Showing ${currentPage * PAGE_SIZE + 1}–${currentPage * PAGE_SIZE + workflows.length} of ${total}` }), pageCount > 1 && (_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("button", { type: "button", onClick: () => setPage(Math.max(0, currentPage - 1)), disabled: currentPage <= 0, className: cn('rounded-md border border-[var(--wui-border)] px-2.5 py-1 font-medium', 'hover:bg-[var(--wui-bg-subtle)] transition-colors', currentPage <= 0 && 'opacity-40 cursor-not-allowed'), children: "Prev" }), _jsxs("span", { className: "tabular-nums", children: ["Page ", currentPage + 1, " of ", pageCount] }), _jsx("button", { type: "button", onClick: () => setPage(Math.min(pageCount - 1, currentPage + 1)), disabled: currentPage >= pageCount - 1, className: cn('rounded-md border border-[var(--wui-border)] px-2.5 py-1 font-medium', 'hover:bg-[var(--wui-bg-subtle)] transition-colors', currentPage >= pageCount - 1 && 'opacity-40 cursor-not-allowed'), children: "Next" })] }))] })] })) })] }), showCreateDialog && (_jsx(CreateWorkflowDialog, { folders: folders, defaultFolderId: selectedFolderId === 'all' ? undefined : selectedFolderId, onCreateFolder: folderList.create, onCreated: (workflow) => {
|
|
17
103
|
setShowCreateDialog(false);
|
|
18
104
|
refetch();
|
|
19
105
|
onSelectWorkflow(workflow.id);
|
|
20
106
|
}, onClose: () => setShowCreateDialog(false) }))] }));
|
|
21
107
|
}
|
|
108
|
+
function FolderRailItem({ kind, label, count, active, onClick, editing, editingValue, onEditingChange, onCommitEdit, onStartEdit, deletable, onDelete, }) {
|
|
109
|
+
if (editing) {
|
|
110
|
+
return (_jsx("input", { autoFocus: true, value: editingValue ?? '', onChange: (e) => onEditingChange?.(e.target.value), onBlur: () => onCommitEdit?.(), onKeyDown: (e) => {
|
|
111
|
+
if (e.key === 'Enter' || e.key === 'Escape')
|
|
112
|
+
onCommitEdit?.();
|
|
113
|
+
}, className: "w-full rounded-md border border-indigo-300 bg-white px-2 py-1.5 text-[13px] outline-none" }));
|
|
114
|
+
}
|
|
115
|
+
return (_jsxs("div", { className: cn('group flex items-center gap-2 rounded-md px-2.5 py-1.5 text-[13px] cursor-pointer transition-colors', active
|
|
116
|
+
? 'bg-indigo-50 font-semibold text-indigo-700'
|
|
117
|
+
: 'text-[var(--wui-fg)] hover:bg-[var(--wui-bg-subtle)]'), onClick: onClick, onDoubleClick: onStartEdit, title: onStartEdit ? 'Double-click to rename' : undefined, children: [_jsx("span", { className: cn('shrink-0', active ? 'text-indigo-500' : 'text-[var(--wui-fg-muted)]'), children: kind === 'all' ? (_jsxs("svg", { width: "15", height: "15", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("rect", { width: "7", height: "7", x: "3", y: "3", rx: "1" }), _jsx("rect", { width: "7", height: "7", x: "14", y: "3", rx: "1" }), _jsx("rect", { width: "7", height: "7", x: "14", y: "14", rx: "1" }), _jsx("rect", { width: "7", height: "7", x: "3", y: "14", rx: "1" })] })) : (_jsx("svg", { width: "15", height: "15", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: _jsx("path", { d: "M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z" }) })) }), _jsx("span", { className: "flex-1 truncate", children: label }), deletable && onDelete && (_jsx("button", { type: "button", onClick: (e) => { e.stopPropagation(); onDelete(); }, className: "hidden shrink-0 text-[var(--wui-fg-muted)] hover:text-red-500 group-hover:block", "aria-label": `Delete ${label}`, title: "Delete folder", children: _jsxs("svg", { width: "13", height: "13", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", children: [_jsx("path", { d: "M18 6 6 18" }), _jsx("path", { d: "m6 6 12 12" })] }) })), _jsx("span", { className: cn('shrink-0 text-[11px] tabular-nums', active ? 'text-indigo-400' : 'text-[var(--wui-fg-muted)]',
|
|
118
|
+
// Hide the count on hover for deletable folders so the × can take its slot.
|
|
119
|
+
deletable && 'group-hover:hidden'), children: count })] }));
|
|
120
|
+
}
|
|
22
121
|
//# sourceMappingURL=AutomationListView.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutomationListView.js","sourceRoot":"","sources":["../../../src/components/automations/AutomationListView.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAUjE,iFAAiF;AAEjF,MAAM,UAAU,kBAAkB,CAAC,EACjC,gBAAgB,EAChB,aAAa,EACb,SAAS,GACe;IACxB,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,eAAe,EAAE,CAAC;IACnE,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEhE,OAAO,CACL,mBAAS,SAAS,EAAE,EAAE,CAAC,kCAAkC,EAAE,SAAS,CAAC,aAEnE,kBAAQ,SAAS,EAAC,uEAAuE,aACvF,aAAI,SAAS,EAAC,8CAA8C,4BAAiB,EAC5E,CAAC,SAAS,IAAI,CAAC,KAAK,IAAI,CACvB,eACE,SAAS,EAAE,EAAE,CACX,iFAAiF,EACjF,0EAA0E,EAC1E,mCAAmC,CACpC,YAEA,SAAS,CAAC,MAAM,GACZ,CACR,EACD,cAAK,SAAS,EAAC,SAAS,YACtB,kBACE,OAAO,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,EACxC,SAAS,EAAE,EAAE,CACX,yDAAyD,EACzD,kDAAkD,EAClD,uCAAuC,CACxC,aAED,eAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,KAAK,EAAC,aAAa,EAAC,OAAO,aACvH,eAAM,CAAC,EAAC,UAAU,GAAG,EAAA,eAAM,CAAC,EAAC,UAAU,GAAG,IACtC,cAEC,GACL,IACC,EAGT,cAAK,SAAS,EAAC,kBAAkB,YAC9B,SAAS,CAAC,CAAC,CAAC,CACX,cAAK,SAAS,EAAC,uCAAuC,YACpD,KAAC,cAAc,IAAC,IAAI,EAAC,IAAI,GAAG,GACxB,CACP,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CACV,cAAK,SAAS,EAAC,0EAA0E,yCAEnF,CACP,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAC3B,KAAC,UAAU,IAAC,KAAK,EAAC,kBAAkB,GAAG,CACxC,CAAC,CAAC,CAAC,CACF,aACE,IAAI,EAAC,MAAM,EACX,SAAS,EAAE,EAAE,CACX,YAAY,EACZ,2CAA2C,CAC5C,YAEA,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,CAAC,CAChC,aAEE,KAAK,EAAE;4BACL,SAAS,EAAE,sCAAsC;4BACjD,cAAc,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI;yBAChC,YAED,KAAC,cAAc,IACb,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC,EAC5C,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,GACnE,IAVG,QAAQ,CAAC,EAAE,CAWb,CACN,CAAC,GACC,CACN,GACG,EAGL,gBAAgB,IAAI,CACnB,KAAC,oBAAoB,IACnB,SAAS,EAAE,CAAC,QAAQ,EAAE,EAAE;oBACtB,mBAAmB,CAAC,KAAK,CAAC,CAAC;oBAC3B,OAAO,EAAE,CAAC;oBACV,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBAChC,CAAC,EACD,OAAO,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,GACzC,CACH,IACO,CACX,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"AutomationListView.js","sourceRoot":"","sources":["../../../src/components/automations/AutomationListView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,13 @@
|
|
|
1
|
-
import type { WorkflowRecord } from '@xyne/workflow-sdk/client';
|
|
1
|
+
import type { WorkflowRecord, FolderRecord } from '@xyne/workflow-sdk/client';
|
|
2
2
|
export interface CreateWorkflowDialogProps {
|
|
3
3
|
onCreated: (workflow: WorkflowRecord) => void;
|
|
4
4
|
onClose: () => void;
|
|
5
|
+
/** Existing folders — every workflow must belong to one. */
|
|
6
|
+
folders: FolderRecord[];
|
|
7
|
+
/** Preselected folder (e.g. the folder currently open in the rail). */
|
|
8
|
+
defaultFolderId?: string | undefined;
|
|
9
|
+
/** Create a folder inline (used when none exist yet). Returns the new folder. */
|
|
10
|
+
onCreateFolder: (name: string) => Promise<FolderRecord>;
|
|
5
11
|
}
|
|
6
|
-
export declare function CreateWorkflowDialog({ onCreated, onClose }: CreateWorkflowDialogProps): import("react").JSX.Element;
|
|
12
|
+
export declare function CreateWorkflowDialog({ onCreated, onClose, folders, defaultFolderId, onCreateFolder, }: CreateWorkflowDialogProps): import("react").JSX.Element;
|
|
7
13
|
//# sourceMappingURL=CreateWorkflowDialog.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateWorkflowDialog.d.ts","sourceRoot":"","sources":["../../../src/components/automations/CreateWorkflowDialog.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"CreateWorkflowDialog.d.ts","sourceRoot":"","sources":["../../../src/components/automations/CreateWorkflowDialog.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAG9E,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAC;IAC9C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,4DAA4D;IAC5D,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,uEAAuE;IACvE,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,iFAAiF;IACjF,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;CACzD;AAyDD,wBAAgB,oBAAoB,CAAC,EACnC,SAAS,EACT,OAAO,EACP,OAAO,EACP,eAAe,EACf,cAAc,GACf,EAAE,yBAAyB,+BAiO3B"}
|
|
@@ -34,13 +34,32 @@ function buildDefaultConfig(triggerType) {
|
|
|
34
34
|
steps: [],
|
|
35
35
|
};
|
|
36
36
|
}
|
|
37
|
-
export function CreateWorkflowDialog({ onCreated, onClose }) {
|
|
37
|
+
export function CreateWorkflowDialog({ onCreated, onClose, folders, defaultFolderId, onCreateFolder, }) {
|
|
38
38
|
const client = useWorkflowClient();
|
|
39
39
|
const [name, setName] = useState('');
|
|
40
40
|
const [selectedTrigger, setSelectedTrigger] = useState('MANUAL');
|
|
41
|
+
const [folderId, setFolderId] = useState(defaultFolderId && folders.some((f) => f.id === defaultFolderId)
|
|
42
|
+
? defaultFolderId
|
|
43
|
+
: (folders[0]?.id ?? ''));
|
|
44
|
+
const [newFolderName, setNewFolderName] = useState('');
|
|
41
45
|
const [isCreating, setIsCreating] = useState(false);
|
|
42
46
|
const [error, setError] = useState(null);
|
|
43
|
-
const
|
|
47
|
+
const hasFolders = folders.length > 0;
|
|
48
|
+
const canCreate = name.trim().length > 0 && folderId.length > 0;
|
|
49
|
+
const handleCreateFolder = async () => {
|
|
50
|
+
const folderName = newFolderName.trim();
|
|
51
|
+
if (!folderName)
|
|
52
|
+
return;
|
|
53
|
+
setError(null);
|
|
54
|
+
try {
|
|
55
|
+
const folder = await onCreateFolder(folderName);
|
|
56
|
+
setFolderId(folder.id);
|
|
57
|
+
setNewFolderName('');
|
|
58
|
+
}
|
|
59
|
+
catch (err) {
|
|
60
|
+
setError(err instanceof Error ? err.message : String(err));
|
|
61
|
+
}
|
|
62
|
+
};
|
|
44
63
|
const handleCreate = async () => {
|
|
45
64
|
if (!canCreate)
|
|
46
65
|
return;
|
|
@@ -50,6 +69,7 @@ export function CreateWorkflowDialog({ onCreated, onClose }) {
|
|
|
50
69
|
const workflow = await client.workflows.create({
|
|
51
70
|
name: name.trim(),
|
|
52
71
|
config: buildDefaultConfig(selectedTrigger),
|
|
72
|
+
folderId,
|
|
53
73
|
});
|
|
54
74
|
onCreated(workflow);
|
|
55
75
|
}
|
|
@@ -63,7 +83,10 @@ export function CreateWorkflowDialog({ onCreated, onClose }) {
|
|
|
63
83
|
return (_jsxs("div", { className: "fixed inset-0 z-50 flex items-center justify-center", children: [_jsx("div", { className: "absolute inset-0 bg-black/30", onClick: onClose }), _jsxs("div", { className: cn('relative z-10 w-full max-w-lg rounded-xl border border-slate-200 bg-white shadow-xl', 'animate-[wui-fade-in_150ms_ease-out]'), children: [_jsxs("div", { className: "flex items-center justify-between border-b border-slate-200/80 px-5 py-4", children: [_jsx("h3", { className: "text-[15px] font-semibold text-slate-800", children: "Create Workflow" }), _jsx("button", { onClick: onClose, className: "flex h-6 w-6 items-center justify-center rounded-md text-slate-400 hover:bg-slate-100 hover:text-slate-600 transition-colors", children: _jsxs("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", children: [_jsx("path", { d: "M18 6 6 18" }), _jsx("path", { d: "m6 6 12 12" })] }) })] }), _jsxs("div", { className: "px-5 py-5 space-y-5", children: [_jsxs("div", { children: [_jsx("label", { className: "block text-[12px] font-medium text-slate-500 mb-1.5", children: "Workflow Name" }), _jsx("input", { type: "text", value: name, onChange: (e) => setName(e.target.value), placeholder: "e.g. Customer Onboarding Pipeline", autoFocus: true, className: cn('w-full rounded-lg border border-slate-200 bg-white px-3 py-2', 'text-[13px] text-slate-800 placeholder:text-slate-400', 'outline-none focus:border-indigo-400 focus:ring-2 focus:ring-indigo-100', 'transition-colors'), onKeyDown: (e) => {
|
|
64
84
|
if (e.key === 'Enter' && canCreate)
|
|
65
85
|
void handleCreate();
|
|
66
|
-
} })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-[12px] font-medium text-slate-500 mb-
|
|
86
|
+
} })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-[12px] font-medium text-slate-500 mb-1.5", children: "Folder" }), hasFolders ? (_jsx("select", { value: folderId, onChange: (e) => setFolderId(e.target.value), className: cn('w-full rounded-lg border border-slate-200 bg-white px-3 py-2', 'text-[13px] text-slate-800', 'outline-none focus:border-indigo-400 focus:ring-2 focus:ring-indigo-100'), children: folders.map((f) => (_jsx("option", { value: f.id, children: f.name }, f.id))) })) : (_jsxs("div", { className: "rounded-lg border border-dashed border-slate-200 bg-slate-50/60 p-3", children: [_jsx("p", { className: "mb-2 text-[12px] text-slate-500", children: "Create a folder first \u2014 every workflow lives in one." }), _jsxs("div", { className: "flex gap-2", children: [_jsx("input", { type: "text", value: newFolderName, onChange: (e) => setNewFolderName(e.target.value), placeholder: "Folder name", className: cn('flex-1 rounded-md border border-slate-200 bg-white px-2.5 py-1.5', 'text-[13px] text-slate-800 placeholder:text-slate-400', 'outline-none focus:border-indigo-400 focus:ring-2 focus:ring-indigo-100'), onKeyDown: (e) => {
|
|
87
|
+
if (e.key === 'Enter' && newFolderName.trim())
|
|
88
|
+
void handleCreateFolder();
|
|
89
|
+
} }), _jsx("button", { type: "button", onClick: () => void handleCreateFolder(), disabled: !newFolderName.trim(), className: cn('rounded-md px-3 py-1.5 text-[13px] font-semibold text-white transition-colors', 'bg-indigo-500 hover:bg-indigo-600', !newFolderName.trim() && 'opacity-50 cursor-not-allowed'), children: "Add" })] })] }))] }), _jsxs("div", { children: [_jsx("label", { className: "block text-[12px] font-medium text-slate-500 mb-2", children: "Trigger Type" }), _jsx("div", { className: "grid grid-cols-2 gap-2", children: TRIGGER_OPTIONS.map((opt) => (_jsxs("button", { type: "button", onClick: () => setSelectedTrigger(opt.type), className: cn('flex items-start gap-2.5 rounded-lg border p-3 text-left transition-all', selectedTrigger === opt.type
|
|
67
90
|
? 'border-indigo-400 bg-indigo-50/60 ring-2 ring-indigo-100'
|
|
68
91
|
: 'border-slate-200 hover:border-slate-300 hover:bg-slate-50'), children: [_jsx("span", { className: cn('mt-0.5 shrink-0', selectedTrigger === opt.type ? 'text-indigo-500' : 'text-slate-400'), children: opt.icon }), _jsxs("div", { children: [_jsx("div", { className: cn('text-[13px] font-medium', selectedTrigger === opt.type ? 'text-indigo-700' : 'text-slate-700'), children: opt.label }), _jsx("div", { className: "text-[11px] text-slate-400 mt-0.5", children: opt.description })] })] }, opt.type))) })] })] }), _jsxs("div", { className: "flex items-center justify-end gap-2 border-t border-slate-200/80 px-5 py-3.5", children: [error && (_jsx("span", { className: "mr-auto text-xs text-red-500", children: error })), _jsx("button", { onClick: onClose, disabled: isCreating, className: "rounded-md border border-slate-200 px-3.5 py-1.5 text-[13px] font-medium text-slate-600 hover:bg-slate-50 transition-colors", children: "Cancel" }), _jsx("button", { onClick: () => void handleCreate(), disabled: !canCreate || isCreating, className: cn('rounded-md px-4 py-1.5 text-[13px] font-semibold text-white transition-colors', 'bg-indigo-500 hover:bg-indigo-600', (!canCreate || isCreating) && 'opacity-50 cursor-not-allowed'), children: isCreating ? 'Creating...' : 'Create' })] })] })] }));
|
|
69
92
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateWorkflowDialog.js","sourceRoot":"","sources":["../../../src/components/automations/CreateWorkflowDialog.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"CreateWorkflowDialog.js","sourceRoot":"","sources":["../../../src/components/automations/CreateWorkflowDialog.tsx"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,8 @@ interface BranchContainerProps {
|
|
|
4
4
|
stepId: string;
|
|
5
5
|
branches: Record<string, DetectedBranch>;
|
|
6
6
|
category?: string | undefined;
|
|
7
|
+
/** Box header label (the step's name, e.g. "Parallel" / "Conditional" / "Switch"). */
|
|
8
|
+
label?: string | undefined;
|
|
7
9
|
/** For dynamic branch containers (PARALLEL) — the config key holding the record */
|
|
8
10
|
dynamicContainer?: string | undefined;
|
|
9
11
|
readOnly: boolean;
|
|
@@ -12,6 +14,6 @@ interface BranchContainerProps {
|
|
|
12
14
|
/** Render function for branch content — provided by WorkflowTree */
|
|
13
15
|
renderBranch: (branchKey: string, steps: WorkflowStepConfig[]) => React.ReactNode;
|
|
14
16
|
}
|
|
15
|
-
export declare function BranchContainer({ branches, category, dynamicContainer, readOnly, onAddBranch, onRenameBranch, renderBranch, }: BranchContainerProps): import("react").JSX.Element;
|
|
17
|
+
export declare function BranchContainer({ branches, category, label, dynamicContainer, readOnly, onAddBranch, onRenameBranch, renderBranch, }: BranchContainerProps): import("react").JSX.Element;
|
|
16
18
|
export {};
|
|
17
19
|
//# sourceMappingURL=BranchContainer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BranchContainer.d.ts","sourceRoot":"","sources":["../../../../src/components/builder/v3/BranchContainer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAIzE,UAAU,oBAAoB;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,mFAAmF;IACnF,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D,oEAAoE;IACpE,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,KAAK,CAAC,SAAS,CAAC;CACnF;AAED,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,QAAQ,EACR,gBAAgB,EAChB,QAAQ,EACR,WAAW,EACX,cAAc,EACd,YAAY,GACb,EAAE,oBAAoB,+
|
|
1
|
+
{"version":3,"file":"BranchContainer.d.ts","sourceRoot":"","sources":["../../../../src/components/builder/v3/BranchContainer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAIzE,UAAU,oBAAoB;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,sFAAsF;IACtF,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,mFAAmF;IACnF,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D,oEAAoE;IACpE,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,KAAK,CAAC,SAAS,CAAC;CACnF;AAED,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,gBAAgB,EAChB,QAAQ,EACR,WAAW,EACX,cAAc,EACd,YAAY,GACb,EAAE,oBAAoB,+BAqMtB"}
|
|
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { useCallback, useState } from 'react';
|
|
3
3
|
import { cn } from '../../shared/cn.js';
|
|
4
4
|
import { getCategoryTheme } from '../theme.js';
|
|
5
|
-
export function BranchContainer({ branches, category, dynamicContainer, readOnly, onAddBranch, onRenameBranch, renderBranch, }) {
|
|
5
|
+
export function BranchContainer({ branches, category, label, dynamicContainer, readOnly, onAddBranch, onRenameBranch, renderBranch, }) {
|
|
6
6
|
const theme = getCategoryTheme(category);
|
|
7
7
|
const entries = Object.entries(branches);
|
|
8
8
|
const [showInput, setShowInput] = useState(false);
|
|
@@ -17,48 +17,46 @@ export function BranchContainer({ branches, category, dynamicContainer, readOnly
|
|
|
17
17
|
setShowInput(false);
|
|
18
18
|
}
|
|
19
19
|
}, [branchName, onAddBranch]);
|
|
20
|
-
return (_jsxs("div", { className: "flex flex-col items-center", children: [
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
maxWidth: '100%',
|
|
62
|
-
} }), _jsx("div", { className: "h-4 w-px bg-slate-300" })] }));
|
|
20
|
+
return (_jsxs("div", { className: "flex flex-col items-center", children: [_jsxs("div", { className: cn('relative rounded-xl border-2 border-dashed px-6', 'bg-gradient-to-b from-slate-50/80 to-white'), style: { borderColor: `${theme.edgeColor}40` }, children: [_jsxs("div", { className: cn('absolute -top-3 left-4 flex items-center gap-1.5 rounded-full px-2.5 py-0.5', 'text-[10px] font-semibold uppercase tracking-wider', theme.iconBg, theme.iconText), children: [_jsxs("svg", { width: "10", height: "10", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("line", { x1: "6", x2: "6", y1: "3", y2: "15" }), _jsx("circle", { cx: "18", cy: "6", r: "3" }), _jsx("circle", { cx: "6", cy: "18", r: "3" }), _jsx("path", { d: "M18 9a9 9 0 0 1-9 9" })] }), label ?? 'Branches'] }), _jsx("div", { className: "mx-auto h-4 w-px bg-slate-300" }), _jsx("div", { className: "h-px rounded-full", style: {
|
|
21
|
+
backgroundColor: theme.edgeColor,
|
|
22
|
+
opacity: 0.4,
|
|
23
|
+
width: '100%',
|
|
24
|
+
minWidth: `${entries.length * 200}px`,
|
|
25
|
+
} }), _jsxs("div", { className: "flex items-stretch gap-4", children: [entries.map(([branchKey, branch]) => (_jsxs("div", { className: "flex flex-col items-center", style: { minWidth: '200px' }, children: [editingKey === branchKey ? (_jsx("input", { type: "text", value: editValue, onChange: (e) => setEditValue(e.target.value), onKeyDown: (e) => {
|
|
26
|
+
e.stopPropagation();
|
|
27
|
+
if (e.key === 'Enter') {
|
|
28
|
+
const name = editValue.trim();
|
|
29
|
+
if (name && name !== branchKey && onRenameBranch) {
|
|
30
|
+
onRenameBranch(branchKey, name);
|
|
31
|
+
}
|
|
32
|
+
setEditingKey(null);
|
|
33
|
+
}
|
|
34
|
+
if (e.key === 'Escape')
|
|
35
|
+
setEditingKey(null);
|
|
36
|
+
}, onBlur: () => {
|
|
37
|
+
const name = editValue.trim();
|
|
38
|
+
if (name && name !== branchKey && onRenameBranch) {
|
|
39
|
+
onRenameBranch(branchKey, name);
|
|
40
|
+
}
|
|
41
|
+
setEditingKey(null);
|
|
42
|
+
}, onClick: (e) => e.stopPropagation(), autoFocus: true, className: cn('mb-2 mt-1 w-24 rounded-full px-3 py-0.5 text-[10px] font-semibold uppercase tracking-wider text-center outline-none', 'border border-indigo-300 ring-1 ring-indigo-100', theme.lightBg, theme.iconText) })) : (_jsx("div", { className: cn('mb-2 mt-1 rounded-full px-3 py-0.5 text-[10px] font-semibold uppercase tracking-wider', theme.lightBg, theme.iconText, dynamicContainer && !readOnly && 'cursor-pointer hover:ring-1 hover:ring-indigo-200 transition-all'), onDoubleClick: () => {
|
|
43
|
+
if (dynamicContainer && !readOnly) {
|
|
44
|
+
setEditingKey(branchKey);
|
|
45
|
+
setEditValue(branchKey);
|
|
46
|
+
}
|
|
47
|
+
}, title: dynamicContainer && !readOnly ? 'Double-click to rename' : undefined, children: branch.label })), _jsx("div", { className: "h-4 w-px bg-slate-300" }), _jsx("div", { className: "flex flex-col items-center", children: renderBranch(branchKey, branch.steps) }), _jsx("div", { className: "min-h-[16px] w-px flex-1 bg-slate-300" })] }, branchKey))), dynamicContainer && !readOnly && !showInput && (_jsx("div", { className: "flex flex-col items-center justify-start pt-1", children: _jsxs("button", { onClick: (e) => { e.stopPropagation(); setShowInput(true); }, className: cn('flex h-8 items-center gap-1.5 rounded-full border border-dashed px-3', 'border-slate-300 text-slate-400 text-[11px] font-medium', 'hover:border-indigo-400 hover:text-indigo-500 transition-all'), children: [_jsxs("svg", { width: "10", height: "10", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", children: [_jsx("path", { d: "M12 5v14" }), _jsx("path", { d: "M5 12h14" })] }), "Branch"] }) })), showInput && (_jsx("div", { className: "flex flex-col items-center justify-start pt-1", children: _jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx("input", { type: "text", value: branchName, onChange: (e) => setBranchName(e.target.value), onKeyDown: (e) => {
|
|
48
|
+
e.stopPropagation();
|
|
49
|
+
if (e.key === 'Enter')
|
|
50
|
+
handleAdd();
|
|
51
|
+
if (e.key === 'Escape') {
|
|
52
|
+
setShowInput(false);
|
|
53
|
+
setBranchName('');
|
|
54
|
+
}
|
|
55
|
+
}, onClick: (e) => e.stopPropagation(), placeholder: "Branch name...", autoFocus: true, className: "w-28 rounded border border-slate-200 bg-slate-50 px-2 py-1 text-[11px] text-slate-700 outline-none focus:border-indigo-300 focus:ring-1 focus:ring-indigo-100" }), _jsx("button", { onClick: (e) => { e.stopPropagation(); handleAdd(); }, className: "flex h-6 w-6 items-center justify-center rounded bg-indigo-500 text-white hover:bg-indigo-600 transition-colors", children: _jsx("svg", { width: "10", height: "10", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "3", strokeLinecap: "round", children: _jsx("path", { d: "M20 6 9 17l-5-5" }) }) })] }) }))] }), _jsx("div", { className: "h-px rounded-full", style: {
|
|
56
|
+
backgroundColor: theme.edgeColor,
|
|
57
|
+
opacity: 0.4,
|
|
58
|
+
width: '100%',
|
|
59
|
+
minWidth: `${entries.length * 200}px`,
|
|
60
|
+
} }), _jsx("div", { className: "mx-auto h-4 w-px bg-slate-300" })] }), _jsx("div", { className: "h-4 w-px bg-slate-300" })] }));
|
|
63
61
|
}
|
|
64
62
|
//# sourceMappingURL=BranchContainer.js.map
|