@processmaker/screen-builder 2.76.2 → 2.76.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.common.js +1772 -1026
- package/dist/vue-form-builder.common.js.map +1 -1
- package/dist/vue-form-builder.css +1 -1
- package/dist/vue-form-builder.umd.js +1772 -1026
- package/dist/vue-form-builder.umd.js.map +1 -1
- package/dist/vue-form-builder.umd.min.js +9 -9
- package/dist/vue-form-builder.umd.min.js.map +1 -1
- package/package.json +3 -3
- package/src/components/renderer/form-record-list.vue +8 -1
- package/src/components/vue-form-renderer.vue +66 -11
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@processmaker/screen-builder",
|
|
3
|
-
"version": "2.76.
|
|
3
|
+
"version": "2.76.4",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"serve": "vue-cli-service serve",
|
|
6
6
|
"build": "vue-cli-service build",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"@cypress/code-coverage": "^3.8.1",
|
|
40
40
|
"@fortawesome/fontawesome-free": "^5.6.1",
|
|
41
41
|
"@panter/vue-i18next": "^0.15.2",
|
|
42
|
-
"@processmaker/vue-form-elements": "0.49.
|
|
42
|
+
"@processmaker/vue-form-elements": "0.49.3",
|
|
43
43
|
"@processmaker/vue-multiselect": "^2.2.0",
|
|
44
44
|
"@vue/cli-plugin-babel": "^3.6.0",
|
|
45
45
|
"@vue/cli-plugin-e2e-cypress": "^4.0.3",
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
},
|
|
89
89
|
"peerDependencies": {
|
|
90
90
|
"@panter/vue-i18next": "^0.15.0",
|
|
91
|
-
"@processmaker/vue-form-elements": "0.49.
|
|
91
|
+
"@processmaker/vue-form-elements": "0.49.3",
|
|
92
92
|
"i18next": "^15.0.8",
|
|
93
93
|
"vue": "^2.6.12",
|
|
94
94
|
"vuex": "^3.1.1"
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
<b-modal
|
|
68
68
|
:static="true"
|
|
69
69
|
@ok="handleOk"
|
|
70
|
-
@hidden="
|
|
70
|
+
@hidden="handleHideAddModal"
|
|
71
71
|
size="lg"
|
|
72
72
|
v-if="editable && !selfReferenced"
|
|
73
73
|
ref="addModal"
|
|
@@ -95,6 +95,7 @@
|
|
|
95
95
|
<b-modal
|
|
96
96
|
:static="true"
|
|
97
97
|
@ok="edit"
|
|
98
|
+
@hidden="$refs.addRenderer.hasSubmitted(false)"
|
|
98
99
|
size="lg"
|
|
99
100
|
v-if="editable && !selfReferenced"
|
|
100
101
|
ref="editModal"
|
|
@@ -380,6 +381,7 @@ export default {
|
|
|
380
381
|
});
|
|
381
382
|
},
|
|
382
383
|
edit(event) {
|
|
384
|
+
this.$refs.addRenderer.hasSubmitted(true);
|
|
383
385
|
if (this.$refs.editRenderer.$refs.renderer.$refs.component.$v.vdata.$invalid) {
|
|
384
386
|
event.preventDefault();
|
|
385
387
|
return;
|
|
@@ -411,7 +413,12 @@ export default {
|
|
|
411
413
|
let {_parent, ...result} = this.addItem;
|
|
412
414
|
this.initFormValues = _.cloneDeep(result);
|
|
413
415
|
},
|
|
416
|
+
handleHideAddModal() {
|
|
417
|
+
this.addItem = this.initFormValues;
|
|
418
|
+
this.$refs.addRenderer.hasSubmitted(false);
|
|
419
|
+
},
|
|
414
420
|
async handleOk(bvModalEvt) {
|
|
421
|
+
this.$refs.addRenderer.hasSubmitted(true);
|
|
415
422
|
bvModalEvt.preventDefault();
|
|
416
423
|
|
|
417
424
|
if (this.$refs.addRenderer.$refs.renderer.$refs.component.$v.vdata.$invalid) {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div
|
|
3
3
|
id="vue-form-renderer"
|
|
4
|
+
ref="formRendererContainer"
|
|
4
5
|
:class="[containerClass, containerDeviceClass]"
|
|
5
6
|
:style="cssDevice"
|
|
6
7
|
data-cy="screen-renderer-container"
|
|
@@ -104,6 +105,7 @@ export default {
|
|
|
104
105
|
},
|
|
105
106
|
},
|
|
106
107
|
scrollable: null,
|
|
108
|
+
containerObserver: null,
|
|
107
109
|
};
|
|
108
110
|
},
|
|
109
111
|
computed: {
|
|
@@ -156,14 +158,17 @@ export default {
|
|
|
156
158
|
},
|
|
157
159
|
created() {
|
|
158
160
|
this.parseCss = _.debounce(this.parseCss, 500, {leading: true});
|
|
161
|
+
|
|
162
|
+
this.containerObserver = new ResizeObserver(this.onContainerObserver);
|
|
159
163
|
},
|
|
160
164
|
mounted() {
|
|
161
|
-
this.parseCss();
|
|
162
165
|
this.registerCustomFunctions();
|
|
163
166
|
if (window.ProcessMaker && window.ProcessMaker.EventBus) {
|
|
164
167
|
window.ProcessMaker.EventBus.$emit('screen-renderer-init', this);
|
|
165
168
|
}
|
|
166
169
|
this.scrollable = Scrollparent(this.$el);
|
|
170
|
+
|
|
171
|
+
this.containerObserver.observe(this.$refs.formRendererContainer);
|
|
167
172
|
},
|
|
168
173
|
methods: {
|
|
169
174
|
...mapActions("globalErrorsModule", ["validate", "hasSubmitted", "showValidationOnLoad"]),
|
|
@@ -230,7 +235,8 @@ export default {
|
|
|
230
235
|
this.$emit('submit', this.data);
|
|
231
236
|
},
|
|
232
237
|
parseCss() {
|
|
233
|
-
const containerSelector =
|
|
238
|
+
const containerSelector = `.${this.containerClass}`;
|
|
239
|
+
|
|
234
240
|
try {
|
|
235
241
|
const ast = csstree.parse(this.customCss, {
|
|
236
242
|
onParseError(error) {
|
|
@@ -238,16 +244,13 @@ export default {
|
|
|
238
244
|
throw error.formattedMessage;
|
|
239
245
|
},
|
|
240
246
|
});
|
|
247
|
+
|
|
241
248
|
let i = 0;
|
|
242
249
|
csstree.walk(ast, function(node, item, list) {
|
|
243
|
-
if (
|
|
244
|
-
node.type.match(/^.+Selector$/) &&
|
|
245
|
-
node.name !== containerSelector &&
|
|
246
|
-
list
|
|
247
|
-
) {
|
|
250
|
+
if (node.type.match(/^.+Selector$/) && node.name !== containerSelector && list) {
|
|
248
251
|
// Wait until we get to the first item before prepending our container selector
|
|
249
252
|
if (!item.prev) {
|
|
250
|
-
list.prependData({type: 'WhiteSpace', loc: null, value: ' '});
|
|
253
|
+
list.prependData({ type: 'WhiteSpace', loc: null, value: ' ' });
|
|
251
254
|
list.prependData({
|
|
252
255
|
type: 'TypeSelector',
|
|
253
256
|
loc: null,
|
|
@@ -256,14 +259,61 @@ export default {
|
|
|
256
259
|
}
|
|
257
260
|
}
|
|
258
261
|
if (i > 5000) {
|
|
259
|
-
throw 'CSS is too
|
|
262
|
+
throw Error('CSS is too long');
|
|
260
263
|
}
|
|
261
|
-
|
|
264
|
+
|
|
265
|
+
i += 1;
|
|
266
|
+
});
|
|
267
|
+
|
|
268
|
+
// Find the media block
|
|
269
|
+
const mediaConditions = [];
|
|
270
|
+
csstree.walk(ast, {
|
|
271
|
+
visit: 'Atrule',
|
|
272
|
+
enter: (node, item, list) => {
|
|
273
|
+
if (!item.prev && node.name === 'media') {
|
|
274
|
+
const mediaCondition = {
|
|
275
|
+
minWidth: 0,
|
|
276
|
+
maxWidth: Math.max(document.documentElement.clientWidth, window.innerWidth || 0),
|
|
277
|
+
rules: [],
|
|
278
|
+
};
|
|
279
|
+
|
|
280
|
+
csstree.walk(node.prelude, {
|
|
281
|
+
visit: 'MediaFeature',
|
|
282
|
+
enter: (featureNode) => {
|
|
283
|
+
if (['min-width', 'max-width'].includes(featureNode.name)) {
|
|
284
|
+
mediaCondition[_.camelCase(featureNode.name)] = parseInt(featureNode.value.value, 10);
|
|
285
|
+
|
|
286
|
+
if (mediaCondition.rules.length === 0) {
|
|
287
|
+
csstree.walk(node.block, {
|
|
288
|
+
visit: 'Rule',
|
|
289
|
+
enter: (ruleNode) => {
|
|
290
|
+
const rule = csstree.generate(ruleNode);
|
|
291
|
+
|
|
292
|
+
mediaCondition.rules.push(rule);
|
|
293
|
+
},
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
mediaConditions.push(mediaCondition);
|
|
298
|
+
}
|
|
299
|
+
},
|
|
300
|
+
});
|
|
301
|
+
|
|
302
|
+
list.remove(item);
|
|
303
|
+
}
|
|
304
|
+
},
|
|
262
305
|
});
|
|
263
306
|
|
|
264
307
|
this.customCssWrapped = csstree.generate(ast);
|
|
265
308
|
|
|
266
|
-
|
|
309
|
+
mediaConditions.forEach((condition) => {
|
|
310
|
+
const { width: currentWidth } = this.$refs.formRendererContainer.getBoundingClientRect();
|
|
311
|
+
|
|
312
|
+
if (currentWidth >= condition.minWidth && currentWidth <= condition.maxWidth) {
|
|
313
|
+
this.customCssWrapped += condition.rules.join(' ');
|
|
314
|
+
}
|
|
315
|
+
});
|
|
316
|
+
|
|
267
317
|
this.$emit('css-errors', '');
|
|
268
318
|
} catch (error) {
|
|
269
319
|
this.$emit('css-errors', error);
|
|
@@ -275,6 +325,11 @@ export default {
|
|
|
275
325
|
setCurrentPage(page) {
|
|
276
326
|
this.$refs.renderer.setCurrentPage(page);
|
|
277
327
|
},
|
|
328
|
+
onContainerObserver(entries) {
|
|
329
|
+
// Control coordinates
|
|
330
|
+
const controlEl = entries[0].target.getBoundingClientRect();
|
|
331
|
+
this.parseCss();
|
|
332
|
+
},
|
|
278
333
|
},
|
|
279
334
|
};
|
|
280
335
|
</script>
|