@processmaker/modeler 1.30.3 → 1.31.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 (183) hide show
  1. package/dist/img/{boundary-event.5bf51421.svg → boundary-event.4e0fb9de.svg} +3 -3
  2. package/dist/img/clipboard.5fe6f79e.svg +3 -0
  3. package/dist/img/conditional-start-event.a56e4b5b.svg +4 -0
  4. package/dist/img/{connect-artifacts.5f8bed89.svg → connect-artifacts.496eb4b9.svg} +3 -3
  5. package/dist/img/{connect-elements.d4abedf2.svg → connect-elements.9ec5ca93.svg} +3 -3
  6. package/dist/img/copy-regular.2d678143.svg +3 -0
  7. package/dist/img/data-object.0d6d1585.svg +3 -0
  8. package/dist/img/data-store.32bed5ce.svg +3 -0
  9. package/dist/img/{default-flow.212147b4.svg → default-flow.156a793b.svg} +3 -3
  10. package/dist/img/end-event.9d1ff5c0.svg +3 -0
  11. package/dist/img/error-end-event.aab86eca.svg +11 -0
  12. package/dist/img/event-based-gateway.9960eee5.svg +6 -0
  13. package/dist/img/exclusive-gateway.26db4fae.svg +4 -0
  14. package/dist/img/generic-gateway.09ca6929.svg +3 -0
  15. package/dist/img/generic-intermediate-event.a711eb33.svg +4 -0
  16. package/dist/img/inclusive-gateway.754cb36f.svg +4 -0
  17. package/dist/img/intermediate-conditional-catch-event.e9ae6198.svg +5 -0
  18. package/dist/img/intermediate-message-catch-event.9d25208e.svg +5 -0
  19. package/dist/img/intermediate-message-throw-event.4309dc45.svg +5 -0
  20. package/dist/img/intermediate-signal-catch-event.74b65f17.svg +5 -0
  21. package/dist/img/intermediate-signal-throw-event.29cad018.svg +5 -0
  22. package/dist/img/intermediate-timer-event.1670a1c8.svg +5 -0
  23. package/dist/img/{lane-below.890c069b.svg → lane-below.e67f9823.svg} +12 -12
  24. package/dist/img/manual-task.374a73c3.svg +4 -0
  25. package/dist/img/message-end-event.f15b67f5.svg +4 -0
  26. package/dist/img/message-start-event.f2d4a5e6.svg +4 -0
  27. package/dist/img/mini-map.ae46890c.svg +3 -0
  28. package/dist/img/minus.ca21cc3b.svg +3 -0
  29. package/dist/img/parallel-gateway.877bb628.svg +4 -0
  30. package/dist/img/pin-angle-fill.0e4af645.svg +3 -0
  31. package/dist/img/pin-angle.3462c115.svg +3 -0
  32. package/dist/img/plus.afbb0b13.svg +3 -0
  33. package/dist/img/pool.98d4734c.svg +3 -0
  34. package/dist/img/redo.8425ce7e.svg +4 -0
  35. package/dist/img/script-task.3d8c664a.svg +4 -0
  36. package/dist/img/signal-end-event.a38a6616.svg +4 -0
  37. package/dist/img/signal-start-event.3d7b096c.svg +4 -0
  38. package/dist/img/start-event.7f1911cb.svg +3 -0
  39. package/dist/img/sub-task.52d09847.svg +4 -0
  40. package/dist/img/task.8a1c6c75.svg +3 -0
  41. package/dist/img/terminate-end-event.3aa5cd00.svg +4 -0
  42. package/dist/img/text-annotation.02df53cd.svg +3 -0
  43. package/dist/img/timer-start-event.55abac82.svg +4 -0
  44. package/dist/img/trash-alt-solid.58c408b8.svg +1 -0
  45. package/dist/img/undo.e0ffff93.svg +4 -0
  46. package/dist/modeler.common.js +26776 -19959
  47. package/dist/modeler.common.js.map +1 -1
  48. package/dist/modeler.umd.js +26776 -19959
  49. package/dist/modeler.umd.js.map +1 -1
  50. package/dist/modeler.umd.min.js +28 -3
  51. package/dist/modeler.umd.min.js.map +1 -1
  52. package/jsconfig.json +12 -0
  53. package/package.json +3 -1
  54. package/src/.DS_Store +0 -0
  55. package/src/ModelerApp.vue +21 -21
  56. package/src/assets/boundary-event.svg +3 -3
  57. package/src/assets/clipboard.svg +3 -1
  58. package/src/assets/cog-solid.svg +1 -0
  59. package/src/assets/connect-artifacts.svg +3 -3
  60. package/src/assets/connect-elements.svg +3 -3
  61. package/src/assets/copy-regular.svg +3 -1
  62. package/src/assets/default-flow.svg +3 -3
  63. package/src/assets/lane-below.svg +12 -12
  64. package/src/assets/palette.svg +1 -0
  65. package/src/assets/pin-angle-fill.svg +3 -0
  66. package/src/assets/pin-angle.svg +3 -0
  67. package/src/assets/railBottom/mini-map.svg +3 -0
  68. package/src/assets/railBottom/minus.svg +3 -0
  69. package/src/assets/railBottom/plus.svg +3 -0
  70. package/src/assets/railBottom/redo.svg +4 -0
  71. package/src/assets/railBottom/undo.svg +4 -0
  72. package/src/assets/scss/settings/_settings.variables.scss +5 -0
  73. package/src/assets/scss/tools/_tools.chevron.scss +1 -1
  74. package/src/assets/toolpanel/conditional-start-event.svg +4 -0
  75. package/src/assets/toolpanel/data-object.svg +2 -8
  76. package/src/assets/toolpanel/data-store.svg +2 -5
  77. package/src/assets/toolpanel/end-event.svg +3 -19
  78. package/src/assets/toolpanel/error-end-event.svg +11 -0
  79. package/src/assets/toolpanel/event-based-gateway.svg +6 -0
  80. package/src/assets/toolpanel/exclusive-gateway.svg +4 -0
  81. package/src/assets/toolpanel/generic-gateway.svg +2 -13
  82. package/src/assets/toolpanel/generic-intermediate-event.svg +3 -4
  83. package/src/assets/toolpanel/inclusive-gateway.svg +4 -0
  84. package/src/assets/toolpanel/intermediate-conditional-catch-event.svg +5 -0
  85. package/src/assets/toolpanel/intermediate-message-catch-event.svg +5 -0
  86. package/src/assets/toolpanel/intermediate-message-throw-event.svg +4 -5
  87. package/src/assets/toolpanel/intermediate-signal-catch-event.svg +5 -0
  88. package/src/assets/toolpanel/intermediate-signal-throw-event.svg +5 -0
  89. package/src/assets/toolpanel/intermediate-timer-event.svg +5 -0
  90. package/src/assets/toolpanel/manual-task.svg +4 -0
  91. package/src/assets/toolpanel/message-end-event.svg +4 -0
  92. package/src/assets/toolpanel/message-start-event.svg +3 -3
  93. package/src/assets/toolpanel/parallel-gateway.svg +4 -0
  94. package/src/assets/toolpanel/pool.svg +3 -11
  95. package/src/assets/toolpanel/script-task.svg +4 -0
  96. package/src/assets/toolpanel/signal-end-event.svg +4 -0
  97. package/src/assets/toolpanel/signal-start-event.svg +4 -0
  98. package/src/assets/toolpanel/start-event.svg +3 -19
  99. package/src/assets/toolpanel/sub-task.svg +4 -0
  100. package/src/assets/toolpanel/task.svg +3 -14
  101. package/src/assets/toolpanel/terminate-end-event.svg +4 -0
  102. package/src/assets/toolpanel/text-annotation.svg +3 -17
  103. package/src/assets/toolpanel/timer-start-event.svg +4 -0
  104. package/src/assets/trash-alt-solid.svg +1 -4
  105. package/src/components/crown/crownButtons/addLaneAboveButton.vue +6 -4
  106. package/src/components/crown/crownButtons/addLaneBelowButton.vue +6 -4
  107. package/src/components/crown/crownButtons/associationFlowButton.vue +1 -14
  108. package/src/components/crown/crownButtons/cloneButton.vue +1 -6
  109. package/src/components/crown/crownButtons/copyButton.vue +1 -4
  110. package/src/components/crown/crownButtons/crownBoundaryEventDropdown.vue +7 -2
  111. package/src/components/crown/crownButtons/crownButton.vue +36 -11
  112. package/src/components/crown/crownButtons/crownColorDropdown.vue +1 -1
  113. package/src/components/crown/crownButtons/crownDropdown.scss +4 -9
  114. package/src/components/crown/crownButtons/crownTaskDropdown.vue +1 -1
  115. package/src/components/crown/crownButtons/deleteButton.vue +1 -7
  116. package/src/components/crown/crownButtons/genericFlowButton.vue +4 -4
  117. package/src/components/crown/crownButtons/icons/faAlignBottom.js +11 -0
  118. package/src/components/crown/crownButtons/icons/faAlignLeft.js +11 -0
  119. package/src/components/crown/crownButtons/icons/faAlignRight.js +11 -0
  120. package/src/components/crown/crownButtons/icons/faAlignTop.js +11 -0
  121. package/src/components/crown/crownButtons/icons/faBoundaryEvent.js +11 -0
  122. package/src/components/crown/crownButtons/icons/faCenterHorizontally.js +11 -0
  123. package/src/components/crown/crownButtons/icons/faCenterVertically.js +11 -0
  124. package/src/components/crown/crownButtons/icons/faConnectElements.js +11 -0
  125. package/src/components/crown/crownButtons/icons/faDistributeHorizontally.js +11 -0
  126. package/src/components/crown/crownButtons/icons/faDistributeVertically.js +11 -0
  127. package/src/components/crown/crownButtons/icons/faLaneAbove.js +11 -0
  128. package/src/components/crown/crownButtons/icons/faLaneBelow.js +11 -0
  129. package/src/components/crown/crownButtons/icons/index.js +12 -0
  130. package/src/components/crown/crownConfig/crownConfig.scss +5 -4
  131. package/src/components/crown/crownConfig/crownConfig.vue +5 -2
  132. package/src/components/crown/crownMultiselect/crownAlign.scss +20 -0
  133. package/src/components/crown/crownMultiselect/crownAlign.vue +302 -0
  134. package/src/components/crown/crownMultiselect/crownMultiselect.vue +60 -14
  135. package/src/components/miniPaper/MiniPaper.vue +16 -2
  136. package/src/components/miniPaper/miniPaper.scss +6 -12
  137. package/src/components/modeler/Modeler.vue +29 -22
  138. package/src/components/modeler/ModelerReadonly.vue +996 -0
  139. package/src/components/modeler/Selection.vue +11 -9
  140. package/src/components/nodes/endEvent/index.js +37 -0
  141. package/src/components/nodes/exclusiveGateway/index.js +30 -0
  142. package/src/components/nodes/index.js +1 -0
  143. package/src/components/nodes/intermediateTimerEvent/index.js +44 -0
  144. package/src/components/nodes/startEvent/index.js +43 -0
  145. package/src/components/nodes/task/index.js +30 -0
  146. package/src/components/railBottom/RailBottom.vue +120 -0
  147. package/src/components/railBottom/controls/Controls.vue +148 -0
  148. package/src/components/railBottom/controls/SubmenuPopper/SubmenuPopper.vue +188 -0
  149. package/src/components/railBottom/controls/controls.scss +98 -0
  150. package/src/components/railBottom/icons/MinusIcon.vue +5 -0
  151. package/src/components/railBottom/icons/PlusIcon.vue +5 -0
  152. package/src/components/railBottom/icons/index.js +2 -0
  153. package/src/components/railBottom/miniPaperControl/MiniPaperControl.vue +46 -0
  154. package/src/components/railBottom/miniPaperControl/miniPaperControl.scss +45 -0
  155. package/src/components/railBottom/railBottom.scss +28 -0
  156. package/src/components/railBottom/undoRedoControl/UndoRedoControl.vue +89 -0
  157. package/src/components/railBottom/undoRedoControl/undoRedoControl.scss +51 -0
  158. package/src/components/railBottom/zoomControl/ZoomControl.vue +80 -0
  159. package/src/components/railBottom/zoomControl/zoomControl.scss +66 -0
  160. package/src/components/rails/explorer-rail/explorer-rail.scss +55 -0
  161. package/src/components/rails/explorer-rail/explorer.vue +93 -0
  162. package/src/components/rails/explorer-rail/filterNodeTypes/filterNodeTypes.vue +54 -0
  163. package/src/components/rails/explorer-rail/nodeTypesLoop/nodeTypesLoop.vue +234 -0
  164. package/src/components/rails/explorer-rail/rankConstants.js +1 -0
  165. package/src/components/toolbar/ToolBar.vue +0 -66
  166. package/src/main.js +6 -0
  167. package/src/mixins/linkConfig.js +4 -1
  168. package/src/mixins/resizeConfig.js +3 -1
  169. package/src/nodeTypesStore.js +118 -0
  170. package/src/store.js +5 -0
  171. package/dist/img/clipboard.bcc7796a.svg +0 -1
  172. package/dist/img/copy-regular.3eb4c04a.svg +0 -1
  173. package/dist/img/data-object.e931f8e7.svg +0 -9
  174. package/dist/img/data-store.7ca4c899.svg +0 -6
  175. package/dist/img/end-event.1ad31396.svg +0 -19
  176. package/dist/img/generic-gateway.3a76fc75.svg +0 -14
  177. package/dist/img/generic-intermediate-event.ba2e1d71.svg +0 -5
  178. package/dist/img/intermediate-message-throw-event.ac432d96.svg +0 -6
  179. package/dist/img/pool.ac62ddae.svg +0 -11
  180. package/dist/img/start-event.e895cee2.svg +0 -19
  181. package/dist/img/task.e7419065.svg +0 -14
  182. package/dist/img/text-annotation.926416f4.svg +0 -17
  183. package/dist/img/trash-alt-solid.f2f64c1f.svg +0 -4
