@formio/js 5.0.0-rc.20 → 5.0.0-rc.22

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 (198) hide show
  1. package/dist/formio.embed.css +1 -39
  2. package/dist/formio.embed.js +2 -90
  3. package/dist/formio.embed.min.js +1 -1
  4. package/dist/formio.embed.min.js.LICENSE.txt +1 -1
  5. package/dist/formio.form.js +58 -36
  6. package/dist/formio.form.min.js +1 -1
  7. package/dist/formio.form.min.js.LICENSE.txt +1 -1
  8. package/dist/formio.full.js +59 -37
  9. package/dist/formio.full.min.js +1 -1
  10. package/dist/formio.full.min.js.LICENSE.txt +1 -1
  11. package/dist/formio.js +2 -2
  12. package/dist/formio.min.js +1 -1
  13. package/dist/formio.min.js.LICENSE.txt +1 -1
  14. package/dist/formio.utils.js +1 -1
  15. package/dist/formio.utils.min.js +1 -1
  16. package/dist/formio.utils.min.js.LICENSE.txt +1 -1
  17. package/lib/cjs/CDN.d.ts +1 -0
  18. package/lib/cjs/CDN.js +1 -0
  19. package/lib/cjs/Element.js +5 -0
  20. package/lib/cjs/Embed.d.ts +21 -1
  21. package/lib/cjs/Embed.js +211 -308
  22. package/lib/cjs/Form.d.ts +1 -1
  23. package/lib/cjs/Form.js +1 -1
  24. package/lib/cjs/Webform.d.ts +6 -6
  25. package/lib/cjs/Webform.js +6 -6
  26. package/lib/cjs/WebformBuilder.js +1 -1
  27. package/lib/cjs/components/_classes/component/Component.d.ts +16 -6
  28. package/lib/cjs/components/_classes/component/Component.js +26 -6
  29. package/lib/cjs/components/_classes/nestedarray/NestedArrayComponent.d.ts +1 -0
  30. package/lib/cjs/components/_classes/nestedarray/NestedArrayComponent.js +4 -0
  31. package/lib/cjs/components/_classes/nesteddata/NestedDataComponent.d.ts +1 -0
  32. package/lib/cjs/components/_classes/nesteddata/NestedDataComponent.js +4 -0
  33. package/lib/cjs/components/address/Address.js +5 -0
  34. package/lib/cjs/components/button/Button.d.ts +1 -0
  35. package/lib/cjs/components/button/Button.js +3 -0
  36. package/lib/cjs/components/checkbox/Checkbox.d.ts +28 -0
  37. package/lib/cjs/components/checkbox/Checkbox.js +17 -2
  38. package/lib/cjs/components/columns/Columns.d.ts +1 -0
  39. package/lib/cjs/components/columns/Columns.js +3 -0
  40. package/lib/cjs/components/container/Container.js +3 -0
  41. package/lib/cjs/components/content/Content.d.ts +1 -0
  42. package/lib/cjs/components/content/Content.js +3 -0
  43. package/lib/cjs/components/datamap/DataMap.d.ts +1 -0
  44. package/lib/cjs/components/datamap/DataMap.js +3 -0
  45. package/lib/cjs/components/datetime/DateTime.d.ts +19 -0
  46. package/lib/cjs/components/datetime/DateTime.js +9 -10
  47. package/lib/cjs/components/day/Day.d.ts +21 -0
  48. package/lib/cjs/components/day/Day.js +12 -10
  49. package/lib/cjs/components/day/fixtures/comp5.d.ts +29 -0
  50. package/lib/cjs/components/day/fixtures/comp5.js +32 -0
  51. package/lib/cjs/components/day/fixtures/index.d.ts +2 -1
  52. package/lib/cjs/components/day/fixtures/index.js +3 -1
  53. package/lib/cjs/components/fieldset/Fieldset.d.ts +1 -0
  54. package/lib/cjs/components/fieldset/Fieldset.js +3 -0
  55. package/lib/cjs/components/file/File.d.ts +21 -1
  56. package/lib/cjs/components/file/File.js +15 -7
  57. package/lib/cjs/components/form/Form.d.ts +1 -0
  58. package/lib/cjs/components/form/Form.js +5 -1
  59. package/lib/cjs/components/html/HTML.d.ts +1 -0
  60. package/lib/cjs/components/html/HTML.js +3 -0
  61. package/lib/cjs/components/number/Number.d.ts +20 -1
  62. package/lib/cjs/components/number/Number.js +10 -15
  63. package/lib/cjs/components/panel/Panel.d.ts +1 -0
  64. package/lib/cjs/components/panel/Panel.js +3 -0
  65. package/lib/cjs/components/radio/Radio.d.ts +19 -0
  66. package/lib/cjs/components/radio/Radio.js +30 -0
  67. package/lib/cjs/components/recaptcha/ReCaptcha.d.ts +1 -0
  68. package/lib/cjs/components/recaptcha/ReCaptcha.js +3 -0
  69. package/lib/cjs/components/select/Select.d.ts +19 -1
  70. package/lib/cjs/components/select/Select.js +39 -4
  71. package/lib/cjs/components/select/fixtures/comp19.d.ts +23 -0
  72. package/lib/cjs/components/select/fixtures/comp19.js +36 -0
  73. package/lib/cjs/components/select/fixtures/index.d.ts +2 -1
  74. package/lib/cjs/components/select/fixtures/index.js +3 -1
  75. package/lib/cjs/components/selectboxes/SelectBoxes.d.ts +26 -1
  76. package/lib/cjs/components/selectboxes/SelectBoxes.js +8 -1
  77. package/lib/cjs/components/signature/Signature.d.ts +21 -0
  78. package/lib/cjs/components/signature/Signature.js +9 -1
  79. package/lib/cjs/components/survey/Survey.d.ts +21 -0
  80. package/lib/cjs/components/survey/Survey.js +7 -1
  81. package/lib/cjs/components/table/Table.d.ts +1 -0
  82. package/lib/cjs/components/table/Table.js +3 -0
  83. package/lib/cjs/components/tabs/Tabs.d.ts +1 -0
  84. package/lib/cjs/components/tabs/Tabs.js +3 -0
  85. package/lib/cjs/components/tags/Tags.d.ts +21 -0
  86. package/lib/cjs/components/tags/Tags.js +11 -1
  87. package/lib/cjs/components/tags/fixtures/comp6.d.ts +17 -0
  88. package/lib/cjs/components/tags/fixtures/comp6.js +20 -0
  89. package/lib/cjs/components/tags/fixtures/index.d.ts +2 -1
  90. package/lib/cjs/components/tags/fixtures/index.js +3 -1
  91. package/lib/cjs/components/textfield/TextField.d.ts +21 -0
  92. package/lib/cjs/components/textfield/TextField.js +7 -1
  93. package/lib/cjs/components/time/Time.d.ts +8 -1
  94. package/lib/cjs/components/well/Well.d.ts +1 -0
  95. package/lib/cjs/components/well/Well.js +3 -0
  96. package/lib/cjs/formio.embed.d.ts +2 -1
  97. package/lib/cjs/formio.embed.js +96 -1
  98. package/lib/cjs/formio.form.d.ts +4 -3
  99. package/lib/cjs/formio.form.js +17 -8
  100. package/lib/cjs/licenses/Licenses.d.ts +7 -0
  101. package/lib/cjs/licenses/Licenses.js +22 -0
  102. package/lib/cjs/licenses/index.d.ts +2 -0
  103. package/lib/cjs/licenses/index.js +7 -0
  104. package/lib/cjs/utils/utils.d.ts +10 -0
  105. package/lib/cjs/utils/utils.js +21 -1
  106. package/lib/mjs/CDN.d.ts +1 -0
  107. package/lib/mjs/CDN.js +1 -0
  108. package/lib/mjs/Element.js +5 -0
  109. package/lib/mjs/Embed.d.ts +21 -1
  110. package/lib/mjs/Embed.js +208 -322
  111. package/lib/mjs/Form.d.ts +1 -1
  112. package/lib/mjs/Form.js +1 -1
  113. package/lib/mjs/Webform.d.ts +6 -6
  114. package/lib/mjs/Webform.js +6 -6
  115. package/lib/mjs/WebformBuilder.js +1 -1
  116. package/lib/mjs/components/_classes/component/Component.d.ts +16 -6
  117. package/lib/mjs/components/_classes/component/Component.js +26 -6
  118. package/lib/mjs/components/_classes/nestedarray/NestedArrayComponent.d.ts +1 -0
  119. package/lib/mjs/components/_classes/nestedarray/NestedArrayComponent.js +4 -0
  120. package/lib/mjs/components/_classes/nesteddata/NestedDataComponent.d.ts +1 -0
  121. package/lib/mjs/components/_classes/nesteddata/NestedDataComponent.js +4 -0
  122. package/lib/mjs/components/address/Address.js +5 -0
  123. package/lib/mjs/components/button/Button.d.ts +1 -0
  124. package/lib/mjs/components/button/Button.js +4 -1
  125. package/lib/mjs/components/checkbox/Checkbox.d.ts +28 -0
  126. package/lib/mjs/components/checkbox/Checkbox.js +18 -3
  127. package/lib/mjs/components/columns/Columns.d.ts +1 -0
  128. package/lib/mjs/components/columns/Columns.js +3 -0
  129. package/lib/mjs/components/container/Container.js +4 -1
  130. package/lib/mjs/components/content/Content.d.ts +1 -0
  131. package/lib/mjs/components/content/Content.js +3 -0
  132. package/lib/mjs/components/datamap/DataMap.d.ts +1 -0
  133. package/lib/mjs/components/datamap/DataMap.js +4 -1
  134. package/lib/mjs/components/datetime/DateTime.d.ts +19 -0
  135. package/lib/mjs/components/datetime/DateTime.js +11 -12
  136. package/lib/mjs/components/day/Day.d.ts +21 -0
  137. package/lib/mjs/components/day/Day.js +16 -14
  138. package/lib/mjs/components/day/fixtures/comp5.d.ts +29 -0
  139. package/lib/mjs/components/day/fixtures/comp5.js +30 -0
  140. package/lib/mjs/components/day/fixtures/index.d.ts +2 -1
  141. package/lib/mjs/components/day/fixtures/index.js +2 -1
  142. package/lib/mjs/components/fieldset/Fieldset.d.ts +1 -0
  143. package/lib/mjs/components/fieldset/Fieldset.js +3 -0
  144. package/lib/mjs/components/file/File.d.ts +21 -1
  145. package/lib/mjs/components/file/File.js +16 -8
  146. package/lib/mjs/components/form/Form.d.ts +1 -0
  147. package/lib/mjs/components/form/Form.js +6 -2
  148. package/lib/mjs/components/html/HTML.d.ts +1 -0
  149. package/lib/mjs/components/html/HTML.js +3 -0
  150. package/lib/mjs/components/number/Number.d.ts +20 -1
  151. package/lib/mjs/components/number/Number.js +11 -12
  152. package/lib/mjs/components/panel/Panel.d.ts +1 -0
  153. package/lib/mjs/components/panel/Panel.js +3 -0
  154. package/lib/mjs/components/radio/Radio.d.ts +19 -0
  155. package/lib/mjs/components/radio/Radio.js +34 -1
  156. package/lib/mjs/components/recaptcha/ReCaptcha.d.ts +1 -0
  157. package/lib/mjs/components/recaptcha/ReCaptcha.js +3 -0
  158. package/lib/mjs/components/select/Select.d.ts +19 -1
  159. package/lib/mjs/components/select/Select.js +41 -6
  160. package/lib/mjs/components/select/fixtures/comp19.d.ts +23 -0
  161. package/lib/mjs/components/select/fixtures/comp19.js +34 -0
  162. package/lib/mjs/components/select/fixtures/index.d.ts +2 -1
  163. package/lib/mjs/components/select/fixtures/index.js +2 -1
  164. package/lib/mjs/components/selectboxes/SelectBoxes.d.ts +26 -1
  165. package/lib/mjs/components/selectboxes/SelectBoxes.js +8 -1
  166. package/lib/mjs/components/signature/Signature.d.ts +21 -0
  167. package/lib/mjs/components/signature/Signature.js +9 -1
  168. package/lib/mjs/components/survey/Survey.d.ts +21 -0
  169. package/lib/mjs/components/survey/Survey.js +8 -2
  170. package/lib/mjs/components/table/Table.d.ts +1 -0
  171. package/lib/mjs/components/table/Table.js +3 -0
  172. package/lib/mjs/components/tabs/Tabs.d.ts +1 -0
  173. package/lib/mjs/components/tabs/Tabs.js +3 -0
  174. package/lib/mjs/components/tags/Tags.d.ts +21 -0
  175. package/lib/mjs/components/tags/Tags.js +12 -2
  176. package/lib/mjs/components/tags/fixtures/comp6.d.ts +17 -0
  177. package/lib/mjs/components/tags/fixtures/comp6.js +18 -0
  178. package/lib/mjs/components/tags/fixtures/index.d.ts +2 -1
  179. package/lib/mjs/components/tags/fixtures/index.js +2 -1
  180. package/lib/mjs/components/textfield/TextField.d.ts +21 -0
  181. package/lib/mjs/components/textfield/TextField.js +8 -2
  182. package/lib/mjs/components/time/Time.d.ts +8 -1
  183. package/lib/mjs/components/well/Well.d.ts +1 -0
  184. package/lib/mjs/components/well/Well.js +3 -0
  185. package/lib/mjs/formio.embed.d.ts +2 -1
  186. package/lib/mjs/formio.embed.js +96 -2
  187. package/lib/mjs/formio.form.d.ts +4 -3
  188. package/lib/mjs/formio.form.js +16 -8
  189. package/lib/mjs/licenses/Licenses.d.ts +7 -0
  190. package/lib/mjs/licenses/Licenses.js +17 -0
  191. package/lib/mjs/licenses/index.d.ts +2 -0
  192. package/lib/mjs/licenses/index.js +2 -0
  193. package/lib/mjs/utils/utils.d.ts +10 -0
  194. package/lib/mjs/utils/utils.js +19 -0
  195. package/package.json +5 -1
  196. package/types/index.d.ts +1 -0
  197. package/types/licenses.d.ts +7 -0
  198. package/types/utils.d.ts +2 -0
