@burdenoff/fluidgrids-fe-sdk 2026.727.1 → 2026.730.1
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/ExecutionDetailPage-G4FTQ5AF.js +8 -0
- package/dist/{ExecutionDetailPage-3E66352F.js.map → ExecutionDetailPage-G4FTQ5AF.js.map} +1 -1
- package/dist/ExecutionsListPage-AAMQIVJS.js +8 -0
- package/dist/{ExecutionsListPage-N6ZTA42U.js.map → ExecutionsListPage-AAMQIVJS.js.map} +1 -1
- package/dist/{WorkflowBuilder-CMEYHL3E.js → WorkflowBuilder-2QYBWEWO.js} +4 -4
- package/dist/{WorkflowBuilder-CMEYHL3E.js.map → WorkflowBuilder-2QYBWEWO.js.map} +1 -1
- package/dist/{WorkflowsList-IKUTWG7U.js → WorkflowsList-ZTH4NVPS.js} +3 -3
- package/dist/{WorkflowsList-IKUTWG7U.js.map → WorkflowsList-ZTH4NVPS.js.map} +1 -1
- package/dist/{blocks-7LL2AEHB.js → blocks-7Q5XRFI7.js} +3 -3
- package/dist/{blocks-7LL2AEHB.js.map → blocks-7Q5XRFI7.js.map} +1 -1
- package/dist/{chunk-IMRLGRX2.js → chunk-3M2I2ITB.js} +3 -3
- package/dist/{chunk-IMRLGRX2.js.map → chunk-3M2I2ITB.js.map} +1 -1
- package/dist/{chunk-YN6AXJJO.js → chunk-3ZCTYLHL.js} +2 -2
- package/dist/chunk-3ZCTYLHL.js.map +1 -0
- package/dist/chunk-D4XMKH2F.js +589 -0
- package/dist/chunk-D4XMKH2F.js.map +1 -0
- package/dist/{chunk-EVKWBOYH.js → chunk-LNY6ATSV.js} +2 -2
- package/dist/{chunk-EVKWBOYH.js.map → chunk-LNY6ATSV.js.map} +1 -1
- package/dist/{chunk-27PWC67A.js → chunk-U2OJNTKM.js} +12 -15
- package/dist/chunk-U2OJNTKM.js.map +1 -0
- package/dist/{chunk-YQO6STP6.js → chunk-Y6U32527.js} +3 -3
- package/dist/{chunk-YQO6STP6.js.map → chunk-Y6U32527.js.map} +1 -1
- package/dist/index.js +11 -11
- package/package.json +2 -2
- package/dist/ExecutionDetailPage-3E66352F.js +0 -8
- package/dist/ExecutionsListPage-N6ZTA42U.js +0 -8
- package/dist/chunk-27PWC67A.js.map +0 -1
- package/dist/chunk-2WURM2ZA.js +0 -406
- package/dist/chunk-2WURM2ZA.js.map +0 -1
- package/dist/chunk-YN6AXJJO.js.map +0 -1
package/dist/chunk-2WURM2ZA.js
DELETED
|
@@ -1,406 +0,0 @@
|
|
|
1
|
-
import { useWorkflowDefinitions, useDuplicateWorkflow, useDeleteWorkflow } from './chunk-47457KC3.js';
|
|
2
|
-
import { useFlowStore } from './chunk-KU64CCSV.js';
|
|
3
|
-
import { SdkPermissionButton, FLUIDGRIDS_PERMISSIONS, SdkPermissionGate } from './chunk-UIY2HBWA.js';
|
|
4
|
-
import { config } from './chunk-WWU2O2SR.js';
|
|
5
|
-
import { useNavigate } from 'react-router-dom';
|
|
6
|
-
import { v4 } from 'uuid';
|
|
7
|
-
import { Icon } from '@iconify/react';
|
|
8
|
-
import { Button, Skeleton, TooltipProvider, Card, CardHeader, Badge, Tooltip, TooltipTrigger, TooltipContent, AlertDialog, AlertDialogContent, AlertDialogHeader, AlertDialogTitle, AlertDialogDescription, AlertDialogFooter, AlertDialogCancel, AlertDialogAction } from '@burdenoff/fe-libs/ui';
|
|
9
|
-
import { useState } from 'react';
|
|
10
|
-
import { toast } from 'sonner';
|
|
11
|
-
import { Share2, Copy } from 'lucide-react';
|
|
12
|
-
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
13
|
-
|
|
14
|
-
function SharePopup({
|
|
15
|
-
url = window.location.href,
|
|
16
|
-
embedSrc = `${config.fluidgridFrontendUrl}/workflow-view/565201ec-e803-4281-ad39-a135c46daa89/1.0`
|
|
17
|
-
}) {
|
|
18
|
-
const [isOpen, setIsOpen] = useState(false);
|
|
19
|
-
const [width, setWidth] = useState(600);
|
|
20
|
-
const [height, setHeight] = useState(400);
|
|
21
|
-
const [activeTab, setActiveTab] = useState("link");
|
|
22
|
-
const embedCode = `<iframe src="${embedSrc}" width="${width}" height="${height}"></iframe>`;
|
|
23
|
-
const copyToClipboard = (text, message) => {
|
|
24
|
-
navigator.clipboard.writeText(text);
|
|
25
|
-
toast.success(message);
|
|
26
|
-
};
|
|
27
|
-
if (!isOpen) {
|
|
28
|
-
return /* @__PURE__ */ jsxs(Button, { variant: "ghost", size: "icon", onClick: () => setIsOpen(true), children: [
|
|
29
|
-
/* @__PURE__ */ jsx(Share2, { className: "h-4 w-4" }),
|
|
30
|
-
/* @__PURE__ */ jsx("span", { className: "sr-only", children: "Share" })
|
|
31
|
-
] });
|
|
32
|
-
}
|
|
33
|
-
return /* @__PURE__ */ jsx(
|
|
34
|
-
"div",
|
|
35
|
-
{
|
|
36
|
-
className: "fixed inset-0 z-50 flex items-center justify-center bg-black/50",
|
|
37
|
-
onClick: () => setIsOpen(false),
|
|
38
|
-
children: /* @__PURE__ */ jsxs(
|
|
39
|
-
"div",
|
|
40
|
-
{
|
|
41
|
-
className: "bg-card rounded-lg p-6 max-w-md w-full mx-4",
|
|
42
|
-
onClick: (e) => e.stopPropagation(),
|
|
43
|
-
children: [
|
|
44
|
-
/* @__PURE__ */ jsxs("div", { className: "flex justify-between items-center mb-4", children: [
|
|
45
|
-
/* @__PURE__ */ jsx("h2", { className: "text-lg font-semibold", children: "Share" }),
|
|
46
|
-
/* @__PURE__ */ jsx(Button, { variant: "ghost", size: "icon", onClick: () => setIsOpen(false), children: "\xD7" })
|
|
47
|
-
] }),
|
|
48
|
-
/* @__PURE__ */ jsxs("div", { className: "flex gap-2 mb-4", children: [
|
|
49
|
-
/* @__PURE__ */ jsx(
|
|
50
|
-
Button,
|
|
51
|
-
{
|
|
52
|
-
variant: activeTab === "link" ? "default" : "outline",
|
|
53
|
-
size: "sm",
|
|
54
|
-
onClick: () => setActiveTab("link"),
|
|
55
|
-
children: "Share Link"
|
|
56
|
-
}
|
|
57
|
-
),
|
|
58
|
-
/* @__PURE__ */ jsx(
|
|
59
|
-
Button,
|
|
60
|
-
{
|
|
61
|
-
variant: activeTab === "embed" ? "default" : "outline",
|
|
62
|
-
size: "sm",
|
|
63
|
-
onClick: () => setActiveTab("embed"),
|
|
64
|
-
children: "Embed"
|
|
65
|
-
}
|
|
66
|
-
)
|
|
67
|
-
] }),
|
|
68
|
-
activeTab === "link" && /* @__PURE__ */ jsxs("div", { className: "flex items-center space-x-2", children: [
|
|
69
|
-
/* @__PURE__ */ jsx(
|
|
70
|
-
"input",
|
|
71
|
-
{
|
|
72
|
-
readOnly: true,
|
|
73
|
-
value: url,
|
|
74
|
-
className: "flex-1 h-9 px-3 rounded-md border bg-background text-sm"
|
|
75
|
-
}
|
|
76
|
-
),
|
|
77
|
-
/* @__PURE__ */ jsx(
|
|
78
|
-
Button,
|
|
79
|
-
{
|
|
80
|
-
size: "sm",
|
|
81
|
-
onClick: () => copyToClipboard(url, "Link copied to clipboard"),
|
|
82
|
-
children: /* @__PURE__ */ jsx(Copy, { className: "h-4 w-4" })
|
|
83
|
-
}
|
|
84
|
-
)
|
|
85
|
-
] }),
|
|
86
|
-
activeTab === "embed" && /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
|
|
87
|
-
/* @__PURE__ */ jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
|
|
88
|
-
/* @__PURE__ */ jsxs("div", { children: [
|
|
89
|
-
/* @__PURE__ */ jsx("label", { className: "text-sm font-medium", children: "Width" }),
|
|
90
|
-
/* @__PURE__ */ jsx(
|
|
91
|
-
"input",
|
|
92
|
-
{
|
|
93
|
-
type: "number",
|
|
94
|
-
value: width,
|
|
95
|
-
onChange: (e) => setWidth(Number(e.target.value)),
|
|
96
|
-
className: "w-full h-9 px-3 rounded-md border bg-background text-sm mt-1"
|
|
97
|
-
}
|
|
98
|
-
)
|
|
99
|
-
] }),
|
|
100
|
-
/* @__PURE__ */ jsxs("div", { children: [
|
|
101
|
-
/* @__PURE__ */ jsx("label", { className: "text-sm font-medium", children: "Height" }),
|
|
102
|
-
/* @__PURE__ */ jsx(
|
|
103
|
-
"input",
|
|
104
|
-
{
|
|
105
|
-
type: "number",
|
|
106
|
-
value: height,
|
|
107
|
-
onChange: (e) => setHeight(Number(e.target.value)),
|
|
108
|
-
className: "w-full h-9 px-3 rounded-md border bg-background text-sm mt-1"
|
|
109
|
-
}
|
|
110
|
-
)
|
|
111
|
-
] })
|
|
112
|
-
] }),
|
|
113
|
-
/* @__PURE__ */ jsxs("div", { children: [
|
|
114
|
-
/* @__PURE__ */ jsx("label", { className: "text-sm font-medium", children: "Embed Code" }),
|
|
115
|
-
/* @__PURE__ */ jsxs("div", { className: "relative mt-1", children: [
|
|
116
|
-
/* @__PURE__ */ jsx(
|
|
117
|
-
"input",
|
|
118
|
-
{
|
|
119
|
-
readOnly: true,
|
|
120
|
-
value: embedCode,
|
|
121
|
-
className: "w-full h-9 px-3 pr-12 rounded-md border bg-background text-sm font-mono"
|
|
122
|
-
}
|
|
123
|
-
),
|
|
124
|
-
/* @__PURE__ */ jsx(
|
|
125
|
-
Button,
|
|
126
|
-
{
|
|
127
|
-
size: "sm",
|
|
128
|
-
className: "absolute right-1 top-1/2 -translate-y-1/2 h-7",
|
|
129
|
-
onClick: () => copyToClipboard(embedCode, "Embed code copied to clipboard"),
|
|
130
|
-
children: /* @__PURE__ */ jsx(Copy, { className: "h-4 w-4" })
|
|
131
|
-
}
|
|
132
|
-
)
|
|
133
|
-
] })
|
|
134
|
-
] })
|
|
135
|
-
] })
|
|
136
|
-
]
|
|
137
|
-
}
|
|
138
|
-
)
|
|
139
|
-
}
|
|
140
|
-
);
|
|
141
|
-
}
|
|
142
|
-
var STATUS_STYLES = {
|
|
143
|
-
DRAFT: { label: "Draft", variant: "secondary" },
|
|
144
|
-
ACTIVE: { label: "Active", variant: "default" },
|
|
145
|
-
ARCHIVED: { label: "Archived", variant: "outline" },
|
|
146
|
-
DEPRECATED: { label: "Deprecated", variant: "destructive" }
|
|
147
|
-
};
|
|
148
|
-
var CardWorkflow = ({
|
|
149
|
-
workflow,
|
|
150
|
-
onUpdateSuccess
|
|
151
|
-
}) => {
|
|
152
|
-
const navigate = useNavigate();
|
|
153
|
-
const resetWorkflow = useFlowStore((s) => s.actions.resetWorkflow);
|
|
154
|
-
const { duplicateWorkflow: duplicateWorkflowMutation } = useDuplicateWorkflow();
|
|
155
|
-
const { deleteWorkflow: deleteWorkflowMutation } = useDeleteWorkflow();
|
|
156
|
-
const [showDeleteDialog, setShowDeleteDialog] = useState(false);
|
|
157
|
-
const [isDeleting, setIsDeleting] = useState(false);
|
|
158
|
-
async function handleDuplicateWorkflow() {
|
|
159
|
-
try {
|
|
160
|
-
resetWorkflow();
|
|
161
|
-
const result = await duplicateWorkflowMutation(
|
|
162
|
-
workflow.workflow_key,
|
|
163
|
-
workflow.version,
|
|
164
|
-
{
|
|
165
|
-
newWorkflowKey: `${workflow.workflow_key}_copy_${Date.now()}`
|
|
166
|
-
}
|
|
167
|
-
);
|
|
168
|
-
if (result?.success && result.workflow) {
|
|
169
|
-
navigate(
|
|
170
|
-
`../workflow/${result.workflow.workflowKey}/${result.workflow.version}`
|
|
171
|
-
);
|
|
172
|
-
} else {
|
|
173
|
-
throw new Error(result?.message || "Failed to duplicate workflow");
|
|
174
|
-
}
|
|
175
|
-
} catch (error) {
|
|
176
|
-
console.error("Error duplicating workflow:", error);
|
|
177
|
-
toast.error(
|
|
178
|
-
`Error duplicating workflow: ${error instanceof Error ? error.message : String(error)}`
|
|
179
|
-
);
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
const handleDeleteWorkflow = async () => {
|
|
183
|
-
if (!workflow.workflow_key) {
|
|
184
|
-
console.error("Workflow ID is required to delete.");
|
|
185
|
-
return;
|
|
186
|
-
}
|
|
187
|
-
setIsDeleting(true);
|
|
188
|
-
try {
|
|
189
|
-
const success = await deleteWorkflowMutation(workflow.workflow_key);
|
|
190
|
-
if (success) {
|
|
191
|
-
setShowDeleteDialog(false);
|
|
192
|
-
}
|
|
193
|
-
} catch (error) {
|
|
194
|
-
console.error("Error deleting workflow:", error);
|
|
195
|
-
toast.error(
|
|
196
|
-
`Error deleting workflow: ${error instanceof Error ? error.message : String(error)}`
|
|
197
|
-
);
|
|
198
|
-
} finally {
|
|
199
|
-
setIsDeleting(false);
|
|
200
|
-
setShowDeleteDialog(false);
|
|
201
|
-
onUpdateSuccess();
|
|
202
|
-
}
|
|
203
|
-
};
|
|
204
|
-
const handleOnEdit = () => {
|
|
205
|
-
navigate("../workflow/" + workflow.workflow_key + "/" + workflow.version);
|
|
206
|
-
};
|
|
207
|
-
const statusInfo = STATUS_STYLES[workflow.status ?? "DRAFT"] ?? STATUS_STYLES.DRAFT;
|
|
208
|
-
return /* @__PURE__ */ jsxs(TooltipProvider, { children: [
|
|
209
|
-
/* @__PURE__ */ jsxs(Card, { className: "bg-card-foreground/10 min-h-40 p-0 flex flex-col justify-between", children: [
|
|
210
|
-
/* @__PURE__ */ jsxs(CardHeader, { className: "relative", children: [
|
|
211
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 pr-8", children: [
|
|
212
|
-
/* @__PURE__ */ jsx("h1", { className: "text-card-foreground font-bold truncate", children: workflow?.name }),
|
|
213
|
-
/* @__PURE__ */ jsx(
|
|
214
|
-
Badge,
|
|
215
|
-
{
|
|
216
|
-
variant: statusInfo.variant,
|
|
217
|
-
className: "text-[10px] px-1.5 py-0 h-5 shrink-0",
|
|
218
|
-
children: statusInfo.label
|
|
219
|
-
}
|
|
220
|
-
)
|
|
221
|
-
] }),
|
|
222
|
-
/* @__PURE__ */ jsxs(Tooltip, { children: [
|
|
223
|
-
/* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
224
|
-
Button,
|
|
225
|
-
{
|
|
226
|
-
variant: "ghost",
|
|
227
|
-
size: "icon",
|
|
228
|
-
className: "text-primary absolute right-2 top-0",
|
|
229
|
-
onClick: handleOnEdit,
|
|
230
|
-
children: /* @__PURE__ */ jsx(Icon, { icon: "mynaui:edit", className: "size-6 text-primary" })
|
|
231
|
-
}
|
|
232
|
-
) }),
|
|
233
|
-
/* @__PURE__ */ jsx(TooltipContent, { side: "right", children: /* @__PURE__ */ jsx("p", { children: "Edit Workflow" }) })
|
|
234
|
-
] })
|
|
235
|
-
] }),
|
|
236
|
-
/* @__PURE__ */ jsxs("div", { className: "inline-flex justify-between items-center gap-2 border-t border-card-foreground/10 w-full", children: [
|
|
237
|
-
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1 p-2", children: [
|
|
238
|
-
/* @__PURE__ */ jsxs("p", { className: "text-card-foreground/60 text-xs", children: [
|
|
239
|
-
"Updated:",
|
|
240
|
-
" ",
|
|
241
|
-
workflow.updated_at ? new Intl.DateTimeFormat("en-US", {
|
|
242
|
-
year: "numeric",
|
|
243
|
-
month: "2-digit",
|
|
244
|
-
day: "2-digit"
|
|
245
|
-
}).format(new Date(workflow.updated_at)) : "N/A"
|
|
246
|
-
] }),
|
|
247
|
-
/* @__PURE__ */ jsxs("p", { className: "text-card-foreground/60 text-xs", children: [
|
|
248
|
-
"Version: ",
|
|
249
|
-
workflow.version,
|
|
250
|
-
workflow.alias ? ` (${workflow.alias})` : "",
|
|
251
|
-
workflow.total_versions && workflow.total_versions > 1 ? ` \xB7 ${workflow.total_versions} versions` : ""
|
|
252
|
-
] })
|
|
253
|
-
] }),
|
|
254
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center p-1", children: [
|
|
255
|
-
/* @__PURE__ */ jsxs(Tooltip, { children: [
|
|
256
|
-
/* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
257
|
-
SharePopup,
|
|
258
|
-
{
|
|
259
|
-
url: `${config.fluidgridFrontendUrl}/workflow-view/${workflow.workflow_key}/${workflow.version}`,
|
|
260
|
-
embedSrc: `${config.fluidgridFrontendUrl}/workflow-view/${workflow.workflow_key}/${workflow.version}`
|
|
261
|
-
}
|
|
262
|
-
) }),
|
|
263
|
-
/* @__PURE__ */ jsx(TooltipContent, { side: "right", children: /* @__PURE__ */ jsx("p", { children: "Share Workflow" }) })
|
|
264
|
-
] }),
|
|
265
|
-
/* @__PURE__ */ jsx(
|
|
266
|
-
SdkPermissionGate,
|
|
267
|
-
{
|
|
268
|
-
permission: FLUIDGRIDS_PERMISSIONS.WORKFLOW_CREATE,
|
|
269
|
-
children: /* @__PURE__ */ jsxs(Tooltip, { children: [
|
|
270
|
-
/* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "icon", children: /* @__PURE__ */ jsx(
|
|
271
|
-
Icon,
|
|
272
|
-
{
|
|
273
|
-
icon: "mynaui:copy",
|
|
274
|
-
className: "size-6 text-card-foreground/70",
|
|
275
|
-
onClick: () => handleDuplicateWorkflow()
|
|
276
|
-
}
|
|
277
|
-
) }) }),
|
|
278
|
-
/* @__PURE__ */ jsx(TooltipContent, { side: "right", children: /* @__PURE__ */ jsx("p", { children: "Duplicate Workflow" }) })
|
|
279
|
-
] })
|
|
280
|
-
}
|
|
281
|
-
),
|
|
282
|
-
/* @__PURE__ */ jsx(
|
|
283
|
-
SdkPermissionGate,
|
|
284
|
-
{
|
|
285
|
-
permission: FLUIDGRIDS_PERMISSIONS.WORKFLOW_DELETE,
|
|
286
|
-
children: /* @__PURE__ */ jsxs(Tooltip, { children: [
|
|
287
|
-
/* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
288
|
-
Button,
|
|
289
|
-
{
|
|
290
|
-
variant: "ghost",
|
|
291
|
-
size: "sm",
|
|
292
|
-
onClick: () => setShowDeleteDialog(true),
|
|
293
|
-
children: /* @__PURE__ */ jsx(
|
|
294
|
-
Icon,
|
|
295
|
-
{
|
|
296
|
-
icon: "mynaui:trash",
|
|
297
|
-
className: "size-6 text-[var(--color-status-error-text)]"
|
|
298
|
-
}
|
|
299
|
-
)
|
|
300
|
-
}
|
|
301
|
-
) }),
|
|
302
|
-
/* @__PURE__ */ jsx(TooltipContent, { side: "right", children: /* @__PURE__ */ jsx("p", { children: "Remove Workflow" }) })
|
|
303
|
-
] })
|
|
304
|
-
}
|
|
305
|
-
)
|
|
306
|
-
] })
|
|
307
|
-
] })
|
|
308
|
-
] }),
|
|
309
|
-
/* @__PURE__ */ jsx(AlertDialog, { open: showDeleteDialog, onOpenChange: setShowDeleteDialog, children: /* @__PURE__ */ jsxs(AlertDialogContent, { children: [
|
|
310
|
-
/* @__PURE__ */ jsxs(AlertDialogHeader, { children: [
|
|
311
|
-
/* @__PURE__ */ jsx(AlertDialogTitle, { children: "Delete Workflow" }),
|
|
312
|
-
/* @__PURE__ */ jsxs(AlertDialogDescription, { children: [
|
|
313
|
-
'Are you sure you want to delete workflow "',
|
|
314
|
-
workflow.name,
|
|
315
|
-
'" and all its versions? This action cannot be undone.'
|
|
316
|
-
] })
|
|
317
|
-
] }),
|
|
318
|
-
/* @__PURE__ */ jsxs(AlertDialogFooter, { children: [
|
|
319
|
-
/* @__PURE__ */ jsx(AlertDialogCancel, { disabled: isDeleting, children: "Cancel" }),
|
|
320
|
-
/* @__PURE__ */ jsx(
|
|
321
|
-
AlertDialogAction,
|
|
322
|
-
{
|
|
323
|
-
onClick: handleDeleteWorkflow,
|
|
324
|
-
disabled: isDeleting,
|
|
325
|
-
className: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
|
|
326
|
-
children: isDeleting ? "Deleting..." : "Delete"
|
|
327
|
-
}
|
|
328
|
-
)
|
|
329
|
-
] })
|
|
330
|
-
] }) })
|
|
331
|
-
] });
|
|
332
|
-
};
|
|
333
|
-
function WorkflowsList() {
|
|
334
|
-
const navigate = useNavigate();
|
|
335
|
-
const { workflows, loading, error, refetch } = useWorkflowDefinitions({
|
|
336
|
-
limit: 100,
|
|
337
|
-
latestOnly: true
|
|
338
|
-
});
|
|
339
|
-
const handleWorkflowUpdateSuccess = () => {
|
|
340
|
-
refetch();
|
|
341
|
-
};
|
|
342
|
-
return /* @__PURE__ */ jsx("main", { className: "h-full w-full", children: /* @__PURE__ */ jsxs("div", { className: "p-4", children: [
|
|
343
|
-
/* @__PURE__ */ jsxs("div", { className: "inline-flex w-full justify-between items-center gap-2", children: [
|
|
344
|
-
/* @__PURE__ */ jsx("h1", { className: "text-xl font-bold", children: "Workflows" }),
|
|
345
|
-
/* @__PURE__ */ jsx(
|
|
346
|
-
SdkPermissionButton,
|
|
347
|
-
{
|
|
348
|
-
permission: FLUIDGRIDS_PERMISSIONS.WORKFLOW_CREATE,
|
|
349
|
-
deniedTooltip: "You don't have permission to create workflows",
|
|
350
|
-
children: /* @__PURE__ */ jsxs(
|
|
351
|
-
Button,
|
|
352
|
-
{
|
|
353
|
-
variant: "default",
|
|
354
|
-
size: "default",
|
|
355
|
-
className: "text-primary-foreground font-bold",
|
|
356
|
-
onClick: () => navigate(`../workflow/${v4()}/v1`),
|
|
357
|
-
children: [
|
|
358
|
-
/* @__PURE__ */ jsx(
|
|
359
|
-
Icon,
|
|
360
|
-
{
|
|
361
|
-
icon: "mynaui:plus",
|
|
362
|
-
className: "size-6 text-primary-foreground"
|
|
363
|
-
}
|
|
364
|
-
),
|
|
365
|
-
"Create Workflow"
|
|
366
|
-
]
|
|
367
|
-
}
|
|
368
|
-
)
|
|
369
|
-
}
|
|
370
|
-
)
|
|
371
|
-
] }),
|
|
372
|
-
/* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 md:grid-cols-3 2xl:grid-cols-4 gap-4 mt-4", children: loading ? /* @__PURE__ */ jsxs(Skeleton, { className: "bg-card-foreground/10 min-h-40 p-6 flex flex-col justify-between", children: [
|
|
373
|
-
/* @__PURE__ */ jsx(Skeleton, { className: "bg-card-foreground/20 w-full h-8" }),
|
|
374
|
-
/* @__PURE__ */ jsxs("div", { className: "flex gap-2", children: [
|
|
375
|
-
/* @__PURE__ */ jsx(Skeleton, { className: "bg-card-foreground/15 w-full h-6 mr-4" }),
|
|
376
|
-
/* @__PURE__ */ jsx(Skeleton, { className: "bg-card-foreground/15 w-8 h-6" }),
|
|
377
|
-
/* @__PURE__ */ jsx(Skeleton, { className: "bg-card-foreground/15 w-8 h-6" })
|
|
378
|
-
] })
|
|
379
|
-
] }) : error ? /* @__PURE__ */ jsxs("div", { className: "text-destructive p-4", children: [
|
|
380
|
-
"Error loading workflows: ",
|
|
381
|
-
error.message
|
|
382
|
-
] }) : workflows.length > 0 ? workflows.map((workflow) => /* @__PURE__ */ jsx(
|
|
383
|
-
CardWorkflow,
|
|
384
|
-
{
|
|
385
|
-
workflow: {
|
|
386
|
-
id: workflow.id,
|
|
387
|
-
workflow_key: workflow.workflowKey,
|
|
388
|
-
version: workflow.version,
|
|
389
|
-
name: workflow.name,
|
|
390
|
-
description: workflow.description ?? void 0,
|
|
391
|
-
status: workflow.status ?? void 0,
|
|
392
|
-
alias: workflow.alias ?? void 0,
|
|
393
|
-
updated_at: workflow.updatedAt ?? void 0,
|
|
394
|
-
created_at: workflow.createdAt ?? void 0,
|
|
395
|
-
total_versions: workflow.totalVersions ?? void 0
|
|
396
|
-
},
|
|
397
|
-
onUpdateSuccess: () => handleWorkflowUpdateSuccess()
|
|
398
|
-
},
|
|
399
|
-
workflow.id
|
|
400
|
-
)) : /* @__PURE__ */ jsx("div", { className: "text-muted-foreground p-4", children: "No workflows found. Create your first workflow!" }) })
|
|
401
|
-
] }) });
|
|
402
|
-
}
|
|
403
|
-
|
|
404
|
-
export { WorkflowsList };
|
|
405
|
-
//# sourceMappingURL=chunk-2WURM2ZA.js.map
|
|
406
|
-
//# sourceMappingURL=chunk-2WURM2ZA.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/SharePopup.tsx","../src/builder/components/ui/card-workflow.tsx","../src/pages/WorkflowsList.tsx"],"names":["useState","toast","jsxs","jsx","Button","useNavigate","uuidv4","Icon"],"mappings":"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","file":"chunk-2WURM2ZA.js","sourcesContent":["import { useState } from \"react\";\nimport { Copy, Share2 } from \"lucide-react\";\nimport { toast } from \"sonner\";\nimport { Button } from \"@burdenoff/fe-libs/ui\";\nimport { config } from \"../config\";\n\ninterface SharePopupProps {\n url: string;\n embedSrc: string;\n}\n\nexport default function SharePopup({\n url = window.location.href,\n embedSrc = `${config.fluidgridFrontendUrl}/workflow-view/565201ec-e803-4281-ad39-a135c46daa89/1.0`,\n}: SharePopupProps) {\n const [isOpen, setIsOpen] = useState(false);\n const [width, setWidth] = useState(600);\n const [height, setHeight] = useState(400);\n const [activeTab, setActiveTab] = useState<\"link\" | \"embed\">(\"link\");\n\n const embedCode = `<iframe src=\"${embedSrc}\" width=\"${width}\" height=\"${height}\"></iframe>`;\n\n const copyToClipboard = (text: string, message: string) => {\n navigator.clipboard.writeText(text);\n toast.success(message);\n };\n\n if (!isOpen) {\n return (\n <Button variant=\"ghost\" size=\"icon\" onClick={() => setIsOpen(true)}>\n <Share2 className=\"h-4 w-4\" />\n <span className=\"sr-only\">Share</span>\n </Button>\n );\n }\n\n return (\n <div\n className=\"fixed inset-0 z-50 flex items-center justify-center bg-black/50\"\n onClick={() => setIsOpen(false)}\n >\n <div\n className=\"bg-card rounded-lg p-6 max-w-md w-full mx-4\"\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"flex justify-between items-center mb-4\">\n <h2 className=\"text-lg font-semibold\">Share</h2>\n <Button variant=\"ghost\" size=\"icon\" onClick={() => setIsOpen(false)}>\n ×\n </Button>\n </div>\n\n <div className=\"flex gap-2 mb-4\">\n <Button\n variant={activeTab === \"link\" ? \"default\" : \"outline\"}\n size=\"sm\"\n onClick={() => setActiveTab(\"link\")}\n >\n Share Link\n </Button>\n <Button\n variant={activeTab === \"embed\" ? \"default\" : \"outline\"}\n size=\"sm\"\n onClick={() => setActiveTab(\"embed\")}\n >\n Embed\n </Button>\n </div>\n\n {activeTab === \"link\" && (\n <div className=\"flex items-center space-x-2\">\n <input\n readOnly\n value={url}\n className=\"flex-1 h-9 px-3 rounded-md border bg-background text-sm\"\n />\n <Button\n size=\"sm\"\n onClick={() => copyToClipboard(url, \"Link copied to clipboard\")}\n >\n <Copy className=\"h-4 w-4\" />\n </Button>\n </div>\n )}\n\n {activeTab === \"embed\" && (\n <div className=\"space-y-4\">\n <div className=\"grid grid-cols-2 gap-4\">\n <div>\n <label className=\"text-sm font-medium\">Width</label>\n <input\n type=\"number\"\n value={width}\n onChange={(e) => setWidth(Number(e.target.value))}\n className=\"w-full h-9 px-3 rounded-md border bg-background text-sm mt-1\"\n />\n </div>\n <div>\n <label className=\"text-sm font-medium\">Height</label>\n <input\n type=\"number\"\n value={height}\n onChange={(e) => setHeight(Number(e.target.value))}\n className=\"w-full h-9 px-3 rounded-md border bg-background text-sm mt-1\"\n />\n </div>\n </div>\n <div>\n <label className=\"text-sm font-medium\">Embed Code</label>\n <div className=\"relative mt-1\">\n <input\n readOnly\n value={embedCode}\n className=\"w-full h-9 px-3 pr-12 rounded-md border bg-background text-sm font-mono\"\n />\n <Button\n size=\"sm\"\n className=\"absolute right-1 top-1/2 -translate-y-1/2 h-7\"\n onClick={() =>\n copyToClipboard(embedCode, \"Embed code copied to clipboard\")\n }\n >\n <Copy className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n </div>\n )}\n </div>\n </div>\n );\n}\n","import { useState } from \"react\";\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n Button,\n Card,\n CardHeader,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n TooltipProvider,\n Badge,\n} from \"@burdenoff/fe-libs/ui\";\nimport { Icon } from \"@iconify/react\";\nimport { toast } from \"sonner\";\nimport { useFlowStore } from \"../../stores/flow-store\";\nimport { useNavigate } from \"react-router-dom\";\nimport { config } from \"../../../config\";\nimport SharePopup from \"../../../components/SharePopup\";\nimport {\n useDuplicateWorkflow,\n useDeleteWorkflow,\n} from \"../../../hooks/useWorkflows\";\nimport { SdkPermissionGate } from \"../../../permissions/PermissionsBridge\";\nimport { FLUIDGRIDS_PERMISSIONS } from \"../../../permissions/constants\";\n\ninterface WorkflowData {\n id?: string;\n workflow_key: string;\n version: string;\n name: string;\n description?: string;\n status?: string;\n alias?: string;\n updated_at?: string;\n created_at?: string;\n total_versions?: number;\n}\n\nconst STATUS_STYLES: Record<\n string,\n {\n label: string;\n variant: \"default\" | \"secondary\" | \"outline\" | \"destructive\";\n }\n> = {\n DRAFT: { label: \"Draft\", variant: \"secondary\" },\n ACTIVE: { label: \"Active\", variant: \"default\" },\n ARCHIVED: { label: \"Archived\", variant: \"outline\" },\n DEPRECATED: { label: \"Deprecated\", variant: \"destructive\" },\n};\n\nexport const CardWorkflow = ({\n workflow,\n onUpdateSuccess,\n}: {\n workflow: WorkflowData;\n onUpdateSuccess: () => void;\n}) => {\n const navigate = useNavigate();\n const resetWorkflow = useFlowStore((s) => s.actions.resetWorkflow);\n const { duplicateWorkflow: duplicateWorkflowMutation } =\n useDuplicateWorkflow();\n const { deleteWorkflow: deleteWorkflowMutation } = useDeleteWorkflow();\n const [showDeleteDialog, setShowDeleteDialog] = useState(false);\n const [isDeleting, setIsDeleting] = useState(false);\n\n async function handleDuplicateWorkflow() {\n try {\n // Reset the store first to clear any existing state\n resetWorkflow();\n\n const result = await duplicateWorkflowMutation(\n workflow.workflow_key,\n workflow.version,\n {\n newWorkflowKey: `${workflow.workflow_key}_copy_${Date.now()}`,\n },\n );\n\n if (result?.success && result.workflow) {\n navigate(\n `../workflow/${result.workflow.workflowKey}/${result.workflow.version}`,\n );\n } else {\n throw new Error(result?.message || \"Failed to duplicate workflow\");\n }\n } catch (error) {\n console.error(\"Error duplicating workflow:\", error);\n toast.error(\n `Error duplicating workflow: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n }\n\n const handleDeleteWorkflow = async (): Promise<void> => {\n if (!workflow.workflow_key) {\n console.error(\"Workflow ID is required to delete.\");\n return;\n }\n setIsDeleting(true);\n try {\n // Omit version to delete ALL versions of this workflow\n const success = await deleteWorkflowMutation(workflow.workflow_key);\n if (success) {\n setShowDeleteDialog(false);\n }\n } catch (error) {\n console.error(\"Error deleting workflow:\", error);\n toast.error(\n `Error deleting workflow: ${error instanceof Error ? error.message : String(error)}`,\n );\n } finally {\n setIsDeleting(false);\n setShowDeleteDialog(false);\n onUpdateSuccess();\n }\n };\n\n const handleOnEdit = () => {\n navigate(\"../workflow/\" + workflow.workflow_key + \"/\" + workflow.version);\n };\n\n const statusInfo =\n STATUS_STYLES[workflow.status ?? \"DRAFT\"] ?? STATUS_STYLES.DRAFT;\n\n return (\n <TooltipProvider>\n <Card className=\"bg-card-foreground/10 min-h-40 p-0 flex flex-col justify-between\">\n <CardHeader className=\"relative\">\n <div className=\"flex items-center gap-2 pr-8\">\n <h1 className=\"text-card-foreground font-bold truncate\">\n {workflow?.name}\n </h1>\n <Badge\n variant={statusInfo.variant}\n className=\"text-[10px] px-1.5 py-0 h-5 shrink-0\"\n >\n {statusInfo.label}\n </Badge>\n </div>\n\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"text-primary absolute right-2 top-0\"\n onClick={handleOnEdit}\n >\n <Icon icon=\"mynaui:edit\" className=\"size-6 text-primary\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent side=\"right\">\n <p>Edit Workflow</p>\n </TooltipContent>\n </Tooltip>\n </CardHeader>\n\n <div className=\"inline-flex justify-between items-center gap-2 border-t border-card-foreground/10 w-full\">\n <div className=\"flex flex-col gap-1 p-2\">\n <p className=\"text-card-foreground/60 text-xs\">\n Updated:{\" \"}\n {workflow.updated_at\n ? new Intl.DateTimeFormat(\"en-US\", {\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n }).format(new Date(workflow.updated_at))\n : \"N/A\"}\n </p>\n <p className=\"text-card-foreground/60 text-xs\">\n Version: {workflow.version}\n {workflow.alias ? ` (${workflow.alias})` : \"\"}\n {workflow.total_versions && workflow.total_versions > 1\n ? ` \\u00B7 ${workflow.total_versions} versions`\n : \"\"}\n </p>\n </div>\n <div className=\"flex items-center p-1\">\n <Tooltip>\n <TooltipTrigger asChild>\n <SharePopup\n url={`${config.fluidgridFrontendUrl}/workflow-view/${workflow.workflow_key}/${workflow.version}`}\n embedSrc={`${config.fluidgridFrontendUrl}/workflow-view/${workflow.workflow_key}/${workflow.version}`}\n />\n </TooltipTrigger>\n <TooltipContent side=\"right\">\n <p>Share Workflow</p>\n </TooltipContent>\n </Tooltip>\n <SdkPermissionGate\n permission={FLUIDGRIDS_PERMISSIONS.WORKFLOW_CREATE}\n >\n <Tooltip>\n <TooltipTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\">\n <Icon\n icon=\"mynaui:copy\"\n className=\"size-6 text-card-foreground/70\"\n onClick={() => handleDuplicateWorkflow()}\n />\n </Button>\n </TooltipTrigger>\n <TooltipContent side=\"right\">\n <p>Duplicate Workflow</p>\n </TooltipContent>\n </Tooltip>\n </SdkPermissionGate>\n <SdkPermissionGate\n permission={FLUIDGRIDS_PERMISSIONS.WORKFLOW_DELETE}\n >\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setShowDeleteDialog(true)}\n >\n <Icon\n icon=\"mynaui:trash\"\n className=\"size-6 text-[var(--color-status-error-text)]\"\n />\n </Button>\n </TooltipTrigger>\n <TooltipContent side=\"right\">\n <p>Remove Workflow</p>\n </TooltipContent>\n </Tooltip>\n </SdkPermissionGate>\n </div>\n </div>\n </Card>\n\n <AlertDialog open={showDeleteDialog} onOpenChange={setShowDeleteDialog}>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>Delete Workflow</AlertDialogTitle>\n <AlertDialogDescription>\n Are you sure you want to delete workflow "{workflow.name}\n " and all its versions? This action cannot be undone.\n </AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel disabled={isDeleting}>Cancel</AlertDialogCancel>\n <AlertDialogAction\n onClick={handleDeleteWorkflow}\n disabled={isDeleting}\n className=\"bg-destructive text-destructive-foreground hover:bg-destructive/90\"\n >\n {isDeleting ? \"Deleting...\" : \"Delete\"}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n </TooltipProvider>\n );\n};\n","import { useNavigate } from \"react-router-dom\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { Icon } from \"@iconify/react\";\n\nimport { Skeleton, Button } from \"@burdenoff/fe-libs/ui\";\nimport { CardWorkflow } from \"../builder/components/ui/card-workflow\";\nimport { useWorkflowDefinitions } from \"../hooks/useWorkflows\";\nimport { SdkPermissionButton } from \"../permissions/PermissionsBridge\";\nimport { FLUIDGRIDS_PERMISSIONS } from \"../permissions/constants\";\n\nexport function WorkflowsList() {\n const navigate = useNavigate();\n const { workflows, loading, error, refetch } = useWorkflowDefinitions({\n limit: 100,\n latestOnly: true,\n });\n\n const handleWorkflowUpdateSuccess = () => {\n refetch();\n };\n\n return (\n <main className=\"h-full w-full\">\n <div className=\"p-4\">\n <div className=\"inline-flex w-full justify-between items-center gap-2\">\n <h1 className=\"text-xl font-bold\">Workflows</h1>\n <SdkPermissionButton\n permission={FLUIDGRIDS_PERMISSIONS.WORKFLOW_CREATE}\n deniedTooltip=\"You don't have permission to create workflows\"\n >\n <Button\n variant=\"default\"\n size=\"default\"\n className=\"text-primary-foreground font-bold\"\n onClick={() => navigate(`../workflow/${uuidv4()}/v1`)}\n >\n <Icon\n icon=\"mynaui:plus\"\n className=\"size-6 text-primary-foreground\"\n />\n Create Workflow\n </Button>\n </SdkPermissionButton>\n </div>\n <div className=\"grid grid-cols-1 md:grid-cols-3 2xl:grid-cols-4 gap-4 mt-4\">\n {loading ? (\n <Skeleton className=\"bg-card-foreground/10 min-h-40 p-6 flex flex-col justify-between\">\n <Skeleton className=\"bg-card-foreground/20 w-full h-8\" />\n <div className=\"flex gap-2\">\n <Skeleton className=\"bg-card-foreground/15 w-full h-6 mr-4\" />\n <Skeleton className=\"bg-card-foreground/15 w-8 h-6\" />\n <Skeleton className=\"bg-card-foreground/15 w-8 h-6\" />\n </div>\n </Skeleton>\n ) : error ? (\n <div className=\"text-destructive p-4\">\n Error loading workflows: {error.message}\n </div>\n ) : workflows.length > 0 ? (\n workflows.map((workflow) => (\n <CardWorkflow\n key={workflow.id}\n workflow={{\n id: workflow.id,\n workflow_key: workflow.workflowKey,\n version: workflow.version,\n name: workflow.name,\n description: workflow.description ?? undefined,\n status: workflow.status ?? undefined,\n alias: workflow.alias ?? undefined,\n updated_at: workflow.updatedAt ?? undefined,\n created_at: workflow.createdAt ?? undefined,\n total_versions: workflow.totalVersions ?? undefined,\n }}\n onUpdateSuccess={() => handleWorkflowUpdateSuccess()}\n />\n ))\n ) : (\n <div className=\"text-muted-foreground p-4\">\n No workflows found. Create your first workflow!\n </div>\n )}\n </div>\n </div>\n </main>\n );\n}\n"]}
|