@@ -139,7 +139,9 @@ export default {
139
139
  }
140
140
  this.filterSelected();
141
141
  await this.$nextTick();
142
- this.updateSelectionBox();
142
+ if (store.getters.isReadOnly === false) {
143
+ this.updateSelectionBox();
144
+ }
143
145
  },
144
146
  /**
145
147
  * Select or unselect an element with shift key pressed
@@ -197,7 +199,7 @@ export default {
197
199
  this.selected = this.selected.filter(item => item.id !== view.id);
198
200
  } else {
199
201
  this.selected.push(view);
200
- }
202
+ }
201
203
  },
202
204
  clearSelection() {
203
205
  this.initSelection();
@@ -333,7 +335,7 @@ export default {
333
335
  },
334
336
  /**
335
337
  * Prepare the conectedLinks collection
336
- * @param {Array} shapes
338
+ * @param {Array} shapes
337
339
  */
338
340
  prepareConectedLinks(shapes){
339
341
  const { paper } = this.paperManager;
@@ -457,7 +459,7 @@ export default {
457
459
  // remove from selection the selected flows that belongs to a selected pools
458
460
  if (shape.model.component && flowTypes.includes(shape.model.component.node.type)) {
459
461
  const parent = shape.model.getParentCell();
460
- if (parent && parent.component && parent.component.node.pool) {
462
+ if (parent.component && parent.component.node.pool) {
461
463
  return !selectedPoolsIds.includes(parent.component.node.pool.component.node.id);
462
464
  }
463
465
  }
@@ -484,7 +486,7 @@ export default {
484
486
  });
485
487
  if (shapes) {
486
488
  return true;
487
- }
489
+ }
488
490
  return false;
489
491
  },
