@formio/js 5.0.0-rc.87 → 5.0.0-rc.89
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 +18 -18
- package/dist/formio.form.min.js +1 -1
- package/dist/formio.form.min.js.LICENSE.txt +1 -1
- package/dist/formio.full.js +18 -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 +9 -9
- package/dist/formio.utils.min.js +1 -1
- package/dist/formio.utils.min.js.LICENSE.txt +1 -1
- package/lib/cjs/components/Components.js +4 -2
- package/lib/cjs/components/_classes/component/Component.js +8 -4
- package/lib/cjs/components/_classes/list/ListComponent.d.ts +4 -0
- package/lib/cjs/components/_classes/list/ListComponent.js +17 -0
- package/lib/cjs/components/_classes/nested/fixtures/comp4.d.ts +4 -0
- package/lib/cjs/components/_classes/nested/fixtures/comp4.js +12 -0
- package/lib/cjs/components/_classes/nested/fixtures/index.d.ts +1 -0
- package/lib/cjs/components/_classes/nested/fixtures/index.js +3 -1
- package/lib/cjs/components/address/Address.js +10 -0
- package/lib/cjs/components/day/Day.js +13 -6
- package/lib/cjs/components/radio/Radio.d.ts +1 -1
- package/lib/cjs/components/radio/Radio.js +32 -1
- package/lib/cjs/components/radio/fixtures/comp13.d.ts +49 -0
- package/lib/cjs/components/radio/fixtures/comp13.js +49 -0
- package/lib/cjs/components/radio/fixtures/index.d.ts +2 -1
- package/lib/cjs/components/radio/fixtures/index.js +3 -1
- package/lib/cjs/components/select/Select.d.ts +0 -4
- package/lib/cjs/components/select/Select.js +0 -16
- package/lib/cjs/components/selectboxes/fixtures/comp8.d.ts +49 -0
- package/lib/cjs/components/selectboxes/fixtures/comp8.js +49 -0
- package/lib/cjs/components/tags/fixtures/index.d.ts +1 -1
- package/lib/cjs/components/tags/fixtures/index.js +5 -1
- package/lib/cjs/utils/utils.d.ts +1 -1
- package/lib/cjs/utils/utils.js +1 -13
- package/lib/mjs/components/Components.js +4 -2
- package/lib/mjs/components/_classes/component/Component.js +5 -1
- package/lib/mjs/components/_classes/list/ListComponent.d.ts +4 -0
- package/lib/mjs/components/_classes/list/ListComponent.js +17 -0
- package/lib/mjs/components/_classes/nested/fixtures/comp4.d.ts +4 -0
- package/lib/mjs/components/_classes/nested/fixtures/comp4.js +7 -0
- package/lib/mjs/components/_classes/nested/fixtures/index.d.ts +1 -0
- package/lib/mjs/components/_classes/nested/fixtures/index.js +1 -0
- package/lib/mjs/components/address/Address.js +10 -0
- package/lib/mjs/components/day/Day.js +13 -6
- package/lib/mjs/components/radio/Radio.d.ts +1 -1
- package/lib/mjs/components/radio/Radio.js +32 -1
- package/lib/mjs/components/radio/fixtures/comp13.d.ts +49 -0
- package/lib/mjs/components/radio/fixtures/comp13.js +47 -0
- package/lib/mjs/components/radio/fixtures/index.d.ts +2 -1
- package/lib/mjs/components/radio/fixtures/index.js +2 -1
- package/lib/mjs/components/select/Select.d.ts +0 -4
- package/lib/mjs/components/select/Select.js +0 -16
- package/lib/mjs/components/selectboxes/fixtures/comp8.d.ts +49 -0
- package/lib/mjs/components/selectboxes/fixtures/comp8.js +47 -0
- package/lib/mjs/components/tags/fixtures/index.d.ts +1 -1
- package/lib/mjs/components/tags/fixtures/index.js +3 -1
- package/lib/mjs/utils/utils.d.ts +1 -1
- package/lib/mjs/utils/utils.js +1 -2
- package/package.json +2 -2
package/lib/cjs/utils/utils.js
CHANGED
@@ -11,21 +11,9 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
11
11
|
if (k2 === undefined) k2 = k;
|
12
12
|
o[k2] = m[k];
|
13
13
|
}));
|
14
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
15
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
16
|
-
}) : function(o, v) {
|
17
|
-
o["default"] = v;
|
18
|
-
});
|
19
14
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
20
15
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
21
16
|
};
|
22
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
23
|
-
if (mod && mod.__esModule) return mod;
|
24
|
-
var result = {};
|
25
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
26
|
-
__setModuleDefault(result, mod);
|
27
|
-
return result;
|
28
|
-
};
|
29
17
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
30
18
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
31
19
|
};
|
@@ -37,6 +25,7 @@ exports._ = lodash_1.default;
|
|
37
25
|
const json_logic_js_1 = __importDefault(require("json-logic-js"));
|
38
26
|
exports.jsonLogic = json_logic_js_1.default;
|
39
27
|
const moment_timezone_1 = __importDefault(require("moment-timezone/moment-timezone"));
|
28
|
+
exports.moment = moment_timezone_1.default;
|
40
29
|
const jstimezonedetect_1 = __importDefault(require("jstimezonedetect"));
|
41
30
|
const operators_1 = require("./jsonlogic/operators");
|
42
31
|
const dompurify_1 = __importDefault(require("dompurify"));
|
@@ -62,7 +51,6 @@ json_logic_js_1.default.add_operation('relativeMinDate', (relativeMinDate) => {
|
|
62
51
|
json_logic_js_1.default.add_operation('relativeMaxDate', (relativeMaxDate) => {
|
63
52
|
return (0, moment_timezone_1.default)().add(relativeMaxDate, 'days').toISOString();
|
64
53
|
});
|
65
|
-
exports.moment = __importStar(require("moment-timezone/moment-timezone"));
|
66
54
|
/**
|
67
55
|
* Sets the path to the component and parent schema.
|
68
56
|
* @param {import('@formio/core').Component} component - The component to set the path for.
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import Component from './_classes/component/Component';
|
2
2
|
import EditFormUtils from './_classes/component/editForm/utils';
|
3
3
|
import BaseEditForm from './_classes/component/Component.form';
|
4
|
+
import { getComponentKey } from '../utils/utils';
|
4
5
|
import _ from 'lodash';
|
5
6
|
export default class Components {
|
6
7
|
static _editFormUtils = EditFormUtils;
|
@@ -52,7 +53,8 @@ export default class Components {
|
|
52
53
|
*/
|
53
54
|
static getComponentPath(component) {
|
54
55
|
let path = '';
|
55
|
-
|
56
|
+
const componentKey = getComponentKey(component.component);
|
57
|
+
if (componentKey) {
|
56
58
|
let thisPath = component.options?.parent || component;
|
57
59
|
while (thisPath && !thisPath.allowData && thisPath.parent) {
|
58
60
|
thisPath = thisPath.parent;
|
@@ -64,7 +66,7 @@ export default class Components {
|
|
64
66
|
const rowIndex = component.row;
|
65
67
|
const rowIndexPath = rowIndex && !['container'].includes(thisPath.component.type) ? `[${Number.parseInt(rowIndex)}]` : '';
|
66
68
|
path = `${thisPath.path}${rowIndexPath}.`;
|
67
|
-
path +=
|
69
|
+
path += componentKey;
|
68
70
|
return _.trim(path, '.');
|
69
71
|
}
|
70
72
|
return path;
|
@@ -2904,7 +2904,7 @@ export default class Component extends Element {
|
|
2904
2904
|
if (this.options.alwaysDirty) {
|
2905
2905
|
flags.dirty = true;
|
2906
2906
|
}
|
2907
|
-
if (flags.fromSubmission && this.hasValue(data)) {
|
2907
|
+
if (flags.fromSubmission && this.hasValue(data) && !(this.pristine && this.protected)) {
|
2908
2908
|
flags.dirty = true;
|
2909
2909
|
}
|
2910
2910
|
this.setDirty(flags.dirty);
|
@@ -2931,6 +2931,7 @@ export default class Component extends Element {
|
|
2931
2931
|
value: this.validationValue,
|
2932
2932
|
path: this.path || this.component.key,
|
2933
2933
|
instance: this,
|
2934
|
+
form: this.root ? this.root._form : {},
|
2934
2935
|
scope: { errors: [] },
|
2935
2936
|
processors: [
|
2936
2937
|
validateProcessInfo
|
@@ -3404,6 +3405,9 @@ export default class Component extends Element {
|
|
3404
3405
|
if ('beforeFocus' in this.parent) {
|
3405
3406
|
this.parent.beforeFocus(this);
|
3406
3407
|
}
|
3408
|
+
if (!index && !_.isNumber(index) && this.refs?.input?.length) {
|
3409
|
+
index = this.refs.input.length - 1;
|
3410
|
+
}
|
3407
3411
|
if (this.refs.input?.length) {
|
3408
3412
|
const focusingInput = this.refs.input[index];
|
3409
3413
|
if (this.component.widget?.type === 'calendar') {
|
@@ -1,6 +1,7 @@
|
|
1
1
|
export default class ListComponent extends Field {
|
2
2
|
get isSelectURL(): boolean;
|
3
3
|
get selectData(): any;
|
4
|
+
get dataReady(): any;
|
4
5
|
get shouldLoad(): boolean;
|
5
6
|
getTemplateKeys(): void;
|
6
7
|
templateKeys: string[] | undefined;
|
@@ -10,6 +11,9 @@ export default class ListComponent extends Field {
|
|
10
11
|
loadItems(): void;
|
11
12
|
getOptionTemplate(data: any, value: any, index: any): any;
|
12
13
|
itemTemplate(data: any, value: any, index: any): any;
|
14
|
+
set itemsLoaded(promise: any);
|
15
|
+
get itemsLoaded(): any;
|
16
|
+
_itemsLoaded: any;
|
13
17
|
handleLoadingError(err: any): void;
|
14
18
|
loading: boolean | undefined;
|
15
19
|
networkError: boolean | undefined;
|
@@ -21,6 +21,16 @@ export default class ListComponent extends Field {
|
|
21
21
|
const selectData = _.get(this.root, 'submission.metadata.selectData', {});
|
22
22
|
return _.get(selectData, this.path);
|
23
23
|
}
|
24
|
+
get dataReady() {
|
25
|
+
// If the root submission has been set, and we are still not attached, then assume
|
26
|
+
// that our data is ready.
|
27
|
+
if (this.root &&
|
28
|
+
this.root.submissionSet &&
|
29
|
+
!this.attached) {
|
30
|
+
return Promise.resolve();
|
31
|
+
}
|
32
|
+
return this.itemsLoaded;
|
33
|
+
}
|
24
34
|
get shouldLoad() {
|
25
35
|
if (this.loadingError) {
|
26
36
|
return false;
|
@@ -107,6 +117,12 @@ export default class ListComponent extends Field {
|
|
107
117
|
return this.sanitize(JSON.stringify(data), this.shouldSanitizeValue);
|
108
118
|
}
|
109
119
|
}
|
120
|
+
get itemsLoaded() {
|
121
|
+
return this._itemsLoaded || Promise.resolve();
|
122
|
+
}
|
123
|
+
set itemsLoaded(promise) {
|
124
|
+
this._itemsLoaded = promise;
|
125
|
+
}
|
110
126
|
handleLoadingError(err) {
|
111
127
|
this.loading = false;
|
112
128
|
if (err.networkError) {
|
@@ -169,6 +185,7 @@ export default class ListComponent extends Field {
|
|
169
185
|
return;
|
170
186
|
}
|
171
187
|
let { url } = this.component.data;
|
188
|
+
url = _.trim(url);
|
172
189
|
let method;
|
173
190
|
let body;
|
174
191
|
if (url.startsWith('/')) {
|
@@ -210,6 +210,16 @@ export default class AddressComponent extends ContainerComponent {
|
|
210
210
|
isValueInLegacyFormat(value) {
|
211
211
|
return value && !value.mode;
|
212
212
|
}
|
213
|
+
set dataValue(value) {
|
214
|
+
super.dataValue = value;
|
215
|
+
}
|
216
|
+
get dataValue() {
|
217
|
+
const resultValue = _.get(this._data, this.component.path);
|
218
|
+
if (!_.isArray(resultValue) && this.component.multiple) {
|
219
|
+
return [resultValue];
|
220
|
+
}
|
221
|
+
return super.dataValue;
|
222
|
+
}
|
213
223
|
normalizeValue(value) {
|
214
224
|
return (this.manualModeEnabled && this.isValueInLegacyFormat(value))
|
215
225
|
? {
|
@@ -495,26 +495,33 @@ export default class DayComponent extends Field {
|
|
495
495
|
defaults = defaultValue.split('/').map(x => parseInt(x, 10));
|
496
496
|
}
|
497
497
|
if (this.showDay && this.refs.day) {
|
498
|
-
day = parseInt(this.refs.day.value, 10);
|
498
|
+
day = this.refs.day.value === '' ? '' : parseInt(this.refs.day.value, 10);
|
499
499
|
}
|
500
500
|
if (day === undefined || _.isNaN(day)) {
|
501
|
-
day = defaults
|
501
|
+
day = (defaults.length !== 3 && value)
|
502
|
+
? this.getDayWithHiddenFields(defaults).day
|
503
|
+
: (defaults[DAY] && !_.isNaN(defaults[DAY]) ? defaults[DAY] : 0);
|
502
504
|
}
|
503
505
|
if (this.showMonth && this.refs.month) {
|
504
506
|
// Months are 0 indexed.
|
505
|
-
month = parseInt(this.refs.month.value, 10);
|
507
|
+
month = this.refs.month.value === '' ? '' : parseInt(this.refs.month.value, 10);
|
506
508
|
}
|
507
509
|
if (month === undefined || _.isNaN(month)) {
|
508
|
-
month = defaults
|
510
|
+
month = (defaults.length !== 3 && value)
|
511
|
+
? this.getDayWithHiddenFields(defaults).month
|
512
|
+
: (defaults[MONTH] && !_.isNaN(defaults[MONTH]) ? defaults[MONTH] : 0);
|
509
513
|
}
|
510
514
|
if (this.showYear && this.refs.year) {
|
511
|
-
year = parseInt(this.refs.year.value);
|
515
|
+
year = this.refs.year.value === '' ? '' : parseInt(this.refs.year.value);
|
512
516
|
}
|
513
517
|
if (year === undefined || _.isNaN(year)) {
|
514
|
-
year = defaults
|
518
|
+
year = (defaults.length !== 3 && value)
|
519
|
+
? this.getDayWithHiddenFields(defaults).year
|
520
|
+
: (defaults[YEAR] && !_.isNaN(defaults[YEAR]) ? defaults[YEAR] : 0);
|
515
521
|
}
|
516
522
|
let result;
|
517
523
|
if (!day && !month && !year) {
|
524
|
+
this.dataValue = this.emptyValue;
|
518
525
|
return null;
|
519
526
|
}
|
520
527
|
// add trailing zeros if the data is showed
|
@@ -23,10 +23,10 @@ export default class RadioComponent extends ListComponent {
|
|
23
23
|
get listData(): any;
|
24
24
|
templateData: {} | undefined;
|
25
25
|
triggerUpdate: ((...args: any[]) => any) | undefined;
|
26
|
-
itemsLoaded: Promise<any> | undefined;
|
27
26
|
itemsLoadedResolve: ((value: any) => void) | undefined;
|
28
27
|
optionsLoaded: boolean | undefined;
|
29
28
|
loadedOptions: any[] | undefined;
|
29
|
+
beforeSubmit(): Promise<any>;
|
30
30
|
render(): import("../_classes/field/Field").default;
|
31
31
|
attach(element: any): Promise<void>;
|
32
32
|
detach(element: any): void;
|
@@ -80,6 +80,14 @@ export default class RadioComponent extends ListComponent {
|
|
80
80
|
}
|
81
81
|
return defaultValue;
|
82
82
|
}
|
83
|
+
resetValue() {
|
84
|
+
this.unset();
|
85
|
+
this.setValue(this.emptyValue, {
|
86
|
+
noUpdateEvent: true,
|
87
|
+
noValidate: true,
|
88
|
+
resetValue: true
|
89
|
+
});
|
90
|
+
}
|
83
91
|
get inputInfo() {
|
84
92
|
const info = super.elementInfo();
|
85
93
|
info.type = 'input';
|
@@ -126,12 +134,23 @@ export default class RadioComponent extends ListComponent {
|
|
126
134
|
this.itemsLoaded = new Promise((resolve) => {
|
127
135
|
this.itemsLoadedResolve = resolve;
|
128
136
|
});
|
129
|
-
this.optionsLoaded =
|
137
|
+
this.optionsLoaded = !this.component.dataSrc || this.component.dataSrc === 'values';
|
130
138
|
this.loadedOptions = [];
|
139
|
+
if (!this.visible) {
|
140
|
+
this.itemsLoadedResolve();
|
141
|
+
}
|
131
142
|
// Get the template keys for this radio component.
|
132
143
|
this.getTemplateKeys();
|
133
144
|
}
|
145
|
+
beforeSubmit() {
|
146
|
+
return new Promise(res => {
|
147
|
+
this.dataReady.then(() => res(true));
|
148
|
+
});
|
149
|
+
}
|
134
150
|
render() {
|
151
|
+
if (!this.optionsLoaded) {
|
152
|
+
return super.render(this.renderTemplate('loader'));
|
153
|
+
}
|
135
154
|
return super.render(this.renderTemplate('radio', {
|
136
155
|
input: this.inputInfo,
|
137
156
|
inline: this.component.inline,
|
@@ -242,12 +261,22 @@ export default class RadioComponent extends ListComponent {
|
|
242
261
|
this.refs.input[index].checked = (inputValue === value.toString());
|
243
262
|
}
|
244
263
|
}
|
264
|
+
get shouldLoad() {
|
265
|
+
// do not load options if the value is empty in readOnly and we have options available in metadata
|
266
|
+
if (this.options.readOnly && this.isEmpty() && this.listData) {
|
267
|
+
return false;
|
268
|
+
}
|
269
|
+
return super.shouldLoad;
|
270
|
+
}
|
245
271
|
loadItems(url, search, headers, options, method, body) {
|
246
272
|
if (this.optionsLoaded) {
|
273
|
+
this.itemsLoadedResolve();
|
247
274
|
return;
|
248
275
|
}
|
249
276
|
if (!this.shouldLoad && this.listData) {
|
250
277
|
this.loadItemsFromMetadata();
|
278
|
+
this.itemsLoadedResolve();
|
279
|
+
this.optionsLoaded = true;
|
251
280
|
return;
|
252
281
|
}
|
253
282
|
// Ensure we have a method and remove any body if method is get
|
@@ -268,6 +297,7 @@ export default class RadioComponent extends ListComponent {
|
|
268
297
|
this.redraw();
|
269
298
|
})
|
270
299
|
.catch((err) => {
|
300
|
+
this.optionsLoaded = true;
|
271
301
|
this.handleLoadingError(err);
|
272
302
|
});
|
273
303
|
}
|
@@ -308,6 +338,7 @@ export default class RadioComponent extends ListComponent {
|
|
308
338
|
}
|
309
339
|
_.set(submission.metadata.listData, this.path, listData);
|
310
340
|
}
|
341
|
+
this.itemsLoadedResolve();
|
311
342
|
}
|
312
343
|
setSelectedClasses() {
|
313
344
|
if (this.refs.wrapper) {
|
@@ -0,0 +1,49 @@
|
|
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
|
+
optionsLabelPosition: string;
|
11
|
+
inline: boolean;
|
12
|
+
tableView: boolean;
|
13
|
+
dataSrc: string;
|
14
|
+
values: {
|
15
|
+
label: string;
|
16
|
+
value: string;
|
17
|
+
shortcut: string;
|
18
|
+
}[];
|
19
|
+
valueProperty: string;
|
20
|
+
validateWhenHidden: boolean;
|
21
|
+
key: string;
|
22
|
+
type: string;
|
23
|
+
data: {
|
24
|
+
url: string;
|
25
|
+
headers: {
|
26
|
+
key: string;
|
27
|
+
value: string;
|
28
|
+
}[];
|
29
|
+
};
|
30
|
+
input: boolean;
|
31
|
+
disableOnInvalid?: undefined;
|
32
|
+
} | {
|
33
|
+
type: string;
|
34
|
+
label: string;
|
35
|
+
key: string;
|
36
|
+
disableOnInvalid: boolean;
|
37
|
+
input: boolean;
|
38
|
+
tableView: boolean;
|
39
|
+
optionsLabelPosition?: undefined;
|
40
|
+
inline?: undefined;
|
41
|
+
dataSrc?: undefined;
|
42
|
+
values?: undefined;
|
43
|
+
valueProperty?: undefined;
|
44
|
+
validateWhenHidden?: undefined;
|
45
|
+
data?: undefined;
|
46
|
+
})[];
|
47
|
+
let project: string;
|
48
|
+
}
|
49
|
+
export default _default;
|
@@ -0,0 +1,47 @@
|
|
1
|
+
export default {
|
2
|
+
_id: '66ebe22841267c275a4cb34e',
|
3
|
+
title: 'test radio url 1',
|
4
|
+
name: 'testRadioUrl1',
|
5
|
+
path: 'testradiourl1',
|
6
|
+
type: 'form',
|
7
|
+
display: 'form',
|
8
|
+
components: [
|
9
|
+
{
|
10
|
+
label: 'Radio',
|
11
|
+
optionsLabelPosition: 'right',
|
12
|
+
inline: false,
|
13
|
+
tableView: false,
|
14
|
+
dataSrc: 'url',
|
15
|
+
values: [
|
16
|
+
{
|
17
|
+
label: '',
|
18
|
+
value: '',
|
19
|
+
shortcut: '',
|
20
|
+
},
|
21
|
+
],
|
22
|
+
valueProperty: 'identifier',
|
23
|
+
validateWhenHidden: false,
|
24
|
+
key: 'radio',
|
25
|
+
type: 'radio',
|
26
|
+
data: {
|
27
|
+
url: 'https://test.test/options',
|
28
|
+
headers: [
|
29
|
+
{
|
30
|
+
key: '',
|
31
|
+
value: '',
|
32
|
+
},
|
33
|
+
],
|
34
|
+
},
|
35
|
+
input: true,
|
36
|
+
},
|
37
|
+
{
|
38
|
+
type: 'button',
|
39
|
+
label: 'Submit',
|
40
|
+
key: 'submit',
|
41
|
+
disableOnInvalid: true,
|
42
|
+
input: true,
|
43
|
+
tableView: false,
|
44
|
+
},
|
45
|
+
],
|
46
|
+
project: '66e930e238963ab0230de6df',
|
47
|
+
};
|
@@ -10,4 +10,5 @@ import comp9 from './comp9';
|
|
10
10
|
import comp10 from './comp10';
|
11
11
|
import comp11 from './comp11';
|
12
12
|
import comp12 from './comp12';
|
13
|
-
|
13
|
+
import comp13 from './comp13';
|
14
|
+
export { comp1, comp2, comp3, comp4, comp5, comp6, comp7, comp8, comp9, comp10, comp11, comp12, comp13 };
|
@@ -10,4 +10,5 @@ import comp9 from './comp9';
|
|
10
10
|
import comp10 from './comp10';
|
11
11
|
import comp11 from './comp11';
|
12
12
|
import comp12 from './comp12';
|
13
|
-
|
13
|
+
import comp13 from './comp13';
|
14
|
+
export { comp1, comp2, comp3, comp4, comp5, comp6, comp7, comp8, comp9, comp10, comp11, comp12, comp13 };
|
@@ -54,8 +54,6 @@ export default class SelectComponent extends ListComponent {
|
|
54
54
|
static savedValueTypes(schema: any): any[];
|
55
55
|
templateData: {} | undefined;
|
56
56
|
triggerUpdate: ((...args: any[]) => any) | undefined;
|
57
|
-
set itemsLoaded(promise: any);
|
58
|
-
get itemsLoaded(): any;
|
59
57
|
itemsLoadedResolve: ((value: any) => void) | undefined;
|
60
58
|
isFromSearch: boolean | undefined;
|
61
59
|
searchServerCount: any;
|
@@ -65,7 +63,6 @@ export default class SelectComponent extends ListComponent {
|
|
65
63
|
defaultDownloadedResources: any;
|
66
64
|
activated: boolean | undefined;
|
67
65
|
shouldPositionDropdown: any;
|
68
|
-
get dataReady(): any;
|
69
66
|
get emptyValue(): {};
|
70
67
|
get valueProperty(): any;
|
71
68
|
get inputInfo(): any;
|
@@ -141,7 +138,6 @@ export default class SelectComponent extends ListComponent {
|
|
141
138
|
lazyLoadInit: boolean | undefined;
|
142
139
|
isInitApiCallNeeded(hasValue: any): any;
|
143
140
|
setChoicesValue(value: any, hasPreviousValue: any, flags?: {}): void;
|
144
|
-
_itemsLoaded: any;
|
145
141
|
validateValueAvailability(setting: any, value: any): boolean;
|
146
142
|
/**
|
147
143
|
* Performs required transformations on the initial value to use in selectOptions
|
@@ -151,16 +151,6 @@ export default class SelectComponent extends ListComponent {
|
|
151
151
|
// Get the template keys for this select component.
|
152
152
|
this.getTemplateKeys();
|
153
153
|
}
|
154
|
-
get dataReady() {
|
155
|
-
// If the root submission has been set, and we are still not attached, then assume
|
156
|
-
// that our data is ready.
|
157
|
-
if (this.root &&
|
158
|
-
this.root.submissionSet &&
|
159
|
-
!this.attached) {
|
160
|
-
return Promise.resolve();
|
161
|
-
}
|
162
|
-
return this.itemsLoaded;
|
163
|
-
}
|
164
154
|
get defaultSchema() {
|
165
155
|
return SelectComponent.schema();
|
166
156
|
}
|
@@ -1398,12 +1388,6 @@ export default class SelectComponent extends ListComponent {
|
|
1398
1388
|
}
|
1399
1389
|
}
|
1400
1390
|
}
|
1401
|
-
get itemsLoaded() {
|
1402
|
-
return this._itemsLoaded || Promise.resolve();
|
1403
|
-
}
|
1404
|
-
set itemsLoaded(promise) {
|
1405
|
-
this._itemsLoaded = promise;
|
1406
|
-
}
|
1407
1391
|
validateValueAvailability(setting, value) {
|
1408
1392
|
if (!boolValue(setting) || !value) {
|
1409
1393
|
return true;
|
@@ -0,0 +1,49 @@
|
|
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
|
+
optionsLabelPosition: string;
|
11
|
+
tableView: boolean;
|
12
|
+
dataSrc: string;
|
13
|
+
values: {
|
14
|
+
label: string;
|
15
|
+
value: string;
|
16
|
+
shortcut: string;
|
17
|
+
}[];
|
18
|
+
valueProperty: string;
|
19
|
+
validateWhenHidden: boolean;
|
20
|
+
key: string;
|
21
|
+
type: string;
|
22
|
+
data: {
|
23
|
+
url: string;
|
24
|
+
headers: {
|
25
|
+
key: string;
|
26
|
+
value: string;
|
27
|
+
}[];
|
28
|
+
};
|
29
|
+
input: boolean;
|
30
|
+
inputType: string;
|
31
|
+
disableOnInvalid?: undefined;
|
32
|
+
} | {
|
33
|
+
type: string;
|
34
|
+
label: string;
|
35
|
+
key: string;
|
36
|
+
disableOnInvalid: boolean;
|
37
|
+
input: boolean;
|
38
|
+
tableView: boolean;
|
39
|
+
optionsLabelPosition?: undefined;
|
40
|
+
dataSrc?: undefined;
|
41
|
+
values?: undefined;
|
42
|
+
valueProperty?: undefined;
|
43
|
+
validateWhenHidden?: undefined;
|
44
|
+
data?: undefined;
|
45
|
+
inputType?: undefined;
|
46
|
+
})[];
|
47
|
+
let project: string;
|
48
|
+
}
|
49
|
+
export default _default;
|
@@ -0,0 +1,47 @@
|
|
1
|
+
export default {
|
2
|
+
_id: '66ebfb1141267c275a4cce11',
|
3
|
+
title: 'test selectboxes url',
|
4
|
+
name: 'testSelectboxesUrl',
|
5
|
+
path: 'testselectboxesurl',
|
6
|
+
type: 'form',
|
7
|
+
display: 'form',
|
8
|
+
components: [
|
9
|
+
{
|
10
|
+
label: 'Select Boxes',
|
11
|
+
optionsLabelPosition: 'right',
|
12
|
+
tableView: false,
|
13
|
+
dataSrc: 'url',
|
14
|
+
values: [
|
15
|
+
{
|
16
|
+
label: '',
|
17
|
+
value: '',
|
18
|
+
shortcut: '',
|
19
|
+
},
|
20
|
+
],
|
21
|
+
valueProperty: 'identifier',
|
22
|
+
validateWhenHidden: false,
|
23
|
+
key: 'selectBoxes',
|
24
|
+
type: 'selectboxes',
|
25
|
+
data: {
|
26
|
+
url: 'https://test.test/options',
|
27
|
+
headers: [
|
28
|
+
{
|
29
|
+
key: '',
|
30
|
+
value: '',
|
31
|
+
},
|
32
|
+
],
|
33
|
+
},
|
34
|
+
input: true,
|
35
|
+
inputType: 'checkbox',
|
36
|
+
},
|
37
|
+
{
|
38
|
+
type: 'button',
|
39
|
+
label: 'Submit',
|
40
|
+
key: 'submit',
|
41
|
+
disableOnInvalid: true,
|
42
|
+
input: true,
|
43
|
+
tableView: false,
|
44
|
+
},
|
45
|
+
],
|
46
|
+
project: '66e930e238963ab0230de6df',
|
47
|
+
};
|
@@ -4,4 +4,6 @@ import comp3 from './comp3';
|
|
4
4
|
import comp4 from './comp4';
|
5
5
|
import comp5 from './comp5';
|
6
6
|
import comp6 from './comp6';
|
7
|
-
|
7
|
+
import comp7 from './comp7';
|
8
|
+
import comp8 from './comp8';
|
9
|
+
export { comp1, comp2, comp3, comp4, comp5, comp6, comp7, comp8 };
|
package/lib/mjs/utils/utils.d.ts
CHANGED
@@ -531,4 +531,4 @@ import jsonLogic from 'json-logic-js';
|
|
531
531
|
import ConditionOperators from './conditionOperators';
|
532
532
|
import { Evaluator } from './Evaluator';
|
533
533
|
export const interpolate: typeof Evaluator.interpolate;
|
534
|
-
export { jsonLogic, ConditionOperators, Evaluator, _ };
|
534
|
+
export { jsonLogic, ConditionOperators, moment, Evaluator, _ };
|
package/lib/mjs/utils/utils.js
CHANGED
@@ -24,8 +24,7 @@ jsonLogic.add_operation('relativeMinDate', (relativeMinDate) => {
|
|
24
24
|
jsonLogic.add_operation('relativeMaxDate', (relativeMaxDate) => {
|
25
25
|
return moment().add(relativeMaxDate, 'days').toISOString();
|
26
26
|
});
|
27
|
-
export { jsonLogic, ConditionOperators };
|
28
|
-
export * as moment from 'moment-timezone/moment-timezone';
|
27
|
+
export { jsonLogic, ConditionOperators, moment };
|
29
28
|
/**
|
30
29
|
* Sets the path to the component and parent schema.
|
31
30
|
* @param {import('@formio/core').Component} component - The component to set the path for.
|
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.89",
|
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.37",
|
83
83
|
"@formio/choices.js": "^10.2.1",
|
84
|
-
"@formio/core": "2.3.0-rc.
|
84
|
+
"@formio/core": "2.3.0-rc.8",
|
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",
|