@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.
Files changed (139) hide show
  1. package/README.md +7 -0
  2. package/dist/formio.form.js +125 -125
  3. package/dist/formio.form.min.js +1 -1
  4. package/dist/formio.form.min.js.LICENSE.txt +2 -0
  5. package/dist/formio.full.js +132 -132
  6. package/dist/formio.full.min.js +1 -1
  7. package/dist/formio.full.min.js.LICENSE.txt +2 -0
  8. package/dist/formio.js +74 -63
  9. package/dist/formio.min.js +1 -1
  10. package/dist/formio.utils.js +86 -75
  11. package/dist/formio.utils.min.js +1 -1
  12. package/dist/formio.utils.min.js.LICENSE.txt +2 -0
  13. package/lib/cjs/Element.js +13 -36
  14. package/lib/cjs/EventEmitter.js +2 -25
  15. package/lib/cjs/Form.js +2 -25
  16. package/lib/cjs/PDF.js +1 -1
  17. package/lib/cjs/PDFBuilder.js +4 -5
  18. package/lib/cjs/Webform.js +3 -4
  19. package/lib/cjs/WebformBuilder.d.ts +1 -0
  20. package/lib/cjs/WebformBuilder.js +33 -14
  21. package/lib/cjs/Wizard.d.ts +1 -2
  22. package/lib/cjs/Wizard.js +18 -24
  23. package/lib/cjs/WizardBuilder.js +1 -1
  24. package/lib/cjs/components/_classes/component/Component.d.ts +0 -1
  25. package/lib/cjs/components/_classes/component/Component.js +36 -57
  26. package/lib/cjs/components/_classes/component/editForm/Component.edit.conditional.js +1 -1
  27. package/lib/cjs/components/_classes/component/editForm/Component.edit.logic.js +1 -1
  28. package/lib/cjs/components/_classes/componentModal/ComponentModal.js +1 -1
  29. package/lib/cjs/components/_classes/input/Input.js +1 -1
  30. package/lib/cjs/components/_classes/list/ListComponent.js +1 -1
  31. package/lib/cjs/components/_classes/nested/NestedComponent.js +7 -7
  32. package/lib/cjs/components/_classes/nestedarray/NestedArrayComponent.js +1 -1
  33. package/lib/cjs/components/_classes/nesteddata/NestedDataComponent.js +1 -1
  34. package/lib/cjs/components/address/Address.js +1 -1
  35. package/lib/cjs/components/alert/Alert.js +1 -1
  36. package/lib/cjs/components/button/Button.d.ts +1 -1
  37. package/lib/cjs/components/button/Button.js +7 -11
  38. package/lib/cjs/components/checkbox/Checkbox.js +1 -1
  39. package/lib/cjs/components/container/Container.js +1 -1
  40. package/lib/cjs/components/currency/Currency.js +1 -1
  41. package/lib/cjs/components/datagrid/DataGrid.js +5 -1
  42. package/lib/cjs/components/datetime/DateTime.js +1 -1
  43. package/lib/cjs/components/day/Day.js +2 -2
  44. package/lib/cjs/components/editgrid/EditGrid.js +1 -1
  45. package/lib/cjs/components/editgrid/editForm/EditGrid.edit.display.js +1 -1
  46. package/lib/cjs/components/file/File.js +5 -6
  47. package/lib/cjs/components/form/Form.js +14 -2
  48. package/lib/cjs/components/form/editForm/Form.edit.form.js +4 -3
  49. package/lib/cjs/components/number/Number.js +1 -1
  50. package/lib/cjs/components/panel/Panel.js +1 -1
  51. package/lib/cjs/components/radio/Radio.js +1 -1
  52. package/lib/cjs/components/recaptcha/editForm/ReCaptcha.edit.display.js +1 -1
  53. package/lib/cjs/components/select/Select.js +1 -1
  54. package/lib/cjs/components/select/editForm/Select.edit.data.js +1 -1
  55. package/lib/cjs/components/selectboxes/SelectBoxes.js +1 -1
  56. package/lib/cjs/components/signature/Signature.js +1 -1
  57. package/lib/cjs/components/survey/Survey.js +1 -1
  58. package/lib/cjs/components/tags/Tags.js +1 -1
  59. package/lib/cjs/components/textarea/TextArea.js +3 -3
  60. package/lib/cjs/components/textfield/TextField.js +7 -30
  61. package/lib/cjs/components/time/Time.js +1 -1
  62. package/lib/cjs/formio.form.js +3 -3
  63. package/lib/cjs/i18n.js +1 -1
  64. package/lib/cjs/providers/storage/uploadAdapter.js +3 -3
  65. package/lib/cjs/utils/Evaluator.d.ts +20 -6
  66. package/lib/cjs/utils/Evaluator.js +38 -15
  67. package/lib/cjs/utils/builder.js +5 -5
  68. package/lib/cjs/utils/conditionOperators/IsEqualTo.js +3 -3
  69. package/lib/cjs/utils/i18n.js +3 -3
  70. package/lib/cjs/utils/index.d.ts +169 -2
  71. package/lib/cjs/utils/index.js +22 -2
  72. package/lib/cjs/utils/utils.d.ts +4 -9
  73. package/lib/cjs/utils/utils.js +20 -51
  74. package/lib/cjs/widgets/CalendarWidget.d.ts +1 -1
  75. package/lib/cjs/widgets/CalendarWidget.js +5 -7
  76. package/lib/mjs/Element.js +6 -6
  77. package/lib/mjs/EventEmitter.js +2 -2
  78. package/lib/mjs/Form.js +1 -1
  79. package/lib/mjs/PDF.js +1 -1
  80. package/lib/mjs/PDFBuilder.js +1 -2
  81. package/lib/mjs/Webform.js +1 -2
  82. package/lib/mjs/WebformBuilder.d.ts +1 -0
  83. package/lib/mjs/WebformBuilder.js +25 -7
  84. package/lib/mjs/Wizard.d.ts +1 -2
  85. package/lib/mjs/Wizard.js +17 -23
  86. package/lib/mjs/WizardBuilder.js +1 -1
  87. package/lib/mjs/components/_classes/component/Component.d.ts +0 -1
  88. package/lib/mjs/components/_classes/component/Component.js +9 -7
  89. package/lib/mjs/components/_classes/component/editForm/Component.edit.conditional.js +1 -1
  90. package/lib/mjs/components/_classes/component/editForm/Component.edit.logic.js +1 -1
  91. package/lib/mjs/components/_classes/componentModal/ComponentModal.js +1 -1
  92. package/lib/mjs/components/_classes/input/Input.js +1 -1
  93. package/lib/mjs/components/_classes/list/ListComponent.js +1 -1
  94. package/lib/mjs/components/_classes/nested/NestedComponent.js +7 -7
  95. package/lib/mjs/components/_classes/nestedarray/NestedArrayComponent.js +1 -1
  96. package/lib/mjs/components/_classes/nesteddata/NestedDataComponent.js +1 -1
  97. package/lib/mjs/components/address/Address.js +1 -1
  98. package/lib/mjs/components/alert/Alert.js +1 -1
  99. package/lib/mjs/components/button/Button.d.ts +1 -1
  100. package/lib/mjs/components/button/Button.js +7 -10
  101. package/lib/mjs/components/checkbox/Checkbox.js +1 -1
  102. package/lib/mjs/components/container/Container.js +1 -1
  103. package/lib/mjs/components/currency/Currency.js +1 -1
  104. package/lib/mjs/components/datagrid/DataGrid.js +5 -1
  105. package/lib/mjs/components/datetime/DateTime.js +1 -1
  106. package/lib/mjs/components/day/Day.js +2 -2
  107. package/lib/mjs/components/editgrid/EditGrid.js +1 -1
  108. package/lib/mjs/components/editgrid/editForm/EditGrid.edit.display.js +1 -1
  109. package/lib/mjs/components/file/File.js +5 -6
  110. package/lib/mjs/components/form/Form.js +13 -2
  111. package/lib/mjs/components/form/editForm/Form.edit.form.js +3 -2
  112. package/lib/mjs/components/number/Number.js +1 -1
  113. package/lib/mjs/components/panel/Panel.js +1 -1
  114. package/lib/mjs/components/radio/Radio.js +1 -1
  115. package/lib/mjs/components/recaptcha/editForm/ReCaptcha.edit.display.js +1 -1
  116. package/lib/mjs/components/select/Select.js +1 -1
  117. package/lib/mjs/components/select/editForm/Select.edit.data.js +1 -1
  118. package/lib/mjs/components/selectboxes/SelectBoxes.js +1 -1
  119. package/lib/mjs/components/signature/Signature.js +1 -1
  120. package/lib/mjs/components/survey/Survey.js +1 -1
  121. package/lib/mjs/components/tags/Tags.js +1 -1
  122. package/lib/mjs/components/textarea/TextArea.js +3 -3
  123. package/lib/mjs/components/textfield/TextField.js +1 -1
  124. package/lib/mjs/components/time/Time.js +1 -1
  125. package/lib/mjs/formio.form.js +2 -2
  126. package/lib/mjs/i18n.js +1 -1
  127. package/lib/mjs/providers/storage/uploadAdapter.js +3 -3
  128. package/lib/mjs/utils/Evaluator.d.ts +20 -6
  129. package/lib/mjs/utils/Evaluator.js +31 -13
  130. package/lib/mjs/utils/builder.js +1 -1
  131. package/lib/mjs/utils/conditionOperators/IsEqualTo.js +1 -1
  132. package/lib/mjs/utils/i18n.js +1 -1
  133. package/lib/mjs/utils/index.d.ts +169 -2
  134. package/lib/mjs/utils/index.js +18 -1
  135. package/lib/mjs/utils/utils.d.ts +4 -9
  136. package/lib/mjs/utils/utils.js +16 -30
  137. package/lib/mjs/widgets/CalendarWidget.d.ts +1 -1
  138. package/lib/mjs/widgets/CalendarWidget.js +5 -7
  139. 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/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/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/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/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 * as FormioUtils from '../../utils/utils';
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/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) {
@@ -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
- Formio.Evaluator.registerEvaluator(mod.evaluator);
86
+ registerEvaluator(mod.evaluator);
87
87
  break;
88
88
  case 'translations':
89
89
  I18n.setDefaultTranslations(mod.translations);
package/lib/mjs/i18n.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import enTranslation from './translations/en';
2
- import { fastCloneDeep } from './utils/utils';
2
+ import { fastCloneDeep } from './utils';
3
3
  export default {
4
4
  lng: 'en',
5
5
  nsSeparator: '::',
@@ -1,4 +1,4 @@
1
- import { uniqueName } from '../../utils/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
- const uploadPromise = this.fileService.uploadFile(...uploadParams, () => this.component.emit('fileUploadingStart', uploadPromise)).then((result) => {
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', uploadPromise);
37
+ this.component.emit('fileUploadingEnd');
38
38
  });
39
39
  }));