490
492
  /**
@@ -568,7 +570,7 @@ export default {
568
570
  this.dragging = false;
569
571
  this.stopForceMove = false;
570
572
  // Readjusts the selection box, taking into consideration elements
571
- // that are anchored and did not move, such as boundary events.
573
+ // that are anchored and did not move, such as boundary events.
572
574
  await this.$nextTick();
573
575
  await this.paperManager.awaitScheduledUpdates();
574
576
  this.overPoolStopDrag();
@@ -606,7 +608,7 @@ export default {
606
608
  });
607
609
  }
608
610
  // allow movements only if one boundary event is selected;
609
- if (this.selected && this.selected.length === 1 &&
611
+ if (this.selected && this.selected.length === 1 &&
610
612
  this.selected[0].model.get('type') === 'processmaker.components.nodes.boundaryEvent.Shape') {
611
613
  this.selected[0].model.translate(x, y);
612
614
  // validation about boundary event movements
@@ -713,7 +715,7 @@ export default {
713
715
  },
714
716
  /**
715
717
  * Check that they are not in a pool
716
- * @param {Array} elements
718
+ * @param {Array} elements
717
719
  * @return true if there is a pool in the selection or if none of the selected elements are in a pool
718
720
  */
719
721
  isNotPoolChilds(elements) {
@@ -795,7 +797,7 @@ export default {
795
797
  this.updateLaneChildren(this.selected);
796
798
  this.$emit('save-state');
797
799
  }
798
-
800
+
799
801
  }
