@formio/js 5.1.0-dev.6094.c49181e → 5.1.0-dev.6100.6a7b450
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/README.md +7 -0
- package/dist/formio.form.js +125 -125
- package/dist/formio.form.min.js +1 -1
- package/dist/formio.form.min.js.LICENSE.txt +2 -0
- package/dist/formio.full.js +132 -132
- package/dist/formio.full.min.js +1 -1
- package/dist/formio.full.min.js.LICENSE.txt +2 -0
- package/dist/formio.js +74 -63
- package/dist/formio.min.js +1 -1
- package/dist/formio.utils.js +86 -75
- package/dist/formio.utils.min.js +1 -1
- package/dist/formio.utils.min.js.LICENSE.txt +2 -0
- package/lib/cjs/Element.js +13 -36
- package/lib/cjs/EventEmitter.js +2 -25
- package/lib/cjs/Form.js +2 -25
- package/lib/cjs/PDF.js +1 -1
- package/lib/cjs/PDFBuilder.js +4 -5
- package/lib/cjs/Webform.js +3 -4
- package/lib/cjs/WebformBuilder.d.ts +1 -0
- package/lib/cjs/WebformBuilder.js +33 -14
- package/lib/cjs/Wizard.d.ts +1 -2
- package/lib/cjs/Wizard.js +18 -24
- package/lib/cjs/WizardBuilder.js +1 -1
- package/lib/cjs/components/_classes/component/Component.d.ts +0 -1
- package/lib/cjs/components/_classes/component/Component.js +36 -57
- package/lib/cjs/components/_classes/component/editForm/Component.edit.conditional.js +1 -1
- package/lib/cjs/components/_classes/component/editForm/Component.edit.logic.js +1 -1
- package/lib/cjs/components/_classes/componentModal/ComponentModal.js +1 -1
- package/lib/cjs/components/_classes/input/Input.js +1 -1
- package/lib/cjs/components/_classes/list/ListComponent.js +1 -1
- package/lib/cjs/components/_classes/nested/NestedComponent.js +7 -7
- package/lib/cjs/components/_classes/nestedarray/NestedArrayComponent.js +1 -1
- package/lib/cjs/components/_classes/nesteddata/NestedDataComponent.js +1 -1
- package/lib/cjs/components/address/Address.js +1 -1
- package/lib/cjs/components/alert/Alert.js +1 -1
- package/lib/cjs/components/button/Button.d.ts +1 -1
- package/lib/cjs/components/button/Button.js +7 -11
- package/lib/cjs/components/checkbox/Checkbox.js +1 -1
- package/lib/cjs/components/container/Container.js +1 -1
- package/lib/cjs/components/currency/Currency.js +1 -1
- package/lib/cjs/components/datagrid/DataGrid.js +5 -1
- package/lib/cjs/components/datetime/DateTime.js +1 -1
- package/lib/cjs/components/day/Day.js +2 -2
- package/lib/cjs/components/editgrid/EditGrid.js +1 -1
- package/lib/cjs/components/editgrid/editForm/EditGrid.edit.display.js +1 -1
- package/lib/cjs/components/file/File.js +5 -6
- package/lib/cjs/components/form/Form.js +14 -2
- package/lib/cjs/components/form/editForm/Form.edit.form.js +4 -3
- package/lib/cjs/components/number/Number.js +1 -1
- package/lib/cjs/components/panel/Panel.js +1 -1
- package/lib/cjs/components/radio/Radio.js +1 -1
- package/lib/cjs/components/recaptcha/editForm/ReCaptcha.edit.display.js +1 -1
- package/lib/cjs/components/select/Select.js +1 -1
- package/lib/cjs/components/select/editForm/Select.edit.data.js +1 -1
- package/lib/cjs/components/selectboxes/SelectBoxes.js +1 -1
- package/lib/cjs/components/signature/Signature.js +1 -1
- package/lib/cjs/components/survey/Survey.js +1 -1
- package/lib/cjs/components/tags/Tags.js +1 -1
- package/lib/cjs/components/textarea/TextArea.js +3 -3
- package/lib/cjs/components/textfield/TextField.js +7 -30
- package/lib/cjs/components/time/Time.js +1 -1
- package/lib/cjs/formio.form.js +3 -3
- package/lib/cjs/i18n.js +1 -1
- package/lib/cjs/providers/storage/uploadAdapter.js +3 -3
- package/lib/cjs/utils/Evaluator.d.ts +20 -6
- package/lib/cjs/utils/Evaluator.js +38 -15
- package/lib/cjs/utils/builder.js +5 -5
- package/lib/cjs/utils/conditionOperators/IsEqualTo.js +3 -3
- package/lib/cjs/utils/i18n.js +3 -3
- package/lib/cjs/utils/index.d.ts +169 -2
- package/lib/cjs/utils/index.js +22 -2
- package/lib/cjs/utils/utils.d.ts +4 -9
- package/lib/cjs/utils/utils.js +20 -51
- package/lib/cjs/widgets/CalendarWidget.d.ts +1 -1
- package/lib/cjs/widgets/CalendarWidget.js +5 -7
- package/lib/mjs/Element.js +6 -6
- package/lib/mjs/EventEmitter.js +2 -2
- package/lib/mjs/Form.js +1 -1
- package/lib/mjs/PDF.js +1 -1
- package/lib/mjs/PDFBuilder.js +1 -2
- package/lib/mjs/Webform.js +1 -2
- package/lib/mjs/WebformBuilder.d.ts +1 -0
- package/lib/mjs/WebformBuilder.js +25 -7
- package/lib/mjs/Wizard.d.ts +1 -2
- package/lib/mjs/Wizard.js +17 -23
- package/lib/mjs/WizardBuilder.js +1 -1
- package/lib/mjs/components/_classes/component/Component.d.ts +0 -1
- package/lib/mjs/components/_classes/component/Component.js +9 -7
- package/lib/mjs/components/_classes/component/editForm/Component.edit.conditional.js +1 -1
- package/lib/mjs/components/_classes/component/editForm/Component.edit.logic.js +1 -1
- package/lib/mjs/components/_classes/componentModal/ComponentModal.js +1 -1
- package/lib/mjs/components/_classes/input/Input.js +1 -1
- package/lib/mjs/components/_classes/list/ListComponent.js +1 -1
- package/lib/mjs/components/_classes/nested/NestedComponent.js +7 -7
- package/lib/mjs/components/_classes/nestedarray/NestedArrayComponent.js +1 -1
- package/lib/mjs/components/_classes/nesteddata/NestedDataComponent.js +1 -1
- package/lib/mjs/components/address/Address.js +1 -1
- package/lib/mjs/components/alert/Alert.js +1 -1
- package/lib/mjs/components/button/Button.d.ts +1 -1
- package/lib/mjs/components/button/Button.js +7 -10
- package/lib/mjs/components/checkbox/Checkbox.js +1 -1
- package/lib/mjs/components/container/Container.js +1 -1
- package/lib/mjs/components/currency/Currency.js +1 -1
- package/lib/mjs/components/datagrid/DataGrid.js +5 -1
- package/lib/mjs/components/datetime/DateTime.js +1 -1
- package/lib/mjs/components/day/Day.js +2 -2
- package/lib/mjs/components/editgrid/EditGrid.js +1 -1
- package/lib/mjs/components/editgrid/editForm/EditGrid.edit.display.js +1 -1
- package/lib/mjs/components/file/File.js +5 -6
- package/lib/mjs/components/form/Form.js +13 -2
- package/lib/mjs/components/form/editForm/Form.edit.form.js +3 -2
- package/lib/mjs/components/number/Number.js +1 -1
- package/lib/mjs/components/panel/Panel.js +1 -1
- package/lib/mjs/components/radio/Radio.js +1 -1
- package/lib/mjs/components/recaptcha/editForm/ReCaptcha.edit.display.js +1 -1
- package/lib/mjs/components/select/Select.js +1 -1
- package/lib/mjs/components/select/editForm/Select.edit.data.js +1 -1
- package/lib/mjs/components/selectboxes/SelectBoxes.js +1 -1
- package/lib/mjs/components/signature/Signature.js +1 -1
- package/lib/mjs/components/survey/Survey.js +1 -1
- package/lib/mjs/components/tags/Tags.js +1 -1
- package/lib/mjs/components/textarea/TextArea.js +3 -3
- package/lib/mjs/components/textfield/TextField.js +1 -1
- package/lib/mjs/components/time/Time.js +1 -1
- package/lib/mjs/formio.form.js +2 -2
- package/lib/mjs/i18n.js +1 -1
- package/lib/mjs/providers/storage/uploadAdapter.js +3 -3
- package/lib/mjs/utils/Evaluator.d.ts +20 -6
- package/lib/mjs/utils/Evaluator.js +31 -13
- package/lib/mjs/utils/builder.js +1 -1
- package/lib/mjs/utils/conditionOperators/IsEqualTo.js +1 -1
- package/lib/mjs/utils/i18n.js +1 -1
- package/lib/mjs/utils/index.d.ts +169 -2
- package/lib/mjs/utils/index.js +18 -1
- package/lib/mjs/utils/utils.d.ts +4 -9
- package/lib/mjs/utils/utils.js +16 -30
- package/lib/mjs/widgets/CalendarWidget.d.ts +1 -1
- package/lib/mjs/widgets/CalendarWidget.js +5 -7
- package/package.json +6 -5
@@ -1,7 +1,7 @@
|
|
1
1
|
import SignaturePad from 'signature_pad';
|
2
2
|
import Input from '../_classes/input/Input';
|
3
3
|
import _ from 'lodash';
|
4
|
-
import { componentValueTypes, getComponentSavedTypes } from '../../utils
|
4
|
+
import { componentValueTypes, getComponentSavedTypes } from '../../utils';
|
5
5
|
export default class SignatureComponent extends Input {
|
6
6
|
static schema(...extend) {
|
7
7
|
return Input.schema({
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import _ from 'lodash';
|
2
2
|
import Field from '../_classes/field/Field';
|
3
|
-
import { boolValue, componentValueTypes, getComponentSavedTypes } from '../../utils
|
3
|
+
import { boolValue, componentValueTypes, getComponentSavedTypes } from '../../utils';
|
4
4
|
export default class SurveyComponent extends Field {
|
5
5
|
static schema(...extend) {
|
6
6
|
return Field.schema({
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { componentValueTypes, getComponentSavedTypes } from '../../utils
|
1
|
+
import { componentValueTypes, getComponentSavedTypes } from '../../utils';
|
2
2
|
import Input from '../_classes/input/Input';
|
3
3
|
import Choices from 'choices.js';
|
4
4
|
export default class TagsComponent extends Input {
|
@@ -1,7 +1,7 @@
|
|
1
1
|
/* global Quill */
|
2
2
|
import TextFieldComponent from '../textfield/TextField';
|
3
3
|
import _ from 'lodash';
|
4
|
-
import { uniqueName, getBrowserInfo } from '../../utils
|
4
|
+
import { uniqueName, getBrowserInfo } from '../../utils';
|
5
5
|
export default class TextAreaComponent extends TextFieldComponent {
|
6
6
|
static schema(...extend) {
|
7
7
|
return TextFieldComponent.schema({
|
@@ -58,8 +58,8 @@ export default class TextAreaComponent extends TextFieldComponent {
|
|
58
58
|
if ((this.options.readOnly || this.disabled) && !this.isHtmlRenderMode()) {
|
59
59
|
const elementStyle = this.info.attr.style || '';
|
60
60
|
const children = `
|
61
|
-
<div ${this._referenceAttributeName}="input"
|
62
|
-
class="formio-editor-read-only-content"
|
61
|
+
<div ${this._referenceAttributeName}="input"
|
62
|
+
class="formio-editor-read-only-content"
|
63
63
|
${elementStyle ? `style='${elementStyle}'` : ''}
|
64
64
|
role="textbox"
|
65
65
|
aria-multiline="true"
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import Input from '../_classes/input/Input';
|
2
2
|
import { conformToMask } from '@formio/vanilla-text-mask';
|
3
3
|
import Inputmask from 'inputmask';
|
4
|
-
import
|
4
|
+
import FormioUtils from '../../utils';
|
5
5
|
import _ from 'lodash';
|
6
6
|
export default class TextFieldComponent extends Input {
|
7
7
|
static schema(...extend) {
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import moment from 'moment';
|
2
2
|
import TextFieldComponent from '../textfield/TextField';
|
3
|
-
import { getBrowserInfo } from '../../utils
|
3
|
+
import { getBrowserInfo } from '../../utils';
|
4
4
|
const defaultDataFormat = 'HH:mm:ss';
|
5
5
|
export default class TimeComponent extends TextFieldComponent {
|
6
6
|
static schema(...extend) {
|
package/lib/mjs/formio.form.js
CHANGED
@@ -8,11 +8,11 @@ import Providers from './providers';
|
|
8
8
|
import Widgets from './widgets';
|
9
9
|
import Form from './Form';
|
10
10
|
import Utils from './utils';
|
11
|
-
import { Evaluator } from './utils/Evaluator';
|
12
11
|
import Licenses from './licenses';
|
13
12
|
import EventEmitter from './EventEmitter';
|
14
13
|
import Webform from './Webform';
|
15
14
|
import { I18n } from './utils/i18n';
|
15
|
+
import { Evaluator, registerEvaluator } from './utils';
|
16
16
|
Formio.loadModules = (path = `${Formio.getApiUrl()}/externalModules.js`, name = 'externalModules') => {
|
17
17
|
Formio.requireLibrary(name, name, path, true)
|
18
18
|
.then((modules) => {
|
@@ -83,7 +83,7 @@ export function registerModule(mod, defaultFn = null, options = {}) {
|
|
83
83
|
Formio.Displays.addDisplays(mod.displays);
|
84
84
|
break;
|
85
85
|
case 'evaluator':
|
86
|
-
|
86
|
+
registerEvaluator(mod.evaluator);
|
87
87
|
break;
|
88
88
|
case 'translations':
|
89
89
|
I18n.setDefaultTranslations(mod.translations);
|
package/lib/mjs/i18n.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import { uniqueName } from '../../utils
|
1
|
+
import { uniqueName } from '../../utils';
|
2
2
|
/**
|
3
3
|
* UploadAdapter for CKEditor https://ckeditor.com/docs/ckeditor5/latest/framework/guides/deep-dive/upload-adapter.html
|
4
4
|
*/
|
@@ -24,7 +24,7 @@ class FormioUploadAdapter {
|
|
24
24
|
null,
|
25
25
|
null
|
26
26
|
];
|
27
|
-
|
27
|
+
this.fileService.uploadFile(...uploadParams, () => this.component.emit('fileUploadingStart')).then((result) => {
|
28
28
|
return this.fileService.downloadFile(result);
|
29
29
|
}).then((result) => {
|
30
30
|
return resolve({
|
@@ -34,7 +34,7 @@ class FormioUploadAdapter {
|
|
34
34
|
console.warn('An Error occured while uploading file', err);
|
35
35
|
reject(err);
|
36
36
|
}).finally(() => {
|
37
|
-
this.component.emit('fileUploadingEnd'
|
37
|
+
this.component.emit('fileUploadingEnd');
|
38
38
|
});
|
39
39
|
}));
|
40
40
|
}
|
@@ -1,7 +1,21 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
1
|
+
/**
|
2
|
+
* For backwards compatibility we a standalone interpolate function. This merely calls the
|
3
|
+
* global mutable Evaluator instance's interpolate function.
|
4
|
+
* @param {...any} args - interpolate arguments, typically "rawTemplate", "data", and "options"
|
5
|
+
* @returns {any} the interpolation result.
|
6
|
+
*/
|
7
|
+
export function interpolate(...args: any[]): any;
|
8
|
+
/**
|
9
|
+
* Set the evaluator to use for evaluating expressions.
|
10
|
+
* @param {CoreEvaluator} override - The new evaluator instance to use.
|
11
|
+
* @returns {void}
|
12
|
+
*/
|
13
|
+
export function registerEvaluator(override: CoreEvaluator): void;
|
14
|
+
export class DefaultEvaluator extends CoreEvaluator {
|
15
|
+
cache: {};
|
16
|
+
protectedEval: boolean;
|
17
|
+
template(template: any, hash: any): any;
|
18
|
+
interpolate(rawTemplate: any, data: any, _options: any): any;
|
7
19
|
}
|
20
|
+
export let Evaluator: DefaultEvaluator;
|
21
|
+
import { DefaultEvaluator as CoreEvaluator } from '@formio/core';
|
@@ -1,25 +1,24 @@
|
|
1
1
|
import _ from 'lodash';
|
2
2
|
import stringHash from 'string-hash';
|
3
|
-
import {
|
4
|
-
export class
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
static template(template, hash) {
|
3
|
+
import { DefaultEvaluator as CoreEvaluator } from '@formio/core';
|
4
|
+
export class DefaultEvaluator extends CoreEvaluator {
|
5
|
+
cache = {};
|
6
|
+
protectedEval = false;
|
7
|
+
template(template, hash) {
|
9
8
|
hash = hash || stringHash(template);
|
10
|
-
if (
|
11
|
-
return
|
9
|
+
if (this.cache[hash]) {
|
10
|
+
return this.cache[hash];
|
12
11
|
}
|
13
12
|
try {
|
14
13
|
// Ensure we handle copied templates from the ejs files.
|
15
14
|
template = template.replace(/ctx\./g, '');
|
16
|
-
return (
|
15
|
+
return (this.cache[hash] = _.template(template, this.templateSettings));
|
17
16
|
}
|
18
17
|
catch (err) {
|
19
18
|
console.warn('Error while processing template', err, template);
|
20
19
|
}
|
21
20
|
}
|
22
|
-
|
21
|
+
interpolate(rawTemplate, data, _options) {
|
23
22
|
// Ensure reverse compatability.
|
24
23
|
const options = _.isObject(_options) ? _options : { noeval: _options };
|
25
24
|
if (typeof rawTemplate === 'function') {
|
@@ -33,11 +32,11 @@ export class Evaluator extends CoreEvaluator {
|
|
33
32
|
}
|
34
33
|
rawTemplate = String(rawTemplate);
|
35
34
|
let template;
|
36
|
-
if (
|
37
|
-
return
|
35
|
+
if (this.noeval || options.noeval) {
|
36
|
+
return this.interpolateString(rawTemplate, data, _options);
|
38
37
|
}
|
39
38
|
else {
|
40
|
-
template =
|
39
|
+
template = this.template(rawTemplate);
|
41
40
|
}
|
42
41
|
if (typeof template === 'function') {
|
43
42
|
try {
|
@@ -51,3 +50,22 @@ export class Evaluator extends CoreEvaluator {
|
|
51
50
|
return template;
|
52
51
|
}
|
53
52
|
}
|
53
|
+
export let Evaluator = new DefaultEvaluator();
|
54
|
+
// preserve the standalone interpolate function for backwards compatibility
|
55
|
+
/**
|
56
|
+
* For backwards compatibility we a standalone interpolate function. This merely calls the
|
57
|
+
* global mutable Evaluator instance's interpolate function.
|
58
|
+
* @param {...any} args - interpolate arguments, typically "rawTemplate", "data", and "options"
|
59
|
+
* @returns {any} the interpolation result.
|
60
|
+
*/
|
61
|
+
export function interpolate(...args) {
|
62
|
+
return Evaluator.interpolate(...args);
|
63
|
+
}
|
64
|
+
/**
|
65
|
+
* Set the evaluator to use for evaluating expressions.
|
66
|
+
* @param {CoreEvaluator} override - The new evaluator instance to use.
|
67
|
+
* @returns {void}
|
68
|
+
*/
|
69
|
+
export function registerEvaluator(override) {
|
70
|
+
Evaluator = override;
|
71
|
+
}
|
package/lib/mjs/utils/builder.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
import ConditionOperator from './ConditionOperator';
|
2
2
|
import _ from 'lodash';
|
3
|
-
import { compareSelectResourceWithObjectTypeValues, isSelectResourceWithObjectValue } from '../
|
3
|
+
import { compareSelectResourceWithObjectTypeValues, isSelectResourceWithObjectValue } from '../';
|
4
4
|
export default class IsEqualTo extends ConditionOperator {
|
5
5
|
static get operatorKey() {
|
6
6
|
return 'isEqual';
|
package/lib/mjs/utils/i18n.js
CHANGED
package/lib/mjs/utils/index.d.ts
CHANGED
@@ -1,3 +1,170 @@
|
|
1
|
-
export
|
1
|
+
export * from "./utils";
|
2
|
+
export * from "./formUtils";
|
2
3
|
export default FormioUtils;
|
3
|
-
|
4
|
+
declare const FormioUtils: {
|
5
|
+
Evaluator: import("./Evaluator").DefaultEvaluator;
|
6
|
+
interpolate: typeof interpolate;
|
7
|
+
ConditionOperators: {
|
8
|
+
[x: string]: typeof import("./conditionOperators/IsEqualTo").default | typeof import("./conditionOperators/DateGreaterThan").default;
|
9
|
+
};
|
10
|
+
_: any;
|
11
|
+
moment: typeof moment;
|
12
|
+
flattenComponents: typeof import("@formio/core/lib/utils/formUtil").flattenComponents;
|
13
|
+
guid: typeof import("@formio/core/lib/utils/formUtil").guid;
|
14
|
+
uniqueName: typeof import("@formio/core/lib/utils/formUtil").uniqueName;
|
15
|
+
MODEL_TYPES_OF_KNOWN_COMPONENTS: {
|
16
|
+
nestedArray: string[];
|
17
|
+
nestedDataArray: string[];
|
18
|
+
dataObject: string[];
|
19
|
+
object: string[];
|
20
|
+
map: string[];
|
21
|
+
content: string[];
|
22
|
+
string: string[];
|
23
|
+
number: string[];
|
24
|
+
boolean: string[];
|
25
|
+
none: string[];
|
26
|
+
any: string[];
|
27
|
+
};
|
28
|
+
getModelType: typeof import("@formio/core/lib/utils/formUtil").getModelType;
|
29
|
+
getComponentPath: any;
|
30
|
+
setComponentScope: typeof import("@formio/core/lib/utils/formUtil").setComponentScope;
|
31
|
+
resetComponentScope: typeof import("@formio/core/lib/utils/formUtil").resetComponentScope;
|
32
|
+
isComponentNestedDataType: typeof import("@formio/core/lib/utils/formUtil").isComponentNestedDataType;
|
33
|
+
componentPath: typeof import("@formio/core/lib/utils/formUtil").componentPath;
|
34
|
+
getComponentPaths: typeof import("@formio/core/lib/utils/formUtil").getComponentPaths;
|
35
|
+
componentMatches: typeof import("@formio/core/lib/utils/formUtil").componentMatches;
|
36
|
+
getBestMatch: typeof import("@formio/core/lib/utils/formUtil").getBestMatch;
|
37
|
+
getComponentFromPath: typeof import("@formio/core/lib/utils/formUtil").getComponentFromPath;
|
38
|
+
getComponentValue: typeof import("@formio/core/lib/utils/formUtil").getComponentValue;
|
39
|
+
findComponents: typeof import("@formio/core/lib/utils/formUtil").findComponents;
|
40
|
+
eachComponentDataAsync: (components: import("@formio/core").Component[], data: import("@formio/core").DataObject, fn: import("@formio/core").EachComponentDataAsyncCallback, includeAll?: boolean | undefined, local?: boolean | undefined, parent?: import("@formio/core").Component | undefined, parentPaths?: import("@formio/core").ComponentPaths | undefined) => Promise<void>;
|
41
|
+
eachComponentData: (components: import("@formio/core").Component[], data: import("@formio/core").DataObject, fn: import("@formio/core").EachComponentDataCallback, includeAll?: boolean | undefined, local?: boolean | undefined, parent?: import("@formio/core").Component | undefined, parentPaths?: import("@formio/core").ComponentPaths | undefined) => void;
|
42
|
+
getComponentKey: typeof import("@formio/core/lib/utils/formUtil").getComponentKey;
|
43
|
+
getContextualRowPath: typeof import("@formio/core/lib/utils/formUtil").getContextualRowPath;
|
44
|
+
getContextualRowData: typeof import("@formio/core/lib/utils/formUtil").getContextualRowData;
|
45
|
+
componentInfo: typeof import("@formio/core/lib/utils/formUtil").componentInfo;
|
46
|
+
eachComponent: typeof import("@formio/core/lib/utils/formUtil").eachComponent;
|
47
|
+
eachComponentAsync: typeof import("@formio/core/lib/utils/formUtil").eachComponentAsync;
|
48
|
+
getComponentData: typeof import("@formio/core/lib/utils/formUtil").getComponentData;
|
49
|
+
getComponentActualValue: any;
|
50
|
+
isLayoutComponent: typeof import("@formio/core/lib/utils/formUtil").isLayoutComponent;
|
51
|
+
matchComponent: typeof import("@formio/core/lib/utils/formUtil").matchComponent;
|
52
|
+
getComponent: typeof import("@formio/core/lib/utils/formUtil").getComponent;
|
53
|
+
searchComponents: typeof import("@formio/core/lib/utils/formUtil").searchComponents;
|
54
|
+
removeComponent: typeof import("@formio/core/lib/utils/formUtil").removeComponent;
|
55
|
+
hasCondition: typeof import("@formio/core/lib/utils/formUtil").hasCondition;
|
56
|
+
parseFloatExt: typeof import("@formio/core/lib/utils/formUtil").parseFloatExt;
|
57
|
+
formatAsCurrency: typeof import("@formio/core/lib/utils/formUtil").formatAsCurrency;
|
58
|
+
escapeRegExCharacters: typeof import("@formio/core/lib/utils/formUtil").escapeRegExCharacters;
|
59
|
+
getValue: typeof import("@formio/core/lib/utils/formUtil").getValue;
|
60
|
+
getStrings: typeof import("@formio/core/lib/utils/formUtil").getStrings;
|
61
|
+
generateFormChange: typeof import("@formio/core/lib/utils/formUtil").generateFormChange;
|
62
|
+
applyFormChanges: typeof import("@formio/core/lib/utils/formUtil").applyFormChanges;
|
63
|
+
findComponent: typeof import("@formio/core/lib/utils/formUtil").findComponent;
|
64
|
+
getEmptyValue: typeof import("@formio/core/lib/utils/formUtil").getEmptyValue;
|
65
|
+
isComponentDataEmpty: typeof import("@formio/core/lib/utils/formUtil").isComponentDataEmpty;
|
66
|
+
isSelectResourceWithObjectValue: typeof import("@formio/core/lib/utils/formUtil").isSelectResourceWithObjectValue;
|
67
|
+
compareSelectResourceWithObjectTypeValues: typeof import("@formio/core/lib/utils/formUtil").compareSelectResourceWithObjectTypeValues;
|
68
|
+
getItemTemplateKeys: typeof import("@formio/core/lib/utils/formUtil").getItemTemplateKeys;
|
69
|
+
evaluate(func: string | object | Function, args: any, ret: string, interpolate: boolean, options?: import("@formio/core").EvaluatorOptions): any;
|
70
|
+
getRandomComponentId(): string;
|
71
|
+
getPropertyValue(style: CSSStyleDeclaration, prop: string): number;
|
72
|
+
getElementRect(element: HTMLElement): {
|
73
|
+
x: number;
|
74
|
+
y: number;
|
75
|
+
width: number;
|
76
|
+
height: number;
|
77
|
+
};
|
78
|
+
getScriptPlugin(property: string): any;
|
79
|
+
boolValue(value: string | boolean): boolean;
|
80
|
+
isMongoId(text: string): boolean;
|
81
|
+
checkCalculated(component: import("@formio/core").Component, submission: import("@formio/core").Submission, rowData: any): void;
|
82
|
+
checkSimpleConditional(component: any, condition: any, row: any, data: any, instance: any): boolean;
|
83
|
+
checkCustomConditional(component: import("@formio/core").Component, custom: string, row: any, data: any, form: import("@formio/core").Form, variable: string, onError: any, instance: any): any;
|
84
|
+
checkJsonConditional(component: import("@formio/core").Component, json: import("@formio/core").JSONConditional, row: any, data: any, form: import("@formio/core").Form, onError: any): boolean;
|
85
|
+
checkCondition(component: import("@formio/core").Component, row: any, data: any, form: import("@formio/core").Form, instance: any): boolean;
|
86
|
+
checkTrigger(component: import("@formio/core").Component, trigger: any, row: import("@formio/core").DataObject, data: import("@formio/core").DataObject, form: import("@formio/core").Form, instance: any): boolean;
|
87
|
+
setActionProperty(component: import("@formio/core").Component, action: any, result: string, row: import("@formio/core").DataObject, data: import("@formio/core").DataObject, instance: any): import("@formio/core").Component;
|
88
|
+
removeHTML(str: string): string;
|
89
|
+
unescapeHTML(str: string): string;
|
90
|
+
convertStringToHTMLElement(str: string, selector: string): HTMLElement;
|
91
|
+
getDateSetting(date: string | Date): import("dayjs").Dayjs | null;
|
92
|
+
isValidDate(date: string | Date): boolean;
|
93
|
+
currentTimezone(): string;
|
94
|
+
offsetDate(date: Date, timezone: string): {
|
95
|
+
date: Date;
|
96
|
+
abbr: string;
|
97
|
+
};
|
98
|
+
shouldHandleTimezone(timezone: string): boolean;
|
99
|
+
dayjsDate(value: string | Date, format: string, timezone: string, options: object): import("dayjs").Dayjs;
|
100
|
+
formatDate(value: string | Date, format: string, timezone: string, flatPickrInputFormat: string): string;
|
101
|
+
formatOffset(formatFn: Function, date: string | Date, format: string, timezone: string): string;
|
102
|
+
getLocaleDateFormatInfo(locale: Intl.LocalesArgument): object;
|
103
|
+
convertFormatToFlatpickr(format: string): string;
|
104
|
+
convertFormatToDayjs(format: string): string;
|
105
|
+
convertFormatToMask(format: string): string;
|
106
|
+
getInputMask(mask: string, placeholderChar: string): any[];
|
107
|
+
unmaskValue(value: string, mask: string, placeholderChar: string): string;
|
108
|
+
matchInputMask(value: string, inputMask: string): boolean;
|
109
|
+
getNumberSeparators(lang?: string): {
|
110
|
+
delimiter: string;
|
111
|
+
decimalSeparator: string;
|
112
|
+
};
|
113
|
+
getNumberDecimalLimit(component: import("@formio/core").Component, defaultLimit: number): number;
|
114
|
+
getCurrencyAffixes({ currency, decimalLimit, decimalSeparator, lang, }: {
|
115
|
+
currency: string;
|
116
|
+
decimalLimit: number;
|
117
|
+
decimalSeparator: string;
|
118
|
+
lang: string;
|
119
|
+
}): {
|
120
|
+
prefix: string;
|
121
|
+
suffix: string;
|
122
|
+
};
|
123
|
+
fieldData(data: import("@formio/core").DataObject, component: import("@formio/core").Component): any;
|
124
|
+
delay(fn: Function, delay?: number, ...args: any[]): any;
|
125
|
+
iterateKey(key: string): string;
|
126
|
+
uniqueKey(map: Record<string, string>, base: string): string;
|
127
|
+
bootstrapVersion(options: {
|
128
|
+
bootstrap: string;
|
129
|
+
}): number;
|
130
|
+
unfold(e: any): any;
|
131
|
+
withSwitch(a: any, b: any): Functions[];
|
132
|
+
observeOverload(callback: Function, options?: {
|
133
|
+
limit: number;
|
134
|
+
delay: number;
|
135
|
+
}): Function;
|
136
|
+
getContextComponents(context: any, excludeNested: boolean, excludedTypes?: string[]): any[];
|
137
|
+
getContextButtons(context: any): any[];
|
138
|
+
translateHTMLTemplate(template: string, translate: Function): string;
|
139
|
+
sanitize(string: string, options: any): string;
|
140
|
+
fastCloneDeep(obj: any): any;
|
141
|
+
isInputComponent(componentJson: import("@formio/core").Component): boolean;
|
142
|
+
getArrayFromComponentPath(pathStr: string): string[];
|
143
|
+
isChildOf(child: any, parent: any): boolean;
|
144
|
+
getStringFromComponentPath(path: number[]): string;
|
145
|
+
round(number: number, precision: number): string;
|
146
|
+
getIEBrowserVersion(): number | null;
|
147
|
+
getBrowserInfo(): object;
|
148
|
+
getComponentPathWithoutIndicies(path?: string): string;
|
149
|
+
getDataParentComponent(componentInstance: Component): any;
|
150
|
+
isPromise(value: any): boolean;
|
151
|
+
getFocusableElements(element: HTMLElement): NodeList<HTMLElement>;
|
152
|
+
getComponentSavedTypes(fullSchema: import("@formio/core").Component): string[] | null;
|
153
|
+
hasEncodedTimezone(value: string): boolean;
|
154
|
+
firstNonNil: any;
|
155
|
+
componentValueTypes: {
|
156
|
+
number: string;
|
157
|
+
string: string;
|
158
|
+
boolean: string;
|
159
|
+
array: string;
|
160
|
+
object: string;
|
161
|
+
date: string;
|
162
|
+
any: string;
|
163
|
+
};
|
164
|
+
interpolateErrors: (component: Component, errors: FieldError[], interpolateFn: Function) => [];
|
165
|
+
};
|
166
|
+
import { Evaluator } from './Evaluator';
|
167
|
+
import { registerEvaluator } from './Evaluator';
|
168
|
+
import { interpolate } from './Evaluator';
|
169
|
+
import moment from 'moment';
|
170
|
+
export { FormioUtils as Utils, Evaluator, registerEvaluator };
|
package/lib/mjs/utils/index.js
CHANGED
@@ -1,6 +1,23 @@
|
|
1
|
-
import * as
|
1
|
+
import * as utils from './utils';
|
2
|
+
import * as formUtils from './formUtils';
|
3
|
+
import { Evaluator, registerEvaluator, interpolate } from './Evaluator';
|
4
|
+
import ConditionOperators from './conditionOperators';
|
5
|
+
import _ from 'lodash';
|
6
|
+
import moment from 'moment';
|
7
|
+
const FormioUtils = {
|
8
|
+
...utils,
|
9
|
+
...formUtils,
|
10
|
+
Evaluator,
|
11
|
+
interpolate,
|
12
|
+
ConditionOperators,
|
13
|
+
_,
|
14
|
+
moment
|
15
|
+
};
|
2
16
|
if (typeof global === 'object') {
|
3
17
|
global.FormioUtils = FormioUtils;
|
4
18
|
}
|
5
19
|
export { FormioUtils as Utils };
|
20
|
+
export { Evaluator, registerEvaluator };
|
21
|
+
export * from './utils';
|
22
|
+
export * from './formUtils';
|
6
23
|
export default FormioUtils;
|
package/lib/mjs/utils/utils.d.ts
CHANGED
@@ -403,15 +403,15 @@ export function fastCloneDeep(obj: any): any;
|
|
403
403
|
/**
|
404
404
|
* Returns if the component is an input component.
|
405
405
|
* @param {import('@formio/core').Component} componentJson - The JSON of a component.
|
406
|
-
* @returns {
|
406
|
+
* @returns {boolean} - TRUE if the component is an input component; FALSE otherwise.
|
407
407
|
*/
|
408
|
-
export function isInputComponent(componentJson: import('@formio/core').Component):
|
408
|
+
export function isInputComponent(componentJson: import('@formio/core').Component): boolean;
|
409
409
|
/**
|
410
410
|
* Takes a component path, and returns a component path array.
|
411
411
|
* @param {string} pathStr - The path string to convert to an array.
|
412
|
-
* @returns {
|
412
|
+
* @returns {Array<string>} - The array of paths.
|
413
413
|
*/
|
414
|
-
export function getArrayFromComponentPath(pathStr: string):
|
414
|
+
export function getArrayFromComponentPath(pathStr: string): Array<string>;
|
415
415
|
/**
|
416
416
|
* Returns true if the component is a child of the parent.
|
417
417
|
* @param {any} child - The child component to check.
|
@@ -488,7 +488,6 @@ export function getComponentSavedTypes(fullSchema: import('@formio/core').Compon
|
|
488
488
|
* @returns {boolean} if value has encoded timezone
|
489
489
|
*/
|
490
490
|
export function hasEncodedTimezone(value: string): boolean;
|
491
|
-
export * from "./formUtils";
|
492
491
|
/**
|
493
492
|
* Map values through unfold and return first non-nil value.
|
494
493
|
* @param {Array<T>} collection - The collection to map through unfold.;
|
@@ -506,7 +505,3 @@ export namespace componentValueTypes {
|
|
506
505
|
}
|
507
506
|
export function interpolateErrors(component: Component, errors: FieldError[], interpolateFn: Function): [];
|
508
507
|
import dayjs from "dayjs";
|
509
|
-
import ConditionOperators from './conditionOperators';
|
510
|
-
import { Evaluator } from './Evaluator';
|
511
|
-
export const interpolate: typeof Evaluator.interpolate;
|
512
|
-
export { jsonLogic, ConditionOperators, moment, Evaluator, _ };
|
package/lib/mjs/utils/utils.js
CHANGED
@@ -1,38 +1,19 @@
|
|
1
1
|
/* global jQuery */
|
2
2
|
import _ from 'lodash';
|
3
|
-
import jsonLogic from 'json-logic-js';
|
4
3
|
import moment from 'moment-timezone/moment-timezone';
|
5
4
|
import jtz from 'jstimezonedetect';
|
6
|
-
import { lodashOperators } from './jsonlogic/operators';
|
7
5
|
import dompurify from 'dompurify';
|
8
|
-
import { getValue } from './formUtils';
|
9
|
-
import { Evaluator } from './Evaluator';
|
10
|
-
import ConditionOperators from './conditionOperators';
|
11
|
-
import { convertShowToBoolean } from '@formio/core';
|
12
6
|
import dayjs from "dayjs";
|
13
7
|
import utc from 'dayjs/plugin/utc';
|
14
8
|
import timezone from 'dayjs/plugin/timezone';
|
15
9
|
import advancedFormat from 'dayjs/plugin/advancedFormat';
|
10
|
+
import { jsonLogic, convertShowToBoolean } from '@formio/core';
|
11
|
+
import { getValue } from './formUtils';
|
12
|
+
import { Evaluator } from './Evaluator';
|
13
|
+
import ConditionOperators from './conditionOperators';
|
16
14
|
dayjs.extend(timezone);
|
17
15
|
dayjs.extend(advancedFormat);
|
18
16
|
dayjs.extend(utc);
|
19
|
-
const interpolate = Evaluator.interpolate;
|
20
|
-
export * from './formUtils';
|
21
|
-
// Configure JsonLogic
|
22
|
-
lodashOperators.forEach((name) => jsonLogic.add_operation(`_${name}`, _[name]));
|
23
|
-
// Retrieve Any Date
|
24
|
-
jsonLogic.add_operation('getDate', (date) => {
|
25
|
-
return moment(date).toISOString();
|
26
|
-
});
|
27
|
-
// Set Relative Minimum Date
|
28
|
-
jsonLogic.add_operation('relativeMinDate', (relativeMinDate) => {
|
29
|
-
return moment().subtract(relativeMinDate, 'days').toISOString();
|
30
|
-
});
|
31
|
-
// Set Relative Maximum Date
|
32
|
-
jsonLogic.add_operation('relativeMaxDate', (relativeMaxDate) => {
|
33
|
-
return moment().add(relativeMaxDate, 'days').toISOString();
|
34
|
-
});
|
35
|
-
export { jsonLogic, ConditionOperators, moment };
|
36
17
|
/**
|
37
18
|
* Evaluate a method.
|
38
19
|
* @param {Function|string|object} func - The function to evaluate.
|
@@ -218,7 +199,15 @@ export function checkSimpleConditional(component, condition, row, data, instance
|
|
218
199
|
return true;
|
219
200
|
}
|
220
201
|
const splittedConditionPath = conditionComponentPath.split('.');
|
221
|
-
const
|
202
|
+
const checkParentTypeInTree = (instance, componentType) => {
|
203
|
+
if (!instance?.parent) {
|
204
|
+
return false;
|
205
|
+
}
|
206
|
+
return instance?.parent.type === componentType || checkParentTypeInTree(instance.parent, componentType);
|
207
|
+
};
|
208
|
+
const conditionalPaths = checkParentTypeInTree(instance, 'datagrid') || checkParentTypeInTree(instance, 'editgrid')
|
209
|
+
? []
|
210
|
+
: getConditionalPathsRecursive(splittedConditionPath, data);
|
222
211
|
if (conditionalPaths.length > 0) {
|
223
212
|
return conditionalPaths.map((path) => {
|
224
213
|
const value = getComponentActualValue(path, data, row);
|
@@ -332,7 +321,7 @@ function getRow(component, row, instance, conditional) {
|
|
332
321
|
}
|
333
322
|
const dataParent = getDataParentComponent(instance);
|
334
323
|
if (dataParent) {
|
335
|
-
const parentPath = dataParent.paths?.
|
324
|
+
const parentPath = dataParent.paths?.localPath;
|
336
325
|
const isTriggerCondtionComponentPath = condition.when || !condition.conditions
|
337
326
|
? condition.when?.startsWith(dataParent.paths?.localPath)
|
338
327
|
: _.some(condition.conditions, cond => cond.component.startsWith(dataParent.paths?.localPath));
|
@@ -1273,11 +1262,10 @@ export function sanitize(string, options) {
|
|
1273
1262
|
export function fastCloneDeep(obj) {
|
1274
1263
|
return obj ? JSON.parse(JSON.stringify(obj)) : obj;
|
1275
1264
|
}
|
1276
|
-
export { Evaluator, interpolate };
|
1277
1265
|
/**
|
1278
1266
|
* Returns if the component is an input component.
|
1279
1267
|
* @param {import('@formio/core').Component} componentJson - The JSON of a component.
|
1280
|
-
* @returns {
|
1268
|
+
* @returns {boolean} - TRUE if the component is an input component; FALSE otherwise.
|
1281
1269
|
*/
|
1282
1270
|
export function isInputComponent(componentJson) {
|
1283
1271
|
if (componentJson.input === false || componentJson.input === true) {
|
@@ -1301,7 +1289,7 @@ export function isInputComponent(componentJson) {
|
|
1301
1289
|
/**
|
1302
1290
|
* Takes a component path, and returns a component path array.
|
1303
1291
|
* @param {string} pathStr - The path string to convert to an array.
|
1304
|
-
* @returns {
|
1292
|
+
* @returns {Array<string>} - The array of paths.
|
1305
1293
|
*/
|
1306
1294
|
export function getArrayFromComponentPath(pathStr) {
|
1307
1295
|
if (!pathStr || !_.isString(pathStr)) {
|
@@ -1475,8 +1463,6 @@ export function getFocusableElements(element) {
|
|
1475
1463
|
textarea:not([disabled]), button:not([disabled]), [href]`;
|
1476
1464
|
return element.querySelectorAll(focusableSelector);
|
1477
1465
|
}
|
1478
|
-
// Export lodash to save space with other libraries.
|
1479
|
-
export { _ };
|
1480
1466
|
export const componentValueTypes = {
|
1481
1467
|
number: 'number',
|
1482
1468
|
string: 'string',
|
@@ -77,7 +77,7 @@ export default class CalendarWidget extends InputWidget {
|
|
77
77
|
* @returns {void}
|
78
78
|
*/
|
79
79
|
setValue(value: any): void;
|
80
|
-
getValueAsString(value: any, format
|
80
|
+
getValueAsString(value: any, format?: string): string;
|
81
81
|
setErrorClasses(hasErrors: any): void;
|
82
82
|
isCalendarElement(element: any): any;
|
83
83
|
initFlatpickr(Flatpickr: any): void;
|
@@ -1,8 +1,8 @@
|
|
1
|
-
import { Formio } from '../Formio';
|
2
|
-
import InputWidget from './InputWidget';
|
3
|
-
import { convertFormatToFlatpickr, convertFormatToMask, convertFormatToDayjs, formatDate, formatOffset, getBrowserInfo, getDateSetting, getLocaleDateFormatInfo, dayjsDate, hasEncodedTimezone, } from '../utils/utils';
|
4
1
|
import moment from 'moment';
|
5
2
|
import _ from 'lodash';
|
3
|
+
import { Formio } from '../Formio';
|
4
|
+
import InputWidget from './InputWidget';
|
5
|
+
import { convertFormatToFlatpickr, convertFormatToMask, convertFormatToDayjs, formatDate, formatOffset, getBrowserInfo, getDateSetting, getLocaleDateFormatInfo, hasEncodedTimezone, dayjsDate } from '../utils';
|
6
6
|
const DEFAULT_FORMAT = 'yyyy-MM-dd hh:mm a';
|
7
7
|
const ISO_8601_FORMAT = 'yyyy-MM-ddTHH:mm:ssZ';
|
8
8
|
const isIEBrowser = getBrowserInfo().ie;
|
@@ -257,9 +257,7 @@ export default class CalendarWidget extends InputWidget {
|
|
257
257
|
}
|
258
258
|
// If the component is a textfield that does not have timezone information included in the string value then skip
|
259
259
|
// the timezone offset
|
260
|
-
|
261
|
-
this.settings.skipOffset = true;
|
262
|
-
}
|
260
|
+
this.settings.skipOffset = this.component.type === 'textfield' && !hasEncodedTimezone(value);
|
263
261
|
if (value) {
|
264
262
|
if (!saveAsText && this.settings.readOnly) {
|
265
263
|
this.calendar.setDate(dayjsDate(value, this.valueFormat, this.timezone).format(), false);
|
@@ -275,7 +273,7 @@ export default class CalendarWidget extends InputWidget {
|
|
275
273
|
this.calendar.clear(false);
|
276
274
|
}
|
277
275
|
}
|
278
|
-
getValueAsString(value, format) {
|
276
|
+
getValueAsString(value, format = '') {
|
279
277
|
const inputFormat = format || this.dateFormat;
|
280
278
|
const valueFormat = this.calendar ? this.valueFormat : this.settings.dateFormat;
|
281
279
|
if (this.settings.saveAs === 'text' && this.componentInstance.parent && !this.settings.readOnly) {
|