@processmaker/screen-builder 2.85.2 → 2.85.4

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@processmaker/screen-builder",
3
- "version": "2.85.2",
3
+ "version": "2.85.4",
4
4
  "scripts": {
5
5
  "dev": "VITE_COVERAGE=true vite",
6
6
  "build": "vite build",
@@ -11,7 +11,8 @@
11
11
  "run-cypress": "TZ=UTC nyc cypress run",
12
12
  "storybook": "storybook dev -p 6006",
13
13
  "build-storybook": "storybook build",
14
- "test-storybook": "test-storybook"
14
+ "test-storybook": "test-storybook",
15
+ "serve": "npm run dev"
15
16
  },
16
17
  "main": "./dist/vue-form-builder.umd.js",
17
18
  "module": "./dist/vue-form-builder.es.js",
@@ -47,7 +47,14 @@ export default {
47
47
  data() {
48
48
  return {
49
49
  search: "",
50
- filteredItems: [...this.items],
50
+ filteredItems: [...this.items].map((item, index) => {
51
+ // Add the order property to the items if it doesn't exist
52
+ if (item.order === undefined) {
53
+ // eslint-disable-next-line no-param-reassign
54
+ this.$set(item, "order", index + 1);
55
+ }
56
+ return item;
57
+ })
51
58
  };
52
59
  },
53
60
  watch: {
@@ -64,6 +64,7 @@ export default {
64
64
  },
65
65
  data() {
66
66
  return {
67
+ refreshSort: 1,
67
68
  newName: '',
68
69
  draggedItem: 0,
69
70
  draggedOverItem: 0,
@@ -72,9 +73,9 @@ export default {
72
73
  },
73
74
  computed: {
74
75
  sortedItems() {
75
- const sortedItems = [...this.filteredItems].sort(
76
- (a, b) => a.order - b.order
77
- );
76
+ const sortedItems =
77
+ this.refreshSort &&
78
+ [...this.filteredItems].sort((a, b) => a.order - b.order);
78
79
  return sortedItems;
79
80
  }
80
81
  },
@@ -178,7 +179,7 @@ export default {
178
179
  item.order = index + 1;
179
180
  });
180
181
  }
181
-
182
+ this.refreshSort++;
182
183
  this.$emit('ordered', itemsSortedClone);
183
184
  },
184
185
  dragOver(event) {
@@ -96,7 +96,9 @@ export default {
96
96
  beforeLoadTask: { type: Function, default: defaultBeforeLoadTask },
97
97
  initialLoopContext: { type: String, default: "" },
98
98
  taskPreview: { type: Boolean, default: false },
99
- loading: { type: Number, default: null }
99
+ loading: { type: Number, default: null },
100
+ alwaysAllowEditing: { type: Boolean, default: false },
101
+ disableInterstitial: { type: Boolean, default: false },
100
102
  },
101
103
  data() {
102
104
  return {
@@ -194,7 +196,9 @@ export default {
194
196
  }
195
197
  if (this.taskPreview && this.task.status === "CLOSED") {
196
198
  this.task.interstitial_screen['_interstitial'] = false;
197
- this.task.screen.config = this.disableForm(this.task.screen.config);
199
+ if (!this.alwaysAllowEditing) {
200
+ this.task.screen.config = this.disableForm(this.task.screen.config);
201
+ }
198
202
  this.screen = this.task.screen;
199
203
  }
200
204
  }
@@ -460,7 +464,7 @@ export default {
460
464
  }
461
465
  this.$emit('submit', this.task, loading, buttonInfo);
462
466
 
463
- if (this.task && this.task.allow_interstitial && !this.loadingButton) {
467
+ if (this.task?.allow_interstitial && !this.loadingButton && !this.disableInterstitial) {
464
468
  this.task.interstitial_screen['_interstitial'] = true;
465
469
  this.screen = this.task.interstitial_screen;
466
470
  }
@@ -489,10 +493,7 @@ export default {
489
493
  return allowed ? this.parentRequest : this.requestId
490
494
  },
491
495
  processUpdated: _.debounce(function(data) {
492
- if (
493
- data.event === 'ACTIVITY_COMPLETED' ||
494
- data.event === 'ACTIVITY_ACTIVATED'
495
- ) {
496
+ if (data.event === 'ACTIVITY_ACTIVATED') {
496
497
  this.reload();
497
498
  }
498
499
  if (data.event === 'ACTIVITY_EXCEPTION') {
@@ -524,6 +525,13 @@ export default {
524
525
  this.reload();
525
526
  }
526
527
  },
528
+ existsEventMessage(id, data) {
529
+ if (sessionStorage.getItem(id)) {
530
+ return true;
531
+ }
532
+ sessionStorage.setItem(id, data);
533
+ return false;
534
+ },
527
535
  listenForParentChanges() {
528
536
  if (!this.parentRequest) {
529
537
  return;
@@ -533,10 +541,16 @@ export default {
533
541
  `ProcessMaker.Models.ProcessRequest.${this.parentRequest}`,
534
542
  '.ProcessUpdated',
535
543
  (data) => {
536
- if (['ACTIVITY_ACTIVATED'].includes(data.event)) {
544
+ if (
545
+ ['ACTIVITY_ACTIVATED'].includes(data.event) &&
546
+ !this.existsEventMessage(`${data.event}-${this.userId}-${this.taskId}`)
547
+ ) {
537
548
  this.closeTask(this.parentRequest);
538
549
  }
539
- if (['ACTIVITY_COMPLETED'].includes(data.event)) {
550
+ if (
551
+ ["ACTIVITY_COMPLETED"].includes(data.event) &&
552
+ !this.existsEventMessage(`${data.event}-${this.userId}-${this.taskId}`)
553
+ ) {
540
554
  if (this.task.process_request.status === 'COMPLETED') {
541
555
  this.processCompleted();
542
556
  }
@@ -54,6 +54,9 @@ export default {
54
54
  return str.replace(/\.\d/g, match => `[${match.substr(1)}]`);
55
55
  },
56
56
  submit(eventData, loading = false, buttonInfo = null) {
57
+ if (buttonInfo && this.loopContext) {
58
+ buttonInfo.loopContext = this.loopContext;
59
+ }
57
60
  this.$emit('submit', this.value, loading, buttonInfo);
58
61
  },
59
62
  buildComponent(definition) {
@@ -234,3 +234,52 @@ export const UserCanSortWithFilterByText = {
234
234
  expect(itemsOrder[4]).toHaveAttribute("data-order", "5");
235
235
  }
236
236
  };
237
+
238
+ // User can reorder items that does not have an order
239
+ export const UserCanReorderItemsThatDoesNotHaveAnOrder = {
240
+ args: {
241
+ filterKey: "name",
242
+ items: [
243
+ { name: "Page 1" },
244
+ { name: "Page 2" },
245
+ { name: "Page 3" },
246
+ { name: "Page 4" },
247
+ { name: "Page 5" }
248
+ ]
249
+ },
250
+ play: async ({ canvasElement }) => {
251
+ const canvas = within(canvasElement);
252
+
253
+ // Drag item-1 item-5 position
254
+ await dragAndDrop(
255
+ canvas.getByTestId("item-1"),
256
+ canvas.getByTestId("item-5")
257
+ );
258
+
259
+ // Drag item-1 item-4 position
260
+ await dragAndDrop(
261
+ canvas.getByTestId("item-1"),
262
+ canvas.getByTestId("item-4")
263
+ );
264
+
265
+ // Drag item-1 item-3 position
266
+ await dragAndDrop(
267
+ canvas.getByTestId("item-1"),
268
+ canvas.getByTestId("item-3")
269
+ );
270
+
271
+ // Drag item-1 item-2 position
272
+ await dragAndDrop(
273
+ canvas.getByTestId("item-1"),
274
+ canvas.getByTestId("item-2")
275
+ );
276
+
277
+ // Check the new order
278
+ const items = canvas.getAllByTestId(/item-\d+/);
279
+ expect(items[0]).toHaveTextContent("Page 5");
280
+ expect(items[1]).toHaveTextContent("Page 4");
281
+ expect(items[2]).toHaveTextContent("Page 3");
282
+ expect(items[3]).toHaveTextContent("Page 2");
283
+ expect(items[4]).toHaveTextContent("Page 1");
284
+ }
285
+ };