800
802
  },
801
803
  /**
@@ -15,6 +15,43 @@ export default {
15
15
  icon: require('@/assets/toolpanel/end-event.svg'),
16
16
  label: defaultNames[id],
17
17
  rank: 30,
18
+ items: [
19
+ {
20
+ icon: require('@/assets/toolpanel/end-event.svg'),
21
+ label: defaultNames[id],
22
+ control: true,
23
+ rank: 31,
24
+ id: 'processmaker-modeler-end-event',
25
+ },
26
+ {
27
+ icon: require('@/assets/toolpanel/message-end-event.svg'),
28
+ label: defaultNames['processmaker-modeler-message-end-event'],
29
+ control: true,
30
+ rank: 32,
31
+ id: 'processmaker-modeler-message-end-event',
32
+ },
33
+ {
34
+ icon: require('@/assets/toolpanel/error-end-event.svg'),
35
+ label: defaultNames['processmaker-modeler-error-end-event'],
36
+ control: true,
37
+ rank: 33,
38
+ id: 'processmaker-modeler-error-end-event',
39
+ },
40
+ {
41
+ icon: require('@/assets/toolpanel/signal-end-event.svg'),
42
+ label: defaultNames['processmaker-modeler-signal-end-event'],
43
+ control: true,
44
+ rank: 34,
45
+ id: 'processmaker-modeler-signal-end-event',
46
+ },
47
+ {
48
+ icon: require('@/assets/toolpanel/terminate-end-event.svg'),
49
+ label: defaultNames['processmaker-modeler-terminate-end-event'],
50
+ control: true,
51
+ rank: 35,
52
+ id: 'processmaker-modeler-terminate-end-event',
53
+ },
54
+ ],
18
55
  definition(moddle, $t) {
19
56
  return moddle.create('bpmn:EndEvent', {
20
57
  name: $t(defaultNames[id]),
@@ -15,6 +15,36 @@ export default {
15
15
  icon: require('@/assets/toolpanel/generic-gateway.svg'),
16
16
  label: 'Gateway',
17
17
  rank: 50,
18
+ items: [
19
+ {
20
+ icon: require('@/assets/toolpanel/exclusive-gateway.svg'),
21
+ label: 'Exclusive Gateway',
22
+ control: true,
23
+ rank: 51,
24
+ id: 'processmaker-modeler-exclusive-gateway',
25
+ },
26
+ {
27
+ icon: require('@/assets/toolpanel/inclusive-gateway.svg'),
28
+ label: 'Inclusive Gateway',
29
+ control: true,
30
+ rank: 52,
31
+ id: 'processmaker-modeler-inclusive-gateway',
32
+ },
33
+ {
34
+ icon: require('@/assets/toolpanel/parallel-gateway.svg'),
35
+ label: 'Parallel Gateway',
36
+ control: true,
37
+ rank: 53,
38
+ id: 'processmaker-modeler-parallel-gateway',
39
+ },
40
+ {
41
+ icon: require('@/assets/toolpanel/event-based-gateway.svg'),
42
+ label: 'Event Based Gateway',
43
+ control: true,
44
+ rank: 54,
45
+ id: 'processmaker-modeler-event-based-gateway',
46
+ },
47
+ ],
18
48
  definition(moddle, $t) {
19
49
  return moddle.create('bpmn:ExclusiveGateway', {
20
50
  name: $t(defaultNames[id]),
@@ -31,6 +31,7 @@ export { default as pool } from './pool';
31
31
  export { default as poolLane } from './poolLane';
32
32
  export { default as ValidationStatus } from '../validationStatus/ValidationStatus';
33
33
  export { default as Modeler } from '../modeler/Modeler';
34
+ export { default as ModelerReadonly } from '../modeler/ModelerReadonly';
34
35
  export { default as manualTask } from './manualTask';
35
36
  export { default as boundaryTimerEvent } from './boundaryTimerEvent';
36
37
  export { default as boundaryMessageEvent } from './boundaryMessageEvent';
@@ -17,6 +17,50 @@ export default {
17
17
  icon: require('@/assets/toolpanel/generic-intermediate-event.svg'),
18
18
  label: 'Intermediate Event',
19
19
  rank: 20,
20
+ items: [
21
+ {
22
+ icon: require('@/assets/toolpanel/intermediate-timer-event.svg'),
23
+ label: 'Intermediate Timer Event',
24
+ control: true,
25
+ rank: 21,
26
+ id: 'processmaker-modeler-intermediate-catch-timer-event',
27
+ },
28
+ {
29
+ icon: require('@/assets/toolpanel/intermediate-signal-catch-event.svg'),
30
+ label: 'Intermediate Signal Catch Event',
31
+ control: true,
32
+ rank: 22,
33
+ id: 'processmaker-modeler-intermediate-signal-catch-event',
34
+ },
35
+ {
36
+ icon: require('@/assets/toolpanel/intermediate-signal-throw-event.svg'),
37
+ label: 'Intermediate Signal Throw Event',
38
+ control: true,
39
+ rank: 23,
40
+ id: 'processmaker-modeler-intermediate-signal-throw-event',
41
+ },
42
+ {
43
+ icon: require('@/assets/toolpanel/intermediate-message-catch-event.svg'),
44
+ label: 'Intermediate Message Catch Event',
45
+ control: true,
46
+ rank: 24,
47
+ id: 'processmaker-modeler-intermediate-message-catch-event',
48
+ },
49
+ {
50
+ icon: require('@/assets/toolpanel/intermediate-message-throw-event.svg'),
51
+ label: 'Intermediate Message Throw Event',
52
+ control: true,
53
+ rank: 25,
54
+ id: 'processmaker-modeler-intermediate-message-throw-event',
55
+ },
56
+ {
57
+ icon: require('@/assets/toolpanel/intermediate-conditional-catch-event.svg'),
58
+ label: 'Intermediate Conditional Catch Event',
59
+ control: true,
60
+ rank: 26,
61
+ id: 'processmaker-modeler-intermediate-conditional-catch-event',
62
+ },
63
+ ],
20
64
  definition(moddle, $t) {
21
65
  return moddle.create('bpmn:IntermediateCatchEvent', {
22
66
  name: $t(defaultNames[id]),
@@ -13,6 +13,49 @@ export default merge(cloneDeep(baseStartEventConfig), {
13
13
  icon: require('@/assets/toolpanel/start-event.svg'),
14
14
  label: defaultNames[id],
15
15
  rank: 10,
16
+ items: [
17
+ {
18
+ icon: require('@/assets/toolpanel/start-event.svg'),
19
+ label: defaultNames[id],
20
+ control: true,
21
+ bpmnType: 'bpmn:StartEvent',
22
+ rank: 10,
23
+ id: 'processmaker-modeler-start-event',
24
+ },
25
+ {
26
+ icon: require('@/assets/toolpanel/message-start-event.svg'),
27
+ label: defaultNames['processmaker-modeler-message-start-event'],
28
+ control: true,
29
+ bpmnType: 'bpmn:StartEvent',
30
+ rank: 11,
31
+ id: 'processmaker-modeler-message-start-event',
32
+ },
33
+ {
34
+ icon: require('@/assets/toolpanel/conditional-start-event.svg'),
35
+ label: defaultNames['processmaker-modeler-conditional-start-event'],
36
+ control: true,
37
+ bpmnType: 'bpmn:StartEvent',
38
+ rank: 12,
39
+ id: 'processmaker-modeler-conditional-start-event',
40
+ },
41
+ {
42
+ icon: require('@/assets/toolpanel/signal-start-event.svg'),
43
+ label: defaultNames['processmaker-modeler-signal-start-event'],
44
+ control: true,
45
+ bpmnType: 'bpmn:StartEvent',
46
+ rank: 13,
47
+ id: 'processmaker-modeler-signal-start-event',
48
+ },
49
+ {
50
+ icon: require('@/assets/toolpanel/timer-start-event.svg'),
51
+ label: defaultNames['processmaker-modeler-start-timer-event'],
52
+ control: true,
53
+ bpmnType: 'bpmn:StartEvent',
54
+ rank: 14,
55
+ id: 'processmaker-modeler-start-timer-event',
56
+
57
+ },
58
+ ],
16
59
  definition(moddle, $t) {
17
60
  return moddle.create('bpmn:StartEvent', {
18
61
  name: $t(defaultNames[id]),
@@ -19,6 +19,36 @@ export default {
19
19
  rank: 40,
20
20
  icon: require('@/assets/toolpanel/task.svg'),
21
21
  label: 'Task',
22
+ items: [
23
+ {
24
+ icon: require('@/assets/toolpanel/task.svg'),
25
+ label: 'Form Task',
26
+ control: true,
27
+ rank: 41,
28
+ id: 'processmaker-modeler-task',
29
+ },
30
+ {
31
+ icon: require('@/assets/toolpanel/manual-task.svg'),
32
+ label: 'Manual Task',
33
+ control: true,
34
+ rank: 42,
35
+ id: 'processmaker-modeler-manual-task',
36
+ },
37
+ {
38
+ icon: require('@/assets/toolpanel/script-task.svg'),
39
+ label: 'Script Task',
40
+ control: true,
41
+ rank: 43,
42
+ id: 'processmaker-modeler-script-task',
43
+ },
44
+ {
45
+ icon: require('@/assets/toolpanel/sub-task.svg'),
46
+ label: 'Sub Process',
47
+ control: true,
48
+ rank: 44,
49
+ id: 'processmaker-modeler-call-activity',
50
+ },
51
+ ],
22
52
  definition(moddle, $t) {
23
53
  return moddle.create('bpmn:Task', {
24
54
  name: $t(defaultNames[id]),
@@ -0,0 +1,120 @@
1
+ <template>
2
+ <div class="rail-container" data-cy="rail-bottom">
3
+ <div
4
+ class="rail-left"
5
+ :style="[overlap ? { position: 'relative'} : { position: 'absolute' }]"
6
+ ref="railLeftBox"
7
+ >
8
+ <MiniPaperControl
9
+ :paper-manager="paperManager"
10
+ :graph="graph"
11
+ />
12
+
13
+ <ZoomControl
14
+ :paper-manager="paperManager"
15
+ ref="zoomBox"
16
+ />
17
+ </div>
18
+
19
+ <div
20
+ class="rail-center"
21
+ :style="[overlap ? { width: 'auto'} : { width: '100%'}]"
22
+ >
23
+ <UndoRedoControl
24
+ :is-rendering="isRendering"
25
+ @load-xml="$emit('load-xml')"
26
+ @clearSelection="$emit('clearSelection')"
27
+ ref="undoRedoBox"
28
+ />
29
+
30
+ <Controls
31
+ :nodeTypes="nodeTypes"
32
+ @onCreateElement="onCreateElementHandler"
33
+ @onSetCursor="onSetCursorHandler"
34
+ ref="controlBox"
35
+ />
36
+ </div>
37
+ </div>
38
+ </template>
39
+
40
+ <script>
41
+ import { nextTick } from 'vue';
42
+ import MiniPaperControl from '@/components/railBottom/miniPaperControl/MiniPaperControl.vue';
43
+ import ZoomControl from '@/components/railBottom/zoomControl/ZoomControl.vue';
44
+ import UndoRedoControl from '@/components/railBottom/undoRedoControl/UndoRedoControl.vue';
45
+ import Controls from '@/components/railBottom/controls/Controls.vue';
46
+
47
+ export default {
48
+ components: {
49
+ MiniPaperControl,
50
+ ZoomControl,
51
+ UndoRedoControl,
52
+ Controls,
53
+ },
54
+ props: {
55
+ paperManager: Object,
56
+ graph: Object,
57
+ isRendering: Boolean,
58
+ nodeTypes: Array,
59
+ },
60
+ data() {
61
+ return {
62
+ overlap: false,
63
+ widthOverlapControl: 0,
64
+ leftOverlapUndoRedo: 0,
65
+ controlObserver: null,
66
+ };
67
+ },
68
+ created() {
69
+ this.controlObserver = new ResizeObserver(this.onControlObserver);
70
+ },
71
+ methods: {
72
+ onCreateElementHandler(data){
73
+ this.$emit('onCreateElement', data);
74
+ },
75
+ onSetCursorHandler(data) {
76
+ this.$emit('set-cursor', data);
77
+ },
78
+ onControlObserver(entries) {
79
+ // Control coordinates
80
+ const controlEl = entries[0].target.getBoundingClientRect();
81
+ // Zoom coordinates
82
+ const zoomEl = this.$refs.zoomBox.$el.getBoundingClientRect();
83
+ // Undo/Redo coordinates
84
+ const undoRedoEl = this.$refs.undoRedoBox.$el.getBoundingClientRect();
85
+
86
+ // Checks overlapping
87
+ if (this.overlap) {
88
+ if (controlEl.width < this.widthOverlapControl) {
89
+ // Get the computed styles of the ZoomControl
90
+ const zoomStyles = window.getComputedStyle(this.$refs.zoomBox.$el);
91
+ // Calculate the total padding of the ZoomControl element
92
+ const zoomPadding = parseInt(zoomStyles.paddingLeft, 10) + parseInt(zoomStyles.paddingRight, 10);
93
+ // Get the computed styles of the RailLeftBox
94
+ const railLeftBoxStyles = window.getComputedStyle(this.$refs.railLeftBox);
95
+ // Calculate the total padding of the RailLeftBox element
96
+ const railLeftBoxPadding = parseInt(railLeftBoxStyles.paddingLeft, 10) + parseInt(railLeftBoxStyles.paddingRight, 10);
97
+ // Calculate the left position of the Controls element when it is overlapped with the UndoRedoControl and ZoomControl elements
98
+ const vLeft = this.leftOverlapUndoRedo + (this.widthOverlapControl - controlEl.width) - zoomPadding - railLeftBoxPadding;
99
+ // Checks if the left position of the Controls element when it is overlapped with the
100
+ // UndoRedoControl and ZoomControl elements is greater than the right position of the ZoomControl element
101
+ if (vLeft > zoomEl.right) {
102
+ this.overlap = false;
103
+ }
104
+ }
105
+ } else if (undoRedoEl.left < zoomEl.right) {
106
+ this.overlap = true;
107
+ this.widthOverlapControl = controlEl.width;
108
+ this.leftOverlapUndoRedo = undoRedoEl.left;
109
+ }
110
+ },
111
+ },
112
+ async mounted() {
113
+ await nextTick();
114
+
115
+ this.controlObserver.observe(this.$refs.controlBox.$el);
116
+ },
117
+ };
118
+ </script>
119
+
120
+ <style lang="scss" scoped src="./railBottom.scss"></style>
@@ -0,0 +1,148 @@
1
+ <template>
2
+ <ul
3
+ v-if="controls"
4
+ class="control-list"
5
+ >
6
+ <li
7
+ v-for="item in controls"
8
+ :class="['control-item', {'active': selectedItem === item.type}]"
9
+ :id="item.id"
10
+ :key="item.id"
11
+ @click.stop="onClickHandler($event, item)"
12
+ >
13
+ <SubmenuPopper
14
+ :data="item"
15
+ @clickToSubmenu="clickToSubmenuHandler"
16
+ :selectedItem="selectedSubmenuItem"
17
+ :popperType="popperType"
18
+ />
19
+ </li>
20
+
21
+ <li class="control-item">
22
+ <div
23
+ :class="{'control-add': true, 'control-active': explorerOpen}"
24
+ :title="$t('Add')"
25
+ v-b-tooltip.hover
26
+ @click="toggleExplorer"
27
+ >
28
+ <inline-svg :src="plusIcon" />
29
+ </div>
30
+ </li>
31
+ </ul>
32
+ </template>
33
+
34
+ <script>
35
+ import InlineSvg from 'vue-inline-svg';
36
+ import nodeTypesStore from '@/nodeTypesStore';
37
+ import SubmenuPopper from './SubmenuPopper/SubmenuPopper.vue';
38
+
39
+ export default ({
40
+ components: {
41
+ SubmenuPopper,
42
+ InlineSvg,
43
+ },
44
+ props: {
45
+ nodeTypes: Array,
46
+ },
47
+ data() {
48
+ return {
49
+ plusIcon: require('@/assets/railBottom/plus.svg'),
50
+ wasClicked: false,
51
+ element: null,
52
+ selectedItem: null,
53
+ selectedSubmenuItem: null,
54
+ xOffset: 0,
55
+ yOffset: 0,
56
+ movedElement: null,
57
+ isDragging: false,
58
+ helperStyles: {
59
+ backgroundColor:'#ffffff',
60
+ position: 'absolute',
61
+ height: '40px',
62
+ width: '40px',
63
+ zIndex: '10',
64
+ opacity: '0.5',
65
+ pointerEvents: 'none',
66
+ },
67
+ popperType: null,
68
+ };
69
+ },
70
+ computed: {
71
+ controls() {
72
+ return nodeTypesStore.getters.getPinnedNodeTypes;
73
+ },
74
+ explorerOpen() {
75
+ return nodeTypesStore.getters.getExplorerOpen;
76
+ },
77
+ },
78
+ methods: {
79
+ clickToSubmenuHandler(data){
80
+ window.ProcessMaker.EventBus.$off('custom-pointerclick');
81
+ this.wasClicked = false;
82
+ this.parent = this.element;
83
+ this.selectedSubmenuItem = data.control.type;
84
+ this.onClickHandler(data.event, data.control);
85
+ },
86
+ onClickHandler(event, control) {
87
+ this.createDraggingHelper(event, control);
88
+ document.addEventListener('mousemove', this.setDraggingPosition);
89
+ this.setDraggingPosition(event);
90
+ this.wasClicked = true;
91
+ this.element = control;
92
+ this.$emit('onSetCursor', 'crosshair');
93
+ if (!this.parent) {
94
+ this.selectedItem = control.type;
95
+ this.popperType = control.type;
96
+ }
97
+ window.ProcessMaker.EventBus.$on('custom-pointerclick', message => {
98
+ window.ProcessMaker.EventBus.$off('custom-pointerclick');
99
+ document.removeEventListener('mousemove', this.setDraggingPosition);
100
+ if (this.movedElement) {
101
+ document.body.removeChild(this.movedElement);
102
+ }
103
+ this.popperType = null;
104
+ this.selectedSubmenuItem = null;
105
+ this.selectedItem = null;
106
+ this.movedElement = null;
107
+ this.onCreateElement(message);
108
+ });
109
+ },
110
+ onCreateElement(event){
111
+ if (this.wasClicked && this.element) {
112
+ if (this.parent) {
113
+ this.parent = null;
114
+ }
115
+ this.$emit('onCreateElement', { event, control: this.element });
116
+ this.$emit('onSetCursor', 'none');
117
+ event.preventDefault();
118
+ this.wasClicked = false;
119
+ }
120
+ },
121
+ setDraggingPosition({ pageX, pageY }) {
122
+ this.movedElement.style.left = `${pageX}px`;
123
+ this.movedElement.style.top = `${pageY}px`;
124
+ },
125
+ toggleExplorer() {
126
+ nodeTypesStore.commit('toggleExplorer');
127
+ nodeTypesStore.commit('clearFilteredNodes');
128
+ },
129
+ createDraggingHelper(event, control) {
130
+ if (this.movedElement) {
131
+ document.removeEventListener('mousemove', this.setDraggingPosition);
132
+ document.body.removeChild(this.movedElement);
133
+ this.movedElement = null;
134
+ }
135
+ const sourceElement = event.target;
136
+ this.movedElement = document.createElement('img');
137
+ Object.keys(this.helperStyles).forEach((property) => {
138
+ this.movedElement.style[property] = this.helperStyles[property];
139
+ });
140
+ this.movedElement.src = control.icon;
141
+ document.body.appendChild(this.movedElement);
142
+ this.xOffset = event.clientX - sourceElement.getBoundingClientRect().left;
143
+ this.yOffset = event.clientY - sourceElement.getBoundingClientRect().top;
144
+ },
145
+ },
146
+ });
147
+ </script>
148
+ <style lang="scss" scoped src="./controls.scss"></style>