@formio/js 5.0.0-rc.69 → 5.0.0-rc.70
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/formio.embed.js +1 -1
- package/dist/formio.embed.min.js +1 -1
- package/dist/formio.embed.min.js.LICENSE.txt +1 -1
- package/dist/formio.form.js +28 -17
- package/dist/formio.form.min.js +1 -1
- package/dist/formio.form.min.js.LICENSE.txt +1 -1
- package/dist/formio.full.js +29 -18
- package/dist/formio.full.min.js +1 -1
- package/dist/formio.full.min.js.LICENSE.txt +1 -1
- package/dist/formio.js +3 -3
- package/dist/formio.min.js +1 -1
- package/dist/formio.min.js.LICENSE.txt +1 -1
- package/dist/formio.utils.js +21 -10
- package/dist/formio.utils.min.js +1 -1
- package/dist/formio.utils.min.js.LICENSE.txt +1 -1
- package/lib/cjs/Webform.js +1 -1
- package/lib/cjs/WebformBuilder.js +11 -2
- package/lib/cjs/components/_classes/nested/NestedComponent.d.ts +2 -1
- package/lib/cjs/components/_classes/nested/NestedComponent.js +4 -1
- package/lib/cjs/components/currency/Currency.d.ts +1 -0
- package/lib/cjs/components/number/Number.d.ts +7 -1
- package/lib/cjs/components/number/Number.js +11 -0
- package/lib/cjs/components/number/fixtures/comp10.d.ts +18 -0
- package/lib/cjs/components/number/fixtures/comp10.js +21 -0
- package/lib/cjs/components/number/fixtures/index.d.ts +2 -1
- package/lib/cjs/components/number/fixtures/index.js +3 -1
- package/lib/cjs/components/panel/Panel.d.ts +1 -0
- package/lib/cjs/components/panel/Panel.js +1 -0
- package/lib/cjs/components/time/Time.d.ts +2 -2
- package/lib/cjs/components/time/Time.js +3 -2
- package/lib/cjs/components/time/fixtures/comp4.d.ts +166 -0
- package/lib/cjs/components/time/fixtures/comp4.js +171 -0
- package/lib/cjs/components/time/fixtures/index.d.ts +2 -1
- package/lib/cjs/components/time/fixtures/index.js +3 -1
- package/lib/cjs/utils/conditionOperators/IsEmptyValue.js +4 -3
- package/lib/cjs/utils/conditionOperators/IsEqualTo.js +3 -3
- package/lib/cjs/utils/utils.d.ts +1 -10
- package/lib/cjs/utils/utils.js +59 -7
- package/lib/mjs/Webform.js +1 -1
- package/lib/mjs/WebformBuilder.js +10 -2
- package/lib/mjs/components/_classes/nested/NestedComponent.d.ts +2 -1
- package/lib/mjs/components/_classes/nested/NestedComponent.js +4 -1
- package/lib/mjs/components/currency/Currency.d.ts +1 -0
- package/lib/mjs/components/number/Number.d.ts +7 -1
- package/lib/mjs/components/number/Number.js +11 -0
- package/lib/mjs/components/number/fixtures/comp10.d.ts +18 -0
- package/lib/mjs/components/number/fixtures/comp10.js +19 -0
- package/lib/mjs/components/number/fixtures/index.d.ts +2 -1
- package/lib/mjs/components/number/fixtures/index.js +2 -1
- package/lib/mjs/components/panel/Panel.d.ts +1 -0
- package/lib/mjs/components/panel/Panel.js +1 -0
- package/lib/mjs/components/time/Time.d.ts +2 -2
- package/lib/mjs/components/time/Time.js +3 -2
- package/lib/mjs/components/time/fixtures/comp4.d.ts +166 -0
- package/lib/mjs/components/time/fixtures/comp4.js +169 -0
- package/lib/mjs/components/time/fixtures/index.d.ts +2 -1
- package/lib/mjs/components/time/fixtures/index.js +2 -1
- package/lib/mjs/utils/conditionOperators/IsEmptyValue.js +3 -3
- package/lib/mjs/utils/conditionOperators/IsEqualTo.js +1 -1
- package/lib/mjs/utils/utils.d.ts +1 -10
- package/lib/mjs/utils/utils.js +58 -7
- package/package.json +2 -2
@@ -0,0 +1,169 @@
|
|
1
|
+
export default {
|
2
|
+
"type": "form",
|
3
|
+
"display": "wizard",
|
4
|
+
"components": [
|
5
|
+
{
|
6
|
+
"title": "Page 1",
|
7
|
+
"breadcrumbClickable": true,
|
8
|
+
"buttonSettings": {
|
9
|
+
"previous": true,
|
10
|
+
"cancel": true,
|
11
|
+
"next": true
|
12
|
+
},
|
13
|
+
"navigateOnEnter": false,
|
14
|
+
"saveOnEnter": false,
|
15
|
+
"scrollToTop": false,
|
16
|
+
"collapsible": false,
|
17
|
+
"key": "page1",
|
18
|
+
"type": "panel",
|
19
|
+
"label": "Page 1",
|
20
|
+
"components": [
|
21
|
+
{
|
22
|
+
"label": "Time",
|
23
|
+
"disabled": true,
|
24
|
+
"alwaysEnabled": false,
|
25
|
+
"tableView": true,
|
26
|
+
"defaultValue": "03:03 PM",
|
27
|
+
"key": "time1",
|
28
|
+
"type": "time",
|
29
|
+
"input": true,
|
30
|
+
"inputMask": "99:99",
|
31
|
+
"hideOnChildrenHidden": false,
|
32
|
+
"id": "efw9yyq",
|
33
|
+
"placeholder": "",
|
34
|
+
"prefix": "",
|
35
|
+
"customClass": "",
|
36
|
+
"suffix": "",
|
37
|
+
"multiple": false,
|
38
|
+
"protected": false,
|
39
|
+
"unique": false,
|
40
|
+
"persistent": true,
|
41
|
+
"hidden": false,
|
42
|
+
"clearOnHide": true,
|
43
|
+
"refreshOn": "",
|
44
|
+
"redrawOn": "",
|
45
|
+
"modalEdit": false,
|
46
|
+
"dataGridLabel": false,
|
47
|
+
"labelPosition": "top",
|
48
|
+
"description": "",
|
49
|
+
"errorLabel": "",
|
50
|
+
"tooltip": "",
|
51
|
+
"hideLabel": false,
|
52
|
+
"tabindex": "",
|
53
|
+
"autofocus": false,
|
54
|
+
"dbIndex": false,
|
55
|
+
"customDefaultValue": "",
|
56
|
+
"calculateValue": "",
|
57
|
+
"calculateServer": false,
|
58
|
+
"widget": {
|
59
|
+
"type": "input"
|
60
|
+
},
|
61
|
+
"attributes": {},
|
62
|
+
"validateOn": "change",
|
63
|
+
"validate": {
|
64
|
+
"required": false,
|
65
|
+
"custom": "",
|
66
|
+
"customPrivate": false,
|
67
|
+
"strictDateValidation": false,
|
68
|
+
"multiple": false,
|
69
|
+
"unique": false,
|
70
|
+
"minLength": "",
|
71
|
+
"maxLength": "",
|
72
|
+
"pattern": ""
|
73
|
+
},
|
74
|
+
"conditional": {
|
75
|
+
"show": null,
|
76
|
+
"when": null,
|
77
|
+
"eq": ""
|
78
|
+
},
|
79
|
+
"overlay": {
|
80
|
+
"style": "",
|
81
|
+
"left": "",
|
82
|
+
"top": "",
|
83
|
+
"width": "",
|
84
|
+
"height": ""
|
85
|
+
},
|
86
|
+
"allowCalculateOverride": false,
|
87
|
+
"encrypted": false,
|
88
|
+
"showCharCount": false,
|
89
|
+
"showWordCount": false,
|
90
|
+
"properties": {},
|
91
|
+
"allowMultipleMasks": false,
|
92
|
+
"addons": [],
|
93
|
+
"mask": false,
|
94
|
+
"inputType": "time",
|
95
|
+
"inputFormat": "plain",
|
96
|
+
"displayMask": "",
|
97
|
+
"spellcheck": true,
|
98
|
+
"truncateMultipleSpaces": false,
|
99
|
+
"format": "HH:mm",
|
100
|
+
"dataFormat": "HH:mm:ss"
|
101
|
+
}
|
102
|
+
],
|
103
|
+
"input": false,
|
104
|
+
"tableView": false,
|
105
|
+
"id": "e7vej1d",
|
106
|
+
"placeholder": "",
|
107
|
+
"prefix": "",
|
108
|
+
"customClass": "",
|
109
|
+
"suffix": "",
|
110
|
+
"multiple": false,
|
111
|
+
"defaultValue": null,
|
112
|
+
"protected": false,
|
113
|
+
"unique": false,
|
114
|
+
"persistent": false,
|
115
|
+
"hidden": false,
|
116
|
+
"clearOnHide": false,
|
117
|
+
"refreshOn": "",
|
118
|
+
"redrawOn": "",
|
119
|
+
"modalEdit": false,
|
120
|
+
"dataGridLabel": false,
|
121
|
+
"labelPosition": "top",
|
122
|
+
"description": "",
|
123
|
+
"errorLabel": "",
|
124
|
+
"tooltip": "",
|
125
|
+
"hideLabel": false,
|
126
|
+
"tabindex": "",
|
127
|
+
"disabled": false,
|
128
|
+
"autofocus": false,
|
129
|
+
"dbIndex": false,
|
130
|
+
"customDefaultValue": "",
|
131
|
+
"calculateValue": "",
|
132
|
+
"calculateServer": false,
|
133
|
+
"widget": null,
|
134
|
+
"attributes": {},
|
135
|
+
"validateOn": "change",
|
136
|
+
"validate": {
|
137
|
+
"required": false,
|
138
|
+
"custom": "",
|
139
|
+
"customPrivate": false,
|
140
|
+
"strictDateValidation": false,
|
141
|
+
"multiple": false,
|
142
|
+
"unique": false
|
143
|
+
},
|
144
|
+
"conditional": {
|
145
|
+
"show": null,
|
146
|
+
"when": null,
|
147
|
+
"eq": ""
|
148
|
+
},
|
149
|
+
"overlay": {
|
150
|
+
"style": "",
|
151
|
+
"left": "",
|
152
|
+
"top": "",
|
153
|
+
"width": "",
|
154
|
+
"height": ""
|
155
|
+
},
|
156
|
+
"allowCalculateOverride": false,
|
157
|
+
"encrypted": false,
|
158
|
+
"showCharCount": false,
|
159
|
+
"showWordCount": false,
|
160
|
+
"properties": {},
|
161
|
+
"allowMultipleMasks": false,
|
162
|
+
"addons": [],
|
163
|
+
"tree": false,
|
164
|
+
"lazyLoad": false,
|
165
|
+
"theme": "default",
|
166
|
+
"breadcrumb": "default"
|
167
|
+
}
|
168
|
+
],
|
169
|
+
};
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import comp1 from './comp1';
|
2
2
|
import comp2 from './comp2';
|
3
3
|
import comp3 from './comp3';
|
4
|
+
import comp4 from './comp4';
|
4
5
|
import timeForm from './timeForm';
|
5
6
|
import timeForm2 from './timeForm2';
|
6
|
-
export { comp1, comp2, comp3, timeForm, timeForm2 };
|
7
|
+
export { comp1, comp2, comp3, comp4, timeForm, timeForm2 };
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import comp1 from './comp1';
|
2
2
|
import comp2 from './comp2';
|
3
3
|
import comp3 from './comp3';
|
4
|
+
import comp4 from './comp4';
|
4
5
|
import timeForm from './timeForm';
|
5
6
|
import timeForm2 from './timeForm2';
|
6
|
-
export { comp1, comp2, comp3, timeForm, timeForm2 };
|
7
|
+
export { comp1, comp2, comp3, comp4, timeForm, timeForm2 };
|
@@ -11,10 +11,10 @@ export default class IsEmptyValue extends ConditionOperator {
|
|
11
11
|
return false;
|
12
12
|
}
|
13
13
|
execute({ value, instance, conditionComponentPath }) {
|
14
|
-
const isEmptyValue = _.isEmpty(value);
|
14
|
+
const isEmptyValue = _.isEmpty(_.isNumber(value) ? String(value) : value);
|
15
15
|
if (instance && instance.root) {
|
16
|
-
const conditionTriggerComponent = instance.root.getComponent(conditionComponentPath);
|
17
|
-
return conditionTriggerComponent ? conditionTriggerComponent.isEmpty() : isEmptyValue;
|
16
|
+
const conditionTriggerComponent = instance.root?.getComponent && instance.root.getComponent(conditionComponentPath);
|
17
|
+
return conditionTriggerComponent?.isEmpty ? conditionTriggerComponent.isEmpty() : isEmptyValue;
|
18
18
|
}
|
19
19
|
return isEmptyValue;
|
20
20
|
}
|
@@ -17,7 +17,7 @@ export default class IsEqualTo extends ConditionOperator {
|
|
17
17
|
catch (e) { }
|
18
18
|
}
|
19
19
|
if (instance && instance.root) {
|
20
|
-
const conditionTriggerComponent = instance.root.getComponent(conditionComponentPath);
|
20
|
+
const conditionTriggerComponent = instance.root?.getComponent && instance.root.getComponent(conditionComponentPath);
|
21
21
|
if (conditionTriggerComponent
|
22
22
|
&& isSelectResourceWithObjectValue(conditionTriggerComponent.component)
|
23
23
|
&& conditionTriggerComponent.component?.template) {
|
package/lib/mjs/utils/utils.d.ts
CHANGED
@@ -56,16 +56,7 @@ export function isMongoId(text: string): boolean;
|
|
56
56
|
* @param {*} rowData - The contextual row data for the component.
|
57
57
|
*/
|
58
58
|
export function checkCalculated(component: import('@formio/core').Component, submission: import('@formio/core').Submission, rowData: any): void;
|
59
|
-
|
60
|
-
* Check if a simple conditional evaluates to true.
|
61
|
-
* @param {import('@formio/core').Component} component - The component to check for the conditional.
|
62
|
-
* @param {import('@formio/core').SimpleConditional} condition - The condition to check.
|
63
|
-
* @param {*} row - The row data for the component.
|
64
|
-
* @param {*} data - The full submission data.
|
65
|
-
* @param {import('../../src/components/_classes/component/Component').Component} instance - The instance of the component.
|
66
|
-
* @returns {boolean} - TRUE if the condition is true; FALSE otherwise.
|
67
|
-
*/
|
68
|
-
export function checkSimpleConditional(component: import('@formio/core').Component, condition: import('@formio/core').SimpleConditional, row: any, data: any, instance: any): boolean;
|
59
|
+
export function checkSimpleConditional(component: any, condition: any, row: any, data: any, instance: any): boolean;
|
69
60
|
/**
|
70
61
|
* Returns a components normalized value.
|
71
62
|
* @param {string} compPath - The full path to the component.
|
package/lib/mjs/utils/utils.js
CHANGED
@@ -145,6 +145,44 @@ export function checkCalculated(component, submission, rowData) {
|
|
145
145
|
* @param {import('../../src/components/_classes/component/Component').Component} instance - The instance of the component.
|
146
146
|
* @returns {boolean} - TRUE if the condition is true; FALSE otherwise.
|
147
147
|
*/
|
148
|
+
function getConditionalPathsRecursive(conditionPaths, data) {
|
149
|
+
let currentGlobalIndex = 0;
|
150
|
+
const conditionalPathsArray = [];
|
151
|
+
const getConditionalPaths = (data, currentPath = '', localIndex = 0) => {
|
152
|
+
currentPath = currentPath.replace(/^\.+|\.+$/g, '');
|
153
|
+
const currentLocalIndex = localIndex;
|
154
|
+
const currentData = _.get(data, currentPath);
|
155
|
+
if (Array.isArray(currentData) && currentData.filter(Boolean).length > 0) {
|
156
|
+
if (currentData.some(element => typeof element !== 'object')) {
|
157
|
+
return;
|
158
|
+
}
|
159
|
+
const hasInnerDataArray = currentData.find(x => Array.isArray(x[conditionPaths[currentLocalIndex]]));
|
160
|
+
if (hasInnerDataArray) {
|
161
|
+
currentData.forEach((_, indexOutside) => {
|
162
|
+
const innerCompDataPath = `${currentPath}[${indexOutside}].${conditionPaths[currentLocalIndex]}`;
|
163
|
+
getConditionalPaths(data, innerCompDataPath, currentLocalIndex + 1);
|
164
|
+
});
|
165
|
+
}
|
166
|
+
else {
|
167
|
+
currentData.forEach((x, index) => {
|
168
|
+
if (!_.isNil(x[conditionPaths[currentLocalIndex]])) {
|
169
|
+
const compDataPath = `${currentPath}[${index}].${conditionPaths[currentLocalIndex]}`;
|
170
|
+
conditionalPathsArray.push(compDataPath);
|
171
|
+
}
|
172
|
+
});
|
173
|
+
}
|
174
|
+
}
|
175
|
+
else {
|
176
|
+
if (!conditionPaths[currentGlobalIndex]) {
|
177
|
+
return;
|
178
|
+
}
|
179
|
+
currentGlobalIndex = currentGlobalIndex + 1;
|
180
|
+
getConditionalPaths(data, `${currentPath}.${conditionPaths[currentGlobalIndex - 1]}`, currentGlobalIndex);
|
181
|
+
}
|
182
|
+
};
|
183
|
+
getConditionalPaths(data);
|
184
|
+
return conditionalPathsArray;
|
185
|
+
}
|
148
186
|
export function checkSimpleConditional(component, condition, row, data, instance) {
|
149
187
|
if (condition.when) {
|
150
188
|
const value = getComponentActualValue(condition.when, data, row);
|
@@ -170,19 +208,32 @@ export function checkSimpleConditional(component, condition, row, data, instance
|
|
170
208
|
if (!conditionComponentPath) {
|
171
209
|
return true;
|
172
210
|
}
|
173
|
-
const
|
174
|
-
const
|
175
|
-
|
176
|
-
|
177
|
-
|
211
|
+
const splittedConditionPath = conditionComponentPath.split('.');
|
212
|
+
const conditionalPaths = instance?.parent?.type === 'datagrid' || instance?.parent?.type === 'editgrid' ? [] : getConditionalPathsRecursive(splittedConditionPath, data);
|
213
|
+
if (conditionalPaths.length > 0) {
|
214
|
+
return conditionalPaths.map((path) => {
|
215
|
+
const value = getComponentActualValue(path, data, row);
|
216
|
+
const ConditionOperator = ConditionOperators[operator];
|
217
|
+
return ConditionOperator
|
218
|
+
? new ConditionOperator().getResult({ value, comparedValue, instance, component, conditionComponentPath })
|
219
|
+
: true;
|
220
|
+
});
|
221
|
+
}
|
222
|
+
else {
|
223
|
+
const value = getComponentActualValue(conditionComponentPath, data, row);
|
224
|
+
const СonditionOperator = ConditionOperators[operator];
|
225
|
+
return СonditionOperator
|
226
|
+
? new СonditionOperator().getResult({ value, comparedValue, instance, component, conditionComponentPath })
|
227
|
+
: true;
|
228
|
+
}
|
178
229
|
});
|
179
230
|
let result = false;
|
180
231
|
switch (conjunction) {
|
181
232
|
case 'any':
|
182
|
-
result = _.some(conditionsResult, res => !!res);
|
233
|
+
result = _.some(conditionsResult.flat(), res => !!res);
|
183
234
|
break;
|
184
235
|
default:
|
185
|
-
result = _.every(conditionsResult, res => !!res);
|
236
|
+
result = _.every(conditionsResult.flat(), res => !!res);
|
186
237
|
}
|
187
238
|
return show ? result : !result;
|
188
239
|
}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@formio/js",
|
3
|
-
"version": "5.0.0-rc.
|
3
|
+
"version": "5.0.0-rc.70",
|
4
4
|
"description": "JavaScript powered Forms with JSON Form Builder",
|
5
5
|
"main": "lib/cjs/index.js",
|
6
6
|
"exports": {
|
@@ -81,7 +81,7 @@
|
|
81
81
|
"dependencies": {
|
82
82
|
"@formio/bootstrap": "3.0.0-rc.36",
|
83
83
|
"@formio/choices.js": "^10.2.1",
|
84
|
-
"@formio/core": "2.2.0-rc.
|
84
|
+
"@formio/core": "2.2.0-rc.9",
|
85
85
|
"@formio/text-mask-addons": "^3.8.0-formio.2",
|
86
86
|
"@formio/vanilla-text-mask": "^5.1.1-formio.1",
|
87
87
|
"abortcontroller-polyfill": "^1.7.5",
|