@uipath/apollo-react 3.44.2 → 3.45.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/canvas/components/StageNode/StageNode.cjs +30 -26
- package/dist/canvas/components/StageNode/StageNode.d.ts.map +1 -1
- package/dist/canvas/components/StageNode/StageNode.js +31 -27
- package/dist/canvas/components/StageNode/StageNode.stories.cjs +111 -45
- package/dist/canvas/components/StageNode/StageNode.stories.d.ts.map +1 -1
- package/dist/canvas/components/StageNode/StageNode.stories.js +112 -46
- package/dist/canvas/components/StageNode/StageNode.types.d.ts +2 -5
- package/dist/canvas/components/StageNode/StageNode.types.d.ts.map +1 -1
- package/dist/canvas/components/Toolbox/Toolbox.cjs +43 -32
- package/dist/canvas/components/Toolbox/Toolbox.d.ts.map +1 -1
- package/dist/canvas/components/Toolbox/Toolbox.js +43 -32
- package/package.json +1 -1
|
@@ -61,7 +61,7 @@ const StageNodeComponent = (props)=>{
|
|
|
61
61
|
const isException = stageDetails?.isException;
|
|
62
62
|
const isReadOnly = !!stageDetails?.isReadOnly;
|
|
63
63
|
const icon = stageDetails?.icon;
|
|
64
|
-
const
|
|
64
|
+
const selectedTaskId = stageDetails?.selectedTaskId;
|
|
65
65
|
const defaultContent = stageDetails?.defaultContent || 'Add first task';
|
|
66
66
|
const status = execution?.stageStatus?.status;
|
|
67
67
|
const statusLabel = execution?.stageStatus?.label;
|
|
@@ -89,17 +89,24 @@ const StageNodeComponent = (props)=>{
|
|
|
89
89
|
const [isAddingTask, setIsAddingTask] = (0, external_react_namespaceObject.useState)(false);
|
|
90
90
|
const [isReplacingTask, setIsReplacingTask] = (0, external_react_namespaceObject.useState)(false);
|
|
91
91
|
(0, external_react_namespaceObject.useEffect)(()=>{
|
|
92
|
-
if (pendingReplaceTask
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
92
|
+
if (pendingReplaceTask) {
|
|
93
|
+
const match = tasks.flatMap((group, gi)=>group.map((task, ti)=>({
|
|
94
|
+
task,
|
|
95
|
+
groupIndex: gi,
|
|
96
|
+
taskIndex: ti
|
|
97
|
+
}))).find(({ task })=>task.id === selectedTaskId);
|
|
98
|
+
if (match) {
|
|
99
|
+
taskStateReference.current = {
|
|
100
|
+
isParallel: (tasks[match.groupIndex]?.length ?? 0) > 1,
|
|
101
|
+
groupIndex: match.groupIndex,
|
|
102
|
+
taskIndex: match.taskIndex
|
|
103
|
+
};
|
|
104
|
+
setIsReplacingTask(true);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
101
107
|
}, [
|
|
102
108
|
pendingReplaceTask,
|
|
109
|
+
selectedTaskId,
|
|
103
110
|
tasks
|
|
104
111
|
]);
|
|
105
112
|
const [activeDragId, setActiveDragId] = (0, external_react_namespaceObject.useState)(null);
|
|
@@ -202,7 +209,11 @@ const StageNodeComponent = (props)=>{
|
|
|
202
209
|
const contextMenuItems = (0, external_react_namespaceObject.useCallback)((isParallel, groupIndex, taskIndex, tasksLength, taskGroupLength, isAboveParallel, isBelowParallel)=>{
|
|
203
210
|
const items = [];
|
|
204
211
|
if (onReplaceTaskFromToolbox) {
|
|
205
|
-
items.push((0, external_StageNodeTaskUtilities_cjs_namespaceObject.getMenuItem)('replace-task', 'Replace task', ()=>
|
|
212
|
+
items.push((0, external_StageNodeTaskUtilities_cjs_namespaceObject.getMenuItem)('replace-task', 'Replace task', ()=>{
|
|
213
|
+
const taskId = tasks[groupIndex]?.[taskIndex]?.id;
|
|
214
|
+
if (taskId) onTaskClick?.(taskId);
|
|
215
|
+
setIsReplacingTask(true);
|
|
216
|
+
}));
|
|
206
217
|
items.push((0, external_StageNodeTaskUtilities_cjs_namespaceObject.getDivider)());
|
|
207
218
|
}
|
|
208
219
|
if (onTaskGroupModification) {
|
|
@@ -215,8 +226,10 @@ const StageNodeComponent = (props)=>{
|
|
|
215
226
|
return items;
|
|
216
227
|
}, [
|
|
217
228
|
onReplaceTaskFromToolbox,
|
|
229
|
+
onTaskClick,
|
|
218
230
|
onTaskGroupModification,
|
|
219
|
-
reGroupTaskFunction
|
|
231
|
+
reGroupTaskFunction,
|
|
232
|
+
tasks
|
|
220
233
|
]);
|
|
221
234
|
const { setSelectedNodeId } = (0, hooks_index_cjs_namespaceObject.useNodeSelection)();
|
|
222
235
|
const handleStageClick = (0, external_react_namespaceObject.useCallback)(()=>{
|
|
@@ -254,17 +267,10 @@ const StageNodeComponent = (props)=>{
|
|
|
254
267
|
id
|
|
255
268
|
]);
|
|
256
269
|
const handleReplaceTaskToolboxItemSelected = (0, external_react_namespaceObject.useCallback)((item)=>{
|
|
257
|
-
setIsReplacingTask(true);
|
|
258
|
-
const groupIndex = taskStateReference.current.groupIndex;
|
|
259
|
-
const taskIndex = taskStateReference.current.taskIndex;
|
|
260
|
-
const taskId = tasks[groupIndex]?.[taskIndex]?.id;
|
|
261
|
-
if (taskId) onTaskClick?.(taskId);
|
|
262
270
|
onReplaceTaskFromToolbox?.(item, taskStateReference.current.groupIndex, taskStateReference.current.taskIndex);
|
|
263
271
|
setIsReplacingTask(false);
|
|
264
272
|
}, [
|
|
265
|
-
onReplaceTaskFromToolbox
|
|
266
|
-
onTaskClick,
|
|
267
|
-
tasks
|
|
273
|
+
onReplaceTaskFromToolbox
|
|
268
274
|
]);
|
|
269
275
|
const handleConfigurations = (0, external_react_namespaceObject.useMemo)(()=>isException ? [] : [
|
|
270
276
|
{
|
|
@@ -470,17 +476,14 @@ const StageNodeComponent = (props)=>{
|
|
|
470
476
|
})
|
|
471
477
|
}),
|
|
472
478
|
(onTaskAdd || onAddTaskFromToolbox) && !isReadOnly && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_material_index_cjs_namespaceObject.ApTooltip, {
|
|
473
|
-
content:
|
|
479
|
+
content: addTaskLabel,
|
|
474
480
|
placement: "top",
|
|
475
481
|
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
|
|
476
482
|
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_material_index_cjs_namespaceObject.ApIconButton, {
|
|
477
483
|
onClick: handleTaskAddClick,
|
|
478
484
|
size: "small",
|
|
479
|
-
disabled: addTaskLoading,
|
|
480
485
|
label: addTaskLabel,
|
|
481
|
-
children:
|
|
482
|
-
size: 20
|
|
483
|
-
}) : /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_material_index_cjs_namespaceObject.ApIcon, {
|
|
486
|
+
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_material_index_cjs_namespaceObject.ApIcon, {
|
|
484
487
|
name: "add",
|
|
485
488
|
size: "20px"
|
|
486
489
|
})
|
|
@@ -526,7 +529,7 @@ const StageNodeComponent = (props)=>{
|
|
|
526
529
|
return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_DraggableTask_cjs_namespaceObject.DraggableTask, {
|
|
527
530
|
task: task,
|
|
528
531
|
taskExecution: taskExecution,
|
|
529
|
-
isSelected:
|
|
532
|
+
isSelected: selectedTaskId === task.id,
|
|
530
533
|
isParallel: isParallel,
|
|
531
534
|
contextMenuItems: contextMenuItems(isParallel, groupIndex, taskIndex, tasks.length, taskGroup.length, (tasks[groupIndex - 1]?.length ?? 0) > 1, (tasks[groupIndex + 1]?.length ?? 0) > 1),
|
|
532
535
|
onTaskClick: handleTaskClick,
|
|
@@ -595,6 +598,7 @@ const StageNodeComponent = (props)=>{
|
|
|
595
598
|
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_Toolbox_index_cjs_namespaceObject.Toolbox, {
|
|
596
599
|
title: addTaskLabel,
|
|
597
600
|
initialItems: taskOptions,
|
|
601
|
+
loading: addTaskLoading,
|
|
598
602
|
onClose: ()=>setIsAddingTask(false),
|
|
599
603
|
onItemSelect: handleAddTaskToolboxItemSelected,
|
|
600
604
|
onSearch: onTaskToolboxSearch
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StageNode.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/StageNode/StageNode.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"StageNode.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/StageNode/StageNode.tsx"],"names":[],"mappings":"AAqDA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAkpBxD,eAAO,MAAM,SAAS,8CAxoBa,cAAc,6CAwoBA,CAAC"}
|
|
@@ -4,7 +4,7 @@ import { SortableContext, sortableKeyboardCoordinates, verticalListSortingStrate
|
|
|
4
4
|
import { FontVariantToken, Padding, Spacing } from "@uipath/apollo-core";
|
|
5
5
|
import { Column, Row } from "../../layouts/index.js";
|
|
6
6
|
import { Position, useStore, useViewport } from "../../xyflow/react.js";
|
|
7
|
-
import {
|
|
7
|
+
import { ApIcon, ApIconButton, ApLink, ApTooltip, ApTypography } from "../../../material/index.js";
|
|
8
8
|
import { memo, useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
9
9
|
import { createPortal } from "react-dom";
|
|
10
10
|
import { useConnectedHandles } from "../BaseCanvas/ConnectedHandlesContext.js";
|
|
@@ -33,7 +33,7 @@ const StageNodeComponent = (props)=>{
|
|
|
33
33
|
const isException = stageDetails?.isException;
|
|
34
34
|
const isReadOnly = !!stageDetails?.isReadOnly;
|
|
35
35
|
const icon = stageDetails?.icon;
|
|
36
|
-
const
|
|
36
|
+
const selectedTaskId = stageDetails?.selectedTaskId;
|
|
37
37
|
const defaultContent = stageDetails?.defaultContent || 'Add first task';
|
|
38
38
|
const status = execution?.stageStatus?.status;
|
|
39
39
|
const statusLabel = execution?.stageStatus?.label;
|
|
@@ -61,17 +61,24 @@ const StageNodeComponent = (props)=>{
|
|
|
61
61
|
const [isAddingTask, setIsAddingTask] = useState(false);
|
|
62
62
|
const [isReplacingTask, setIsReplacingTask] = useState(false);
|
|
63
63
|
useEffect(()=>{
|
|
64
|
-
if (pendingReplaceTask
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
64
|
+
if (pendingReplaceTask) {
|
|
65
|
+
const match = tasks.flatMap((group, gi)=>group.map((task, ti)=>({
|
|
66
|
+
task,
|
|
67
|
+
groupIndex: gi,
|
|
68
|
+
taskIndex: ti
|
|
69
|
+
}))).find(({ task })=>task.id === selectedTaskId);
|
|
70
|
+
if (match) {
|
|
71
|
+
taskStateReference.current = {
|
|
72
|
+
isParallel: (tasks[match.groupIndex]?.length ?? 0) > 1,
|
|
73
|
+
groupIndex: match.groupIndex,
|
|
74
|
+
taskIndex: match.taskIndex
|
|
75
|
+
};
|
|
76
|
+
setIsReplacingTask(true);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
73
79
|
}, [
|
|
74
80
|
pendingReplaceTask,
|
|
81
|
+
selectedTaskId,
|
|
75
82
|
tasks
|
|
76
83
|
]);
|
|
77
84
|
const [activeDragId, setActiveDragId] = useState(null);
|
|
@@ -174,7 +181,11 @@ const StageNodeComponent = (props)=>{
|
|
|
174
181
|
const contextMenuItems = useCallback((isParallel, groupIndex, taskIndex, tasksLength, taskGroupLength, isAboveParallel, isBelowParallel)=>{
|
|
175
182
|
const items = [];
|
|
176
183
|
if (onReplaceTaskFromToolbox) {
|
|
177
|
-
items.push(getMenuItem('replace-task', 'Replace task', ()=>
|
|
184
|
+
items.push(getMenuItem('replace-task', 'Replace task', ()=>{
|
|
185
|
+
const taskId = tasks[groupIndex]?.[taskIndex]?.id;
|
|
186
|
+
if (taskId) onTaskClick?.(taskId);
|
|
187
|
+
setIsReplacingTask(true);
|
|
188
|
+
}));
|
|
178
189
|
items.push(getDivider());
|
|
179
190
|
}
|
|
180
191
|
if (onTaskGroupModification) {
|
|
@@ -187,8 +198,10 @@ const StageNodeComponent = (props)=>{
|
|
|
187
198
|
return items;
|
|
188
199
|
}, [
|
|
189
200
|
onReplaceTaskFromToolbox,
|
|
201
|
+
onTaskClick,
|
|
190
202
|
onTaskGroupModification,
|
|
191
|
-
reGroupTaskFunction
|
|
203
|
+
reGroupTaskFunction,
|
|
204
|
+
tasks
|
|
192
205
|
]);
|
|
193
206
|
const { setSelectedNodeId } = useNodeSelection();
|
|
194
207
|
const handleStageClick = useCallback(()=>{
|
|
@@ -226,17 +239,10 @@ const StageNodeComponent = (props)=>{
|
|
|
226
239
|
id
|
|
227
240
|
]);
|
|
228
241
|
const handleReplaceTaskToolboxItemSelected = useCallback((item)=>{
|
|
229
|
-
setIsReplacingTask(true);
|
|
230
|
-
const groupIndex = taskStateReference.current.groupIndex;
|
|
231
|
-
const taskIndex = taskStateReference.current.taskIndex;
|
|
232
|
-
const taskId = tasks[groupIndex]?.[taskIndex]?.id;
|
|
233
|
-
if (taskId) onTaskClick?.(taskId);
|
|
234
242
|
onReplaceTaskFromToolbox?.(item, taskStateReference.current.groupIndex, taskStateReference.current.taskIndex);
|
|
235
243
|
setIsReplacingTask(false);
|
|
236
244
|
}, [
|
|
237
|
-
onReplaceTaskFromToolbox
|
|
238
|
-
onTaskClick,
|
|
239
|
-
tasks
|
|
245
|
+
onReplaceTaskFromToolbox
|
|
240
246
|
]);
|
|
241
247
|
const handleConfigurations = useMemo(()=>isException ? [] : [
|
|
242
248
|
{
|
|
@@ -442,17 +448,14 @@ const StageNodeComponent = (props)=>{
|
|
|
442
448
|
})
|
|
443
449
|
}),
|
|
444
450
|
(onTaskAdd || onAddTaskFromToolbox) && !isReadOnly && /*#__PURE__*/ jsx(ApTooltip, {
|
|
445
|
-
content:
|
|
451
|
+
content: addTaskLabel,
|
|
446
452
|
placement: "top",
|
|
447
453
|
children: /*#__PURE__*/ jsx("span", {
|
|
448
454
|
children: /*#__PURE__*/ jsx(ApIconButton, {
|
|
449
455
|
onClick: handleTaskAddClick,
|
|
450
456
|
size: "small",
|
|
451
|
-
disabled: addTaskLoading,
|
|
452
457
|
label: addTaskLabel,
|
|
453
|
-
children:
|
|
454
|
-
size: 20
|
|
455
|
-
}) : /*#__PURE__*/ jsx(ApIcon, {
|
|
458
|
+
children: /*#__PURE__*/ jsx(ApIcon, {
|
|
456
459
|
name: "add",
|
|
457
460
|
size: "20px"
|
|
458
461
|
})
|
|
@@ -498,7 +501,7 @@ const StageNodeComponent = (props)=>{
|
|
|
498
501
|
return /*#__PURE__*/ jsx(DraggableTask, {
|
|
499
502
|
task: task,
|
|
500
503
|
taskExecution: taskExecution,
|
|
501
|
-
isSelected:
|
|
504
|
+
isSelected: selectedTaskId === task.id,
|
|
502
505
|
isParallel: isParallel,
|
|
503
506
|
contextMenuItems: contextMenuItems(isParallel, groupIndex, taskIndex, tasks.length, taskGroup.length, (tasks[groupIndex - 1]?.length ?? 0) > 1, (tasks[groupIndex + 1]?.length ?? 0) > 1),
|
|
504
507
|
onTaskClick: handleTaskClick,
|
|
@@ -567,6 +570,7 @@ const StageNodeComponent = (props)=>{
|
|
|
567
570
|
children: /*#__PURE__*/ jsx(Toolbox, {
|
|
568
571
|
title: addTaskLabel,
|
|
569
572
|
initialItems: taskOptions,
|
|
573
|
+
loading: addTaskLoading,
|
|
570
574
|
onClose: ()=>setIsAddingTask(false),
|
|
571
575
|
onItemSelect: handleAddTaskToolboxItemSelected,
|
|
572
576
|
onSearch: onTaskToolboxSearch
|
|
@@ -1339,6 +1339,13 @@ const initialTasksForAddReplace = [
|
|
|
1339
1339
|
label: 'Document Review',
|
|
1340
1340
|
icon: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(DocumentIcon, {})
|
|
1341
1341
|
}
|
|
1342
|
+
],
|
|
1343
|
+
[
|
|
1344
|
+
{
|
|
1345
|
+
id: 'task-3',
|
|
1346
|
+
label: 'Process Validation',
|
|
1347
|
+
icon: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(ProcessIcon, {})
|
|
1348
|
+
}
|
|
1342
1349
|
]
|
|
1343
1350
|
];
|
|
1344
1351
|
const availableTaskOptions = [
|
|
@@ -1408,7 +1415,7 @@ const AddAndReplaceTasksStory = ()=>{
|
|
|
1408
1415
|
const edgeTypes = (0, external_react_namespaceObject.useMemo)(()=>({
|
|
1409
1416
|
stage: external_StageEdge_cjs_namespaceObject.StageEdge
|
|
1410
1417
|
}), []);
|
|
1411
|
-
const [pendingReplaceTask, setPendingReplaceTask] = (0, external_react_namespaceObject.useState)();
|
|
1418
|
+
const [pendingReplaceTask, setPendingReplaceTask] = (0, external_react_namespaceObject.useState)(false);
|
|
1412
1419
|
const [selectedTaskId, setSelectedTaskId] = (0, external_react_namespaceObject.useState)();
|
|
1413
1420
|
const [menuAnchorEl, setMenuAnchorEl] = (0, external_react_namespaceObject.useState)(null);
|
|
1414
1421
|
const [nodesState, setNodes, onNodesChange] = (0, react_cjs_namespaceObject.useNodesState)([
|
|
@@ -1482,7 +1489,8 @@ const AddAndReplaceTasksStory = ()=>{
|
|
|
1482
1489
|
}
|
|
1483
1490
|
};
|
|
1484
1491
|
}));
|
|
1485
|
-
setPendingReplaceTask(
|
|
1492
|
+
setPendingReplaceTask(false);
|
|
1493
|
+
setSelectedTaskId(void 0);
|
|
1486
1494
|
}, [
|
|
1487
1495
|
setNodes
|
|
1488
1496
|
]);
|
|
@@ -1511,17 +1519,28 @@ const AddAndReplaceTasksStory = ()=>{
|
|
|
1511
1519
|
const handleTaskClick = (0, external_react_namespaceObject.useCallback)((taskId)=>{
|
|
1512
1520
|
setSelectedTaskId(taskId);
|
|
1513
1521
|
}, []);
|
|
1522
|
+
const handlePaneClick = (0, external_react_namespaceObject.useCallback)(()=>{
|
|
1523
|
+
setSelectedTaskId(void 0);
|
|
1524
|
+
setPendingReplaceTask(false);
|
|
1525
|
+
}, []);
|
|
1526
|
+
const handleNodesChange = (0, external_react_namespaceObject.useCallback)((...args)=>{
|
|
1527
|
+
onNodesChange(...args);
|
|
1528
|
+
const deselected = args[0].some((c)=>'select' === c.type && 'add-replace-stage' === c.id && !c.selected);
|
|
1529
|
+
if (deselected) {
|
|
1530
|
+
setPendingReplaceTask(false);
|
|
1531
|
+
setSelectedTaskId(void 0);
|
|
1532
|
+
}
|
|
1533
|
+
}, [
|
|
1534
|
+
onNodesChange
|
|
1535
|
+
]);
|
|
1514
1536
|
const currentTasks = nodesState.find((n)=>'add-replace-stage' === n.id)?.data.stageDetails.tasks || [];
|
|
1515
|
-
const taskMenuItems = (0, external_react_namespaceObject.useMemo)(()=>currentTasks.flatMap((group
|
|
1537
|
+
const taskMenuItems = (0, external_react_namespaceObject.useMemo)(()=>currentTasks.flatMap((group)=>group.map((task)=>({
|
|
1516
1538
|
title: task.label,
|
|
1517
1539
|
variant: 'item',
|
|
1518
1540
|
startIcon: task.icon,
|
|
1519
1541
|
onClick: ()=>{
|
|
1520
1542
|
setSelectedTaskId(task.id);
|
|
1521
|
-
setPendingReplaceTask(
|
|
1522
|
-
groupIndex,
|
|
1523
|
-
taskIndex
|
|
1524
|
-
});
|
|
1543
|
+
setPendingReplaceTask(true);
|
|
1525
1544
|
setMenuAnchorEl(null);
|
|
1526
1545
|
}
|
|
1527
1546
|
}))), [
|
|
@@ -1531,12 +1550,12 @@ const AddAndReplaceTasksStory = ()=>{
|
|
|
1531
1550
|
...node,
|
|
1532
1551
|
data: {
|
|
1533
1552
|
...node.data,
|
|
1534
|
-
|
|
1553
|
+
...selectedTaskId && {
|
|
1554
|
+
pendingReplaceTask
|
|
1555
|
+
},
|
|
1535
1556
|
stageDetails: {
|
|
1536
1557
|
...node.data.stageDetails,
|
|
1537
|
-
|
|
1538
|
-
selectedTaskId
|
|
1539
|
-
] : void 0
|
|
1558
|
+
selectedTaskId
|
|
1540
1559
|
},
|
|
1541
1560
|
onAddTaskFromToolbox: handleAddTask,
|
|
1542
1561
|
onReplaceTaskFromToolbox: handleReplaceTask,
|
|
@@ -1556,13 +1575,14 @@ const AddAndReplaceTasksStory = ()=>{
|
|
|
1556
1575
|
setEdges
|
|
1557
1576
|
]);
|
|
1558
1577
|
const replaceButtonLabel = (0, external_react_namespaceObject.useMemo)(()=>{
|
|
1559
|
-
if (pendingReplaceTask) {
|
|
1560
|
-
const taskBeingReplaced = currentTasks
|
|
1578
|
+
if (pendingReplaceTask && selectedTaskId) {
|
|
1579
|
+
const taskBeingReplaced = currentTasks.flat().find((t)=>t.id === selectedTaskId);
|
|
1561
1580
|
if (taskBeingReplaced) return `Replacing Task: ${taskBeingReplaced.label}`;
|
|
1562
1581
|
}
|
|
1563
1582
|
return 'Replace Task';
|
|
1564
1583
|
}, [
|
|
1565
1584
|
pendingReplaceTask,
|
|
1585
|
+
selectedTaskId,
|
|
1566
1586
|
currentTasks
|
|
1567
1587
|
]);
|
|
1568
1588
|
return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
|
|
@@ -1574,9 +1594,10 @@ const AddAndReplaceTasksStory = ()=>{
|
|
|
1574
1594
|
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(external_BaseCanvas_index_cjs_namespaceObject.BaseCanvas, {
|
|
1575
1595
|
nodes: nodesWithMetadata,
|
|
1576
1596
|
edges: edges,
|
|
1577
|
-
onNodesChange:
|
|
1597
|
+
onNodesChange: handleNodesChange,
|
|
1578
1598
|
onEdgesChange: onEdgesChange,
|
|
1579
1599
|
onConnect: onConnect,
|
|
1600
|
+
onPaneClick: handlePaneClick,
|
|
1580
1601
|
nodeTypes: nodeTypes,
|
|
1581
1602
|
edgeTypes: edgeTypes,
|
|
1582
1603
|
mode: "design",
|
|
@@ -1630,6 +1651,59 @@ const AddAndReplaceTasks = {
|
|
|
1630
1651
|
render: ()=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(AddAndReplaceTasksStory, {}),
|
|
1631
1652
|
args: {}
|
|
1632
1653
|
};
|
|
1654
|
+
const fetchChildren = (id)=>new Promise((resolve)=>{
|
|
1655
|
+
setTimeout(()=>{
|
|
1656
|
+
resolve([
|
|
1657
|
+
{
|
|
1658
|
+
id: `${id}-sub-1`,
|
|
1659
|
+
name: `${id} - Subtask A`,
|
|
1660
|
+
data: {
|
|
1661
|
+
type: `${id}-a`
|
|
1662
|
+
}
|
|
1663
|
+
},
|
|
1664
|
+
{
|
|
1665
|
+
id: `${id}-sub-2`,
|
|
1666
|
+
name: `${id} - Subtask B`,
|
|
1667
|
+
data: {
|
|
1668
|
+
type: `${id}-b`
|
|
1669
|
+
}
|
|
1670
|
+
},
|
|
1671
|
+
{
|
|
1672
|
+
id: `${id}-sub-3`,
|
|
1673
|
+
name: `${id} - Subtask C`,
|
|
1674
|
+
data: {
|
|
1675
|
+
type: `${id}-c`
|
|
1676
|
+
}
|
|
1677
|
+
}
|
|
1678
|
+
]);
|
|
1679
|
+
}, 2000);
|
|
1680
|
+
});
|
|
1681
|
+
const loadedTaskOptionsWithChildren = [
|
|
1682
|
+
{
|
|
1683
|
+
id: 'email',
|
|
1684
|
+
name: 'Email',
|
|
1685
|
+
data: {
|
|
1686
|
+
type: 'email'
|
|
1687
|
+
},
|
|
1688
|
+
children: (id)=>fetchChildren(id)
|
|
1689
|
+
},
|
|
1690
|
+
{
|
|
1691
|
+
id: 'approval',
|
|
1692
|
+
name: 'Approval',
|
|
1693
|
+
data: {
|
|
1694
|
+
type: 'approval'
|
|
1695
|
+
},
|
|
1696
|
+
children: (id)=>fetchChildren(id)
|
|
1697
|
+
},
|
|
1698
|
+
{
|
|
1699
|
+
id: "script",
|
|
1700
|
+
name: 'Script',
|
|
1701
|
+
data: {
|
|
1702
|
+
type: "script"
|
|
1703
|
+
},
|
|
1704
|
+
children: (id)=>fetchChildren(id)
|
|
1705
|
+
}
|
|
1706
|
+
];
|
|
1633
1707
|
const AddTaskLoadingStory = ()=>{
|
|
1634
1708
|
const StageNodeWrapper = (0, external_react_namespaceObject.useMemo)(()=>function(props) {
|
|
1635
1709
|
return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_StageNode_cjs_namespaceObject.StageNode, {
|
|
@@ -1656,14 +1730,15 @@ const AddTaskLoadingStory = ()=>{
|
|
|
1656
1730
|
width: 304,
|
|
1657
1731
|
data: {
|
|
1658
1732
|
stageDetails: {
|
|
1659
|
-
label: '
|
|
1733
|
+
label: 'Top-level loading (click +)',
|
|
1660
1734
|
tasks: []
|
|
1661
1735
|
},
|
|
1662
|
-
addTaskLoading:
|
|
1736
|
+
addTaskLoading: true,
|
|
1737
|
+
taskOptions: []
|
|
1663
1738
|
}
|
|
1664
1739
|
},
|
|
1665
1740
|
{
|
|
1666
|
-
id: 'loading-stage-
|
|
1741
|
+
id: 'loading-stage-children',
|
|
1667
1742
|
type: 'stage',
|
|
1668
1743
|
position: {
|
|
1669
1744
|
x: 400,
|
|
@@ -1672,7 +1747,7 @@ const AddTaskLoadingStory = ()=>{
|
|
|
1672
1747
|
width: 304,
|
|
1673
1748
|
data: {
|
|
1674
1749
|
stageDetails: {
|
|
1675
|
-
label: '
|
|
1750
|
+
label: 'Async children (click +)',
|
|
1676
1751
|
tasks: [
|
|
1677
1752
|
[
|
|
1678
1753
|
{
|
|
@@ -1680,50 +1755,41 @@ const AddTaskLoadingStory = ()=>{
|
|
|
1680
1755
|
label: 'Existing Task',
|
|
1681
1756
|
icon: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(VerificationIcon, {})
|
|
1682
1757
|
}
|
|
1683
|
-
],
|
|
1684
|
-
[
|
|
1685
|
-
{
|
|
1686
|
-
id: 'task-2',
|
|
1687
|
-
label: 'Another Task',
|
|
1688
|
-
icon: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(DocumentIcon, {})
|
|
1689
|
-
}
|
|
1690
1758
|
]
|
|
1691
1759
|
]
|
|
1692
1760
|
},
|
|
1693
|
-
addTaskLoading: false
|
|
1761
|
+
addTaskLoading: false,
|
|
1762
|
+
taskOptions: loadedTaskOptionsWithChildren
|
|
1694
1763
|
}
|
|
1695
1764
|
}
|
|
1696
1765
|
], []);
|
|
1697
1766
|
const [nodesState, setNodes, onNodesChange] = (0, react_cjs_namespaceObject.useNodesState)(initialNodes);
|
|
1698
1767
|
const [edges, setEdges, onEdgesChange] = (0, react_cjs_namespaceObject.useEdgesState)([]);
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
]);
|
|
1710
|
-
const handleTaskAddForNode = (0, external_react_namespaceObject.useCallback)((nodeId)=>{
|
|
1711
|
-
setNodeLoading(nodeId, true);
|
|
1712
|
-
setTimeout(()=>{
|
|
1713
|
-
setNodeLoading(nodeId, false);
|
|
1768
|
+
(0, external_react_namespaceObject.useEffect)(()=>{
|
|
1769
|
+
const timeout = setTimeout(()=>{
|
|
1770
|
+
setNodes((nds)=>nds.map((node)=>'loading-stage-empty' === node.id ? {
|
|
1771
|
+
...node,
|
|
1772
|
+
data: {
|
|
1773
|
+
...node.data,
|
|
1774
|
+
addTaskLoading: false,
|
|
1775
|
+
taskOptions: loadedTaskOptionsWithChildren
|
|
1776
|
+
}
|
|
1777
|
+
} : node));
|
|
1714
1778
|
}, 3000);
|
|
1779
|
+
return ()=>clearTimeout(timeout);
|
|
1715
1780
|
}, [
|
|
1716
|
-
|
|
1781
|
+
setNodes
|
|
1717
1782
|
]);
|
|
1718
1783
|
const nodesWithHandler = (0, external_react_namespaceObject.useMemo)(()=>nodesState.map((node)=>({
|
|
1719
1784
|
...node,
|
|
1720
1785
|
data: {
|
|
1721
1786
|
...node.data,
|
|
1722
|
-
|
|
1787
|
+
onAddTaskFromToolbox: (taskItem)=>{
|
|
1788
|
+
window.alert(`Added task "${taskItem.name}" to ${node.id}`);
|
|
1789
|
+
}
|
|
1723
1790
|
}
|
|
1724
1791
|
})), [
|
|
1725
|
-
nodesState
|
|
1726
|
-
handleTaskAddForNode
|
|
1792
|
+
nodesState
|
|
1727
1793
|
]);
|
|
1728
1794
|
const onConnect = (0, external_react_namespaceObject.useCallback)((connection)=>setEdges((eds)=>(0, react_cjs_namespaceObject.addEdge)(connection, eds)), [
|
|
1729
1795
|
setEdges
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StageNode.stories.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/StageNode/StageNode.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAyBvD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,SAAS,CA0FD,CAAC;AAEjC,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AA4CnC,eAAO,MAAM,OAAO,EAAE,KA2DrB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAsE3B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KA8M7B,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,KA+HvC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,KAoKpC,CAAC;AA8GF,eAAO,MAAM,uBAAuB,EAAE,KAOrC,CAAC;
|
|
1
|
+
{"version":3,"file":"StageNode.stories.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/StageNode/StageNode.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAyBvD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,SAAS,CA0FD,CAAC;AAEjC,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AA4CnC,eAAO,MAAM,OAAO,EAAE,KA2DrB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAsE3B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KA8M7B,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,KA+HvC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,KAoKpC,CAAC;AA8GF,eAAO,MAAM,uBAAuB,EAAE,KAOrC,CAAC;AAkVF,eAAO,MAAM,kBAAkB,EAAE,KAOhC,CAAC;AAmJF,eAAO,MAAM,cAAc,EAAE,KAO5B,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { ConnectionMode, Panel, ReactFlowProvider, addEdge, useEdgesState, useNodesState } from "../../xyflow/react.js";
|
|
3
3
|
import { ApButton, ApMenu } from "../../../material/components/index.js";
|
|
4
|
-
import { useCallback, useMemo, useState } from "react";
|
|
4
|
+
import { useCallback, useEffect, useMemo, useState } from "react";
|
|
5
5
|
import { DefaultCanvasTranslations } from "../../types.js";
|
|
6
6
|
import { createGroupModificationHandlers, getHandlerForModificationType } from "../../utils/GroupModificationUtils.js";
|
|
7
7
|
import { BaseCanvas } from "../BaseCanvas/index.js";
|
|
@@ -1303,6 +1303,13 @@ const initialTasksForAddReplace = [
|
|
|
1303
1303
|
label: 'Document Review',
|
|
1304
1304
|
icon: /*#__PURE__*/ jsx(DocumentIcon, {})
|
|
1305
1305
|
}
|
|
1306
|
+
],
|
|
1307
|
+
[
|
|
1308
|
+
{
|
|
1309
|
+
id: 'task-3',
|
|
1310
|
+
label: 'Process Validation',
|
|
1311
|
+
icon: /*#__PURE__*/ jsx(ProcessIcon, {})
|
|
1312
|
+
}
|
|
1306
1313
|
]
|
|
1307
1314
|
];
|
|
1308
1315
|
const availableTaskOptions = [
|
|
@@ -1372,7 +1379,7 @@ const AddAndReplaceTasksStory = ()=>{
|
|
|
1372
1379
|
const edgeTypes = useMemo(()=>({
|
|
1373
1380
|
stage: StageEdge
|
|
1374
1381
|
}), []);
|
|
1375
|
-
const [pendingReplaceTask, setPendingReplaceTask] = useState();
|
|
1382
|
+
const [pendingReplaceTask, setPendingReplaceTask] = useState(false);
|
|
1376
1383
|
const [selectedTaskId, setSelectedTaskId] = useState();
|
|
1377
1384
|
const [menuAnchorEl, setMenuAnchorEl] = useState(null);
|
|
1378
1385
|
const [nodesState, setNodes, onNodesChange] = useNodesState([
|
|
@@ -1446,7 +1453,8 @@ const AddAndReplaceTasksStory = ()=>{
|
|
|
1446
1453
|
}
|
|
1447
1454
|
};
|
|
1448
1455
|
}));
|
|
1449
|
-
setPendingReplaceTask(
|
|
1456
|
+
setPendingReplaceTask(false);
|
|
1457
|
+
setSelectedTaskId(void 0);
|
|
1450
1458
|
}, [
|
|
1451
1459
|
setNodes
|
|
1452
1460
|
]);
|
|
@@ -1475,17 +1483,28 @@ const AddAndReplaceTasksStory = ()=>{
|
|
|
1475
1483
|
const handleTaskClick = useCallback((taskId)=>{
|
|
1476
1484
|
setSelectedTaskId(taskId);
|
|
1477
1485
|
}, []);
|
|
1486
|
+
const handlePaneClick = useCallback(()=>{
|
|
1487
|
+
setSelectedTaskId(void 0);
|
|
1488
|
+
setPendingReplaceTask(false);
|
|
1489
|
+
}, []);
|
|
1490
|
+
const handleNodesChange = useCallback((...args)=>{
|
|
1491
|
+
onNodesChange(...args);
|
|
1492
|
+
const deselected = args[0].some((c)=>'select' === c.type && 'add-replace-stage' === c.id && !c.selected);
|
|
1493
|
+
if (deselected) {
|
|
1494
|
+
setPendingReplaceTask(false);
|
|
1495
|
+
setSelectedTaskId(void 0);
|
|
1496
|
+
}
|
|
1497
|
+
}, [
|
|
1498
|
+
onNodesChange
|
|
1499
|
+
]);
|
|
1478
1500
|
const currentTasks = nodesState.find((n)=>'add-replace-stage' === n.id)?.data.stageDetails.tasks || [];
|
|
1479
|
-
const taskMenuItems = useMemo(()=>currentTasks.flatMap((group
|
|
1501
|
+
const taskMenuItems = useMemo(()=>currentTasks.flatMap((group)=>group.map((task)=>({
|
|
1480
1502
|
title: task.label,
|
|
1481
1503
|
variant: 'item',
|
|
1482
1504
|
startIcon: task.icon,
|
|
1483
1505
|
onClick: ()=>{
|
|
1484
1506
|
setSelectedTaskId(task.id);
|
|
1485
|
-
setPendingReplaceTask(
|
|
1486
|
-
groupIndex,
|
|
1487
|
-
taskIndex
|
|
1488
|
-
});
|
|
1507
|
+
setPendingReplaceTask(true);
|
|
1489
1508
|
setMenuAnchorEl(null);
|
|
1490
1509
|
}
|
|
1491
1510
|
}))), [
|
|
@@ -1495,12 +1514,12 @@ const AddAndReplaceTasksStory = ()=>{
|
|
|
1495
1514
|
...node,
|
|
1496
1515
|
data: {
|
|
1497
1516
|
...node.data,
|
|
1498
|
-
|
|
1517
|
+
...selectedTaskId && {
|
|
1518
|
+
pendingReplaceTask
|
|
1519
|
+
},
|
|
1499
1520
|
stageDetails: {
|
|
1500
1521
|
...node.data.stageDetails,
|
|
1501
|
-
|
|
1502
|
-
selectedTaskId
|
|
1503
|
-
] : void 0
|
|
1522
|
+
selectedTaskId
|
|
1504
1523
|
},
|
|
1505
1524
|
onAddTaskFromToolbox: handleAddTask,
|
|
1506
1525
|
onReplaceTaskFromToolbox: handleReplaceTask,
|
|
@@ -1520,13 +1539,14 @@ const AddAndReplaceTasksStory = ()=>{
|
|
|
1520
1539
|
setEdges
|
|
1521
1540
|
]);
|
|
1522
1541
|
const replaceButtonLabel = useMemo(()=>{
|
|
1523
|
-
if (pendingReplaceTask) {
|
|
1524
|
-
const taskBeingReplaced = currentTasks
|
|
1542
|
+
if (pendingReplaceTask && selectedTaskId) {
|
|
1543
|
+
const taskBeingReplaced = currentTasks.flat().find((t)=>t.id === selectedTaskId);
|
|
1525
1544
|
if (taskBeingReplaced) return `Replacing Task: ${taskBeingReplaced.label}`;
|
|
1526
1545
|
}
|
|
1527
1546
|
return 'Replace Task';
|
|
1528
1547
|
}, [
|
|
1529
1548
|
pendingReplaceTask,
|
|
1549
|
+
selectedTaskId,
|
|
1530
1550
|
currentTasks
|
|
1531
1551
|
]);
|
|
1532
1552
|
return /*#__PURE__*/ jsx("div", {
|
|
@@ -1538,9 +1558,10 @@ const AddAndReplaceTasksStory = ()=>{
|
|
|
1538
1558
|
children: /*#__PURE__*/ jsxs(BaseCanvas, {
|
|
1539
1559
|
nodes: nodesWithMetadata,
|
|
1540
1560
|
edges: edges,
|
|
1541
|
-
onNodesChange:
|
|
1561
|
+
onNodesChange: handleNodesChange,
|
|
1542
1562
|
onEdgesChange: onEdgesChange,
|
|
1543
1563
|
onConnect: onConnect,
|
|
1564
|
+
onPaneClick: handlePaneClick,
|
|
1544
1565
|
nodeTypes: nodeTypes,
|
|
1545
1566
|
edgeTypes: edgeTypes,
|
|
1546
1567
|
mode: "design",
|
|
@@ -1594,6 +1615,59 @@ const AddAndReplaceTasks = {
|
|
|
1594
1615
|
render: ()=>/*#__PURE__*/ jsx(AddAndReplaceTasksStory, {}),
|
|
1595
1616
|
args: {}
|
|
1596
1617
|
};
|
|
1618
|
+
const fetchChildren = (id)=>new Promise((resolve)=>{
|
|
1619
|
+
setTimeout(()=>{
|
|
1620
|
+
resolve([
|
|
1621
|
+
{
|
|
1622
|
+
id: `${id}-sub-1`,
|
|
1623
|
+
name: `${id} - Subtask A`,
|
|
1624
|
+
data: {
|
|
1625
|
+
type: `${id}-a`
|
|
1626
|
+
}
|
|
1627
|
+
},
|
|
1628
|
+
{
|
|
1629
|
+
id: `${id}-sub-2`,
|
|
1630
|
+
name: `${id} - Subtask B`,
|
|
1631
|
+
data: {
|
|
1632
|
+
type: `${id}-b`
|
|
1633
|
+
}
|
|
1634
|
+
},
|
|
1635
|
+
{
|
|
1636
|
+
id: `${id}-sub-3`,
|
|
1637
|
+
name: `${id} - Subtask C`,
|
|
1638
|
+
data: {
|
|
1639
|
+
type: `${id}-c`
|
|
1640
|
+
}
|
|
1641
|
+
}
|
|
1642
|
+
]);
|
|
1643
|
+
}, 2000);
|
|
1644
|
+
});
|
|
1645
|
+
const loadedTaskOptionsWithChildren = [
|
|
1646
|
+
{
|
|
1647
|
+
id: 'email',
|
|
1648
|
+
name: 'Email',
|
|
1649
|
+
data: {
|
|
1650
|
+
type: 'email'
|
|
1651
|
+
},
|
|
1652
|
+
children: (id)=>fetchChildren(id)
|
|
1653
|
+
},
|
|
1654
|
+
{
|
|
1655
|
+
id: 'approval',
|
|
1656
|
+
name: 'Approval',
|
|
1657
|
+
data: {
|
|
1658
|
+
type: 'approval'
|
|
1659
|
+
},
|
|
1660
|
+
children: (id)=>fetchChildren(id)
|
|
1661
|
+
},
|
|
1662
|
+
{
|
|
1663
|
+
id: "script",
|
|
1664
|
+
name: 'Script',
|
|
1665
|
+
data: {
|
|
1666
|
+
type: "script"
|
|
1667
|
+
},
|
|
1668
|
+
children: (id)=>fetchChildren(id)
|
|
1669
|
+
}
|
|
1670
|
+
];
|
|
1597
1671
|
const AddTaskLoadingStory = ()=>{
|
|
1598
1672
|
const StageNodeWrapper = useMemo(()=>function(props) {
|
|
1599
1673
|
return /*#__PURE__*/ jsx(StageNode, {
|
|
@@ -1620,14 +1694,15 @@ const AddTaskLoadingStory = ()=>{
|
|
|
1620
1694
|
width: 304,
|
|
1621
1695
|
data: {
|
|
1622
1696
|
stageDetails: {
|
|
1623
|
-
label: '
|
|
1697
|
+
label: 'Top-level loading (click +)',
|
|
1624
1698
|
tasks: []
|
|
1625
1699
|
},
|
|
1626
|
-
addTaskLoading:
|
|
1700
|
+
addTaskLoading: true,
|
|
1701
|
+
taskOptions: []
|
|
1627
1702
|
}
|
|
1628
1703
|
},
|
|
1629
1704
|
{
|
|
1630
|
-
id: 'loading-stage-
|
|
1705
|
+
id: 'loading-stage-children',
|
|
1631
1706
|
type: 'stage',
|
|
1632
1707
|
position: {
|
|
1633
1708
|
x: 400,
|
|
@@ -1636,7 +1711,7 @@ const AddTaskLoadingStory = ()=>{
|
|
|
1636
1711
|
width: 304,
|
|
1637
1712
|
data: {
|
|
1638
1713
|
stageDetails: {
|
|
1639
|
-
label: '
|
|
1714
|
+
label: 'Async children (click +)',
|
|
1640
1715
|
tasks: [
|
|
1641
1716
|
[
|
|
1642
1717
|
{
|
|
@@ -1644,50 +1719,41 @@ const AddTaskLoadingStory = ()=>{
|
|
|
1644
1719
|
label: 'Existing Task',
|
|
1645
1720
|
icon: /*#__PURE__*/ jsx(VerificationIcon, {})
|
|
1646
1721
|
}
|
|
1647
|
-
],
|
|
1648
|
-
[
|
|
1649
|
-
{
|
|
1650
|
-
id: 'task-2',
|
|
1651
|
-
label: 'Another Task',
|
|
1652
|
-
icon: /*#__PURE__*/ jsx(DocumentIcon, {})
|
|
1653
|
-
}
|
|
1654
1722
|
]
|
|
1655
1723
|
]
|
|
1656
1724
|
},
|
|
1657
|
-
addTaskLoading: false
|
|
1725
|
+
addTaskLoading: false,
|
|
1726
|
+
taskOptions: loadedTaskOptionsWithChildren
|
|
1658
1727
|
}
|
|
1659
1728
|
}
|
|
1660
1729
|
], []);
|
|
1661
1730
|
const [nodesState, setNodes, onNodesChange] = useNodesState(initialNodes);
|
|
1662
1731
|
const [edges, setEdges, onEdgesChange] = useEdgesState([]);
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
]);
|
|
1674
|
-
const handleTaskAddForNode = useCallback((nodeId)=>{
|
|
1675
|
-
setNodeLoading(nodeId, true);
|
|
1676
|
-
setTimeout(()=>{
|
|
1677
|
-
setNodeLoading(nodeId, false);
|
|
1732
|
+
useEffect(()=>{
|
|
1733
|
+
const timeout = setTimeout(()=>{
|
|
1734
|
+
setNodes((nds)=>nds.map((node)=>'loading-stage-empty' === node.id ? {
|
|
1735
|
+
...node,
|
|
1736
|
+
data: {
|
|
1737
|
+
...node.data,
|
|
1738
|
+
addTaskLoading: false,
|
|
1739
|
+
taskOptions: loadedTaskOptionsWithChildren
|
|
1740
|
+
}
|
|
1741
|
+
} : node));
|
|
1678
1742
|
}, 3000);
|
|
1743
|
+
return ()=>clearTimeout(timeout);
|
|
1679
1744
|
}, [
|
|
1680
|
-
|
|
1745
|
+
setNodes
|
|
1681
1746
|
]);
|
|
1682
1747
|
const nodesWithHandler = useMemo(()=>nodesState.map((node)=>({
|
|
1683
1748
|
...node,
|
|
1684
1749
|
data: {
|
|
1685
1750
|
...node.data,
|
|
1686
|
-
|
|
1751
|
+
onAddTaskFromToolbox: (taskItem)=>{
|
|
1752
|
+
window.alert(`Added task "${taskItem.name}" to ${node.id}`);
|
|
1753
|
+
}
|
|
1687
1754
|
}
|
|
1688
1755
|
})), [
|
|
1689
|
-
nodesState
|
|
1690
|
-
handleTaskAddForNode
|
|
1756
|
+
nodesState
|
|
1691
1757
|
]);
|
|
1692
1758
|
const onConnect = useCallback((connection)=>setEdges((eds)=>addEdge(connection, eds)), [
|
|
1693
1759
|
setEdges
|
|
@@ -23,10 +23,7 @@ export interface StageNodeProps extends NodeProps {
|
|
|
23
23
|
dragging: boolean;
|
|
24
24
|
selected: boolean;
|
|
25
25
|
id: string;
|
|
26
|
-
pendingReplaceTask?:
|
|
27
|
-
groupIndex: number;
|
|
28
|
-
taskIndex: number;
|
|
29
|
-
};
|
|
26
|
+
pendingReplaceTask?: boolean;
|
|
30
27
|
stageDetails: {
|
|
31
28
|
label: string;
|
|
32
29
|
defaultContent?: string;
|
|
@@ -38,7 +35,7 @@ export interface StageNodeProps extends NodeProps {
|
|
|
38
35
|
isException?: boolean;
|
|
39
36
|
isReadOnly?: boolean;
|
|
40
37
|
tasks: StageTaskItem[][];
|
|
41
|
-
|
|
38
|
+
selectedTaskId?: string;
|
|
42
39
|
};
|
|
43
40
|
addTaskLabel?: string;
|
|
44
41
|
addTaskLoading?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StageNode.types.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/StageNode/StageNode.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAC;AAC1E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEjE,aAAK,mBAAmB;IACtB,SAAS,cAAc;IACvB,SAAS,cAAc;IACvB,aAAa,kBAAkB;IAC/B,MAAM,WAAW;IACjB,UAAU,eAAe;IACzB,WAAW,gBAAgB;IAC3B,MAAM,WAAW;IACjB,UAAU,eAAe;CAC1B;AAED,MAAM,MAAM,WAAW,GAAG,GAAG,mBAAmB,EAAE,CAAC;AACnD,MAAM,MAAM,eAAe,GAAG,GAAG,mBAAmB,EAAE,CAAC;AAEvD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC;CAC3B;AAED,MAAM,WAAW,cAAe,SAAQ,SAAS;IAC/C,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,kBAAkB,CAAC,EAAE
|
|
1
|
+
{"version":3,"file":"StageNode.types.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/StageNode/StageNode.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -71,6 +71,7 @@ function Toolbox({ onClose, onBack, onItemSelect, onSearch, onItemHover, title,
|
|
|
71
71
|
const [isTransitioning, setIsTransitioning] = (0, external_react_namespaceObject.useState)(false);
|
|
72
72
|
const [animationDirection, setAnimationDirection] = (0, external_react_namespaceObject.useState)('forward');
|
|
73
73
|
const navigationStack = (0, index_cjs_namespaceObject.useNavigationStack)();
|
|
74
|
+
const containerRef = (0, external_react_namespaceObject.useRef)(null);
|
|
74
75
|
const transitionTimeoutRef = (0, external_react_namespaceObject.useRef)(void 0);
|
|
75
76
|
const searchIdRef = (0, external_react_namespaceObject.useRef)(0);
|
|
76
77
|
const initialItemsRef = (0, external_react_namespaceObject.useRef)(initialItems);
|
|
@@ -214,8 +215,15 @@ function Toolbox({ onClose, onBack, onItemSelect, onSearch, onItemHover, title,
|
|
|
214
215
|
} else if (navigationStack.canGoBack) handleBackTransition();
|
|
215
216
|
else onClose();
|
|
216
217
|
};
|
|
218
|
+
const handleClickOutside = (e)=>{
|
|
219
|
+
if (containerRef.current && !containerRef.current.contains(e.target)) onClose();
|
|
220
|
+
};
|
|
217
221
|
document.addEventListener('keydown', handleKeyDown);
|
|
218
|
-
|
|
222
|
+
document.addEventListener('mousedown', handleClickOutside);
|
|
223
|
+
return ()=>{
|
|
224
|
+
document.removeEventListener('keydown', handleKeyDown);
|
|
225
|
+
document.removeEventListener('mousedown', handleClickOutside);
|
|
226
|
+
};
|
|
219
227
|
}, [
|
|
220
228
|
isSearching,
|
|
221
229
|
navigationStack.canGoBack,
|
|
@@ -224,39 +232,42 @@ function Toolbox({ onClose, onBack, onItemSelect, onSearch, onItemHover, title,
|
|
|
224
232
|
startTransition,
|
|
225
233
|
handleBackTransition
|
|
226
234
|
]);
|
|
227
|
-
return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
235
|
+
return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
|
|
236
|
+
ref: containerRef,
|
|
237
|
+
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(external_layouts_index_cjs_namespaceObject.Column, {
|
|
238
|
+
px: 20,
|
|
239
|
+
py: 12,
|
|
240
|
+
gap: 12,
|
|
241
|
+
w: 320,
|
|
242
|
+
h: 440,
|
|
243
|
+
children: [
|
|
244
|
+
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_Header_cjs_namespaceObject.Header, {
|
|
245
|
+
title: currentParentItem?.name || title,
|
|
246
|
+
onBack: handleBackTransition,
|
|
247
|
+
showBackButton: navigationStack.canGoBack
|
|
248
|
+
}),
|
|
249
|
+
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_SearchBox_cjs_namespaceObject.SearchBox, {
|
|
250
|
+
value: search,
|
|
251
|
+
onChange: handleSearch,
|
|
252
|
+
clear: clearSearch,
|
|
253
|
+
placeholder: "Search"
|
|
254
|
+
}),
|
|
255
|
+
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_Toolbox_styles_cjs_namespaceObject.AnimatedContainer, {
|
|
256
|
+
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_Toolbox_styles_cjs_namespaceObject.AnimatedContent, {
|
|
257
|
+
entering: isTransitioning,
|
|
258
|
+
direction: animationDirection,
|
|
259
|
+
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_ListView_cjs_namespaceObject.ListView, {
|
|
260
|
+
isLoading: childrenLoading || searchLoading || loading,
|
|
261
|
+
items: isSearching && !isSearchingInitialItems ? searchedItems : items,
|
|
262
|
+
emptyStateMessage: isSearching ? 'No matching nodes found' : 'No nodes found',
|
|
263
|
+
enableSections: !isSearching,
|
|
264
|
+
onItemClick: handleItemSelect,
|
|
265
|
+
onItemHover: onItemHover
|
|
266
|
+
})
|
|
256
267
|
})
|
|
257
268
|
})
|
|
258
|
-
|
|
259
|
-
|
|
269
|
+
]
|
|
270
|
+
})
|
|
260
271
|
});
|
|
261
272
|
}
|
|
262
273
|
exports.Toolbox = __webpack_exports__.Toolbox;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toolbox.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/Toolbox/Toolbox.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,QAAQ,EAAY,MAAM,YAAY,CAAC;AAuCrD,MAAM,MAAM,oBAAoB,CAAC,CAAC,GAAG,GAAG,IAAI,CAC1C,KAAK,EAAE,MAAM,EACb,gBAAgB,EAAE,OAAO,EACzB,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE;IAAE,YAAY,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,KAC5E,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAE5B,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,YAAY,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC1D,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAC1C,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;CACpC;AAoBD,wBAAgB,OAAO,CAAC,CAAC,EAAE,EACzB,OAAO,EACP,MAAM,EACN,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,KAAK,EACL,YAAY,EACZ,OAAO,GACR,EAAE,YAAY,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"Toolbox.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/Toolbox/Toolbox.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,QAAQ,EAAY,MAAM,YAAY,CAAC;AAuCrD,MAAM,MAAM,oBAAoB,CAAC,CAAC,GAAG,GAAG,IAAI,CAC1C,KAAK,EAAE,MAAM,EACb,gBAAgB,EAAE,OAAO,EACzB,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE;IAAE,YAAY,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,KAC5E,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAE5B,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,YAAY,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC1D,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAC1C,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;CACpC;AAoBD,wBAAgB,OAAO,CAAC,CAAC,EAAE,EACzB,OAAO,EACP,MAAM,EACN,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,KAAK,EACL,YAAY,EACZ,OAAO,GACR,EAAE,YAAY,CAAC,CAAC,CAAC,2CAoQjB"}
|
|
@@ -43,6 +43,7 @@ function Toolbox({ onClose, onBack, onItemSelect, onSearch, onItemHover, title,
|
|
|
43
43
|
const [isTransitioning, setIsTransitioning] = useState(false);
|
|
44
44
|
const [animationDirection, setAnimationDirection] = useState('forward');
|
|
45
45
|
const navigationStack = useNavigationStack();
|
|
46
|
+
const containerRef = useRef(null);
|
|
46
47
|
const transitionTimeoutRef = useRef(void 0);
|
|
47
48
|
const searchIdRef = useRef(0);
|
|
48
49
|
const initialItemsRef = useRef(initialItems);
|
|
@@ -186,8 +187,15 @@ function Toolbox({ onClose, onBack, onItemSelect, onSearch, onItemHover, title,
|
|
|
186
187
|
} else if (navigationStack.canGoBack) handleBackTransition();
|
|
187
188
|
else onClose();
|
|
188
189
|
};
|
|
190
|
+
const handleClickOutside = (e)=>{
|
|
191
|
+
if (containerRef.current && !containerRef.current.contains(e.target)) onClose();
|
|
192
|
+
};
|
|
189
193
|
document.addEventListener('keydown', handleKeyDown);
|
|
190
|
-
|
|
194
|
+
document.addEventListener('mousedown', handleClickOutside);
|
|
195
|
+
return ()=>{
|
|
196
|
+
document.removeEventListener('keydown', handleKeyDown);
|
|
197
|
+
document.removeEventListener('mousedown', handleClickOutside);
|
|
198
|
+
};
|
|
191
199
|
}, [
|
|
192
200
|
isSearching,
|
|
193
201
|
navigationStack.canGoBack,
|
|
@@ -196,39 +204,42 @@ function Toolbox({ onClose, onBack, onItemSelect, onSearch, onItemHover, title,
|
|
|
196
204
|
startTransition,
|
|
197
205
|
handleBackTransition
|
|
198
206
|
]);
|
|
199
|
-
return /*#__PURE__*/
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
207
|
+
return /*#__PURE__*/ jsx("div", {
|
|
208
|
+
ref: containerRef,
|
|
209
|
+
children: /*#__PURE__*/ jsxs(Column, {
|
|
210
|
+
px: 20,
|
|
211
|
+
py: 12,
|
|
212
|
+
gap: 12,
|
|
213
|
+
w: 320,
|
|
214
|
+
h: 440,
|
|
215
|
+
children: [
|
|
216
|
+
/*#__PURE__*/ jsx(Header, {
|
|
217
|
+
title: currentParentItem?.name || title,
|
|
218
|
+
onBack: handleBackTransition,
|
|
219
|
+
showBackButton: navigationStack.canGoBack
|
|
220
|
+
}),
|
|
221
|
+
/*#__PURE__*/ jsx(SearchBox, {
|
|
222
|
+
value: search,
|
|
223
|
+
onChange: handleSearch,
|
|
224
|
+
clear: clearSearch,
|
|
225
|
+
placeholder: "Search"
|
|
226
|
+
}),
|
|
227
|
+
/*#__PURE__*/ jsx(AnimatedContainer, {
|
|
228
|
+
children: /*#__PURE__*/ jsx(AnimatedContent, {
|
|
229
|
+
entering: isTransitioning,
|
|
230
|
+
direction: animationDirection,
|
|
231
|
+
children: /*#__PURE__*/ jsx(ListView, {
|
|
232
|
+
isLoading: childrenLoading || searchLoading || loading,
|
|
233
|
+
items: isSearching && !isSearchingInitialItems ? searchedItems : items,
|
|
234
|
+
emptyStateMessage: isSearching ? 'No matching nodes found' : 'No nodes found',
|
|
235
|
+
enableSections: !isSearching,
|
|
236
|
+
onItemClick: handleItemSelect,
|
|
237
|
+
onItemHover: onItemHover
|
|
238
|
+
})
|
|
228
239
|
})
|
|
229
240
|
})
|
|
230
|
-
|
|
231
|
-
|
|
241
|
+
]
|
|
242
|
+
})
|
|
232
243
|
});
|
|
233
244
|
}
|
|
234
245
|
export { Toolbox };
|