@uipath/apollo-react 6.22.3 → 6.23.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.
Files changed (42) hide show
  1. package/dist/canvas/components/StageNode/StageNode.styles.cjs +7 -0
  2. package/dist/canvas/components/StageNode/StageNode.styles.d.ts.map +1 -1
  3. package/dist/canvas/components/StageNode/StageNode.styles.js +7 -0
  4. package/dist/canvas/components/StageNode/StageNode.types.d.ts +0 -5
  5. package/dist/canvas/components/StageNode/StageNode.types.d.ts.map +1 -1
  6. package/dist/canvas/components/StageNode/hooks/useStageTaskDragHandler.cjs +28 -53
  7. package/dist/canvas/components/StageNode/hooks/useStageTaskDragHandler.d.ts +7 -10
  8. package/dist/canvas/components/StageNode/hooks/useStageTaskDragHandler.d.ts.map +1 -1
  9. package/dist/canvas/components/StageNode/hooks/useStageTaskDragHandler.js +29 -54
  10. package/dist/canvas/components/StageNode/hooks/useStageTasksByGroups.cjs +12 -39
  11. package/dist/canvas/components/StageNode/hooks/useStageTasksByGroups.d.ts +0 -15
  12. package/dist/canvas/components/StageNode/hooks/useStageTasksByGroups.d.ts.map +1 -1
  13. package/dist/canvas/components/StageNode/hooks/useStageTasksByGroups.js +12 -39
  14. package/dist/canvas/components/StageNode/tasks/DraggableTask.cjs +4 -47
  15. package/dist/canvas/components/StageNode/tasks/DraggableTask.d.ts +1 -1
  16. package/dist/canvas/components/StageNode/tasks/DraggableTask.d.ts.map +1 -1
  17. package/dist/canvas/components/StageNode/tasks/DraggableTask.js +6 -49
  18. package/dist/canvas/components/StageNode/tasks/DraggableTask.types.d.ts +0 -1
  19. package/dist/canvas/components/StageNode/tasks/DraggableTask.types.d.ts.map +1 -1
  20. package/dist/canvas/components/StageNode/tasks/SortableTaskRow.cjs +75 -0
  21. package/dist/canvas/components/StageNode/tasks/SortableTaskRow.d.ts +7 -0
  22. package/dist/canvas/components/StageNode/tasks/SortableTaskRow.d.ts.map +1 -0
  23. package/dist/canvas/components/StageNode/tasks/SortableTaskRow.js +41 -0
  24. package/dist/canvas/components/StageNode/tasks/StageNodeAdhocTaskGroups.cjs +77 -25
  25. package/dist/canvas/components/StageNode/tasks/StageNodeAdhocTaskGroups.d.ts +6 -3
  26. package/dist/canvas/components/StageNode/tasks/StageNodeAdhocTaskGroups.d.ts.map +1 -1
  27. package/dist/canvas/components/StageNode/tasks/StageNodeAdhocTaskGroups.js +78 -26
  28. package/dist/canvas/components/StageNode/tasks/StageNodeAllTaskGroups.cjs +29 -4
  29. package/dist/canvas/components/StageNode/tasks/StageNodeAllTaskGroups.d.ts.map +1 -1
  30. package/dist/canvas/components/StageNode/tasks/StageNodeAllTaskGroups.js +29 -4
  31. package/dist/canvas/components/StageNode/tasks/StageNodeEventDrivenTaskGroups.cjs +76 -24
  32. package/dist/canvas/components/StageNode/tasks/StageNodeEventDrivenTaskGroups.d.ts +6 -3
  33. package/dist/canvas/components/StageNode/tasks/StageNodeEventDrivenTaskGroups.d.ts.map +1 -1
  34. package/dist/canvas/components/StageNode/tasks/StageNodeEventDrivenTaskGroups.js +77 -25
  35. package/dist/canvas/components/StageNode/tasks/StageNodeSequentialTaskGroups.cjs +53 -54
  36. package/dist/canvas/components/StageNode/tasks/StageNodeSequentialTaskGroups.d.ts +2 -3
  37. package/dist/canvas/components/StageNode/tasks/StageNodeSequentialTaskGroups.d.ts.map +1 -1
  38. package/dist/canvas/components/StageNode/tasks/StageNodeSequentialTaskGroups.js +53 -54
  39. package/dist/canvas/components/StageNode/tasks/TaskContent.cjs +1 -0
  40. package/dist/canvas/components/StageNode/tasks/TaskContent.d.ts.map +1 -1
  41. package/dist/canvas/components/StageNode/tasks/TaskContent.js +1 -0
  42. package/package.json +1 -1
