@processmaker/screen-builder 2.83.2 → 2.83.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/dist/vue-form-builder.css +1 -1
- package/dist/vue-form-builder.es.js +19994 -19801
- package/dist/vue-form-builder.es.js.map +1 -1
- package/dist/vue-form-builder.umd.js +53 -53
- package/dist/vue-form-builder.umd.js.map +1 -1
- package/package.json +13 -13
- package/src/components/editor/loop.vue +152 -132
- package/src/components/editor/multi-column.vue +178 -152
- package/src/components/inspector/collection-select-list.vue +43 -36
- package/src/components/inspector/label-submit-button.vue +5 -0
- package/src/components/inspector/loading-submit-button.vue +8 -5
- package/src/components/inspector/outbound-config.vue +91 -71
- package/src/components/inspector/screen-selector.vue +47 -44
- package/src/components/inspector/select-data-type-mask.vue +1 -1
- package/src/components/inspector/tooltip.vue +62 -60
- package/src/components/inspector/validation-select.vue +404 -180
- package/src/components/renderer/add-loop-row.vue +32 -21
- package/src/components/renderer/file-upload.vue +12 -1
- package/src/components/renderer/form-analytics-chart.vue +23 -26
- package/src/components/renderer/form-list-table.vue +77 -30
- package/src/components/renderer/form-loop.vue +88 -60
- package/src/components/renderer/form-masked-input.vue +1 -1
- package/src/components/renderer/form-nested-screen.vue +5 -0
- package/src/components/renderer/form-record-list.vue +25 -0
- package/src/components/vue-form-renderer.vue +2 -1
- package/src/main.js +4 -2
|
@@ -1,18 +1,36 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div>
|
|
3
|
-
<b-row class="justify-content-start"
|
|
3
|
+
<b-row v-if="error" class="justify-content-start">
|
|
4
4
|
<b-col md="auto">
|
|
5
5
|
<div class="invalid-feedback d-block">{{ error }}</div>
|
|
6
6
|
</b-col>
|
|
7
7
|
</b-row>
|
|
8
8
|
|
|
9
|
-
<b-row
|
|
9
|
+
<b-row
|
|
10
|
+
v-if="value && config.settings.add"
|
|
11
|
+
class="justify-content-md-center"
|
|
12
|
+
>
|
|
10
13
|
<b-col md="auto">
|
|
11
|
-
<b-button
|
|
12
|
-
|
|
14
|
+
<b-button
|
|
15
|
+
size="sm"
|
|
16
|
+
variant="secondary"
|
|
17
|
+
class="ml-1 mr-1"
|
|
18
|
+
:title="$t('Add Item')"
|
|
19
|
+
:data-cy="`loop-${config.name}-add`"
|
|
20
|
+
@click="add"
|
|
21
|
+
>
|
|
22
|
+
<i class="fas fa-plus" />
|
|
13
23
|
</b-button>
|
|
14
|
-
<b-button
|
|
15
|
-
|
|
24
|
+
<b-button
|
|
25
|
+
v-if="value.length > 0"
|
|
26
|
+
size="sm"
|
|
27
|
+
variant="outline-danger"
|
|
28
|
+
class="ml-1 mr-1"
|
|
29
|
+
:title="$t('Delete Item')"
|
|
30
|
+
:data-cy="`loop-${config.name}-remove`"
|
|
31
|
+
@click="removeConfirm"
|
|
32
|
+
>
|
|
33
|
+
<i class="fas fa-minus" />
|
|
16
34
|
</b-button>
|
|
17
35
|
</b-col>
|
|
18
36
|
</b-row>
|
|
@@ -20,13 +38,11 @@
|
|
|
20
38
|
</template>
|
|
21
39
|
|
|
22
40
|
<script>
|
|
23
|
-
import { mapActions } from "vuex";
|
|
24
|
-
|
|
25
41
|
export default {
|
|
26
42
|
props: {
|
|
27
43
|
value: Array,
|
|
28
44
|
config: Object,
|
|
29
|
-
error: String
|
|
45
|
+
error: String
|
|
30
46
|
},
|
|
31
47
|
methods: {
|
|
32
48
|
async add() {
|
|
@@ -34,19 +50,14 @@ export default {
|
|
|
34
50
|
},
|
|
35
51
|
remove() {
|
|
36
52
|
const removed = this.value.pop();
|
|
37
|
-
this.$root.$emit(
|
|
53
|
+
this.$root.$emit("removed-loop", this, removed);
|
|
38
54
|
},
|
|
39
55
|
removeConfirm() {
|
|
40
|
-
const message = this.$t(
|
|
41
|
-
window.ProcessMaker.confirmModal(
|
|
42
|
-
this
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
this.remove();
|
|
47
|
-
}
|
|
48
|
-
);
|
|
49
|
-
},
|
|
50
|
-
},
|
|
56
|
+
const message = this.$t("Are you sure you want to delete this?");
|
|
57
|
+
window.ProcessMaker.confirmModal(this.$t("Caution!"), message, "", () => {
|
|
58
|
+
this.remove();
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}
|
|
51
62
|
};
|
|
52
63
|
</script>
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
{{ $t('File uploads are unavailable in preview mode.') }}
|
|
6
6
|
</b-card>
|
|
7
7
|
<uploader
|
|
8
|
-
v-
|
|
8
|
+
v-if="!inPreviewMode && showComponent"
|
|
9
9
|
:options="options"
|
|
10
10
|
:attrs="attrs"
|
|
11
11
|
ref="uploader"
|
|
@@ -106,6 +106,10 @@ export default {
|
|
|
106
106
|
|
|
107
107
|
this.$root.$on('removed-loop',
|
|
108
108
|
(loop, removed) => this.listenRemovedLoop(loop, removed));
|
|
109
|
+
|
|
110
|
+
window.ProcessMaker.EventBus.$on("modal-shown", () => {
|
|
111
|
+
this.clearFiles();
|
|
112
|
+
});
|
|
109
113
|
|
|
110
114
|
this.removeDefaultClasses();
|
|
111
115
|
|
|
@@ -297,9 +301,16 @@ export default {
|
|
|
297
301
|
nativeFiles: {},
|
|
298
302
|
uploading: false,
|
|
299
303
|
invalidFile: false,
|
|
304
|
+
showComponent: true,
|
|
300
305
|
};
|
|
301
306
|
},
|
|
302
307
|
methods: {
|
|
308
|
+
clearFiles() {
|
|
309
|
+
this.showComponent = false;
|
|
310
|
+
this.$nextTick(() => {
|
|
311
|
+
this.showComponent = true;
|
|
312
|
+
});
|
|
313
|
+
},
|
|
303
314
|
uploaderLoaded() {
|
|
304
315
|
return this.$refs['uploader'];
|
|
305
316
|
},
|
|
@@ -1,24 +1,18 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class="
|
|
3
|
-
<div class="card">
|
|
4
|
-
<
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
<b-card-text>
|
|
17
|
-
<b-embed type="iframe" :src="graphic.link"></b-embed>
|
|
18
|
-
</b-card-text>
|
|
19
|
-
</b-col>
|
|
20
|
-
</template>
|
|
21
|
-
</div>
|
|
2
|
+
<div class="card" :style="customStyle">
|
|
3
|
+
<div class="card-header d-flex justify-content-between align-items-center">
|
|
4
|
+
<span class="mb-2 mt-2 control-text">{{ title }}</span>
|
|
5
|
+
<b-link @click="openExternalLink">
|
|
6
|
+
<i class="fas fa-external-link-alt custom-icon" />
|
|
7
|
+
</b-link>
|
|
8
|
+
</div>
|
|
9
|
+
<div>
|
|
10
|
+
<div class="d-flex flex-wrap p-2">
|
|
11
|
+
<b-col cols="12">
|
|
12
|
+
<b-card-text>
|
|
13
|
+
<b-embed type="iframe" :src="graphic.link"></b-embed>
|
|
14
|
+
</b-card-text>
|
|
15
|
+
</b-col>
|
|
22
16
|
</div>
|
|
23
17
|
</div>
|
|
24
18
|
</div>
|
|
@@ -30,14 +24,12 @@ export default {
|
|
|
30
24
|
data() {
|
|
31
25
|
return {
|
|
32
26
|
title: this.$t("Analytics Chart"),
|
|
33
|
-
graphic: []
|
|
27
|
+
graphic: [],
|
|
28
|
+
customStyle: {
|
|
29
|
+
"border-radius": "8px"
|
|
30
|
+
}
|
|
34
31
|
};
|
|
35
32
|
},
|
|
36
|
-
methods: {
|
|
37
|
-
openExternalLink() {
|
|
38
|
-
window.open("/package-analytics-reporting", "_blank");
|
|
39
|
-
}
|
|
40
|
-
},
|
|
41
33
|
watch: {
|
|
42
34
|
listChartOption() {
|
|
43
35
|
if (this.listChartOption && this.listChartOption.name) {
|
|
@@ -49,6 +41,11 @@ export default {
|
|
|
49
41
|
if (this.listChartOption && this.listChartOption.name) {
|
|
50
42
|
this.graphic = this.listChartOption;
|
|
51
43
|
}
|
|
44
|
+
},
|
|
45
|
+
methods: {
|
|
46
|
+
openExternalLink() {
|
|
47
|
+
window.open("/package-analytics-reporting", "_blank");
|
|
48
|
+
}
|
|
52
49
|
}
|
|
53
50
|
};
|
|
54
51
|
</script>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class="card
|
|
2
|
+
<div class="card" :style="customStyle">
|
|
3
3
|
<div class="card-header d-flex justify-content-between align-items-center">
|
|
4
4
|
<template v-if="dataControl.showControl">
|
|
5
|
-
<div class="mb-
|
|
5
|
+
<div class="mb-1 mt-1">
|
|
6
6
|
<b-avatar
|
|
7
7
|
v-if="dataControl.showAvatar"
|
|
8
8
|
size="2em"
|
|
@@ -10,11 +10,11 @@
|
|
|
10
10
|
:text="dataControl.count"
|
|
11
11
|
class="avatar-text"
|
|
12
12
|
></b-avatar>
|
|
13
|
-
<p class="control-text" :style="dataControl.colorText">
|
|
13
|
+
<p class="control-text mb-0" :style="dataControl.colorText">
|
|
14
14
|
{{ title }}
|
|
15
15
|
</p>
|
|
16
16
|
<template v-if="dataControl.dropdownShow === 'requests'">
|
|
17
|
-
<b-dropdown variant="
|
|
17
|
+
<b-dropdown variant="outline-secondary" no-caret>
|
|
18
18
|
<template #button-content>
|
|
19
19
|
<i class="fas fa-caret-down" />
|
|
20
20
|
</template>
|
|
@@ -38,9 +38,16 @@
|
|
|
38
38
|
<div class="ml-auto d-flex align-items-center">
|
|
39
39
|
<template v-if="dataControl.dropdownShow === 'requests'">
|
|
40
40
|
<div class="mr-4">
|
|
41
|
-
<b-dropdown variant="secondary" size="sm">
|
|
41
|
+
<b-dropdown variant="outline-secondary" size="sm">
|
|
42
42
|
<template #button-content>
|
|
43
|
-
<span>
|
|
43
|
+
<span>
|
|
44
|
+
<b-icon
|
|
45
|
+
v-if="showBadge"
|
|
46
|
+
icon="circle-fill"
|
|
47
|
+
:variant="badgeVariant"
|
|
48
|
+
/>
|
|
49
|
+
{{ $t(titleDropdown) }}
|
|
50
|
+
</span>
|
|
44
51
|
</template>
|
|
45
52
|
<b-dropdown-item
|
|
46
53
|
variant="success"
|
|
@@ -61,37 +68,38 @@
|
|
|
61
68
|
<b-dropdown-item
|
|
62
69
|
@click="handleDropdownSelection('requests_dropdown', 'all')"
|
|
63
70
|
>
|
|
64
|
-
{{ $t(
|
|
71
|
+
{{ $t("View All") }}
|
|
65
72
|
</b-dropdown-item>
|
|
66
73
|
</b-dropdown>
|
|
67
74
|
</div>
|
|
68
75
|
</template>
|
|
69
76
|
<template v-if="dataControl.dropdownShow === 'tasks'">
|
|
70
77
|
<div class="mr-4">
|
|
71
|
-
<b-dropdown variant="secondary" size="sm">
|
|
78
|
+
<b-dropdown variant="outline-secondary" size="sm">
|
|
72
79
|
<template #button-content>
|
|
73
|
-
<span>
|
|
80
|
+
<span>
|
|
81
|
+
<b-icon
|
|
82
|
+
v-if="showBadge"
|
|
83
|
+
icon="circle-fill"
|
|
84
|
+
:variant="badgeVariant"
|
|
85
|
+
/>
|
|
86
|
+
{{ $t(titleDropdown) }}
|
|
87
|
+
</span>
|
|
74
88
|
</template>
|
|
75
89
|
<b-dropdown-item
|
|
90
|
+
variant="warning"
|
|
76
91
|
@click="handleDropdownSelection('tasks', 'In Progress')"
|
|
77
92
|
>
|
|
78
|
-
<
|
|
79
|
-
:variant="'warning'"
|
|
80
|
-
:text="countInProgress"
|
|
81
|
-
:label="'In Progress'"
|
|
82
|
-
></AvatarDropdown>
|
|
93
|
+
<i class="fas fa-circle mr-2" />{{ $t("In Progress") }}
|
|
83
94
|
</b-dropdown-item>
|
|
84
95
|
<b-dropdown-item
|
|
96
|
+
variant="danger"
|
|
85
97
|
@click="handleDropdownSelection('tasks', 'Overdue')"
|
|
86
98
|
>
|
|
87
|
-
<
|
|
88
|
-
:variant="'danger'"
|
|
89
|
-
:text="countOverdue"
|
|
90
|
-
:label="'Overdue'"
|
|
91
|
-
></AvatarDropdown>
|
|
99
|
+
<i class="fas fa-circle mr-2" />{{ $t("Overdue") }}
|
|
92
100
|
</b-dropdown-item>
|
|
93
101
|
<b-dropdown-item @click="handleDropdownSelection('tasks', 'all')">
|
|
94
|
-
{{ $t(
|
|
102
|
+
{{ $t("View All") }}
|
|
95
103
|
</b-dropdown-item>
|
|
96
104
|
</b-dropdown>
|
|
97
105
|
</div>
|
|
@@ -99,7 +107,7 @@
|
|
|
99
107
|
<div>
|
|
100
108
|
<div class="d-flex justify-content-end">
|
|
101
109
|
<button
|
|
102
|
-
class="btn btn-outline-
|
|
110
|
+
class="btn btn-outline-secondary border-0 mr-1"
|
|
103
111
|
@click="toggleInput(dataControl.dropdownShow)"
|
|
104
112
|
>
|
|
105
113
|
<i class="fas fa-search" />
|
|
@@ -146,10 +154,9 @@
|
|
|
146
154
|
import FormTasks from "./form-tasks.vue";
|
|
147
155
|
import FormRequests from "./form-requests.vue";
|
|
148
156
|
import FormNewRequest from "./form-new-request.vue";
|
|
149
|
-
import AvatarDropdown from "./avatar-dropdown.vue";
|
|
150
157
|
|
|
151
158
|
export default {
|
|
152
|
-
components: { FormTasks, FormRequests, FormNewRequest
|
|
159
|
+
components: { FormTasks, FormRequests, FormNewRequest },
|
|
153
160
|
mixins: [],
|
|
154
161
|
props: ["listOption"],
|
|
155
162
|
data() {
|
|
@@ -157,13 +164,18 @@ export default {
|
|
|
157
164
|
optionRequest: "by_me",
|
|
158
165
|
dropdownRequest: "In Progress",
|
|
159
166
|
titleDropdown: "View All",
|
|
160
|
-
|
|
161
|
-
countOverdue: "0",
|
|
167
|
+
viewAll: "View All",
|
|
162
168
|
title: this.$t("List Table"),
|
|
163
169
|
dataControl: {},
|
|
164
170
|
searchCriteria: "",
|
|
165
171
|
showInput: false,
|
|
166
|
-
pmql: ""
|
|
172
|
+
pmql: "",
|
|
173
|
+
badgeVariant: "",
|
|
174
|
+
typeSelected: "",
|
|
175
|
+
showBadge: false,
|
|
176
|
+
customStyle: {
|
|
177
|
+
"border-radius": "8px"
|
|
178
|
+
}
|
|
167
179
|
};
|
|
168
180
|
},
|
|
169
181
|
watch: {
|
|
@@ -178,16 +190,18 @@ export default {
|
|
|
178
190
|
methods: {
|
|
179
191
|
getData(data) {
|
|
180
192
|
this.dataControl = data.dataControls;
|
|
181
|
-
this.countOverdue = data.tasksDropdown[0];
|
|
182
|
-
this.countInProgress = data.tasksDropdown[1];
|
|
183
193
|
},
|
|
184
194
|
openExternalLink() {
|
|
185
195
|
window.open(this.dataControl.url, "_blank");
|
|
186
196
|
},
|
|
187
197
|
handleDropdownSelection(listType, valueSelected) {
|
|
188
198
|
const combinedFilter = [];
|
|
199
|
+
this.typeSelected = listType;
|
|
189
200
|
if (listType === "tasks") {
|
|
190
201
|
this.$root.$emit("dropdownSelectionTask", valueSelected);
|
|
202
|
+
this.titleDropdown =
|
|
203
|
+
valueSelected === "all" ? this.viewAll : valueSelected;
|
|
204
|
+
this.colorBadge();
|
|
191
205
|
} else {
|
|
192
206
|
if (listType === "requests_filter") {
|
|
193
207
|
this.optionRequest = valueSelected;
|
|
@@ -199,6 +213,9 @@ export default {
|
|
|
199
213
|
}
|
|
200
214
|
}
|
|
201
215
|
if (listType === "requests_dropdown") {
|
|
216
|
+
this.titleDropdown =
|
|
217
|
+
valueSelected === "all" ? this.viewAll : valueSelected;
|
|
218
|
+
this.colorBadge();
|
|
202
219
|
this.dropdownRequest = valueSelected;
|
|
203
220
|
}
|
|
204
221
|
combinedFilter.push(this.optionRequest);
|
|
@@ -233,6 +250,36 @@ export default {
|
|
|
233
250
|
clearSearch(listType) {
|
|
234
251
|
this.searchCriteria = "";
|
|
235
252
|
this.toggleInput(listType);
|
|
253
|
+
},
|
|
254
|
+
/**
|
|
255
|
+
* Set the badge's color of the filter selected
|
|
256
|
+
*/
|
|
257
|
+
colorBadge() {
|
|
258
|
+
if (this.titleDropdown === "In Progress") {
|
|
259
|
+
if (this.typeSelected === "tasks") {
|
|
260
|
+
this.badgeVariant = "warning";
|
|
261
|
+
}
|
|
262
|
+
if (this.typeSelected === "requests_dropdown") {
|
|
263
|
+
this.badgeVariant = "success";
|
|
264
|
+
}
|
|
265
|
+
this.showBadge = true;
|
|
266
|
+
}
|
|
267
|
+
if (this.titleDropdown === "Overdue") {
|
|
268
|
+
this.badgeVariant = "danger";
|
|
269
|
+
this.showBadge = true;
|
|
270
|
+
}
|
|
271
|
+
if (this.titleDropdown === "Overdue") {
|
|
272
|
+
this.badgeVariant = "danger";
|
|
273
|
+
this.showBadge = true;
|
|
274
|
+
}
|
|
275
|
+
if (this.titleDropdown === "Completed") {
|
|
276
|
+
this.badgeVariant = "primary";
|
|
277
|
+
this.showBadge = true;
|
|
278
|
+
}
|
|
279
|
+
if (this.titleDropdown === "View All" || this.titleDropdown === "all") {
|
|
280
|
+
this.badgeVariant = "";
|
|
281
|
+
this.showBadge = false;
|
|
282
|
+
}
|
|
236
283
|
}
|
|
237
284
|
}
|
|
238
285
|
};
|
|
@@ -276,7 +323,7 @@ export default {
|
|
|
276
323
|
overflow: auto;
|
|
277
324
|
}
|
|
278
325
|
|
|
279
|
-
.btn-
|
|
280
|
-
|
|
326
|
+
.btn-outline-secondary {
|
|
327
|
+
border: none;
|
|
281
328
|
}
|
|
282
329
|
</style>
|