@@ -2,6 +2,7 @@ import SignaturePad from 'signature_pad';
2
2
  import _ResizeObserver from 'resize-observer-polyfill';
3
3
  import Input from '../_classes/input/Input';
4
4
  import _ from 'lodash';
5
+ import { componentValueTypes, getComponentSavedTypes } from '../../utils/utils';
5
6
  export default class SignatureComponent extends Input {
6
7
  static schema(...extend) {
7
8
  return Input.schema({
@@ -29,11 +30,18 @@ export default class SignatureComponent extends Input {
29
30
  };
30
31
  }
31
32
  static get serverConditionSettings() {
33
+ return SignatureComponent.conditionOperatorsSettings;
34
+ }
35
+ static get conditionOperatorsSettings() {
32
36
  return {
33
- ...super.serverConditionSettings,
37
+ ...super.conditionOperatorsSettings,
34
38
  operators: ['isEmpty', 'isNotEmpty'],
35
39
  };
36
40
  }
41
+ static savedValueTypes(schema) {
42
+ schema = schema || {};
43
+ return getComponentSavedTypes(schema) || [componentValueTypes.string];
44
+ }
37
45
  init() {
38
46
  super.init();
39
47
  this.currentWidth = 0;
@@ -7,6 +7,27 @@ export default class SurveyComponent extends Field {
7
7
  documentation: string;
8
8
  schema: any;
9
9
  };
10
+ static get serverConditionSettings(): {
11
+ operators: string[];
12
+ constructor: Function;
13
+ toString(): string;
14
+ toLocaleString(): string;
15
+ valueOf(): Object;
16
+ hasOwnProperty(v: PropertyKey): boolean;
17
+ isPrototypeOf(v: Object): boolean;
18
+ propertyIsEnumerable(v: PropertyKey): boolean;
19
+ };
20
+ static get conditionOperatorsSettings(): {
21
+ operators: string[];
22
+ constructor: Function;
23
+ toString(): string;
24
+ toLocaleString(): string;
25
+ valueOf(): Object;
26
+ hasOwnProperty(v: PropertyKey): boolean;
27
+ isPrototypeOf(v: Object): boolean;
28
+ propertyIsEnumerable(v: PropertyKey): boolean;
29
+ };
30
+ static savedValueTypes(schema: any): string[];
10
31
  render(): any;
11
32
  setValue(value: any, flags?: {}): boolean;
12
33
  get emptyValue(): {};
@@ -1,6 +1,6 @@
1
1
  import _ from 'lodash';
2
2
  import Field from '../_classes/field/Field';
3
- import { boolValue } from '../../utils/utils';
3
+ import { boolValue, componentValueTypes, getComponentSavedTypes } from '../../utils/utils';
4
4
  export default class SurveyComponent extends Field {
5
5
  static schema(...extend) {
6
6
  return Field.schema({
@@ -22,11 +22,17 @@ export default class SurveyComponent extends Field {
22
22
  };
23
23
  }
24
24
  static get serverConditionSettings() {
25
+ return SurveyComponent.conditionOperatorsSettings;
26
+ }
27
+ static get conditionOperatorsSettings() {
25
28
  return {
26
- ...super.serverConditionSettings,
29
+ ...super.conditionOperatorsSettings,
27
30
  operators: ['isEmpty', 'isNotEmpty'],
28
31
  };
29
32
  }
33
+ static savedValueTypes(schema) {
34
+ return getComponentSavedTypes(schema) || [componentValueTypes.object];
35
+ }
30
36
  get defaultSchema() {
31
37
  return SurveyComponent.schema();
32
38
  }
@@ -11,6 +11,7 @@ export default class TableComponent extends NestedComponent {
11
11
  showPreview: boolean;
12
12
  schema: any;
13
13
  };
14
+ static savedValueTypes(): never[];
14
15
  constructor(...args: any[]);
15
16
  get cellClassName(): string;
16
17
  get tableKey(): string;
@@ -43,6 +43,9 @@ export default class TableComponent extends NestedComponent {
43
43
  schema: TableComponent.schema()
44
44
  };
45
45
  }
46
+ static savedValueTypes() {
47
+ return [];
48
+ }
46
49
  get defaultSchema() {
47
50
  return TableComponent.schema();
48
51
  }
@@ -8,6 +8,7 @@ export default class TabsComponent extends NestedComponent {
8
8
  showPreview: boolean;
9
9
  schema: any;
10
10
  };
11
+ static savedValueTypes(): never[];
11
12
  constructor(...args: any[]);
12
13
  get tabKey(): string;
13
14
  get tabLikey(): string;
@@ -30,6 +30,9 @@ export default class TabsComponent extends NestedComponent {
30
30
  schema: TabsComponent.schema(),
31
31
  };
32
32
  }
33
+ static savedValueTypes() {
34
+ return [];
35
+ }
33
36
  get defaultSchema() {
34
37
  return TabsComponent.schema();
35
38
  }
@@ -7,6 +7,27 @@ export default class TagsComponent extends Input {
7
7
  weight: number;
8
8
  schema: any;
9
9
  };
10
+ static get serverConditionSettings(): {
11
+ operators: any[];
12
+ constructor: Function;
13
+ toString(): string;
14
+ toLocaleString(): string;
15
+ valueOf(): Object;
16
+ hasOwnProperty(v: PropertyKey): boolean;
17
+ isPrototypeOf(v: Object): boolean;
18
+ propertyIsEnumerable(v: PropertyKey): boolean;
19
+ };
20
+ static get conditionOperatorsSettings(): {
21
+ operators: any[];
22
+ constructor: Function;
23
+ toString(): string;
24
+ toLocaleString(): string;
25
+ valueOf(): Object;
26
+ hasOwnProperty(v: PropertyKey): boolean;
27
+ isPrototypeOf(v: Object): boolean;
28
+ propertyIsEnumerable(v: PropertyKey): boolean;
29
+ };
30
+ static savedValueTypes(schema: any): any[];
10
31
  get emptyValue(): "" | never[];
11
32
  get delimiter(): any;
12
33
  attachElement(element: any, index: any): void;
@@ -1,3 +1,4 @@
1
+ import { componentValueTypes, getComponentSavedTypes } from '../../utils/utils';
1
2
  import Input from '../_classes/input/Input';
2
3
  import Choices from '@formio/choices.js';
3
4
  export default class TagsComponent extends Input {
@@ -22,11 +23,18 @@ export default class TagsComponent extends Input {
22
23
  };
23
24
  }
24
25
  static get serverConditionSettings() {
26
+ return TagsComponent.conditionOperatorsSettings;
27
+ }
28
+ static get conditionOperatorsSettings() {
25
29
  return {
26
- ...super.serverConditionSettings,
27
- operators: [...super.serverConditionSettings.operators, 'includes', 'notIncludes'],
30
+ ...super.conditionOperatorsSettings,
31
+ operators: [...super.conditionOperatorsSettings.operators, 'includes', 'notIncludes'],
28
32
  };
29
33
  }
34
+ static savedValueTypes(schema) {
35
+ schema = schema || {};
36
+ return getComponentSavedTypes(schema) || [componentValueTypes[schema.storeas] || componentValueTypes.string];
37
+ }
30
38
  init() {
31
39
  super.init();
32
40
  }
@@ -74,6 +82,8 @@ export default class TagsComponent extends Input {
74
82
  });
75
83
  this.choices.itemList.element.tabIndex = element.tabIndex;
76
84
  this.addEventListener(this.choices.input.element, 'blur', () => {
85
+ // Emit event to the native Formio input, so the listener attached in the Input.js will be invoked
86
+ element.dispatchEvent(new Event('blur'));
77
87
  const value = this.choices.input.value;
78
88
  const maxTagsNumber = this.component.maxTags;
79
89
  const valuesCount = this.choices.getValue(true).length;
@@ -0,0 +1,17 @@
1
+ declare namespace _default {
2
+ const type: string;
3
+ const display: string;
4
+ const components: {
5
+ label: string;
6
+ tableView: boolean;
7
+ storeas: string;
8
+ validate: {
9
+ custom: string;
10
+ };
11
+ validateOn: string;
12
+ key: string;
13
+ type: string;
14
+ input: boolean;
15
+ }[];
16
+ }
17
+ export default _default;
@@ -0,0 +1,18 @@
1
+ export default {
2
+ type: 'form',
3
+ display: 'form',
4
+ components: [
5
+ {
6
+ label: 'Tags',
7
+ tableView: false,
8
+ storeas: 'array',
9
+ validate: {
10
+ custom: "valid = data && data.tags.length <= 2 ? true : 'You cannot add more than 2 items'"
11
+ },
12
+ validateOn: 'blur',
13
+ key: 'tags',
14
+ type: 'tags',
15
+ input: true
16
+ },
17
+ ]
18
+ };
@@ -3,4 +3,5 @@ import comp2 from './comp2';
3
3
  import comp3 from './comp3';
4
4
  import comp4 from './comp4';
5
5
  import comp5 from './comp5';
6
- export { comp1, comp2, comp3, comp4, comp5 };
6
+ import comp6 from './comp6';
7
+ export { comp1, comp2, comp3, comp4, comp5, comp6 };
@@ -3,4 +3,5 @@ import comp2 from './comp2';
3
3
  import comp3 from './comp3';
4
4
  import comp4 from './comp4';
5
5
  import comp5 from './comp5';
6
- export { comp1, comp2, comp3, comp4, comp5 };
6
+ import comp6 from './comp6';
7
+ export { comp1, comp2, comp3, comp4, comp5, comp6 };
@@ -7,6 +7,27 @@ export default class TextFieldComponent extends Input {
7
7
  weight: number;
8
8
  schema: any;
9
9
  };
10
+ static get serverConditionSettings(): {
11
+ operators: any[];
12
+ constructor: Function;
13
+ toString(): string;
14
+ toLocaleString(): string;
15
+ valueOf(): Object;
16
+ hasOwnProperty(v: PropertyKey): boolean;
17
+ isPrototypeOf(v: Object): boolean;
18
+ propertyIsEnumerable(v: PropertyKey): boolean;
19
+ };
20
+ static get conditionOperatorsSettings(): {
21
+ operators: any[];
22
+ constructor: Function;
23
+ toString(): string;
24
+ toLocaleString(): string;
25
+ valueOf(): Object;
26
+ hasOwnProperty(v: PropertyKey): boolean;
27
+ isPrototypeOf(v: Object): boolean;
28
+ propertyIsEnumerable(v: PropertyKey): boolean;
29
+ };
30
+ static savedValueTypes(schema: any): string[];
10
31
  get emptyValue(): string;
11
32
  /**
12
33
  * Returns the mask value object.
@@ -33,11 +33,17 @@ export default class TextFieldComponent extends Input {
33
33
  };
34
34
  }
35
35
  static get serverConditionSettings() {
36
+ return TextFieldComponent.conditionOperatorsSettings;
37
+ }
38
+ static get conditionOperatorsSettings() {
36
39
  return {
37
- ...super.serverConditionSettings,
38
- operators: [...super.serverConditionSettings.operators, 'includes', 'notIncludes', 'endsWith', 'startsWith'],
40
+ ...super.conditionOperatorsSettings,
41
+ operators: [...super.conditionOperatorsSettings.operators, 'includes', 'notIncludes', 'endsWith', 'startsWith'],
39
42
  };
40
43
  }
44
+ static savedValueTypes(schema) {
45
+ return FormioUtils.getComponentSavedTypes(schema) || [FormioUtils.componentValueTypes.string];
46
+ }
41
47
  get defaultSchema() {
42
48
  return TextFieldComponent.schema();
43
49
  }
@@ -1,7 +1,14 @@
1
1
  export default class TimeComponent extends TextFieldComponent {
2
2
  static get serverConditionSettings(): {
3
3
  valueComponent(classComp: any): any;
4
- operators: string[];
4
+ operators: any[];
5
+ constructor: Function;
6
+ toString(): string;
7
+ toLocaleString(): string;
8
+ valueOf(): Object;
9
+ hasOwnProperty(v: PropertyKey): boolean;
10
+ isPrototypeOf(v: Object): boolean;
11
+ propertyIsEnumerable(v: PropertyKey): boolean;
5
12
  };
6
13
  rawData: string | never[];
7
14
  get dataFormat(): any;
@@ -8,6 +8,7 @@ export default class WellComponent extends NestedComponent {
8
8
  weight: number;
9
9
  schema: any;
10
10
  };
11
+ static savedValueTypes(): never[];
11
12
  constructor(...args: any[]);
12
13
  noField: boolean;
13
14
  }
@@ -20,6 +20,9 @@ export default class WellComponent extends NestedComponent {
20
20
  schema: WellComponent.schema()
21
21
  };
22
22
  }
23
+ static savedValueTypes() {
24
+ return [];
25
+ }
23
26
  get defaultSchema() {
24
27
  return WellComponent.schema();
25
28
  }
@@ -1 +1,2 @@
1
- export {};
1
+ export { Formio };
2
+ import { Formio } from './Embed';
@@ -1,2 +1,96 @@
1
- import { embed } from './Embed';
2
- embed();
1
+ import { Formio } from './Embed';
2
+ const scripts = document.getElementsByTagName('script');
3
+ const config = window.FormioConfig || {};
4
+ let thisScript = null;
5
+ let i = scripts.length;
6
+ const scriptName = config.scriptName || 'formio.embed.';
7
+ while (i--) {
8
+ if (scripts[i].src && (scripts[i].src.indexOf(scriptName) !== -1)) {
9
+ thisScript = scripts[i];
10
+ break;
11
+ }
12
+ }
13
+ if (thisScript) {
14
+ const query = {};
15
+ const queryString = thisScript.src.replace(/^[^?]+\??/, '');
16
+ queryString.replace(/\?/g, '&').split('&').forEach((item) => {
17
+ query[item.split('=')[0]] = item.split('=')[1] && decodeURIComponent(item.split('=')[1]);
18
+ });
19
+ let scriptSrc = thisScript.src.replace(/^([^?]+).*/, '$1').split('/');
20
+ scriptSrc.pop();
21
+ if (config.formioPath) {
22
+ config.formioPath(scriptSrc);
23
+ }
24
+ scriptSrc = scriptSrc.join('/');
25
+ Formio.config = Object.assign({
26
+ script: query.script || (`${config.updatePath ? config.updatePath() : scriptSrc}/formio.form.min.js`),
27
+ style: query.styles || (`${config.updatePath ? config.updatePath() : scriptSrc}/formio.form.min.css`),
28
+ cdn: query.cdn,
29
+ class: (query.class || 'formio-form-wrapper'),
30
+ src: query.src,
31
+ form: null,
32
+ submission: null,
33
+ project: query.project,
34
+ base: query.base || 'https://api.form.io',
35
+ submit: query.submit,
36
+ includeLibs: (query.libs === 'true' || query.libs === '1'),
37
+ template: query.template,
38
+ debug: (query.debug === 'true' || query.debug === '1'),
39
+ config: {},
40
+ redirect: (query.return || query.redirect),
41
+ embedCSS: (`${config.updatePath ? config.updatePath() : scriptSrc}/formio.embed.css`),
42
+ before: null,
43
+ after: null
44
+ }, config);
45
+ const form = (Formio.config.form || Formio.config.src);
46
+ if (form) {
47
+ Formio.debug('Embedding Configuration', config);
48
+ if (Formio.config.addPremiumLib) {
49
+ Formio.config.addPremiumLib(Formio.config, scriptSrc);
50
+ }
51
+ // The id for this embedded form.
52
+ Formio.config.id = `formio-${Math.random().toString(36).substring(7)}`;
53
+ Formio.debug('Creating form element');
54
+ const element = Formio.createElement('div', {
55
+ 'id': Formio.config.id,
56
+ class: Formio.config.class
57
+ });
58
+ // insertAfter doesn't exist, but effect is identical.
59
+ thisScript.parentNode.insertBefore(element, thisScript.parentNode.firstElementChild.nextSibling);
60
+ Formio.createForm(element, form, Formio.config.config).then((instance) => {
61
+ if (Formio.config.submit) {
62
+ instance.nosubmit = true;
63
+ }
64
+ // Configure a redirect.
65
+ instance.on('submit', (submission) => {
66
+ Formio.debug("on('submit')", submission);
67
+ if (Formio.config.submit) {
68
+ Formio.debug(`Sending submission to ${Formio.config.submit}`);
69
+ const headers = {
70
+ 'content-type': 'application/json'
71
+ };
72
+ const token = Formio.FormioClass.getToken();
73
+ if (token) {
74
+ headers['x-jwt-token'] = token;
75
+ }
76
+ Formio.FormioClass.fetch(Formio.config.submit, {
77
+ body: JSON.stringify(submission),
78
+ headers: headers,
79
+ method: 'POST',
80
+ mode: 'cors',
81
+ })
82
+ .then(resp => resp.json())
83
+ .then(submission => Formio.submitDone(instance, submission));
84
+ }
85
+ else {
86
+ Formio.submitDone(instance, submission);
87
+ }
88
+ });
89
+ });
90
+ }
91
+ }
92
+ else {
93
+ // Show an error if the script cannot be found.
94
+ document.write('<span>Could not locate the Embedded form.</span>');
95
+ }
96
+ export { Formio };
@@ -3,8 +3,8 @@
3
3
  * @param {*} plugin
4
4
  * @returns
5
5
  */
6
- export function registerModule(mod: any, defaultFn?: null): void;
7
- export function useModule(defaultFn?: null): (...plugins: any[]) => void;
6
+ export function registerModule(mod: any, defaultFn?: null, options?: {}): void;
7
+ export function useModule(defaultFn?: null): (plugins: any, options?: {}) => void;
8
8
  import Components from './components/Components';
9
9
  import Displays from './displays/Displays';
10
10
  import Providers from './providers';
@@ -19,4 +19,5 @@ import ValueSources from './validator/valueSources';
19
19
  import Utils from './utils';
20
20
  import Form from './Form';
21
21
  import { Formio } from './Formio';
22
- export { Components, Displays, Providers, Rules, Widgets, Templates, Conjunctions, Operators, QuickRules, Transformers, ValueSources, Utils, Form, Formio };
22
+ import Licenses from './licenses';
23
+ export { Components, Displays, Providers, Rules, Widgets, Templates, Conjunctions, Operators, QuickRules, Transformers, ValueSources, Utils, Form, Formio, Licenses };
@@ -15,6 +15,7 @@ import Widgets from './widgets';
15
15
  import Form from './Form';
16
16
  import Utils from './utils';
17
17
  import Evaluator from './utils/Evaluator';
18
+ import Licenses from './licenses';
18
19
  Formio.loadModules = (path = `${Formio.getApiUrl()}/externalModules.js`, name = 'externalModules') => {
19
20
  Formio.requireLibrary(name, name, path, true)
20
21
  .then((modules) => {
@@ -37,6 +38,7 @@ Formio.QuickRules = QuickRules;
37
38
  Formio.Transformers = Transformers;
38
39
  Formio.ValueSources = ValueSources;
39
40
  Formio.AllComponents = AllComponents;
41
+ Formio.Licenses = Licenses;
40
42
  // This is strange, but is needed for "premium" components to import correctly.
41
43
  Formio.Formio = Formio;
42
44
  Formio.Components.setComponents(AllComponents);
@@ -45,7 +47,7 @@ Formio.Components.setComponents(AllComponents);
45
47
  * @param {*} plugin
46
48
  * @returns
47
49
  */
48
- export function registerModule(mod, defaultFn = null) {
50
+ export function registerModule(mod, defaultFn = null, options = {}) {
49
51
  // Sanity check.
50
52
  if (typeof mod !== 'object') {
51
53
  return;
@@ -104,6 +106,11 @@ export function registerModule(mod, defaultFn = null) {
104
106
  case 'valueSources':
105
107
  Formio.ValueSources.addValueSources(mod.valueSources);
106
108
  break;
109
+ case 'library':
110
+ options.license
111
+ ? Formio.Licenses.addLicense(mod.library, mod.license)
112
+ : Formio.Licenses.removeLicense(mod.library);
113
+ break;
107
114
  default:
108
115
  if (defaultFn) {
109
116
  if (!defaultFn(key, mod)) {
@@ -116,23 +123,24 @@ export function registerModule(mod, defaultFn = null) {
116
123
  }
117
124
  }
118
125
  export function useModule(defaultFn = null) {
119
- return (...plugins) => {
126
+ return (plugins, options = {}) => {
127
+ plugins = _.isArray(plugins) ? plugins : [plugins];
120
128
  plugins.forEach((plugin) => {
121
129
  if (Array.isArray(plugin)) {
122
- plugin.forEach(p => registerModule(p, defaultFn));
130
+ plugin.forEach(p => registerModule(p, defaultFn, options));
123
131
  }
124
132
  else {
125
- registerModule(plugin, defaultFn);
133
+ registerModule(plugin, defaultFn, options);
126
134
  }
127
135
  });
128
136
  };
129
137
  }
130
138
  /**
131
- * Allows passing in plugins as multiple arguments or an array of plugins.
139
+ * Allows passing in plugins as an array of plugins or a single plugin.
132
140
  *
133
- * Formio.plugins(plugin1, plugin2, etc);
134
- * Formio.plugins([plugin1, plugin2, etc]);
141
+ * Formio.plugins(plugin1, options);
142
+ * Formio.plugins([plugin1, plugin2, etc], options);
135
143
  */
136
144
  Formio.use = useModule();
137
145
  // Export the components.
138
- export { Components, Displays, Providers, Rules, Widgets, Templates, Conjunctions, Operators, QuickRules, Transformers, ValueSources, Utils, Form, Formio };
146
+ export { Components, Displays, Providers, Rules, Widgets, Templates, Conjunctions, Operators, QuickRules, Transformers, ValueSources, Utils, Form, Formio, Licenses };
@@ -0,0 +1,7 @@
1
+ export default class Licenses {
2
+ static licenses: {};
3
+ static addLicense(name: any, license: any): void;
4
+ static getLicense(name: any): any;
5
+ static removeLicense(name: any): void;
6
+ static getLicenses(): {};
7
+ }
@@ -0,0 +1,17 @@
1
+ import _ from 'lodash';
2
+ class Licenses {
3
+ static licenses = {};
4
+ static addLicense(name, license) {
5
+ Licenses.licenses[name] = license;
6
+ }
7
+ static getLicense(name) {
8
+ return Licenses.licenses[name];
9
+ }
10
+ static removeLicense(name) {
11
+ _.unset(Licenses.licenses, name);
12
+ }
13
+ static getLicenses() {
14
+ return Licenses.licenses;
15
+ }
16
+ }
17
+ export default Licenses;
@@ -0,0 +1,2 @@
1
+ export default Licenses;
2
+ import Licenses from './Licenses';
@@ -0,0 +1,2 @@
1
+ import Licenses from './Licenses';
2
+ export default Licenses;
@@ -349,6 +349,7 @@ export function isPromise(value: any): boolean;
349
349
  */
350
350
  export function isInsideScopingComponent(componentInstance: any, firstPass?: boolean): boolean | boolean | any;
351
351
  export function getFocusableElements(element: any): any;
352
+ export function getComponentSavedTypes(fullSchema: any): string[] | null;
352
353
  export * from "./formUtils";
353
354
  /**
354
355
  * Map values through unfold and return first non-nil value.
@@ -357,6 +358,15 @@ export * from "./formUtils";
357
358
  * @return {T}
358
359
  */
359
360
  export const firstNonNil: any;
361
+ export namespace componentValueTypes {
362
+ const number: string;
363
+ const string: string;
364
+ const boolean: string;
365
+ const array: string;
366
+ const object: string;
367
+ const date: string;
368
+ const any: string;
369
+ }
360
370
  import jsonLogic from 'json-logic-js';
361
371
  import ConditionOperators from './conditionOperators';
362
372
  import Evaluator from './Evaluator';
@@ -1365,3 +1365,22 @@ export function getFocusableElements(element) {
1365
1365
  }
1366
1366
  // Export lodash to save space with other libraries.
1367
1367
  export { _ };
1368
+ export const componentValueTypes = {
1369
+ number: 'number',
1370
+ string: 'string',
1371
+ boolean: 'boolean',
1372
+ array: 'array',
1373
+ object: 'object',
1374
+ date: 'date',
1375
+ any: 'any',
1376
+ };
1377
+ export function getComponentSavedTypes(fullSchema) {
1378
+ const schema = fullSchema || {};
1379
+ if (schema.persistent !== true) {
1380
+ return [];
1381
+ }
1382
+ if (schema.multiple) {
1383
+ return [componentValueTypes.array];
1384
+ }
1385
+ return null;
1386
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@formio/js",
3
- "version": "5.0.0-rc.20",
3
+ "version": "5.0.0-rc.22",
4
4
  "description": "JavaScript powered Forms with JSON Form Builder",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/mjs/index.js",
@@ -9,6 +9,10 @@
9
9
  "import": "./lib/mjs/index.js",
10
10
  "require": "./lib/cjs/index.js"
11
11
  },
12
+ "./sdk": {
13
+ "import": "./lib/mjs/Formio.js",
14
+ "require": "./lib/cjs/Formio.js"
15
+ },
12
16
  "./utils": {
13
17
  "import": "./lib/mjs/utils/index.js",
14
18
  "require": "./lib/cjs/utils/index.js"
package/types/index.d.ts CHANGED
@@ -15,3 +15,4 @@ export * from './rulesEngine/rules';
15
15
  export * from './rulesEngine/transformers';
16
16
  export * from './rulesEngine/valueSources';
17
17
  export * from './providers';
18
+ export * from './licenses';
@@ -0,0 +1,7 @@
1
+ export class Licenses {
2
+ static readonly licenses: any;
3
+ static addLicense(name: string, license: any): void;
4
+ static removeLicense(name: string): void;
5
+ static getLicense(name: string): any;
6
+ static getLicenses(): any;
7
+ }
package/types/utils.d.ts CHANGED
@@ -4,8 +4,10 @@ export type AnyForJSON = { [key: string]: any } | any;
4
4
 
5
5
  export namespace Utils {
6
6
  const ConditionOperators: any;
7
+ const componentValueTypes: { [key: string]: string };
7
8
  const Evaluator: any;
8
9
  const _: any;
10
+ function getComponentSavedTypes(schema: object): Array<any> | null;
9
11
  function evaluate(
10
12
  func: any,
11
13
  args: { component: any; form: any; instance: any; row: any; data: any } | any,