@@ -15,7 +15,7 @@ const StageNodeAllTaskGroupsInner = ({ props, isReadOnly, taskWidthStyle, taskSt
15
15
  const allTasks = useMemo(()=>stageDetails?.tasks || [], [
16
16
  stageDetails?.tasks
17
17
  ]);
18
- const { sequentialTaskGroups, sequentialTasks, adhocTaskGroups, adhocTasks, eventDrivenTaskGroups, eventDrivenTasks } = useStageTasksByGroups(allTasks);
18
+ const { sequentialTaskGroups, adhocTaskGroups, eventDrivenTaskGroups } = useStageTasksByGroups(allTasks);
19
19
  const selectedTaskId = stageDetails?.selectedTaskId;
20
20
  const defaultContent = stageDetails?.defaultContent || (isReadOnly ? labels.noTasks : labels.addFirstTask);
21
21
  const handleReorderSequentialTasks = useCallback((newTasks)=>{
@@ -30,6 +30,28 @@ const StageNodeAllTaskGroupsInner = ({ props, isReadOnly, taskWidthStyle, taskSt
30
30
  eventDrivenTaskGroups,
31
31
  adhocTaskGroups
32
32
  ]);
33
+ const handleReorderEventDrivenTasks = useCallback((newTasks)=>{
34
+ onTaskReorder?.([
35
+ ...sequentialTaskGroups,
36
+ ...newTasks,
37
+ ...adhocTaskGroups
38
+ ]);
39
+ }, [
40
+ onTaskReorder,
41
+ sequentialTaskGroups,
42
+ adhocTaskGroups
43
+ ]);
44
+ const handleReorderAdhocTasks = useCallback((newTasks)=>{
45
+ onTaskReorder?.([
46
+ ...sequentialTaskGroups,
47
+ ...eventDrivenTaskGroups,
48
+ ...newTasks
49
+ ]);
50
+ }, [
51
+ onTaskReorder,
52
+ sequentialTaskGroups,
53
+ eventDrivenTaskGroups
54
+ ]);
33
55
  const handleTaskClick = useCallback((e, taskElementId)=>{
34
56
  e.stopPropagation();
35
57
  onTaskClick?.(taskElementId);
@@ -104,7 +126,6 @@ const StageNodeAllTaskGroupsInner = ({ props, isReadOnly, taskWidthStyle, taskSt
104
126
  /*#__PURE__*/ jsx(StageNodeSequentialTaskGroups, {
105
127
  props: props,
106
128
  sequentialTaskGroups: sequentialTaskGroups,
107
- sequentialTasks: sequentialTasks,
108
129
  isReadOnly: isReadOnly,
109
130
  selectedTaskId: selectedTaskId,
110
131
  taskWidthStyle: taskWidthStyle,
@@ -115,19 +136,23 @@ const StageNodeAllTaskGroupsInner = ({ props, isReadOnly, taskWidthStyle, taskSt
115
136
  }),
116
137
  /*#__PURE__*/ jsx(StageNodeEventDrivenTaskGroups, {
117
138
  props: props,
118
- eventDrivenTasks: eventDrivenTasks,
139
+ eventDrivenTaskGroups: eventDrivenTaskGroups,
119
140
  isReadOnly: isReadOnly,
120
141
  selectedTaskId: selectedTaskId,
142
+ taskWidthStyle: taskWidthStyle,
121
143
  handleTaskClick: handleTaskClick,
144
+ handleReorderEventDrivenTasks: handleReorderEventDrivenTasks,
122
145
  generateReplaceTaskMenuItemForTask: generateReplaceTaskMenuItemForTask,
123
146
  generateDeleteTaskMenuItemForTask: generateDeleteTaskMenuItemForTask
124
147
  }),
125
148
  /*#__PURE__*/ jsx(StageNodeAdhocTaskGroups, {
126
149
  props: props,
127
- adhocTasks: adhocTasks,
150
+ adhocTaskGroups: adhocTaskGroups,
128
151
  isReadOnly: isReadOnly,
129
152
  selectedTaskId: selectedTaskId,
153
+ taskWidthStyle: taskWidthStyle,
130
154
  handleTaskClick: handleTaskClick,
155
+ handleReorderAdhocTasks: handleReorderAdhocTasks,
131
156
  generateReplaceTaskMenuItemForTask: generateReplaceTaskMenuItemForTask,
132
157
  generateDeleteTaskMenuItemForTask: generateDeleteTaskMenuItemForTask
133
158
  })
@@ -27,15 +27,40 @@ __webpack_require__.d(__webpack_exports__, {
27
27
  StageNodeEventDrivenTaskGroups: ()=>StageNodeEventDrivenTaskGroups
28
28
  });
29
29
  const jsx_runtime_namespaceObject = require("react/jsx-runtime");
30
+ const core_namespaceObject = require("@dnd-kit/core");
31
+ const sortable_namespaceObject = require("@dnd-kit/sortable");
30
32
  const external_react_namespaceObject = require("react");
33
+ const useStageTaskDragHandler_cjs_namespaceObject = require("../hooks/useStageTaskDragHandler.cjs");
31
34
  const external_StageNode_styles_cjs_namespaceObject = require("../StageNode.styles.cjs");
32
35
  const StageItemsHeaderTitle_cjs_namespaceObject = require("../shared/StageItemsHeaderTitle.cjs");
33
36
  const external_useStageNodeLabels_cjs_namespaceObject = require("../useStageNodeLabels.cjs");
34
37
  const external_EventDrivenTask_cjs_namespaceObject = require("./EventDrivenTask.cjs");
35
- const StageNodeEventDrivenTaskGroupsInner = ({ props, eventDrivenTasks, isReadOnly, selectedTaskId, handleTaskClick, generateReplaceTaskMenuItemForTask, generateDeleteTaskMenuItemForTask })=>{
36
- const { id, execution, onTaskGroupModification, onReplaceTaskFromToolbox, loadingTaskIds, onTaskBreakpointToggle, getTaskContextMenuItems } = props;
38
+ const external_SortableTaskRow_cjs_namespaceObject = require("./SortableTaskRow.cjs");
39
+ const external_StageNodeTaskUtilities_cjs_namespaceObject = require("./StageNodeTaskUtilities.cjs");
40
+ const external_StageTaskDragOverlay_cjs_namespaceObject = require("./StageTaskDragOverlay.cjs");
41
+ const StageNodeEventDrivenTaskGroupsInner = ({ props, eventDrivenTaskGroups, isReadOnly, selectedTaskId, taskWidthStyle, handleTaskClick, handleReorderEventDrivenTasks, generateReplaceTaskMenuItemForTask, generateDeleteTaskMenuItemForTask })=>{
42
+ const { id, execution, onTaskGroupModification, onReplaceTaskFromToolbox, onTaskReorder, loadingTaskIds, onTaskBreakpointToggle, getTaskContextMenuItems } = props;
37
43
  const hasBuiltInTaskActions = !!(onReplaceTaskFromToolbox || onTaskGroupModification);
38
44
  const labels = (0, external_useStageNodeLabels_cjs_namespaceObject.useStageNodeLabels)();
45
+ const isDragDisabled = !onTaskReorder || isReadOnly;
46
+ const rows = (0, external_react_namespaceObject.useMemo)(()=>eventDrivenTaskGroups.flat(), [
47
+ eventDrivenTaskGroups
48
+ ]);
49
+ const rowIds = (0, external_react_namespaceObject.useMemo)(()=>rows.map((task)=>task.id), [
50
+ rows
51
+ ]);
52
+ const { activeTask, handleDragStart, handleDragEnd, handleDragCancel } = (0, useStageTaskDragHandler_cjs_namespaceObject.useStageTaskDragHandler)({
53
+ taskGroups: eventDrivenTaskGroups,
54
+ onTaskReorder: handleReorderEventDrivenTasks,
55
+ allowRegrouping: false
56
+ });
57
+ const sensors = (0, core_namespaceObject.useSensors)((0, core_namespaceObject.useSensor)(core_namespaceObject.PointerSensor, {
58
+ activationConstraint: {
59
+ distance: 3
60
+ }
61
+ }), (0, core_namespaceObject.useSensor)(core_namespaceObject.KeyboardSensor, {
62
+ coordinateGetter: sortable_namespaceObject.sortableKeyboardCoordinates
63
+ }));
39
64
  const getEventDrivenContextMenuItems = (0, external_react_namespaceObject.useCallback)((task)=>{
40
65
  const items = [];
41
66
  const replaceTaskMenuItem = generateReplaceTaskMenuItemForTask(task.id, false);
@@ -47,40 +72,67 @@ const StageNodeEventDrivenTaskGroupsInner = ({ props, eventDrivenTasks, isReadOn
47
72
  }) ?? [];
48
73
  items.push(...additionalMenuItems);
49
74
  const deleteTaskMenuItem = generateDeleteTaskMenuItemForTask(task.id);
50
- if (deleteTaskMenuItem) items.push(deleteTaskMenuItem);
75
+ if (deleteTaskMenuItem) {
76
+ if (items.length) items.push((0, external_StageNodeTaskUtilities_cjs_namespaceObject.getDivider)());
77
+ items.push(deleteTaskMenuItem);
78
+ }
51
79
  return items;
52
80
  }, [
53
81
  generateReplaceTaskMenuItemForTask,
54
82
  getTaskContextMenuItems,
55
83
  generateDeleteTaskMenuItemForTask
56
84
  ]);
57
- if (0 === eventDrivenTasks.length) return null;
85
+ const taskList = /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_StageNode_styles_cjs_namespaceObject.StageItemsList, {
86
+ "data-testid": `event-driven-tasks-list-${id}`,
87
+ className: isDragDisabled ? void 0 : 'nodrag nopan',
88
+ children: rows.map((task)=>{
89
+ const taskExecution = execution?.taskStatus?.[task.id];
90
+ const hasMenu = !isReadOnly && hasBuiltInTaskActions || (getTaskContextMenuItems?.({
91
+ task,
92
+ taskGroupType: 'event-driven',
93
+ isParallel: false
94
+ })?.length ?? 0) > 0;
95
+ const row = /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_EventDrivenTask_cjs_namespaceObject.EventDrivenTaskItem, {
96
+ task: task,
97
+ taskExecution: taskExecution,
98
+ isSelected: selectedTaskId === task.id,
99
+ onTaskClick: handleTaskClick,
100
+ isTaskLoading: loadingTaskIds?.has(task.id),
101
+ isReadOnly: isReadOnly,
102
+ onToggleBreakpoint: isReadOnly ? onTaskBreakpointToggle : void 0,
103
+ getContextMenuItems: hasMenu ? getEventDrivenContextMenuItems : void 0
104
+ }, task.id);
105
+ return isDragDisabled ? row : /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_SortableTaskRow_cjs_namespaceObject.SortableTaskRow, {
106
+ taskId: task.id,
107
+ children: row
108
+ }, task.id);
109
+ })
110
+ });
111
+ if (0 === rows.length) return null;
58
112
  return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(external_StageNode_styles_cjs_namespaceObject.StageItemsSection, {
59
113
  children: [
60
114
  /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(StageItemsHeaderTitle_cjs_namespaceObject.StageItemsHeaderTitle, {
61
115
  title: labels.eventDrivenTasks,
62
116
  testId: `event-driven-tasks-header-${id}`
63
117
  }),
64
- /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_StageNode_styles_cjs_namespaceObject.StageItemsList, {
65
- "data-testid": `event-driven-tasks-list-${id}`,
66
- children: eventDrivenTasks.map(({ task })=>{
67
- const taskExecution = execution?.taskStatus?.[task.id];
68
- const hasMenu = !isReadOnly && hasBuiltInTaskActions || (getTaskContextMenuItems?.({
69
- task,
70
- taskGroupType: 'event-driven',
71
- isParallel: false
72
- })?.length ?? 0) > 0;
73
- return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_EventDrivenTask_cjs_namespaceObject.EventDrivenTaskItem, {
74
- task: task,
75
- taskExecution: taskExecution,
76
- isSelected: selectedTaskId === task.id,
77
- onTaskClick: handleTaskClick,
78
- isTaskLoading: loadingTaskIds?.has(task.id),
79
- isReadOnly: isReadOnly,
80
- onToggleBreakpoint: isReadOnly ? onTaskBreakpointToggle : void 0,
81
- getContextMenuItems: hasMenu ? getEventDrivenContextMenuItems : void 0
82
- }, task.id);
83
- })
118
+ isDragDisabled ? taskList : /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(core_namespaceObject.DndContext, {
119
+ collisionDetection: core_namespaceObject.closestCenter,
120
+ sensors: sensors,
121
+ onDragStart: handleDragStart,
122
+ onDragEnd: handleDragEnd,
123
+ onDragCancel: handleDragCancel,
124
+ children: [
125
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(sortable_namespaceObject.SortableContext, {
126
+ items: rowIds,
127
+ strategy: sortable_namespaceObject.verticalListSortingStrategy,
128
+ children: taskList
129
+ }),
130
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_StageTaskDragOverlay_cjs_namespaceObject.StageTaskDragOverlay, {
131
+ activeTask: activeTask,
132
+ isActiveTaskParallel: false,
133
+ taskWidthStyle: taskWidthStyle
134
+ })
135
+ ]
84
136
  })
85
137
  ]
86
138
  });
@@ -1,11 +1,14 @@
1
+ import { type CSSProperties } from 'react';
1
2
  import type { NodeMenuItem } from '../../NodeContextMenu';
2
- import type { StageNodeProps, StageTaskGroup } from '../StageNode.types';
3
- export declare const StageNodeEventDrivenTaskGroups: import("react").MemoExoticComponent<({ props, eventDrivenTasks, isReadOnly, selectedTaskId, handleTaskClick, generateReplaceTaskMenuItemForTask, generateDeleteTaskMenuItemForTask, }: {
3
+ import type { StageNodeProps, StageTaskItem } from '../StageNode.types';
4
+ export declare const StageNodeEventDrivenTaskGroups: import("react").MemoExoticComponent<({ props, eventDrivenTaskGroups, isReadOnly, selectedTaskId, taskWidthStyle, handleTaskClick, handleReorderEventDrivenTasks, generateReplaceTaskMenuItemForTask, generateDeleteTaskMenuItemForTask, }: {
4
5
  props: StageNodeProps;
5
- eventDrivenTasks: StageTaskGroup[];
6
+ eventDrivenTaskGroups: StageTaskItem[][];
6
7
  isReadOnly: boolean;
7
8
  selectedTaskId?: string;
9
+ taskWidthStyle?: CSSProperties;
8
10
  handleTaskClick: (e: React.MouseEvent, taskElementId: string) => void;
11
+ handleReorderEventDrivenTasks: (newTasks: StageTaskItem[][]) => void;
9
12
  generateReplaceTaskMenuItemForTask: (taskId: string, isParallel: boolean) => NodeMenuItem | undefined;
10
13
  generateDeleteTaskMenuItemForTask: (taskId: string) => NodeMenuItem | undefined;
11
14
  }) => import("react/jsx-runtime").JSX.Element | null>;
@@ -1 +1 @@
1
- {"version":3,"file":"StageNodeEventDrivenTaskGroups.d.ts","sourceRoot":"","sources":["../../../../../src/canvas/components/StageNode/tasks/StageNodeEventDrivenTaskGroups.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAiB,MAAM,oBAAoB,CAAC;AAqGxF,eAAO,MAAM,8BAA8B,yLAxFxC;IACD,KAAK,EAAE,cAAc,CAAC;IACtB,gBAAgB,EAAE,cAAc,EAAE,CAAC;IACnC,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE,aAAa,EAAE,MAAM,KAAK,IAAI,CAAC;IACtE,kCAAkC,EAAE,CAClC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,OAAO,KAChB,YAAY,GAAG,SAAS,CAAC;IAC9B,iCAAiC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,YAAY,GAAG,SAAS,CAAC;CACjF,oDA6EsF,CAAC"}
1
+ {"version":3,"file":"StageNodeEventDrivenTaskGroups.d.ts","sourceRoot":"","sources":["../../../../../src/canvas/components/StageNode/tasks/StageNodeEventDrivenTaskGroups.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,KAAK,aAAa,EAA8B,MAAM,OAAO,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAG1D,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAwKxE,eAAO,MAAM,8BAA8B,6OAtJxC;IACD,KAAK,EAAE,cAAc,CAAC;IACtB,qBAAqB,EAAE,aAAa,EAAE,EAAE,CAAC;IACzC,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,eAAe,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE,aAAa,EAAE,MAAM,KAAK,IAAI,CAAC;IACtE,6BAA6B,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,KAAK,IAAI,CAAC;IACrE,kCAAkC,EAAE,CAClC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,OAAO,KAChB,YAAY,GAAG,SAAS,CAAC;IAC9B,iCAAiC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,YAAY,GAAG,SAAS,CAAC;CACjF,oDAyIsF,CAAC"}
@@ -1,13 +1,38 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
- import { memo, useCallback } from "react";
2
+ import { DndContext, KeyboardSensor, PointerSensor, closestCenter, useSensor, useSensors } from "@dnd-kit/core";
3
+ import { SortableContext, sortableKeyboardCoordinates, verticalListSortingStrategy } from "@dnd-kit/sortable";
4
+ import { memo, useCallback, useMemo } from "react";
5
+ import { useStageTaskDragHandler } from "../hooks/useStageTaskDragHandler.js";
3
6
  import { StageItemsList, StageItemsSection } from "../StageNode.styles.js";
4
7
  import { StageItemsHeaderTitle } from "../shared/StageItemsHeaderTitle.js";
5
8
  import { useStageNodeLabels } from "../useStageNodeLabels.js";
6
9
  import { EventDrivenTaskItem } from "./EventDrivenTask.js";
7
- const StageNodeEventDrivenTaskGroupsInner = ({ props, eventDrivenTasks, isReadOnly, selectedTaskId, handleTaskClick, generateReplaceTaskMenuItemForTask, generateDeleteTaskMenuItemForTask })=>{
8
- const { id, execution, onTaskGroupModification, onReplaceTaskFromToolbox, loadingTaskIds, onTaskBreakpointToggle, getTaskContextMenuItems } = props;
10
+ import { SortableTaskRow } from "./SortableTaskRow.js";
11
+ import { getDivider } from "./StageNodeTaskUtilities.js";
12
+ import { StageTaskDragOverlay } from "./StageTaskDragOverlay.js";
13
+ const StageNodeEventDrivenTaskGroupsInner = ({ props, eventDrivenTaskGroups, isReadOnly, selectedTaskId, taskWidthStyle, handleTaskClick, handleReorderEventDrivenTasks, generateReplaceTaskMenuItemForTask, generateDeleteTaskMenuItemForTask })=>{
14
+ const { id, execution, onTaskGroupModification, onReplaceTaskFromToolbox, onTaskReorder, loadingTaskIds, onTaskBreakpointToggle, getTaskContextMenuItems } = props;
9
15
  const hasBuiltInTaskActions = !!(onReplaceTaskFromToolbox || onTaskGroupModification);
10
16
  const labels = useStageNodeLabels();
17
+ const isDragDisabled = !onTaskReorder || isReadOnly;
18
+ const rows = useMemo(()=>eventDrivenTaskGroups.flat(), [
19
+ eventDrivenTaskGroups
20
+ ]);
21
+ const rowIds = useMemo(()=>rows.map((task)=>task.id), [
22
+ rows
23
+ ]);
24
+ const { activeTask, handleDragStart, handleDragEnd, handleDragCancel } = useStageTaskDragHandler({
25
+ taskGroups: eventDrivenTaskGroups,
26
+ onTaskReorder: handleReorderEventDrivenTasks,
27
+ allowRegrouping: false
28
+ });
29
+ const sensors = useSensors(useSensor(PointerSensor, {
30
+ activationConstraint: {
31
+ distance: 3
32
+ }
33
+ }), useSensor(KeyboardSensor, {
34
+ coordinateGetter: sortableKeyboardCoordinates
35
+ }));
11
36
  const getEventDrivenContextMenuItems = useCallback((task)=>{
12
37
  const items = [];
13
38
  const replaceTaskMenuItem = generateReplaceTaskMenuItemForTask(task.id, false);
@@ -19,40 +44,67 @@ const StageNodeEventDrivenTaskGroupsInner = ({ props, eventDrivenTasks, isReadOn
19
44
  }) ?? [];
20
45
  items.push(...additionalMenuItems);
21
46
  const deleteTaskMenuItem = generateDeleteTaskMenuItemForTask(task.id);
22
- if (deleteTaskMenuItem) items.push(deleteTaskMenuItem);
47
+ if (deleteTaskMenuItem) {
48
+ if (items.length) items.push(getDivider());
49
+ items.push(deleteTaskMenuItem);
50
+ }
23
51
  return items;
24
52
  }, [
25
53
  generateReplaceTaskMenuItemForTask,
26
54
  getTaskContextMenuItems,
27
55
  generateDeleteTaskMenuItemForTask
28
56
  ]);
29
- if (0 === eventDrivenTasks.length) return null;
57
+ const taskList = /*#__PURE__*/ jsx(StageItemsList, {
58
+ "data-testid": `event-driven-tasks-list-${id}`,
59
+ className: isDragDisabled ? void 0 : 'nodrag nopan',
60
+ children: rows.map((task)=>{
61
+ const taskExecution = execution?.taskStatus?.[task.id];
62
+ const hasMenu = !isReadOnly && hasBuiltInTaskActions || (getTaskContextMenuItems?.({
63
+ task,
64
+ taskGroupType: 'event-driven',
65
+ isParallel: false
66
+ })?.length ?? 0) > 0;
67
+ const row = /*#__PURE__*/ jsx(EventDrivenTaskItem, {
68
+ task: task,
69
+ taskExecution: taskExecution,
70
+ isSelected: selectedTaskId === task.id,
71
+ onTaskClick: handleTaskClick,
72
+ isTaskLoading: loadingTaskIds?.has(task.id),
73
+ isReadOnly: isReadOnly,
74
+ onToggleBreakpoint: isReadOnly ? onTaskBreakpointToggle : void 0,
75
+ getContextMenuItems: hasMenu ? getEventDrivenContextMenuItems : void 0
76
+ }, task.id);
77
+ return isDragDisabled ? row : /*#__PURE__*/ jsx(SortableTaskRow, {
78
+ taskId: task.id,
79
+ children: row
80
+ }, task.id);
81
+ })
82
+ });
83
+ if (0 === rows.length) return null;
30
84
  return /*#__PURE__*/ jsxs(StageItemsSection, {
31
85
  children: [
32
86
  /*#__PURE__*/ jsx(StageItemsHeaderTitle, {
33
87
  title: labels.eventDrivenTasks,
34
88
  testId: `event-driven-tasks-header-${id}`
35
89
  }),
36
- /*#__PURE__*/ jsx(StageItemsList, {
37
- "data-testid": `event-driven-tasks-list-${id}`,
38
- children: eventDrivenTasks.map(({ task })=>{
39
- const taskExecution = execution?.taskStatus?.[task.id];
40
- const hasMenu = !isReadOnly && hasBuiltInTaskActions || (getTaskContextMenuItems?.({
41
- task,
42
- taskGroupType: 'event-driven',
43
- isParallel: false
44
- })?.length ?? 0) > 0;
45
- return /*#__PURE__*/ jsx(EventDrivenTaskItem, {
46
- task: task,
47
- taskExecution: taskExecution,
48
- isSelected: selectedTaskId === task.id,
49
- onTaskClick: handleTaskClick,
50
- isTaskLoading: loadingTaskIds?.has(task.id),
51
- isReadOnly: isReadOnly,
52
- onToggleBreakpoint: isReadOnly ? onTaskBreakpointToggle : void 0,
53
- getContextMenuItems: hasMenu ? getEventDrivenContextMenuItems : void 0
54
- }, task.id);
55
- })
90
+ isDragDisabled ? taskList : /*#__PURE__*/ jsxs(DndContext, {
91
+ collisionDetection: closestCenter,
92
+ sensors: sensors,
93
+ onDragStart: handleDragStart,
94
+ onDragEnd: handleDragEnd,
95
+ onDragCancel: handleDragCancel,
96
+ children: [
97
+ /*#__PURE__*/ jsx(SortableContext, {
98
+ items: rowIds,
99
+ strategy: verticalListSortingStrategy,
100
+ children: taskList
101
+ }),
102
+ /*#__PURE__*/ jsx(StageTaskDragOverlay, {
103
+ activeTask: activeTask,
104
+ isActiveTaskParallel: false,
105
+ taskWidthStyle: taskWidthStyle
106
+ })
107
+ ]
56
108
  })
57
109
  ]
58
110
  });
@@ -40,16 +40,16 @@ const external_useStageNodeLabels_cjs_namespaceObject = require("../useStageNode
40
40
  const external_DraggableTask_cjs_namespaceObject = require("./DraggableTask.cjs");
41
41
  const external_StageNodeTaskUtilities_cjs_namespaceObject = require("./StageNodeTaskUtilities.cjs");
42
42
  const external_StageTaskDragOverlay_cjs_namespaceObject = require("./StageTaskDragOverlay.cjs");
43
- const StageNodeSequentialTaskGroups = ({ props, sequentialTaskGroups, sequentialTasks, allTasks, isReadOnly, selectedTaskId, taskWidthStyle, handleTaskClick, handleReorderSequentialTasks, generateReplaceTaskMenuItemForTask })=>{
43
+ const StageNodeSequentialTaskGroups = ({ props, sequentialTaskGroups, allTasks, isReadOnly, selectedTaskId, taskWidthStyle, handleTaskClick, handleReorderSequentialTasks, generateReplaceTaskMenuItemForTask })=>{
44
44
  const { id, execution, onTaskGroupModification, onReplaceTaskFromToolbox, onTaskReorder, hideParallelOptions, loadingTaskIds, onTaskBreakpointToggle, getTaskContextMenuItems } = props;
45
45
  const hasBuiltInTaskActions = !!(onReplaceTaskFromToolbox || onTaskGroupModification);
46
+ const isDragDisabled = !onTaskReorder || isReadOnly;
46
47
  const labels = (0, external_useStageNodeLabels_cjs_namespaceObject.useStageNodeLabels)();
47
- const sequentialTaskIds = (0, external_react_namespaceObject.useMemo)(()=>sequentialTasks.map(({ task })=>task.id), [
48
- sequentialTasks
48
+ const sequentialTaskIds = (0, external_react_namespaceObject.useMemo)(()=>sequentialTaskGroups.flat().map((task)=>task.id), [
49
+ sequentialTaskGroups
49
50
  ]);
50
- const { activeDragId, activeSequentialTask, isActiveTaskParallel, projected, handleDragStart, handleDragMove, handleDragOver, handleDragEnd, handleDragCancel } = (0, useStageTaskDragHandler_cjs_namespaceObject.useStageTaskDragHandler)({
51
- sequentialTaskGroups,
52
- sequentialTasks,
51
+ const { activeTask, isActiveTaskParallel, handleDragStart, handleDragMove, handleDragEnd, handleDragCancel } = (0, useStageTaskDragHandler_cjs_namespaceObject.useStageTaskDragHandler)({
52
+ taskGroups: sequentialTaskGroups,
53
53
  onTaskReorder: handleReorderSequentialTasks
54
54
  });
55
55
  const handleTaskRegroup = (0, external_react_namespaceObject.useCallback)((groupModificationType, groupIndex, taskIndex)=>{
@@ -124,6 +124,50 @@ const StageNodeSequentialTaskGroups = ({ props, sequentialTaskGroups, sequential
124
124
  }), (0, core_namespaceObject.useSensor)(core_namespaceObject.KeyboardSensor, {
125
125
  coordinateGetter: sortable_namespaceObject.sortableKeyboardCoordinates
126
126
  }));
127
+ const taskList = /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_StageNode_styles_cjs_namespaceObject.StageItemsList, {
128
+ "data-testid": `sequential-tasks-list-${id}`,
129
+ className: "nodrag nopan",
130
+ children: sequentialTaskGroups.map((taskGroup, groupIndex)=>{
131
+ const isParallel = taskGroup.length > 1;
132
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(index_cjs_namespaceObject.Row, {
133
+ gap: apollo_core_namespaceObject.Spacing.SpacingS,
134
+ children: [
135
+ isParallel && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_StageNode_styles_cjs_namespaceObject.StageParallelBracket, {}),
136
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(external_StageNode_styles_cjs_namespaceObject.StageTaskGroupContainer, {
137
+ isParallel: isParallel,
138
+ children: [
139
+ isParallel && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_StageNode_styles_cjs_namespaceObject.StageParallelLabel, {
140
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
141
+ className: "text-xs",
142
+ children: labels.parallel
143
+ })
144
+ }),
145
+ taskGroup.map((task)=>{
146
+ const taskExecution = execution?.taskStatus?.[task.id];
147
+ const hasMenu = !isReadOnly && hasBuiltInTaskActions || (getTaskContextMenuItems?.({
148
+ task,
149
+ taskGroupType: 'sequential',
150
+ isParallel
151
+ })?.length ?? 0) > 0;
152
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_DraggableTask_cjs_namespaceObject.DraggableTask, {
153
+ task: task,
154
+ taskExecution: taskExecution,
155
+ isSelected: selectedTaskId === task.id,
156
+ isParallel: isParallel,
157
+ onTaskClick: handleTaskClick,
158
+ isDragDisabled: isDragDisabled,
159
+ isTaskLoading: loadingTaskIds?.has(task.id),
160
+ isReadOnly: isReadOnly,
161
+ onToggleBreakpoint: isReadOnly ? onTaskBreakpointToggle : void 0,
162
+ getContextMenuItems: hasMenu ? buildContextMenuItems : void 0
163
+ }, task.id);
164
+ })
165
+ ]
166
+ })
167
+ ]
168
+ }, `group-${groupIndex}`);
169
+ })
170
+ });
127
171
  if (0 === sequentialTaskGroups.length) return null;
128
172
  return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(external_StageNode_styles_cjs_namespaceObject.StageItemsSection, {
129
173
  children: [
@@ -131,66 +175,21 @@ const StageNodeSequentialTaskGroups = ({ props, sequentialTaskGroups, sequential
131
175
  title: labels.sequentialTasks,
132
176
  testId: `sequential-tasks-header-${id}`
133
177
  }),
134
- /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(core_namespaceObject.DndContext, {
178
+ isDragDisabled ? taskList : /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(core_namespaceObject.DndContext, {
135
179
  collisionDetection: core_namespaceObject.closestCenter,
136
180
  sensors: sensors,
137
181
  onDragStart: handleDragStart,
138
182
  onDragMove: handleDragMove,
139
- onDragOver: handleDragOver,
140
183
  onDragEnd: handleDragEnd,
141
184
  onDragCancel: handleDragCancel,
142
185
  children: [
143
186
  /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(sortable_namespaceObject.SortableContext, {
144
187
  items: sequentialTaskIds,
145
188
  strategy: sortable_namespaceObject.verticalListSortingStrategy,
146
- children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_StageNode_styles_cjs_namespaceObject.StageItemsList, {
147
- "data-testid": `sequential-tasks-list-${id}`,
148
- className: "nodrag nopan",
149
- children: sequentialTaskGroups.map((taskGroup, groupIndex)=>{
150
- const isParallel = taskGroup.length > 1;
151
- return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(index_cjs_namespaceObject.Row, {
152
- gap: apollo_core_namespaceObject.Spacing.SpacingS,
153
- children: [
154
- isParallel && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_StageNode_styles_cjs_namespaceObject.StageParallelBracket, {}),
155
- /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(external_StageNode_styles_cjs_namespaceObject.StageTaskGroupContainer, {
156
- isParallel: isParallel,
157
- children: [
158
- isParallel && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_StageNode_styles_cjs_namespaceObject.StageParallelLabel, {
159
- children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
160
- className: "text-xs",
161
- children: labels.parallel
162
- })
163
- }),
164
- taskGroup.map((task)=>{
165
- const taskExecution = execution?.taskStatus?.[task.id];
166
- const hasMenu = !isReadOnly && hasBuiltInTaskActions || (getTaskContextMenuItems?.({
167
- task,
168
- taskGroupType: 'sequential',
169
- isParallel
170
- })?.length ?? 0) > 0;
171
- return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_DraggableTask_cjs_namespaceObject.DraggableTask, {
172
- task: task,
173
- taskExecution: taskExecution,
174
- isSelected: selectedTaskId === task.id,
175
- isParallel: isParallel,
176
- onTaskClick: handleTaskClick,
177
- projectedDepth: task.id === activeDragId && projected ? projected.depth : void 0,
178
- isDragDisabled: !onTaskReorder || isReadOnly,
179
- isTaskLoading: loadingTaskIds?.has(task.id),
180
- isReadOnly: isReadOnly,
181
- onToggleBreakpoint: isReadOnly ? onTaskBreakpointToggle : void 0,
182
- getContextMenuItems: hasMenu ? buildContextMenuItems : void 0
183
- }, task.id);
184
- })
185
- ]
186
- })
187
- ]
188
- }, `group-${groupIndex}`);
189
- })
190
- })
189
+ children: taskList
191
190
  }),
192
191
  /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_StageTaskDragOverlay_cjs_namespaceObject.StageTaskDragOverlay, {
193
- activeTask: activeSequentialTask?.task,
192
+ activeTask: activeTask,
194
193
  isActiveTaskParallel: isActiveTaskParallel,
195
194
  taskWidthStyle: taskWidthStyle
196
195
  })
@@ -1,10 +1,9 @@
1
1
  import { type CSSProperties } from 'react';
2
2
  import type { NodeMenuItem } from '../../NodeContextMenu';
3
- import type { StageNodeProps, StageTaskGroup, StageTaskItem } from '../StageNode.types';
4
- export declare const StageNodeSequentialTaskGroups: ({ props, sequentialTaskGroups, sequentialTasks, allTasks, isReadOnly, selectedTaskId, taskWidthStyle, handleTaskClick, handleReorderSequentialTasks, generateReplaceTaskMenuItemForTask, }: {
3
+ import type { StageNodeProps, StageTaskItem } from '../StageNode.types';
4
+ export declare const StageNodeSequentialTaskGroups: ({ props, sequentialTaskGroups, allTasks, isReadOnly, selectedTaskId, taskWidthStyle, handleTaskClick, handleReorderSequentialTasks, generateReplaceTaskMenuItemForTask, }: {
5
5
  props: StageNodeProps;
6
6
  sequentialTaskGroups: StageTaskItem[][];
7
- sequentialTasks: StageTaskGroup[];
8
7
  allTasks: StageTaskItem[][];
9
8
  isReadOnly: boolean;
10
9
  selectedTaskId?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"StageNodeSequentialTaskGroups.d.ts","sourceRoot":"","sources":["../../../../../src/canvas/components/StageNode/tasks/StageNodeSequentialTaskGroups.tsx"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,aAAa,EAAwB,MAAM,OAAO,CAAC;AAMjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAS1D,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAOxF,eAAO,MAAM,6BAA6B,GAAI,4LAW3C;IACD,KAAK,EAAE,cAAc,CAAC;IACtB,oBAAoB,EAAE,aAAa,EAAE,EAAE,CAAC;IACxC,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,QAAQ,EAAE,aAAa,EAAE,EAAE,CAAC;IAC5B,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,eAAe,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE,aAAa,EAAE,MAAM,KAAK,IAAI,CAAC;IACtE,4BAA4B,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,KAAK,IAAI,CAAC;IACpE,kCAAkC,EAAE,CAClC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,OAAO,KAChB,YAAY,GAAG,SAAS,CAAC;CAC/B,mDAwNA,CAAC"}
1
+ {"version":3,"file":"StageNodeSequentialTaskGroups.d.ts","sourceRoot":"","sources":["../../../../../src/canvas/components/StageNode/tasks/StageNodeSequentialTaskGroups.tsx"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,aAAa,EAAwB,MAAM,OAAO,CAAC;AAMjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAS1D,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAOxE,eAAO,MAAM,6BAA6B,GAAI,2KAU3C;IACD,KAAK,EAAE,cAAc,CAAC;IACtB,oBAAoB,EAAE,aAAa,EAAE,EAAE,CAAC;IACxC,QAAQ,EAAE,aAAa,EAAE,EAAE,CAAC;IAC5B,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,eAAe,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE,aAAa,EAAE,MAAM,KAAK,IAAI,CAAC;IACtE,4BAA4B,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,KAAK,IAAI,CAAC;IACpE,kCAAkC,EAAE,CAClC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,OAAO,KAChB,YAAY,GAAG,SAAS,CAAC;CAC/B,mDAyNA,CAAC"}