@formio/js 5.0.0-rc.91 → 5.0.0-rc.92
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 +20 -20
- package/dist/formio.form.min.js +1 -1
- package/dist/formio.form.min.js.LICENSE.txt +1 -1
- package/dist/formio.full.js +21 -21
- 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 +6 -6
- package/dist/formio.utils.min.js +1 -1
- package/dist/formio.utils.min.js.LICENSE.txt +1 -1
- package/lib/cjs/Webform.js +7 -1
- package/lib/cjs/components/_classes/component/Component.js +2 -2
- package/lib/cjs/components/_classes/component/editForm/Component.edit.conditional.js +1 -1
- package/lib/cjs/components/_classes/component/editForm/Component.edit.data.js +1 -1
- package/lib/cjs/components/_classes/component/editForm/utils.js +1 -1
- package/lib/cjs/components/day/Day.js +3 -0
- package/lib/cjs/components/editgrid/EditGrid.js +8 -2
- package/lib/cjs/components/editgrid/fixtures/comp19.d.ts +59 -0
- package/lib/cjs/components/editgrid/fixtures/comp19.js +73 -0
- package/lib/cjs/components/editgrid/fixtures/index.d.ts +2 -1
- package/lib/cjs/components/editgrid/fixtures/index.js +3 -1
- package/lib/cjs/components/form/editForm/Form.edit.data.js +1 -1
- package/lib/cjs/components/number/fixtures/comp11.d.ts +17 -0
- package/lib/cjs/components/number/fixtures/comp11.js +20 -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/time/Time.js +0 -6
- package/lib/cjs/components/time/fixtures/timeForm2.js +9 -0
- package/lib/mjs/Webform.js +6 -1
- package/lib/mjs/components/_classes/component/Component.js +2 -2
- package/lib/mjs/components/_classes/component/editForm/Component.edit.conditional.js +1 -1
- package/lib/mjs/components/_classes/component/editForm/Component.edit.data.js +1 -1
- package/lib/mjs/components/_classes/component/editForm/utils.js +1 -1
- package/lib/mjs/components/day/Day.js +3 -0
- package/lib/mjs/components/editgrid/EditGrid.js +8 -2
- package/lib/mjs/components/editgrid/fixtures/comp19.d.ts +59 -0
- package/lib/mjs/components/editgrid/fixtures/comp19.js +71 -0
- package/lib/mjs/components/editgrid/fixtures/index.d.ts +2 -1
- package/lib/mjs/components/editgrid/fixtures/index.js +2 -1
- package/lib/mjs/components/form/editForm/Form.edit.data.js +1 -1
- package/lib/mjs/components/number/fixtures/comp11.d.ts +17 -0
- package/lib/mjs/components/number/fixtures/comp11.js +18 -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/time/Time.js +0 -6
- package/lib/mjs/components/time/fixtures/timeForm2.js +9 -0
- package/package.json +3 -3
@@ -20,7 +20,7 @@
|
|
20
20
|
|
21
21
|
/*! @license DOMPurify 3.1.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.1.6/LICENSE */
|
22
22
|
|
23
|
-
/*! formiojs v5.0.0-rc.
|
23
|
+
/*! formiojs v5.0.0-rc.92 | https://unpkg.com/formiojs@5.0.0-rc.92/LICENSE.txt */
|
24
24
|
|
25
25
|
/**
|
26
26
|
* @license
|
package/lib/cjs/Webform.js
CHANGED
@@ -1228,9 +1228,15 @@ class Webform extends NestedDataComponent_1.default {
|
|
1228
1228
|
* @param {any} changes - The changes that have occured in the form.
|
1229
1229
|
*/
|
1230
1230
|
onChange(flags, changed, modified, changes) {
|
1231
|
+
var _a;
|
1231
1232
|
flags = flags || {};
|
1232
1233
|
let isChangeEventEmitted = false;
|
1233
|
-
|
1234
|
+
if (((_a = this.parent) === null || _a === void 0 ? void 0 : _a.subForm) === this) {
|
1235
|
+
super.onChange(Object.assign(Object.assign({}, flags), { modified }), false);
|
1236
|
+
}
|
1237
|
+
else {
|
1238
|
+
super.onChange(flags, true);
|
1239
|
+
}
|
1234
1240
|
const value = lodash_1.default.clone(this.submission);
|
1235
1241
|
flags.changed = value.changed = changed;
|
1236
1242
|
flags.changes = changes;
|
@@ -1738,12 +1738,12 @@ class Component extends Element_1.default {
|
|
1738
1738
|
var _a, _b, _c;
|
1739
1739
|
if ((_a = this.root) === null || _a === void 0 ? void 0 : _a.currentSelection) {
|
1740
1740
|
if ((_b = this.refs.input) === null || _b === void 0 ? void 0 : _b.length) {
|
1741
|
-
const {
|
1741
|
+
const { index } = this.root.currentSelection;
|
1742
1742
|
let input = this.refs.input[index];
|
1743
1743
|
const isInputRangeSelectable = (i) => /text|search|password|tel|url/i.test((i === null || i === void 0 ? void 0 : i.type) || '');
|
1744
1744
|
if (input) {
|
1745
1745
|
if (isInputRangeSelectable(input)) {
|
1746
|
-
input.setSelectionRange(
|
1746
|
+
input.setSelectionRange(input.value.length, input.value.length);
|
1747
1747
|
}
|
1748
1748
|
}
|
1749
1749
|
else {
|
@@ -50,6 +50,6 @@ exports.default = [
|
|
50
50
|
},
|
51
51
|
utils_1.default.javaScriptValue('Advanced Conditions', 'customConditional', 'conditional.json', 110, '<p>You must assign the <strong>show</strong> variable a boolean result.</p>' +
|
52
52
|
'<p><strong>Note: Advanced Conditional logic will override the results of the Simple Conditional logic.</strong></p>' +
|
53
|
-
'<h5>Example</h5><pre>show = !!data.showMe;</pre>', '<p><a href="
|
53
|
+
'<h5>Example</h5><pre>show = !!data.showMe;</pre>', '<p><a href="https://help.form.io/userguide/form-building/logic-and-conditions" target="_blank" rel="noopener noreferrer">Click here for an example</a></p>')
|
54
54
|
];
|
55
55
|
/* eslint-enable quotes, max-len */
|
@@ -140,7 +140,7 @@ exports.default = [
|
|
140
140
|
input: true
|
141
141
|
},
|
142
142
|
utils_1.default.javaScriptValue('Custom Default Value', 'customDefaultValue', 'customDefaultValue', 1000, '<p><h4>Example:</h4><pre>value = data.firstName + " " + data.lastName;</pre></p>', '<p><h4>Example:</h4><pre>{"cat": [{"var": "data.firstName"}, " ", {"var": "data.lastName"}]}</pre>'),
|
143
|
-
utils_1.default.javaScriptValue('Calculated Value', 'calculateValue', 'calculateValue', 1100, '<p><h4>Example:</h4><pre>value = data.a + data.b + data.c;</pre></p>', '<p><h4>Example:</h4><pre>{"+": [{"var": "data.a"}, {"var": "data.b"}, {"var": "data.c"}]}</pre><p><a href="
|
143
|
+
utils_1.default.javaScriptValue('Calculated Value', 'calculateValue', 'calculateValue', 1100, '<p><h4>Example:</h4><pre>value = data.a + data.b + data.c;</pre></p>', '<p><h4>Example:</h4><pre>{"+": [{"var": "data.a"}, {"var": "data.b"}, {"var": "data.c"}]}</pre><p><a href="https://help.form.io/userguide/form-building/logic-and-conditions#calculated-values" target="_blank" rel="noopener noreferrer">Click here for an example</a></p>', '<tr><th>token</th><td>The decoded JWT token for the authenticated user.</td></tr>'),
|
144
144
|
{
|
145
145
|
type: 'checkbox',
|
146
146
|
input: true,
|
@@ -55,7 +55,7 @@ const EditFormUtils = {
|
|
55
55
|
'<tr><th>value</th><td>The current value of the component.</td></tr>' +
|
56
56
|
'<tr><th>moment</th><td>The moment.js library for date manipulation.</td></tr>' +
|
57
57
|
'<tr><th>_</th><td>An instance of <a href="https://lodash.com/docs/" target="_blank" rel="noopener noreferrer">Lodash</a>.</td></tr>' +
|
58
|
-
'<tr><th>utils</th><td>An instance of the <a href="
|
58
|
+
'<tr><th>utils</th><td>An instance of the <a href="https://help.form.io/developers/javascript-development/javascript-utilities" target="_blank" rel="noopener noreferrer">FormioUtils</a> object.</td></tr>' +
|
59
59
|
'<tr><th>util</th><td>An alias for "utils".</td></tr>' +
|
60
60
|
'</table><br/>'
|
61
61
|
/* eslint-enable prefer-template */
|
@@ -13,6 +13,7 @@ const utils_1 = require("../../utils/utils");
|
|
13
13
|
const EditRowState = {
|
14
14
|
New: 'new',
|
15
15
|
Editing: 'editing',
|
16
|
+
Saving: 'saving',
|
16
17
|
Saved: 'saved',
|
17
18
|
Viewing: 'viewing',
|
18
19
|
Removed: 'removed',
|
@@ -798,6 +799,10 @@ class EditGridComponent extends NestedArrayComponent_1.default {
|
|
798
799
|
if (!this.component.rowDrafts) {
|
799
800
|
editRow.components.forEach((comp) => comp.setPristine(false));
|
800
801
|
}
|
802
|
+
// Mark the row with a 'Saving' state to trigger validation for future row changes
|
803
|
+
if (editRow.state === EditRowState.New) {
|
804
|
+
editRow.state = EditRowState.Saving;
|
805
|
+
}
|
801
806
|
const errors = this.validateRow(editRow, true);
|
802
807
|
if (!this.component.rowDrafts) {
|
803
808
|
if (errors.length) {
|
@@ -810,7 +815,7 @@ class EditGridComponent extends NestedArrayComponent_1.default {
|
|
810
815
|
this.root.focusedComponent = null;
|
811
816
|
}
|
812
817
|
switch (editRow.state) {
|
813
|
-
case EditRowState.
|
818
|
+
case EditRowState.Saving: {
|
814
819
|
const newIndex = dataValue.length;
|
815
820
|
dataValue.push(editRow.data);
|
816
821
|
editRow.components.forEach(component => component.rowIndex = newIndex);
|
@@ -970,7 +975,7 @@ class EditGridComponent extends NestedArrayComponent_1.default {
|
|
970
975
|
}
|
971
976
|
shouldValidateRow(editRow, dirty) {
|
972
977
|
return this.shouldValidateDraft(editRow) ||
|
973
|
-
editRow.state === EditRowState.
|
978
|
+
editRow.state === EditRowState.Saving ||
|
974
979
|
editRow.state === EditRowState.Editing ||
|
975
980
|
editRow.alerts ||
|
976
981
|
dirty;
|
@@ -1074,6 +1079,7 @@ class EditGridComponent extends NestedArrayComponent_1.default {
|
|
1074
1079
|
}
|
1075
1080
|
else if (errorContainer) {
|
1076
1081
|
errorContainer.textContent = '';
|
1082
|
+
this.removeClass(errorContainer, 'help-block');
|
1077
1083
|
}
|
1078
1084
|
}
|
1079
1085
|
}
|
@@ -0,0 +1,59 @@
|
|
1
|
+
declare namespace _default {
|
2
|
+
let _id: string;
|
3
|
+
let title: string;
|
4
|
+
let name: string;
|
5
|
+
let path: string;
|
6
|
+
let type: string;
|
7
|
+
let display: string;
|
8
|
+
let components: ({
|
9
|
+
label: string;
|
10
|
+
tableView: boolean;
|
11
|
+
validateWhenHidden: boolean;
|
12
|
+
rowDrafts: boolean;
|
13
|
+
key: string;
|
14
|
+
type: string;
|
15
|
+
displayAsTable: boolean;
|
16
|
+
input: boolean;
|
17
|
+
components: {
|
18
|
+
label: string;
|
19
|
+
columns: {
|
20
|
+
components: {
|
21
|
+
label: string;
|
22
|
+
applyMaskOn: string;
|
23
|
+
tableView: boolean;
|
24
|
+
validate: {
|
25
|
+
required: boolean;
|
26
|
+
};
|
27
|
+
validateWhenHidden: boolean;
|
28
|
+
key: string;
|
29
|
+
type: string;
|
30
|
+
input: boolean;
|
31
|
+
}[];
|
32
|
+
width: number;
|
33
|
+
offset: number;
|
34
|
+
push: number;
|
35
|
+
pull: number;
|
36
|
+
size: string;
|
37
|
+
currentWidth: number;
|
38
|
+
}[];
|
39
|
+
key: string;
|
40
|
+
type: string;
|
41
|
+
input: boolean;
|
42
|
+
tableView: boolean;
|
43
|
+
}[];
|
44
|
+
disableOnInvalid?: undefined;
|
45
|
+
} | {
|
46
|
+
type: string;
|
47
|
+
label: string;
|
48
|
+
key: string;
|
49
|
+
disableOnInvalid: boolean;
|
50
|
+
input: boolean;
|
51
|
+
tableView: boolean;
|
52
|
+
validateWhenHidden?: undefined;
|
53
|
+
rowDrafts?: undefined;
|
54
|
+
displayAsTable?: undefined;
|
55
|
+
components?: undefined;
|
56
|
+
})[];
|
57
|
+
let project: string;
|
58
|
+
}
|
59
|
+
export default _default;
|
@@ -0,0 +1,73 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.default = {
|
4
|
+
_id: '6704f3d329cf52a3ddd4e244',
|
5
|
+
title: 'uiu',
|
6
|
+
name: 'uiu',
|
7
|
+
path: 'uiu',
|
8
|
+
type: 'resource',
|
9
|
+
display: 'form',
|
10
|
+
components: [
|
11
|
+
{
|
12
|
+
label: 'Edit Grid',
|
13
|
+
tableView: false,
|
14
|
+
validateWhenHidden: false,
|
15
|
+
rowDrafts: false,
|
16
|
+
key: 'editGrid',
|
17
|
+
type: 'editgrid',
|
18
|
+
displayAsTable: false,
|
19
|
+
input: true,
|
20
|
+
components: [
|
21
|
+
{
|
22
|
+
label: 'Columns',
|
23
|
+
columns: [
|
24
|
+
{
|
25
|
+
components: [
|
26
|
+
{
|
27
|
+
label: 'Text Field',
|
28
|
+
applyMaskOn: 'change',
|
29
|
+
tableView: true,
|
30
|
+
validate: {
|
31
|
+
required: true,
|
32
|
+
},
|
33
|
+
validateWhenHidden: false,
|
34
|
+
key: 'textField',
|
35
|
+
type: 'textfield',
|
36
|
+
input: true,
|
37
|
+
},
|
38
|
+
],
|
39
|
+
width: 6,
|
40
|
+
offset: 0,
|
41
|
+
push: 0,
|
42
|
+
pull: 0,
|
43
|
+
size: 'md',
|
44
|
+
currentWidth: 6,
|
45
|
+
},
|
46
|
+
{
|
47
|
+
components: [],
|
48
|
+
width: 6,
|
49
|
+
offset: 0,
|
50
|
+
push: 0,
|
51
|
+
pull: 0,
|
52
|
+
size: 'md',
|
53
|
+
currentWidth: 6,
|
54
|
+
},
|
55
|
+
],
|
56
|
+
key: 'columns',
|
57
|
+
type: 'columns',
|
58
|
+
input: false,
|
59
|
+
tableView: false,
|
60
|
+
},
|
61
|
+
],
|
62
|
+
},
|
63
|
+
{
|
64
|
+
type: 'button',
|
65
|
+
label: 'Submit',
|
66
|
+
key: 'submit',
|
67
|
+
disableOnInvalid: true,
|
68
|
+
input: true,
|
69
|
+
tableView: false,
|
70
|
+
},
|
71
|
+
],
|
72
|
+
project: '66f66c655879bf08113cf465',
|
73
|
+
};
|
@@ -15,7 +15,8 @@ import comp14 from './comp14';
|
|
15
15
|
import comp15 from './comp15';
|
16
16
|
import comp16 from './comp16';
|
17
17
|
import comp18 from './comp18';
|
18
|
+
import comp19 from './comp19';
|
18
19
|
import compOpenWhenEmpty from './comp-openWhenEmpty';
|
19
20
|
import withOpenWhenEmptyAndConditions from './comp-with-conditions-and-openWhenEmpty';
|
20
21
|
import compWithCustomDefaultValue from './comp-with-custom-default-value';
|
21
|
-
export { comp1, comp2, comp3, comp4, comp5, comp6, comp7, comp8, comp9, comp10, comp11, comp12, comp13, comp14, comp15, comp16, comp17, comp18, compOpenWhenEmpty, withOpenWhenEmptyAndConditions, compWithCustomDefaultValue, compTestEvents };
|
22
|
+
export { comp1, comp2, comp3, comp4, comp5, comp6, comp7, comp8, comp9, comp10, comp11, comp12, comp13, comp14, comp15, comp16, comp17, comp18, comp19, compOpenWhenEmpty, withOpenWhenEmptyAndConditions, compWithCustomDefaultValue, compTestEvents };
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
4
|
};
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
-
exports.compTestEvents = exports.compWithCustomDefaultValue = exports.withOpenWhenEmptyAndConditions = exports.compOpenWhenEmpty = exports.comp18 = exports.comp17 = exports.comp16 = exports.comp15 = exports.comp14 = exports.comp13 = exports.comp12 = exports.comp11 = exports.comp10 = exports.comp9 = exports.comp8 = exports.comp7 = exports.comp6 = exports.comp5 = exports.comp4 = exports.comp3 = exports.comp2 = exports.comp1 = void 0;
|
6
|
+
exports.compTestEvents = exports.compWithCustomDefaultValue = exports.withOpenWhenEmptyAndConditions = exports.compOpenWhenEmpty = exports.comp19 = exports.comp18 = exports.comp17 = exports.comp16 = exports.comp15 = exports.comp14 = exports.comp13 = exports.comp12 = exports.comp11 = exports.comp10 = exports.comp9 = exports.comp8 = exports.comp7 = exports.comp6 = exports.comp5 = exports.comp4 = exports.comp3 = exports.comp2 = exports.comp1 = void 0;
|
7
7
|
const comp1_1 = __importDefault(require("./comp1"));
|
8
8
|
exports.comp1 = comp1_1.default;
|
9
9
|
const comp2_1 = __importDefault(require("./comp2"));
|
@@ -40,6 +40,8 @@ const comp17_1 = __importDefault(require("./comp17"));
|
|
40
40
|
exports.comp17 = comp17_1.default;
|
41
41
|
const comp18_1 = __importDefault(require("./comp18"));
|
42
42
|
exports.comp18 = comp18_1.default;
|
43
|
+
const comp19_1 = __importDefault(require("./comp19"));
|
44
|
+
exports.comp19 = comp19_1.default;
|
43
45
|
const comp_with_conditions_and_openWhenEmpty_1 = __importDefault(require("./comp-with-conditions-and-openWhenEmpty"));
|
44
46
|
exports.withOpenWhenEmptyAndConditions = comp_with_conditions_and_openWhenEmpty_1.default;
|
45
47
|
const comp_openWhenEmpty_1 = __importDefault(require("./comp-openWhenEmpty"));
|
@@ -7,7 +7,7 @@ const utils_1 = __importDefault(require("../../_classes/component/editForm/utils
|
|
7
7
|
/* eslint-disable max-len */
|
8
8
|
exports.default = [
|
9
9
|
utils_1.default.javaScriptValue('Custom Default Value', 'customDefaultValue', 'customDefaultValue', 120, '<p><h4>Example:</h4><pre>value = data.firstName + " " + data.lastName;</pre></p>', '<p><h4>Example:</h4><pre>{"cat": [{"var": "data.firstName"}, " ", {"var": "data.lastName"}]}</pre>'),
|
10
|
-
utils_1.default.javaScriptValue('Calculated Value', 'calculateValue', 'calculateValue', 130, '<p><h4>Example:</h4><pre>value = data.a + data.b + data.c;</pre></p>', '<p><h4>Example:</h4><pre>{"+": [{"var": "data.a"}, {"var": "data.b"}, {"var": "data.c"}]}</pre><p><a href="
|
10
|
+
utils_1.default.javaScriptValue('Calculated Value', 'calculateValue', 'calculateValue', 130, '<p><h4>Example:</h4><pre>value = data.a + data.b + data.c;</pre></p>', '<p><h4>Example:</h4><pre>{"+": [{"var": "data.a"}, {"var": "data.b"}, {"var": "data.c"}]}</pre><p><a href="https://help.form.io/userguide/form-building/logic-and-conditions#calculated-values" target="_blank" rel="noopener noreferrer">Click here for an example</a></p>'),
|
11
11
|
{
|
12
12
|
weight: 140,
|
13
13
|
type: 'checkbox',
|
@@ -0,0 +1,17 @@
|
|
1
|
+
declare namespace _default {
|
2
|
+
let components: {
|
3
|
+
label: string;
|
4
|
+
mask: boolean;
|
5
|
+
tableView: boolean;
|
6
|
+
modalEdit: boolean;
|
7
|
+
multiple: boolean;
|
8
|
+
delimiter: string;
|
9
|
+
requireDecimal: boolean;
|
10
|
+
inputFormat: string;
|
11
|
+
truncateMultipleSpaces: boolean;
|
12
|
+
key: string;
|
13
|
+
type: string;
|
14
|
+
input: boolean;
|
15
|
+
}[];
|
16
|
+
}
|
17
|
+
export default _default;
|
@@ -0,0 +1,20 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.default = {
|
4
|
+
components: [
|
5
|
+
{
|
6
|
+
label: 'Number',
|
7
|
+
mask: true,
|
8
|
+
tableView: false,
|
9
|
+
modalEdit: true,
|
10
|
+
multiple: true,
|
11
|
+
delimiter: ',',
|
12
|
+
requireDecimal: false,
|
13
|
+
inputFormat: 'plain',
|
14
|
+
truncateMultipleSpaces: false,
|
15
|
+
key: 'number',
|
16
|
+
type: 'number',
|
17
|
+
input: true
|
18
|
+
}
|
19
|
+
]
|
20
|
+
};
|
@@ -8,4 +8,5 @@ import comp7 from './comp7';
|
|
8
8
|
import comp8 from './comp8';
|
9
9
|
import comp9 from './comp9';
|
10
10
|
import comp10 from './comp10';
|
11
|
-
|
11
|
+
import comp11 from './comp11';
|
12
|
+
export { comp1, comp2, comp3, comp4, comp5, comp6, comp7, comp8, comp9, comp10, comp11 };
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
4
|
};
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
-
exports.comp10 = exports.comp9 = exports.comp8 = exports.comp7 = exports.comp6 = exports.comp5 = exports.comp4 = exports.comp3 = exports.comp2 = exports.comp1 = void 0;
|
6
|
+
exports.comp11 = exports.comp10 = exports.comp9 = exports.comp8 = exports.comp7 = exports.comp6 = exports.comp5 = exports.comp4 = exports.comp3 = exports.comp2 = exports.comp1 = void 0;
|
7
7
|
const comp1_1 = __importDefault(require("./comp1"));
|
8
8
|
exports.comp1 = comp1_1.default;
|
9
9
|
const comp2_1 = __importDefault(require("./comp2"));
|
@@ -24,3 +24,5 @@ const comp9_1 = __importDefault(require("./comp9"));
|
|
24
24
|
exports.comp9 = comp9_1.default;
|
25
25
|
const comp10_1 = __importDefault(require("./comp10"));
|
26
26
|
exports.comp10 = comp10_1.default;
|
27
|
+
const comp11_1 = __importDefault(require("./comp11"));
|
28
|
+
exports.comp11 = comp11_1.default;
|
@@ -56,12 +56,6 @@ class TimeComponent extends TextField_1.default {
|
|
56
56
|
}
|
57
57
|
return value;
|
58
58
|
}
|
59
|
-
get validationValue() {
|
60
|
-
if ((Array.isArray(this.rawData) && !this.rawData.length) || !this.rawData) {
|
61
|
-
return this.dataValue;
|
62
|
-
}
|
63
|
-
return this.rawData;
|
64
|
-
}
|
65
59
|
get inputInfo() {
|
66
60
|
const info = super.inputInfo;
|
67
61
|
info.attr.type = this.component.inputType;
|
@@ -14,6 +14,15 @@ exports.default = {
|
|
14
14
|
'input': true,
|
15
15
|
'inputMask': '99:99'
|
16
16
|
},
|
17
|
+
{
|
18
|
+
'label': 'Multiple Time',
|
19
|
+
'inputType': 'text',
|
20
|
+
'tableView': true,
|
21
|
+
'key': 'multipleTime',
|
22
|
+
'type': 'time',
|
23
|
+
'input': true,
|
24
|
+
'inputMask': '99:99'
|
25
|
+
},
|
17
26
|
{
|
18
27
|
'label': 'Submit',
|
19
28
|
'showValidations': false,
|
package/lib/mjs/Webform.js
CHANGED
@@ -1232,7 +1232,12 @@ export default class Webform extends NestedDataComponent {
|
|
1232
1232
|
onChange(flags, changed, modified, changes) {
|
1233
1233
|
flags = flags || {};
|
1234
1234
|
let isChangeEventEmitted = false;
|
1235
|
-
|
1235
|
+
if (this.parent?.subForm === this) {
|
1236
|
+
super.onChange({ ...flags, modified }, false);
|
1237
|
+
}
|
1238
|
+
else {
|
1239
|
+
super.onChange(flags, true);
|
1240
|
+
}
|
1236
1241
|
const value = _.clone(this.submission);
|
1237
1242
|
flags.changed = value.changed = changed;
|
1238
1243
|
flags.changes = changes;
|
@@ -1702,12 +1702,12 @@ export default class Component extends Element {
|
|
1702
1702
|
restoreCaretPosition() {
|
1703
1703
|
if (this.root?.currentSelection) {
|
1704
1704
|
if (this.refs.input?.length) {
|
1705
|
-
const {
|
1705
|
+
const { index } = this.root.currentSelection;
|
1706
1706
|
let input = this.refs.input[index];
|
1707
1707
|
const isInputRangeSelectable = (i) => /text|search|password|tel|url/i.test(i?.type || '');
|
1708
1708
|
if (input) {
|
1709
1709
|
if (isInputRangeSelectable(input)) {
|
1710
|
-
input.setSelectionRange(
|
1710
|
+
input.setSelectionRange(input.value.length, input.value.length);
|
1711
1711
|
}
|
1712
1712
|
}
|
1713
1713
|
else {
|
@@ -45,6 +45,6 @@ export default [
|
|
45
45
|
},
|
46
46
|
EditFormUtils.javaScriptValue('Advanced Conditions', 'customConditional', 'conditional.json', 110, '<p>You must assign the <strong>show</strong> variable a boolean result.</p>' +
|
47
47
|
'<p><strong>Note: Advanced Conditional logic will override the results of the Simple Conditional logic.</strong></p>' +
|
48
|
-
'<h5>Example</h5><pre>show = !!data.showMe;</pre>', '<p><a href="
|
48
|
+
'<h5>Example</h5><pre>show = !!data.showMe;</pre>', '<p><a href="https://help.form.io/userguide/form-building/logic-and-conditions" target="_blank" rel="noopener noreferrer">Click here for an example</a></p>')
|
49
49
|
];
|
50
50
|
/* eslint-enable quotes, max-len */
|
@@ -135,7 +135,7 @@ export default [
|
|
135
135
|
input: true
|
136
136
|
},
|
137
137
|
EditFormUtils.javaScriptValue('Custom Default Value', 'customDefaultValue', 'customDefaultValue', 1000, '<p><h4>Example:</h4><pre>value = data.firstName + " " + data.lastName;</pre></p>', '<p><h4>Example:</h4><pre>{"cat": [{"var": "data.firstName"}, " ", {"var": "data.lastName"}]}</pre>'),
|
138
|
-
EditFormUtils.javaScriptValue('Calculated Value', 'calculateValue', 'calculateValue', 1100, '<p><h4>Example:</h4><pre>value = data.a + data.b + data.c;</pre></p>', '<p><h4>Example:</h4><pre>{"+": [{"var": "data.a"}, {"var": "data.b"}, {"var": "data.c"}]}</pre><p><a href="
|
138
|
+
EditFormUtils.javaScriptValue('Calculated Value', 'calculateValue', 'calculateValue', 1100, '<p><h4>Example:</h4><pre>value = data.a + data.b + data.c;</pre></p>', '<p><h4>Example:</h4><pre>{"+": [{"var": "data.a"}, {"var": "data.b"}, {"var": "data.c"}]}</pre><p><a href="https://help.form.io/userguide/form-building/logic-and-conditions#calculated-values" target="_blank" rel="noopener noreferrer">Click here for an example</a></p>', '<tr><th>token</th><td>The decoded JWT token for the authenticated user.</td></tr>'),
|
139
139
|
{
|
140
140
|
type: 'checkbox',
|
141
141
|
input: true,
|
@@ -50,7 +50,7 @@ const EditFormUtils = {
|
|
50
50
|
'<tr><th>value</th><td>The current value of the component.</td></tr>' +
|
51
51
|
'<tr><th>moment</th><td>The moment.js library for date manipulation.</td></tr>' +
|
52
52
|
'<tr><th>_</th><td>An instance of <a href="https://lodash.com/docs/" target="_blank" rel="noopener noreferrer">Lodash</a>.</td></tr>' +
|
53
|
-
'<tr><th>utils</th><td>An instance of the <a href="
|
53
|
+
'<tr><th>utils</th><td>An instance of the <a href="https://help.form.io/developers/javascript-development/javascript-utilities" target="_blank" rel="noopener noreferrer">FormioUtils</a> object.</td></tr>' +
|
54
54
|
'<tr><th>util</th><td>An alias for "utils".</td></tr>' +
|
55
55
|
'</table><br/>'
|
56
56
|
/* eslint-enable prefer-template */
|
@@ -8,6 +8,7 @@ import { fastCloneDeep, Evaluator, getArrayFromComponentPath, eachComponent } fr
|
|
8
8
|
const EditRowState = {
|
9
9
|
New: 'new',
|
10
10
|
Editing: 'editing',
|
11
|
+
Saving: 'saving',
|
11
12
|
Saved: 'saved',
|
12
13
|
Viewing: 'viewing',
|
13
14
|
Removed: 'removed',
|
@@ -788,6 +789,10 @@ export default class EditGridComponent extends NestedArrayComponent {
|
|
788
789
|
if (!this.component.rowDrafts) {
|
789
790
|
editRow.components.forEach((comp) => comp.setPristine(false));
|
790
791
|
}
|
792
|
+
// Mark the row with a 'Saving' state to trigger validation for future row changes
|
793
|
+
if (editRow.state === EditRowState.New) {
|
794
|
+
editRow.state = EditRowState.Saving;
|
795
|
+
}
|
791
796
|
const errors = this.validateRow(editRow, true);
|
792
797
|
if (!this.component.rowDrafts) {
|
793
798
|
if (errors.length) {
|
@@ -800,7 +805,7 @@ export default class EditGridComponent extends NestedArrayComponent {
|
|
800
805
|
this.root.focusedComponent = null;
|
801
806
|
}
|
802
807
|
switch (editRow.state) {
|
803
|
-
case EditRowState.
|
808
|
+
case EditRowState.Saving: {
|
804
809
|
const newIndex = dataValue.length;
|
805
810
|
dataValue.push(editRow.data);
|
806
811
|
editRow.components.forEach(component => component.rowIndex = newIndex);
|
@@ -960,7 +965,7 @@ export default class EditGridComponent extends NestedArrayComponent {
|
|
960
965
|
}
|
961
966
|
shouldValidateRow(editRow, dirty) {
|
962
967
|
return this.shouldValidateDraft(editRow) ||
|
963
|
-
editRow.state === EditRowState.
|
968
|
+
editRow.state === EditRowState.Saving ||
|
964
969
|
editRow.state === EditRowState.Editing ||
|
965
970
|
editRow.alerts ||
|
966
971
|
dirty;
|
@@ -1062,6 +1067,7 @@ export default class EditGridComponent extends NestedArrayComponent {
|
|
1062
1067
|
}
|
1063
1068
|
else if (errorContainer) {
|
1064
1069
|
errorContainer.textContent = '';
|
1070
|
+
this.removeClass(errorContainer, 'help-block');
|
1065
1071
|
}
|
1066
1072
|
}
|
1067
1073
|
}
|
@@ -0,0 +1,59 @@
|
|
1
|
+
declare namespace _default {
|
2
|
+
let _id: string;
|
3
|
+
let title: string;
|
4
|
+
let name: string;
|
5
|
+
let path: string;
|
6
|
+
let type: string;
|
7
|
+
let display: string;
|
8
|
+
let components: ({
|
9
|
+
label: string;
|
10
|
+
tableView: boolean;
|
11
|
+
validateWhenHidden: boolean;
|
12
|
+
rowDrafts: boolean;
|
13
|
+
key: string;
|
14
|
+
type: string;
|
15
|
+
displayAsTable: boolean;
|
16
|
+
input: boolean;
|
17
|
+
components: {
|
18
|
+
label: string;
|
19
|
+
columns: {
|
20
|
+
components: {
|
21
|
+
label: string;
|
22
|
+
applyMaskOn: string;
|
23
|
+
tableView: boolean;
|
24
|
+
validate: {
|
25
|
+
required: boolean;
|
26
|
+
};
|
27
|
+
validateWhenHidden: boolean;
|
28
|
+
key: string;
|
29
|
+
type: string;
|
30
|
+
input: boolean;
|
31
|
+
}[];
|
32
|
+
width: number;
|
33
|
+
offset: number;
|
34
|
+
push: number;
|
35
|
+
pull: number;
|
36
|
+
size: string;
|
37
|
+
currentWidth: number;
|
38
|
+
}[];
|
39
|
+
key: string;
|
40
|
+
type: string;
|
41
|
+
input: boolean;
|
42
|
+
tableView: boolean;
|
43
|
+
}[];
|
44
|
+
disableOnInvalid?: undefined;
|
45
|
+
} | {
|
46
|
+
type: string;
|
47
|
+
label: string;
|
48
|
+
key: string;
|
49
|
+
disableOnInvalid: boolean;
|
50
|
+
input: boolean;
|
51
|
+
tableView: boolean;
|
52
|
+
validateWhenHidden?: undefined;
|
53
|
+
rowDrafts?: undefined;
|
54
|
+
displayAsTable?: undefined;
|
55
|
+
components?: undefined;
|
56
|
+
})[];
|
57
|
+
let project: string;
|
58
|
+
}
|
59
|
+
export default _default;
|