11<template >
22 <div
3- id =" main-canvas"
4- ref =" canvasRegion"
53 class =" w-100 h-100 position-relative"
64 role =" region"
75 >
108 class =" workflow-canvas"
119 max-zoom =" 2.5"
1210 min-zoom =" .3"
13- :nodes =" positionedNodes"
1411 :edges =" styledEdges"
12+ :nodes =" positionedNodes"
1513 :node-types =" nodeTypes"
1614 :edge-types =" edgeTypes"
1715 :nodes-connectable =" workflow?.canCreate"
1816 :elements-selectable =" true"
1917 :snap-to-grid =" true"
2018 :snap-grid =" [40, 40]"
19+ :disable-keyboard-a11y =" true"
2120 @connect =" handleConnect"
2221 @pane-click =" clearSelection"
2322 @edge-click =" selectEdge"
3029
3130 <button
3231 id =" toggle-minimap"
33- class =" toolbar-button custom-controls-button position-absolute"
32+ class =" toolbar-button custom-controls-button position-absolute z-20 "
3433 tabindex =" 0"
35- style =" z-index : 1003 "
3634 :style =" showMiniMap ? 'bottom: 130px; left: 180px;' : 'bottom: 10px; left: 10px;'"
3735 :aria-label =" showMiniMap ? translate('COM_WORKFLOW_GRAPH_MINIMAP_HIDE') : translate('COM_WORKFLOW_GRAPH_MINIMAP_SHOW')"
3836 :title =" showMiniMap ? translate('COM_WORKFLOW_GRAPH_MINIMAP_HIDE') : translate('COM_WORKFLOW_GRAPH_MINIMAP_SHOW')"
4947 </button >
5048 <MiniMap
5149 v-if =" showMiniMap"
50+ class =" z-10"
5251 position =" bottom-left"
5352 pannable
5453 zoomable
5554 :node-color =" (node) => node.data?.stage?.color || '#0d6efd'"
5655 :mask-color =" 'rgba(255, 255, 255, .6)'"
57- :aria-label =" translate('COM_WORKFLOW_GRAPH_MINIMAP')"
5856 />
59- <CustomControls aria-label =" Graph controls" />
57+ <CustomControls
58+ aria-label =" Graph controls"
59+ />
6060 <ControlsPanel
6161 v-if =" workflow?.canCreate"
6262 class =" canvas-controls-panel"
63- :is-transition-mode =" isTransitionMode"
6463 @add-stage =" addStage"
6564 @add-transition =" addTransition"
66- @toggle-transition-mode =" toggleTransitionMode"
6765 />
6866 </VueFlow >
6967 <div
@@ -122,7 +120,7 @@ export default {
122120 fitView , zoomIn , zoomOut , viewport , setViewport , onViewportChange ,
123121 } = useVueFlow ();
124122
125- const isTransitionMode = ref (true );
123+ const isTransitionMode = ref (false );
126124 const selectedStage = ref (null );
127125 const selectedTransition = ref (null );
128126 const liveRegion = ref (null );
@@ -191,11 +189,13 @@ export default {
191189 }
192190
193191 function selectStage (id ) {
192+ isTransitionMode .value = false ;
194193 selectedStage .value = parseInt (id, 10 );
195194 selectedTransition .value = null ;
196195 }
197196
198197 function selectTransition (id ) {
198+ isTransitionMode .value = true ;
199199 selectedTransition .value = parseInt (id, 10 );
200200 selectedStage .value = null ;
201201 }
@@ -217,6 +217,7 @@ export default {
217217 function clearSelection () {
218218 selectedStage .value = null ;
219219 selectedTransition .value = null ;
220+ isTransitionMode .value = false ;
220221 }
221222
222223 function deleteStage (id ) {
@@ -275,21 +276,11 @@ export default {
275276 announce (liveRegion .value , translate (' COM_WORKFLOW_GRAPH_ADD_TRANSITION_DIALOG_OPENED' ));
276277 }
277278
278- function toggleTransitionMode () {
279- isTransitionMode .value = ! isTransitionMode .value ;
280- announce (
281- liveRegion .value ,
282- isTransitionMode .value
283- ? translate (' COM_WORKFLOW_GRAPH_TRANSITION_MODE_ON' )
284- : translate (' COM_WORKFLOW_GRAPH_TRANSITION_MODE_OFF' ),
285- );
286- }
287-
288279 function handleConnect ({ source, target }) {
289280 if (! workflow? .value ? .canCreate ) {
290281 return ;
291282 }
292- if (isTransitionMode . value && source && target) {
283+ if (source && target) {
293284 openModal (' transition' , null , { from_stage_id: source, to_stage_id: target });
294285 }
295286 }
@@ -335,7 +326,7 @@ export default {
335326
336327 const positionedNodes = computed (() => {
337328 const nodes = generatePositionedNodes (stages .value );
338- const special = createSpecialNode (' from_any' , { x: 600 , y: - 200 }, ' #EF4444 ' , ' From Any' , selectStage, isTransitionMode . value , true );
329+ const special = createSpecialNode (' from_any' , { x: 600 , y: - 200 }, ' #ffff00 ' , ' From Any' , selectStage, false );
339330 return [... nodes .map ((n ) => ({
340331 ... n,
341332 data: {
@@ -346,18 +337,17 @@ export default {
346337 onEdit : () => editStage (n .id ),
347338 onDelete : () => showDeleteModal (' stage' , n .id ),
348339 },
349- // draggable: !isTransitionMode.value,
350340 })), special];
351341 });
352342
353343 const styledEdges = computed (() => generateStyledEdges (transitions .value , {
354- transitionMode: isTransitionMode .value ,
355344 selectedId: selectedTransition .value ,
356345 }).map ((edge ) => ({
357346 ... edge,
358347 data: {
359348 ... edge .data ,
360349 onSelect : () => selectTransition (edge .id ),
350+ onEscape : () => clearSelection (),
361351 onDelete : () => showDeleteModal (' transition' , edge .id ),
362352 onEdit : () => editTransition (edge .id ),
363353 },
@@ -375,7 +365,6 @@ export default {
375365 if (selectedStage .value ) showDeleteModal (' stage' , selectedStage .value );
376366 else if (selectedTransition .value ) showDeleteModal (' transition' , selectedTransition .value );
377367 },
378- toggleMode: toggleTransitionMode,
379368 undo : () => {
380369 if (! store .getters .canUndo ) {
381370 return ;
@@ -434,15 +423,6 @@ export default {
434423 saveNodePosition ();
435424 });
436425
437- // window.WorkflowGraph.Event.fire('Error', { error: error.message });
438- window .WorkflowGraph .Event .listen (' Error' , (event ) => {
439- if (window .Joomla && window .Joomla .renderMessages ) {
440- window .Joomla .renderMessages ({
441- error: [event .error .message ],
442- });
443- }
444- });
445-
446426 let isRestoringViewport = false ;
447427 watch ([loading, error], () => {
448428 setTimeout (() => {
@@ -485,13 +465,11 @@ export default {
485465 positionedNodes,
486466 styledEdges,
487467 liveRegion,
488- isTransitionMode,
489468 handleConnect,
490469 selectEdge,
491470 handleDeleteConfirm,
492471 addStage,
493472 addTransition,
494- toggleTransitionMode,
495473 clearSelection,
496474 handleNodeDragStop,
497475 };
0 commit comments