40
40
  }
@@ -1,7 +1,21 @@
1
- export class Evaluator {
2
- static cache: {};
3
- static protectedEval: boolean;
4
- static noeval: boolean;
5
- static template(template: any, hash: any): any;
6
- static interpolate(rawTemplate: any, data: any, _options: any): any;
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 { JSONLogicEvaluator as CoreEvaluator } from '@formio/core/utils';
4
- export class Evaluator extends CoreEvaluator {
5
- static cache = {};
6
- static protectedEval = false;
7
- static noeval = false;
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 (Evaluator.cache[hash]) {
11
- return Evaluator.cache[hash];
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 (Evaluator.cache[hash] = _.template(template, Evaluator.templateSettings));
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
- static interpolate(rawTemplate, data, _options) {
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 (Evaluator.noeval || options.noeval) {
37
- return CoreEvaluator.interpolateString(rawTemplate, data, _options);
35
+ if (this.noeval || options.noeval) {
36
+ return this.interpolateString(rawTemplate, data, _options);
38
37
  }
39
38
  else {
40
- template = Evaluator.template(rawTemplate);
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
+ }
@@ -1,5 +1,5 @@
1
1
  import _ from 'lodash';
2
- import { eachComponent, uniqueKey } from './utils';
2
+ import { eachComponent, uniqueKey } from './index';
3
3
  export default {
4
4
  /**
5
5
  * Appends a number to a component.key to keep it unique
@@ -1,6 +1,6 @@
1
1
  import ConditionOperator from './ConditionOperator';
2
2
  import _ from 'lodash';
3
- import { compareSelectResourceWithObjectTypeValues, isSelectResourceWithObjectValue } from '../utils';
3
+ import { compareSelectResourceWithObjectTypeValues, isSelectResourceWithObjectValue } from '../';
4
4
  export default class IsEqualTo extends ConditionOperator {
5
5
  static get operatorKey() {
6
6
  return 'isEqual';
@@ -1,4 +1,4 @@
1
- import { Evaluator } from '@formio/core/utils';
1
+ import { Evaluator } from './Evaluator';
2
2
  import i18n from '../i18n';
3
3
  import { isEmpty } from 'lodash';
4
4
  import { fastCloneDeep } from '@formio/core';
@@ -1,3 +1,170 @@
1
- export { FormioUtils as Utils };
1
+ export * from "./utils";
2
+ export * from "./formUtils";
2
3
  export default FormioUtils;
3
- import * as FormioUtils from './utils';
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 };
@@ -1,6 +1,23 @@
1
- import * as FormioUtils from './utils';
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;
@@ -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 {bool} - TRUE if the component is an input component; FALSE otherwise.
406
+ * @returns {boolean} - TRUE if the component is an input component; FALSE otherwise.
407
407
  */
408
- export function isInputComponent(componentJson: import('@formio/core').Component): bool;
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 {Arryay<number>} - The array of paths.
412
+ * @returns {Array<string>} - The array of paths.
413
413
  */
414
- export function getArrayFromComponentPath(pathStr: string): Arryay<number>;
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, _ };
@@ -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 conditionalPaths = instance?.parent?.type === 'datagrid' || instance?.parent?.type === 'editgrid' ? [] : getConditionalPathsRecursive(splittedConditionPath, data);
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?.localDataPath;
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 {bool} - TRUE if the component is an input component; FALSE otherwise.
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 {Arryay<number>} - The array of paths.
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: any): string;
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
- if (this.component.type === 'textfield' && !hasEncodedTimezone(value)) {
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) {