@formio/js 5.0.0 → 5.1.0-rc.1
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 +120 -109
- package/dist/formio.form.min.js +1 -1
- package/dist/formio.form.min.js.LICENSE.txt +3 -3
- package/dist/formio.full.js +121 -110
- package/dist/formio.full.min.js +1 -1
- package/dist/formio.full.min.js.LICENSE.txt +3 -3
- package/dist/formio.js +3011 -281
- package/dist/formio.min.js +1 -1
- package/dist/formio.min.js.LICENSE.txt +14 -2
- package/dist/formio.utils.js +55 -44
- package/dist/formio.utils.min.js +1 -1
- package/dist/formio.utils.min.js.LICENSE.txt +3 -3
- package/lib/cjs/Webform.d.ts +8 -1
- package/lib/cjs/Webform.js +40 -32
- package/lib/cjs/WebformBuilder.js +4 -12
- package/lib/cjs/Wizard.js +4 -11
- package/lib/cjs/components/Components.d.ts +0 -7
- package/lib/cjs/components/Components.js +1 -33
- package/lib/cjs/components/_classes/component/Component.d.ts +37 -7
- package/lib/cjs/components/_classes/component/Component.js +70 -26
- package/lib/cjs/components/_classes/componentModal/ComponentModal.d.ts +1 -0
- package/lib/cjs/components/_classes/componentModal/ComponentModal.js +1 -0
- package/lib/cjs/components/_classes/nested/NestedComponent.d.ts +4 -19
- package/lib/cjs/components/_classes/nested/NestedComponent.js +38 -53
- package/lib/cjs/components/_classes/nestedarray/NestedArrayComponent.d.ts +2 -1
- package/lib/cjs/components/_classes/nestedarray/NestedArrayComponent.js +7 -44
- package/lib/cjs/components/datagrid/DataGrid.d.ts +0 -1
- package/lib/cjs/components/datagrid/DataGrid.js +1 -45
- package/lib/cjs/components/datamap/DataMap.js +1 -2
- package/lib/cjs/components/editgrid/EditGrid.js +6 -6
- package/lib/cjs/components/form/Form.d.ts +8 -3
- package/lib/cjs/components/form/Form.js +26 -25
- package/lib/cjs/components/selectboxes/SelectBoxes.js +0 -1
- package/lib/cjs/components/signature/Signature.d.ts +0 -1
- package/lib/cjs/components/signature/Signature.js +1 -1
- package/lib/cjs/utils/conditionOperators/DateGreaterThan.js +2 -2
- package/lib/cjs/utils/conditionOperators/IsEmptyValue.d.ts +2 -2
- package/lib/cjs/utils/conditionOperators/IsEmptyValue.js +2 -2
- package/lib/cjs/utils/conditionOperators/IsEqualTo.d.ts +2 -2
- package/lib/cjs/utils/conditionOperators/IsEqualTo.js +2 -2
- package/lib/cjs/utils/formUtils.d.ts +25 -14
- package/lib/cjs/utils/formUtils.js +11 -16
- package/lib/cjs/utils/utils.d.ts +1 -3
- package/lib/cjs/utils/utils.js +19 -35
- package/lib/mjs/Webform.d.ts +8 -1
- package/lib/mjs/Webform.js +37 -31
- package/lib/mjs/WebformBuilder.js +4 -12
- package/lib/mjs/Wizard.js +2 -8
- package/lib/mjs/components/Components.d.ts +0 -7
- package/lib/mjs/components/Components.js +1 -32
- package/lib/mjs/components/_classes/component/Component.d.ts +37 -7
- package/lib/mjs/components/_classes/component/Component.js +80 -27
- package/lib/mjs/components/_classes/componentModal/ComponentModal.d.ts +1 -0
- package/lib/mjs/components/_classes/componentModal/ComponentModal.js +1 -0
- package/lib/mjs/components/_classes/nested/NestedComponent.d.ts +4 -19
- package/lib/mjs/components/_classes/nested/NestedComponent.js +39 -54
- package/lib/mjs/components/_classes/nestedarray/NestedArrayComponent.d.ts +2 -1
- package/lib/mjs/components/_classes/nestedarray/NestedArrayComponent.js +8 -43
- package/lib/mjs/components/datagrid/DataGrid.d.ts +0 -1
- package/lib/mjs/components/datagrid/DataGrid.js +1 -45
- package/lib/mjs/components/datamap/DataMap.js +1 -2
- package/lib/mjs/components/editgrid/EditGrid.js +9 -6
- package/lib/mjs/components/form/Form.d.ts +8 -3
- package/lib/mjs/components/form/Form.js +27 -25
- package/lib/mjs/components/selectboxes/SelectBoxes.js +0 -1
- package/lib/mjs/components/signature/Signature.d.ts +0 -1
- package/lib/mjs/components/signature/Signature.js +1 -1
- package/lib/mjs/utils/conditionOperators/DateGreaterThan.js +2 -2
- package/lib/mjs/utils/conditionOperators/IsEmptyValue.d.ts +2 -2
- package/lib/mjs/utils/conditionOperators/IsEmptyValue.js +2 -2
- package/lib/mjs/utils/conditionOperators/IsEqualTo.d.ts +2 -2
- package/lib/mjs/utils/conditionOperators/IsEqualTo.js +2 -2
- package/lib/mjs/utils/formUtils.d.ts +25 -14
- package/lib/mjs/utils/formUtils.js +2 -12
- package/lib/mjs/utils/utils.d.ts +1 -3
- package/lib/mjs/utils/utils.js +18 -33
- package/package.json +4 -4
@@ -56,18 +56,6 @@ export default class NestedComponent extends Field {
|
|
56
56
|
* @returns {object} - The current form object.
|
57
57
|
*/
|
58
58
|
get currentForm(): object;
|
59
|
-
/**
|
60
|
-
* Set Row Index to row and update each component.
|
61
|
-
* @param {number} value - The row index.
|
62
|
-
* @returns {void}
|
63
|
-
*/
|
64
|
-
set rowIndex(value: number);
|
65
|
-
/**
|
66
|
-
* Get Row Index.
|
67
|
-
* @returns {number} - The row index.
|
68
|
-
*/
|
69
|
-
get rowIndex(): number;
|
70
|
-
_rowIndex: number | undefined;
|
71
59
|
/**
|
72
60
|
* Get Contextual data of the component.
|
73
61
|
* @returns {object} - The contextual data of the component.
|
@@ -115,14 +103,11 @@ export default class NestedComponent extends Field {
|
|
115
103
|
*/
|
116
104
|
eachComponent(fn: Function): void;
|
117
105
|
/**
|
118
|
-
* Returns a component provided a key. This performs a deep search within the
|
119
|
-
* component tree.
|
106
|
+
* Returns a component provided a key. This performs a deep search within the component tree.
|
120
107
|
* @param {string} path - The path to the component.
|
121
|
-
* @param {Function} [fn] - Called with the component once found.
|
122
|
-
* @param {string} [originalPath] - The original path to the component.
|
123
108
|
* @returns {any} - The component that is located.
|
124
109
|
*/
|
125
|
-
getComponent(path: string
|
110
|
+
getComponent(path: string): any;
|
126
111
|
/**
|
127
112
|
* Return a component provided the Id of the component.
|
128
113
|
* @param {string} id - The Id of the component.
|
@@ -211,12 +196,12 @@ export default class NestedComponent extends Field {
|
|
211
196
|
calculateValue(data: any, flags: any, row: any): any;
|
212
197
|
isLastPage(): boolean;
|
213
198
|
isValid(data: any, dirty: any): any;
|
214
|
-
validationProcessor({ scope, data, row, instance,
|
199
|
+
validationProcessor({ scope, data, row, instance, paths }: {
|
215
200
|
scope: any;
|
216
201
|
data: any;
|
217
202
|
row: any;
|
218
203
|
instance: any;
|
219
|
-
|
204
|
+
paths: any;
|
220
205
|
}, flags: any): void;
|
221
206
|
/**
|
222
207
|
* Perform a validation on all child components of this nested component.
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const lodash_1 = __importDefault(require("lodash"));
|
7
7
|
const Field_1 = __importDefault(require("../field/Field"));
|
8
8
|
const Components_1 = __importDefault(require("../../Components"));
|
9
|
+
'';
|
9
10
|
const utils_1 = require("../../../utils/utils");
|
10
11
|
const process_1 = require("@formio/core/process");
|
11
12
|
/**
|
@@ -201,7 +202,9 @@ class NestedComponent extends Field_1.default {
|
|
201
202
|
* @returns {void}
|
202
203
|
*/
|
203
204
|
set rowIndex(value) {
|
205
|
+
var _a, _b;
|
204
206
|
this._rowIndex = value;
|
207
|
+
this.paths = (0, utils_1.getComponentPaths)(this.component, (_a = this.parent) === null || _a === void 0 ? void 0 : _a.component, Object.assign(Object.assign({}, (((_b = this.parent) === null || _b === void 0 ? void 0 : _b.paths) || {})), { dataIndex: value }));
|
205
208
|
this.eachComponent((component) => {
|
206
209
|
component.rowIndex = value;
|
207
210
|
});
|
@@ -297,56 +300,38 @@ class NestedComponent extends Field_1.default {
|
|
297
300
|
});
|
298
301
|
}
|
299
302
|
/**
|
300
|
-
* Returns a component provided a key. This performs a deep search within the
|
301
|
-
* component tree.
|
303
|
+
* Returns a component provided a key. This performs a deep search within the component tree.
|
302
304
|
* @param {string} path - The path to the component.
|
303
|
-
* @param {Function} [fn] - Called with the component once found.
|
304
|
-
* @param {string} [originalPath] - The original path to the component.
|
305
305
|
* @returns {any} - The component that is located.
|
306
306
|
*/
|
307
|
-
getComponent(path
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
possibleComp = component;
|
334
|
-
if (matchPath) {
|
335
|
-
comp = component;
|
336
|
-
if (remainingPath.length > 0 && 'getComponent' in component) {
|
337
|
-
comp = component.getComponent(remainingPath, fn, originalPath);
|
338
|
-
}
|
339
|
-
else if (fn) {
|
340
|
-
fn(component, components);
|
341
|
-
}
|
342
|
-
return false;
|
343
|
-
}
|
344
|
-
}
|
307
|
+
getComponent(path) {
|
308
|
+
var _a;
|
309
|
+
path = (0, utils_1.getStringFromComponentPath)(path);
|
310
|
+
const matches = {
|
311
|
+
path: undefined,
|
312
|
+
fullPath: undefined,
|
313
|
+
localPath: undefined,
|
314
|
+
fullLocalPath: undefined,
|
315
|
+
dataPath: undefined,
|
316
|
+
localDataPath: undefined,
|
317
|
+
key: undefined,
|
318
|
+
};
|
319
|
+
this.everyComponent((component) => {
|
320
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
|
321
|
+
// All searches are relative to this component so replace this path from the child paths.
|
322
|
+
(0, utils_1.componentMatches)(component.component, {
|
323
|
+
path: (_b = (_a = component.paths) === null || _a === void 0 ? void 0 : _a.path) === null || _b === void 0 ? void 0 : _b.replace(new RegExp(`^${(_c = this.paths) === null || _c === void 0 ? void 0 : _c.path}\\.?`), ''),
|
324
|
+
fullPath: (_e = (_d = component.paths) === null || _d === void 0 ? void 0 : _d.fullPath) === null || _e === void 0 ? void 0 : _e.replace(new RegExp(`^${(_f = this.paths) === null || _f === void 0 ? void 0 : _f.fullPath}\\.?`), ''),
|
325
|
+
localPath: (_h = (_g = component.paths) === null || _g === void 0 ? void 0 : _g.localPath) === null || _h === void 0 ? void 0 : _h.replace(new RegExp(`^${(_j = this.paths) === null || _j === void 0 ? void 0 : _j.localPath}\\.?`), ''),
|
326
|
+
fullLocalPath: (_l = (_k = component.paths) === null || _k === void 0 ? void 0 : _k.fullLocalPath) === null || _l === void 0 ? void 0 : _l.replace(new RegExp(`^${(_m = this.paths) === null || _m === void 0 ? void 0 : _m.fullLocalPath}\\.?`), ''),
|
327
|
+
dataPath: (_p = (_o = component.paths) === null || _o === void 0 ? void 0 : _o.dataPath) === null || _p === void 0 ? void 0 : _p.replace(new RegExp(`^${(_q = this.paths) === null || _q === void 0 ? void 0 : _q.dataPath}\\.?`), ''),
|
328
|
+
localDataPath: (_s = (_r = component.paths) === null || _r === void 0 ? void 0 : _r.localDataPath) === null || _s === void 0 ? void 0 : _s.replace(new RegExp(`^${(_t = this.paths) === null || _t === void 0 ? void 0 : _t.localDataPath}\\.?`), ''),
|
329
|
+
}, path, this.rowIndex, matches, (type, match) => {
|
330
|
+
match.instance = component;
|
331
|
+
return match;
|
332
|
+
});
|
345
333
|
});
|
346
|
-
|
347
|
-
comp = possibleComp;
|
348
|
-
}
|
349
|
-
return comp;
|
334
|
+
return (_a = (0, utils_1.getBestMatch)(matches)) === null || _a === void 0 ? void 0 : _a.instance;
|
350
335
|
}
|
351
336
|
/**
|
352
337
|
* Return a component provided the Id of the component.
|
@@ -682,20 +667,17 @@ class NestedComponent extends Field_1.default {
|
|
682
667
|
isValid(data, dirty) {
|
683
668
|
return this.getComponents().reduce((valid, comp) => comp.isValid(data, dirty) && valid, super.isValid(data, dirty));
|
684
669
|
}
|
685
|
-
validationProcessor({ scope, data, row, instance,
|
670
|
+
validationProcessor({ scope, data, row, instance, paths }, flags) {
|
686
671
|
var _a;
|
687
672
|
const { dirty } = flags;
|
688
673
|
if (this.root.hasExtraPages && this.page !== this.root.page) {
|
689
|
-
instance = ((_a = this.
|
690
|
-
? this.
|
691
|
-
: this.getComponent(
|
674
|
+
instance = ((_a = this.componentsMap) === null || _a === void 0 ? void 0 : _a.hasOwnProperty(paths.dataPath))
|
675
|
+
? this.componentsMap[paths.dataPath]
|
676
|
+
: this.getComponent(paths.dataPath);
|
692
677
|
}
|
693
678
|
if (!instance) {
|
694
679
|
return;
|
695
680
|
}
|
696
|
-
if (!instance.component.path) {
|
697
|
-
instance.component.path = component.path;
|
698
|
-
}
|
699
681
|
instance.checkComponentValidity(data, dirty, row, flags, scope.errors);
|
700
682
|
if (instance.processOwnValidation) {
|
701
683
|
scope.noRecurse = true;
|
@@ -727,7 +709,10 @@ class NestedComponent extends Field_1.default {
|
|
727
709
|
components,
|
728
710
|
instances: this.componentsMap,
|
729
711
|
data: data,
|
712
|
+
local: !!flags.local,
|
730
713
|
scope: { errors: [] },
|
714
|
+
parent: this.component,
|
715
|
+
parentPaths: this.paths,
|
731
716
|
processors: [
|
732
717
|
{
|
733
718
|
process: validationProcessorProcess,
|
@@ -2,6 +2,8 @@ export default class NestedArrayComponent extends NestedDataComponent {
|
|
2
2
|
static savedValueTypes(): string[];
|
3
3
|
componentContext(component: any): any;
|
4
4
|
get iteratableRows(): void;
|
5
|
+
set rowIndex(value: number | undefined);
|
6
|
+
get rowIndex(): number | undefined;
|
5
7
|
prevHasAddButton: any;
|
6
8
|
checkAddButtonChanged(): void;
|
7
9
|
checkData(data: any, flags: any, row: any): any;
|
@@ -10,7 +12,6 @@ export default class NestedArrayComponent extends NestedDataComponent {
|
|
10
12
|
checkRow(...args: any[]): any;
|
11
13
|
processRow(method: any, data: any, opts: any, row: any, components: any, silentCheck: any): any;
|
12
14
|
hasAddButton(): any;
|
13
|
-
getComponent(path: any, fn: any, originalPath: any): any;
|
14
15
|
everyComponent(fn: any, rowIndex: any, options?: {}): void;
|
15
16
|
getComponents(rowIndex: any): any;
|
16
17
|
removeSubmissionMetadataRow(index: any): void;
|
@@ -4,7 +4,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
4
|
};
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
6
|
const lodash_1 = __importDefault(require("lodash"));
|
7
|
-
const utils_1 = require("
|
7
|
+
const utils_1 = require("@formio/core/utils");
|
8
|
+
const { getComponentPaths } = utils_1.Utils;
|
9
|
+
const utils_2 = require("../../../utils/utils");
|
8
10
|
const Component_1 = __importDefault(require("../component/Component"));
|
9
11
|
const NestedDataComponent_1 = __importDefault(require("../nesteddata/NestedDataComponent"));
|
10
12
|
class NestedArrayComponent extends NestedDataComponent_1.default {
|
@@ -14,7 +16,7 @@ class NestedArrayComponent extends NestedDataComponent_1.default {
|
|
14
16
|
}, ...extend);
|
15
17
|
}
|
16
18
|
static savedValueTypes() {
|
17
|
-
return [
|
19
|
+
return [utils_2.componentValueTypes.array];
|
18
20
|
}
|
19
21
|
componentContext(component) {
|
20
22
|
return this.iteratableRows[component.rowIndex].data;
|
@@ -23,9 +25,11 @@ class NestedArrayComponent extends NestedDataComponent_1.default {
|
|
23
25
|
throw new Error('Getter #iteratableRows() is not implemented');
|
24
26
|
}
|
25
27
|
get rowIndex() {
|
26
|
-
return
|
28
|
+
return this._rowIndex;
|
27
29
|
}
|
28
30
|
set rowIndex(value) {
|
31
|
+
var _a, _b;
|
32
|
+
this.paths = getComponentPaths(this.component, (_a = this.parent) === null || _a === void 0 ? void 0 : _a.component, Object.assign(Object.assign({}, (((_b = this.parent) === null || _b === void 0 ? void 0 : _b.paths) || {})), { dataIndex: value }));
|
29
33
|
this._rowIndex = value;
|
30
34
|
}
|
31
35
|
init() {
|
@@ -88,47 +92,6 @@ class NestedArrayComponent extends NestedDataComponent_1.default {
|
|
88
92
|
value: this.dataValue,
|
89
93
|
}, 'show'));
|
90
94
|
}
|
91
|
-
getComponent(path, fn, originalPath) {
|
92
|
-
originalPath = originalPath || (0, utils_1.getStringFromComponentPath)(path);
|
93
|
-
if (this.componentsMap.hasOwnProperty(originalPath)) {
|
94
|
-
if (fn) {
|
95
|
-
return fn(this.componentsMap[originalPath]);
|
96
|
-
}
|
97
|
-
else {
|
98
|
-
return this.componentsMap[originalPath];
|
99
|
-
}
|
100
|
-
}
|
101
|
-
path = Array.isArray(path) ? path : [path];
|
102
|
-
let key = path.shift();
|
103
|
-
const remainingPath = path;
|
104
|
-
let result = [];
|
105
|
-
let possibleComp = null;
|
106
|
-
let comp = null;
|
107
|
-
let rowIndex = null;
|
108
|
-
if (lodash_1.default.isNumber(key)) {
|
109
|
-
rowIndex = key;
|
110
|
-
key = remainingPath.shift();
|
111
|
-
}
|
112
|
-
if (!lodash_1.default.isString(key)) {
|
113
|
-
return result;
|
114
|
-
}
|
115
|
-
this.everyComponent((component, components) => {
|
116
|
-
if (component.component.key === key) {
|
117
|
-
possibleComp = component;
|
118
|
-
if (remainingPath.length > 0 && 'getComponent' in component) {
|
119
|
-
comp = component.getComponent(remainingPath, fn, originalPath);
|
120
|
-
}
|
121
|
-
else if (fn) {
|
122
|
-
fn(component, components);
|
123
|
-
}
|
124
|
-
result = rowIndex !== null ? comp : result.concat(comp || possibleComp);
|
125
|
-
}
|
126
|
-
}, rowIndex);
|
127
|
-
if ((!result || result.length === 0) && possibleComp) {
|
128
|
-
result = rowIndex !== null ? possibleComp : [possibleComp];
|
129
|
-
}
|
130
|
-
return result;
|
131
|
-
}
|
132
95
|
everyComponent(fn, rowIndex, options = {}) {
|
133
96
|
if (lodash_1.default.isObject(rowIndex)) {
|
134
97
|
options = rowIndex;
|
@@ -85,7 +85,6 @@ export default class DataGridComponent extends NestedArrayComponent {
|
|
85
85
|
show: boolean;
|
86
86
|
};
|
87
87
|
checkComponentConditions(data: any, flags: any, row: any): boolean;
|
88
|
-
getComponent(path: any, fn: any): any;
|
89
88
|
toggleGroup(element: any, index: any): void;
|
90
89
|
}
|
91
90
|
import NestedArrayComponent from '../_classes/nestedarray/NestedArrayComponent';
|
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const lodash_1 = __importDefault(require("lodash"));
|
7
7
|
const NestedArrayComponent_1 = __importDefault(require("../_classes/nestedarray/NestedArrayComponent"));
|
8
8
|
const utils_1 = require("../../utils/utils");
|
9
|
-
const Components_1 = __importDefault(require("../Components"));
|
10
9
|
const dragula_1 = __importDefault(require("dragula"));
|
11
10
|
class DataGridComponent extends NestedArrayComponent_1.default {
|
12
11
|
static schema(...extend) {
|
@@ -411,7 +410,6 @@ class DataGridComponent extends NestedArrayComponent_1.default {
|
|
411
410
|
}
|
412
411
|
component.rowIndex = rowIndex;
|
413
412
|
component.row = `${rowIndex}-${colIndex}`;
|
414
|
-
component.path = Components_1.default.getComponentPath(component);
|
415
413
|
});
|
416
414
|
}
|
417
415
|
updateRowsComponents(rowIndex) {
|
@@ -477,6 +475,7 @@ class DataGridComponent extends NestedArrayComponent_1.default {
|
|
477
475
|
const options = lodash_1.default.clone(this.options);
|
478
476
|
options.name += `[${rowIndex}]`;
|
479
477
|
options.row = `${rowIndex}-${colIndex}`;
|
478
|
+
options.rowIndex = rowIndex;
|
480
479
|
let columnComponent;
|
481
480
|
if (this.builderMode) {
|
482
481
|
col.id = col.id + rowIndex;
|
@@ -599,49 +598,6 @@ class DataGridComponent extends NestedArrayComponent_1.default {
|
|
599
598
|
restoreComponentsContext() {
|
600
599
|
this.rows.forEach((row, index) => lodash_1.default.forIn(row, (component) => component.data = this.dataValue[index]));
|
601
600
|
}
|
602
|
-
getComponent(path, fn) {
|
603
|
-
path = Array.isArray(path) ? path : [path];
|
604
|
-
const [key, ...remainingPath] = path;
|
605
|
-
let result = [];
|
606
|
-
if (lodash_1.default.isNumber(key) && remainingPath.length) {
|
607
|
-
const compKey = remainingPath.pop();
|
608
|
-
result = this.rows[key][compKey];
|
609
|
-
// If the component is inside a Layout Component, try to find it among all the row's components
|
610
|
-
if (!result) {
|
611
|
-
Object.entries(this.rows[key]).forEach(([, comp]) => {
|
612
|
-
if ('getComponent' in comp) {
|
613
|
-
const possibleResult = comp.getComponent([compKey], fn);
|
614
|
-
if (possibleResult) {
|
615
|
-
result = possibleResult;
|
616
|
-
}
|
617
|
-
}
|
618
|
-
});
|
619
|
-
}
|
620
|
-
if (result && lodash_1.default.isFunction(fn)) {
|
621
|
-
fn(result, this.getComponents());
|
622
|
-
}
|
623
|
-
if (remainingPath.length && 'getComponent' in result) {
|
624
|
-
return result.getComponent(remainingPath, fn);
|
625
|
-
}
|
626
|
-
return result;
|
627
|
-
}
|
628
|
-
if (!lodash_1.default.isString(key)) {
|
629
|
-
return result;
|
630
|
-
}
|
631
|
-
this.everyComponent((component, components) => {
|
632
|
-
if (component.component.key === key) {
|
633
|
-
let comp = component;
|
634
|
-
if (remainingPath.length > 0 && 'getComponent' in component) {
|
635
|
-
comp = component.getComponent(remainingPath, fn);
|
636
|
-
}
|
637
|
-
else if (fn) {
|
638
|
-
fn(component, components);
|
639
|
-
}
|
640
|
-
result = result.concat(comp);
|
641
|
-
}
|
642
|
-
});
|
643
|
-
return result.length > 0 ? result : null;
|
644
|
-
}
|
645
601
|
toggleGroup(element, index) {
|
646
602
|
element.classList.toggle('collapsed');
|
647
603
|
lodash_1.default.each(this.refs.chunks[index], row => {
|
@@ -8,7 +8,6 @@ const DataGrid_1 = __importDefault(require("../datagrid/DataGrid"));
|
|
8
8
|
const lodash_1 = __importDefault(require("lodash"));
|
9
9
|
const eventemitter3_1 = __importDefault(require("eventemitter3"));
|
10
10
|
const utils_1 = require("../../utils/utils");
|
11
|
-
const Components_1 = __importDefault(require("../Components"));
|
12
11
|
class DataMapComponent extends DataGrid_1.default {
|
13
12
|
static schema(...extend) {
|
14
13
|
return Component_1.default.schema({
|
@@ -232,6 +231,7 @@ class DataMapComponent extends DataGrid_1.default {
|
|
232
231
|
options.events = new eventemitter3_1.default();
|
233
232
|
options.name += `[${rowIndex}]`;
|
234
233
|
options.row = `${rowIndex}`;
|
234
|
+
options.rowIndex = rowIndex;
|
235
235
|
const components = {};
|
236
236
|
components['__key'] = this.createComponent(this.keySchema, options, { __key: this.builderMode ? this.defaultRowKey : key });
|
237
237
|
components['__key'].on('componentChange', (event) => {
|
@@ -241,7 +241,6 @@ class DataMapComponent extends DataGrid_1.default {
|
|
241
241
|
delete dataValue[key];
|
242
242
|
const comp = components[this.valueKey];
|
243
243
|
comp.component.key = newKey;
|
244
|
-
comp.path = Components_1.default.getComponentPath(comp);
|
245
244
|
key = newKey;
|
246
245
|
});
|
247
246
|
const valueComponent = lodash_1.default.clone(this.component.valueComponent);
|
@@ -924,6 +924,7 @@ class EditGridComponent extends NestedArrayComponent_1.default {
|
|
924
924
|
const options = lodash_1.default.clone(this.options);
|
925
925
|
options.name += `[${rowIndex}]`;
|
926
926
|
options.row = `${rowIndex}-${colIndex}`;
|
927
|
+
options.rowIndex = rowIndex;
|
927
928
|
options.onChange = (flags = {}, changed, modified) => {
|
928
929
|
var _a, _b;
|
929
930
|
if (((_a = changed.instance.root) === null || _a === void 0 ? void 0 : _a.id) && (((_b = this.root) === null || _b === void 0 ? void 0 : _b.id) !== changed.instance.root.id)) {
|
@@ -938,7 +939,7 @@ class EditGridComponent extends NestedArrayComponent_1.default {
|
|
938
939
|
const editRow = this.editRows[rowIndex];
|
939
940
|
if (editRow) {
|
940
941
|
this.processRow('checkData', null, Object.assign(Object.assign({}, flags), { changed }), editRow.data, editRow.components);
|
941
|
-
this.validateRow(editRow, false);
|
942
|
+
this.validateRow(editRow, false, false);
|
942
943
|
}
|
943
944
|
if (this.variableTypeComponentsIndexes.length) {
|
944
945
|
this.checkRowVariableTypeComponents(editRow, rowIndex);
|
@@ -980,22 +981,21 @@ class EditGridComponent extends NestedArrayComponent_1.default {
|
|
980
981
|
var _a;
|
981
982
|
editRow.errors = [];
|
982
983
|
if (this.shouldValidateRow(editRow, dirty, fromSubmission)) {
|
983
|
-
const silentCheck = (this.component.rowDrafts && !this.shouldValidateDraft(editRow)) || forceSilentCheck;
|
984
|
+
const silentCheck = forceSilentCheck === false ? false : ((this.component.rowDrafts && !this.shouldValidateDraft(editRow)) || forceSilentCheck);
|
984
985
|
const rootValue = (0, utils_1.fastCloneDeep)(this.rootValue);
|
985
986
|
const editGridValue = lodash_1.default.get(rootValue, this.path, []);
|
986
987
|
editGridValue[editRow.rowIndex] = editRow.data;
|
987
988
|
lodash_1.default.set(rootValue, this.path, editGridValue);
|
988
989
|
const validationProcessorProcess = (context) => this.validationProcessor(context, { dirty, silentCheck });
|
989
990
|
const errors = (0, process_1.processSync)({
|
990
|
-
components:
|
991
|
-
component.parentPath = `${this.path}[${editRow.rowIndex}]`;
|
992
|
-
return component;
|
993
|
-
}),
|
991
|
+
components: this.component.components,
|
994
992
|
data: rootValue,
|
995
993
|
row: editRow.data,
|
996
994
|
process: 'validateRow',
|
997
995
|
instances: this.componentsMap,
|
998
996
|
scope: { errors: [] },
|
997
|
+
parent: this.component,
|
998
|
+
parentPaths: Object.assign(Object.assign({}, this.paths), { dataIndex: editRow.rowIndex }),
|
999
999
|
processors: [
|
1000
1000
|
{
|
1001
1001
|
process: validationProcessorProcess,
|
@@ -21,7 +21,7 @@ export default class FormComponent extends Component {
|
|
21
21
|
get useOriginalRevision(): any;
|
22
22
|
setFormRevision(rev: any): void;
|
23
23
|
subFormRevision: any;
|
24
|
-
getComponent(path: any
|
24
|
+
getComponent(path: any): any;
|
25
25
|
getSubOptions(options?: {}): {};
|
26
26
|
render(): string;
|
27
27
|
asString(value: any): any;
|
@@ -55,8 +55,6 @@ export default class FormComponent extends Component {
|
|
55
55
|
*/
|
56
56
|
loadSubForm(fromAttach: boolean): Promise<any>;
|
57
57
|
subFormLoading: boolean | undefined;
|
58
|
-
get subFormData(): any;
|
59
|
-
checkComponentValidity(data: any, dirty: any, row: any, options: any, errors?: any[]): any;
|
60
58
|
checkComponentConditions(data: any, flags: any, row: any): any;
|
61
59
|
calculateValue(data: any, flags: any, row: any): any;
|
62
60
|
setPristine(pristine: any): void;
|
@@ -90,6 +88,13 @@ export default class FormComponent extends Component {
|
|
90
88
|
isHidden(): boolean;
|
91
89
|
setValue(submission: any, flags?: {}): boolean;
|
92
90
|
setSubFormValue(submission: any, flags: any): void;
|
91
|
+
/**
|
92
|
+
* Sets the subform value
|
93
|
+
* @param {object|null|undefined} submission - The submission to set.
|
94
|
+
* @param {object|null|undefined} flags - Any flags to apply when setting the submission.
|
95
|
+
* @return {void}
|
96
|
+
*/
|
97
|
+
onSetSubFormValue(submission: object | null | undefined, flags: object | null | undefined): void;
|
93
98
|
areAllComponentsEmpty(data: any): boolean;
|
94
99
|
updateSubFormVisibility(): void;
|
95
100
|
/**
|
@@ -133,15 +133,11 @@ class FormComponent extends Component_1.default {
|
|
133
133
|
this.subFormRevision = undefined;
|
134
134
|
}
|
135
135
|
}
|
136
|
-
getComponent(path
|
137
|
-
|
138
|
-
|
139
|
-
path.shift();
|
140
|
-
}
|
141
|
-
const originalPathStr = `${this.path}.data.${(0, utils_1.getStringFromComponentPath)(path)}`;
|
142
|
-
if (this.subForm) {
|
143
|
-
return this.subForm.getComponent(path, fn, originalPathStr);
|
136
|
+
getComponent(path) {
|
137
|
+
if (!this.subForm) {
|
138
|
+
return null;
|
144
139
|
}
|
140
|
+
return this.subForm.getComponent(path);
|
145
141
|
}
|
146
142
|
/* eslint-disable max-statements */
|
147
143
|
getSubOptions(options = {}) {
|
@@ -209,6 +205,7 @@ class FormComponent extends Component_1.default {
|
|
209
205
|
if (this.options.skipDraftRestore) {
|
210
206
|
options.skipDraftRestore = this.options.skipDraftRestore;
|
211
207
|
}
|
208
|
+
options.parent = this;
|
212
209
|
return options;
|
213
210
|
}
|
214
211
|
/* eslint-enable max-statements */
|
@@ -297,6 +294,7 @@ class FormComponent extends Component_1.default {
|
|
297
294
|
const modalShouldBeOpened = this.componentModal ? this.componentModal.isOpened : false;
|
298
295
|
const currentValue = modalShouldBeOpened ? this.componentModal.currentValue : this.dataValue;
|
299
296
|
this.componentModal = new ComponentModal_1.default(this, element, modalShouldBeOpened, currentValue, this._referenceAttributeName);
|
297
|
+
this.subForm.element = this.componentModal.refs.componentContent || this.subForm.element;
|
300
298
|
this.setOpenModalElement();
|
301
299
|
}
|
302
300
|
this.calculateValue();
|
@@ -395,6 +393,10 @@ class FormComponent extends Component_1.default {
|
|
395
393
|
return (new Form_1.default(form, this.getSubOptions())).ready.then((instance) => {
|
396
394
|
this.subForm = instance;
|
397
395
|
this.subForm.currentForm = this;
|
396
|
+
const componentsMap = this.componentsMap;
|
397
|
+
const formComponentsMap = this.subForm.componentsMap;
|
398
|
+
lodash_1.default.assign(componentsMap, formComponentsMap);
|
399
|
+
this.component.components = this.subForm.components.map((comp) => comp.component);
|
398
400
|
this.subForm.parent = this;
|
399
401
|
this.subForm.parentVisible = this.visible;
|
400
402
|
this.subForm.on('change', () => {
|
@@ -413,6 +415,8 @@ class FormComponent extends Component_1.default {
|
|
413
415
|
this.valueChanged = this.hasSetValue;
|
414
416
|
this.onChange();
|
415
417
|
return this.subForm;
|
418
|
+
}).catch((err) => {
|
419
|
+
console.log(err);
|
416
420
|
});
|
417
421
|
}).then((subForm) => {
|
418
422
|
this.updateSubWizards(subForm);
|
@@ -469,18 +473,6 @@ class FormComponent extends Component_1.default {
|
|
469
473
|
}
|
470
474
|
return Promise.resolve();
|
471
475
|
}
|
472
|
-
get subFormData() {
|
473
|
-
var _a;
|
474
|
-
return ((_a = this.dataValue) === null || _a === void 0 ? void 0 : _a.data) || {};
|
475
|
-
}
|
476
|
-
checkComponentValidity(data, dirty, row, options, errors = []) {
|
477
|
-
options = options || {};
|
478
|
-
const silentCheck = options.silentCheck || false;
|
479
|
-
if (this.subForm) {
|
480
|
-
return this.subForm.checkValidity(this.subFormData, dirty, null, silentCheck, errors);
|
481
|
-
}
|
482
|
-
return super.checkComponentValidity(data, dirty, row, options, errors);
|
483
|
-
}
|
484
476
|
checkComponentConditions(data, flags, row) {
|
485
477
|
const visible = super.checkComponentConditions(data, flags, row);
|
486
478
|
// Return if already hidden
|
@@ -488,14 +480,14 @@ class FormComponent extends Component_1.default {
|
|
488
480
|
return visible;
|
489
481
|
}
|
490
482
|
if (this.subForm) {
|
491
|
-
return this.subForm.checkConditions(
|
483
|
+
return this.subForm.checkConditions(data, flags, row);
|
492
484
|
}
|
493
485
|
// There are few cases when subForm is not loaded when a change is triggered,
|
494
486
|
// so we need to perform checkConditions after it is ready, or some conditional fields might be hidden in View mode
|
495
487
|
else if (this.subFormReady) {
|
496
488
|
this.subFormReady.then(() => {
|
497
489
|
if (this.subForm) {
|
498
|
-
return this.subForm.checkConditions(
|
490
|
+
return this.subForm.checkConditions(data, flags, row);
|
499
491
|
}
|
500
492
|
});
|
501
493
|
}
|
@@ -503,7 +495,7 @@ class FormComponent extends Component_1.default {
|
|
503
495
|
}
|
504
496
|
calculateValue(data, flags, row) {
|
505
497
|
if (this.subForm) {
|
506
|
-
return this.subForm.calculateValue(
|
498
|
+
return this.subForm.calculateValue(data, flags, row);
|
507
499
|
}
|
508
500
|
return super.calculateValue(data, flags, row);
|
509
501
|
}
|
@@ -545,7 +537,7 @@ class FormComponent extends Component_1.default {
|
|
545
537
|
}
|
546
538
|
this.subForm.nosubmit = false;
|
547
539
|
this.subForm.submitted = true;
|
548
|
-
return this.subForm.submitForm().then(result => {
|
540
|
+
return this.subForm.submitForm({}, true).then(result => {
|
549
541
|
this.subForm.loading = false;
|
550
542
|
this.subForm.showAllErrors = false;
|
551
543
|
this.dataValue = result.submission;
|
@@ -649,9 +641,18 @@ class FormComponent extends Component_1.default {
|
|
649
641
|
});
|
650
642
|
}
|
651
643
|
else {
|
652
|
-
this.
|
644
|
+
this.onSetSubFormValue(submission, flags);
|
653
645
|
}
|
654
646
|
}
|
647
|
+
/**
|
648
|
+
* Sets the subform value
|
649
|
+
* @param {object|null|undefined} submission - The submission to set.
|
650
|
+
* @param {object|null|undefined} flags - Any flags to apply when setting the submission.
|
651
|
+
* @return {void}
|
652
|
+
*/
|
653
|
+
onSetSubFormValue(submission, flags) {
|
654
|
+
this.subForm.setValue(submission, flags);
|
655
|
+
}
|
655
656
|
isEmpty(value = this.dataValue) {
|
656
657
|
return value === null || lodash_1.default.isEqual(value, this.emptyValue) || (this.areAllComponentsEmpty(value === null || value === void 0 ? void 0 : value.data) && !(value === null || value === void 0 ? void 0 : value._id));
|
657
658
|
}
|
@@ -22,7 +22,6 @@ export default class SignatureComponent extends Input {
|
|
22
22
|
showCanvas(show: any): void;
|
23
23
|
onDisabled(): void;
|
24
24
|
checkSize(force: any, scale: any): void;
|
25
|
-
getModalPreviewTemplate(): any;
|
26
25
|
signaturePad: SignaturePad | null | undefined;
|
27
26
|
observer: any;
|
28
27
|
getValueAsString(value: any): "" | "Yes" | "No";
|
@@ -172,7 +172,7 @@ class SignatureComponent extends Input_1.default {
|
|
172
172
|
return false;
|
173
173
|
}
|
174
174
|
getModalPreviewTemplate() {
|
175
|
-
return this.
|
175
|
+
return this.renderModalPreview({
|
176
176
|
previewText: this.dataValue ?
|
177
177
|
`<img src=${this.dataValue} ${this._referenceAttributeName}='openModal' style="width: 100%;height: 100%;" />` :
|
178
178
|
this.t('Click to Sign')
|
@@ -20,13 +20,13 @@ class DateGeaterThan extends ConditionOperator_1.default {
|
|
20
20
|
}
|
21
21
|
execute(options, functionName = 'isAfter') {
|
22
22
|
var _a;
|
23
|
-
const { value, instance,
|
23
|
+
const { value, instance, path } = options;
|
24
24
|
if (!value) {
|
25
25
|
return false;
|
26
26
|
}
|
27
27
|
let conditionTriggerComponent = null;
|
28
28
|
if ((_a = instance === null || instance === void 0 ? void 0 : instance.root) === null || _a === void 0 ? void 0 : _a.getComponent) {
|
29
|
-
conditionTriggerComponent = instance.root.getComponent(
|
29
|
+
conditionTriggerComponent = instance.root.getComponent(path);
|
30
30
|
}
|
31
31
|
if (conditionTriggerComponent && conditionTriggerComponent.isPartialDay && conditionTriggerComponent.isPartialDay(value)) {
|
32
32
|
return false;
|
@@ -1,8 +1,8 @@
|
|
1
1
|
export default class IsEmptyValue extends ConditionOperator {
|
2
|
-
execute({ value, instance,
|
2
|
+
execute({ value, instance, path }: {
|
3
3
|
value: any;
|
4
4
|
instance: any;
|
5
|
-
|
5
|
+
path: any;
|
6
6
|
}): any;
|
7
7
|
getResult(options: any): any;
|
8
8
|
}
|