@formio/js 5.1.0-dev.6040.debc859 → 5.1.0-dev.6042.603237d

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 (236) hide show
  1. package/Changelog.md +99 -310
  2. package/README.md +7 -0
  3. package/dist/formio.builder.css +1 -0
  4. package/dist/formio.builder.min.css +1 -1
  5. package/dist/formio.form.css +1 -0
  6. package/dist/formio.form.js +661 -672
  7. package/dist/formio.form.min.css +1 -1
  8. package/dist/formio.form.min.js +1 -1
  9. package/dist/formio.form.min.js.LICENSE.txt +3 -1
  10. package/dist/formio.full.css +1 -0
  11. package/dist/formio.full.js +688 -699
  12. package/dist/formio.full.min.css +1 -1
  13. package/dist/formio.full.min.js +1 -1
  14. package/dist/formio.full.min.js.LICENSE.txt +3 -1
  15. package/dist/formio.js +90 -68
  16. package/dist/formio.min.js +1 -1
  17. package/dist/formio.utils.js +103 -81
  18. package/dist/formio.utils.min.js +1 -1
  19. package/dist/formio.utils.min.js.LICENSE.txt +3 -1
  20. package/lib/cjs/Element.d.ts +2 -1
  21. package/lib/cjs/Element.js +18 -39
  22. package/lib/cjs/EventEmitter.js +2 -25
  23. package/lib/cjs/Form.js +2 -25
  24. package/lib/cjs/PDF.js +1 -1
  25. package/lib/cjs/PDFBuilder.js +4 -5
  26. package/lib/cjs/Webform.d.ts +2 -2
  27. package/lib/cjs/Webform.js +14 -15
  28. package/lib/cjs/WebformBuilder.d.ts +1 -0
  29. package/lib/cjs/WebformBuilder.js +44 -14
  30. package/lib/cjs/Wizard.d.ts +2 -2
  31. package/lib/cjs/Wizard.js +41 -27
  32. package/lib/cjs/WizardBuilder.js +1 -1
  33. package/lib/cjs/components/_classes/component/Component.d.ts +49 -15
  34. package/lib/cjs/components/_classes/component/Component.js +188 -125
  35. package/lib/cjs/components/_classes/component/editForm/Component.edit.conditional.js +1 -1
  36. package/lib/cjs/components/_classes/component/editForm/Component.edit.data.js +19 -0
  37. package/lib/cjs/components/_classes/component/editForm/Component.edit.logic.js +1 -1
  38. package/lib/cjs/components/_classes/component/editForm/utils.js +1 -1
  39. package/lib/cjs/components/_classes/componentModal/ComponentModal.js +1 -1
  40. package/lib/cjs/components/_classes/input/Input.js +1 -1
  41. package/lib/cjs/components/_classes/list/ListComponent.js +3 -3
  42. package/lib/cjs/components/_classes/nested/NestedComponent.d.ts +0 -1
  43. package/lib/cjs/components/_classes/nested/NestedComponent.form.js +13 -0
  44. package/lib/cjs/components/_classes/nested/NestedComponent.js +17 -25
  45. package/lib/cjs/components/_classes/nestedarray/NestedArrayComponent.js +1 -1
  46. package/lib/cjs/components/_classes/nesteddata/NestedDataComponent.d.ts +0 -2
  47. package/lib/cjs/components/_classes/nesteddata/NestedDataComponent.js +1 -12
  48. package/lib/cjs/components/address/Address.d.ts +9 -0
  49. package/lib/cjs/components/address/Address.js +32 -9
  50. package/lib/cjs/components/address/editForm/Address.edit.display.d.ts +4 -0
  51. package/lib/cjs/components/address/editForm/Address.edit.display.js +1 -0
  52. package/lib/cjs/components/address/editForm/Address.edit.provider.js +8 -8
  53. package/lib/cjs/components/alert/Alert.js +1 -1
  54. package/lib/cjs/components/button/Button.d.ts +1 -1
  55. package/lib/cjs/components/button/Button.js +7 -11
  56. package/lib/cjs/components/checkbox/Checkbox.js +1 -1
  57. package/lib/cjs/components/container/Container.js +1 -1
  58. package/lib/cjs/components/content/editForm/Content.edit.display.js +8 -0
  59. package/lib/cjs/components/currency/Currency.js +1 -1
  60. package/lib/cjs/components/currency/editForm/Currency.edit.display.js +12 -0
  61. package/lib/cjs/components/datagrid/DataGrid.js +5 -4
  62. package/lib/cjs/components/datamap/DataMap.js +2 -6
  63. package/lib/cjs/components/datetime/DateTime.d.ts +1 -1
  64. package/lib/cjs/components/datetime/DateTime.js +15 -13
  65. package/lib/cjs/components/datetime/editForm/DateTime.edit.validation.d.ts +66 -15
  66. package/lib/cjs/components/datetime/editForm/DateTime.edit.validation.js +68 -47
  67. package/lib/cjs/components/day/Day.js +2 -2
  68. package/lib/cjs/components/day/editForm/Day.edit.display.js +8 -0
  69. package/lib/cjs/components/editgrid/EditGrid.js +4 -14
  70. package/lib/cjs/components/editgrid/editForm/EditGrid.edit.display.js +1 -1
  71. package/lib/cjs/components/email/editForm/Email.edit.display.js +12 -0
  72. package/lib/cjs/components/fieldset/editForm/Fieldset.edit.display.js +8 -0
  73. package/lib/cjs/components/file/File.js +6 -2
  74. package/lib/cjs/components/file/editForm/File.edit.file.d.ts +13 -0
  75. package/lib/cjs/components/file/editForm/File.edit.file.js +1 -0
  76. package/lib/cjs/components/form/Form.d.ts +0 -1
  77. package/lib/cjs/components/form/Form.js +32 -24
  78. package/lib/cjs/components/form/editForm/Form.edit.form.js +4 -3
  79. package/lib/cjs/components/hidden/editForm/Hidden.edit.display.js +8 -0
  80. package/lib/cjs/components/html/HTML.js +1 -2
  81. package/lib/cjs/components/html/editForm/HTML.edit.display.js +8 -0
  82. package/lib/cjs/components/number/Number.js +1 -1
  83. package/lib/cjs/components/number/editForm/Number.edit.display.js +12 -0
  84. package/lib/cjs/components/panel/Panel.js +1 -1
  85. package/lib/cjs/components/password/editForm/Password.edit.display.js +13 -1
  86. package/lib/cjs/components/phonenumber/PhoneNumber.form.js +9 -1
  87. package/lib/cjs/components/radio/Radio.d.ts +8 -0
  88. package/lib/cjs/components/radio/Radio.js +17 -7
  89. package/lib/cjs/components/recaptcha/editForm/ReCaptcha.edit.display.js +1 -1
  90. package/lib/cjs/components/select/Select.d.ts +1 -0
  91. package/lib/cjs/components/select/Select.js +21 -5
  92. package/lib/cjs/components/select/editForm/Select.edit.data.d.ts +68 -110
  93. package/lib/cjs/components/select/editForm/Select.edit.data.js +3 -38
  94. package/lib/cjs/components/selectboxes/SelectBoxes.d.ts +6 -0
  95. package/lib/cjs/components/selectboxes/SelectBoxes.js +7 -1
  96. package/lib/cjs/components/signature/Signature.js +1 -1
  97. package/lib/cjs/components/survey/Survey.js +2 -2
  98. package/lib/cjs/components/tabs/Tabs.js +1 -0
  99. package/lib/cjs/components/tabs/editForm/Tabs.edit.display.js +8 -0
  100. package/lib/cjs/components/tags/Tags.js +1 -1
  101. package/lib/cjs/components/textarea/TextArea.js +10 -2
  102. package/lib/cjs/components/textarea/editForm/TextArea.edit.display.js +12 -0
  103. package/lib/cjs/components/textfield/TextField.js +9 -32
  104. package/lib/cjs/components/time/Time.js +1 -1
  105. package/lib/cjs/components/unknown/Unknown.form.d.ts +2 -1
  106. package/lib/cjs/components/unknown/Unknown.form.js +13 -9
  107. package/lib/cjs/components/url/editForm/Url.edit.display.js +12 -0
  108. package/lib/cjs/components/well/editForm/Well.edit.display.js +8 -0
  109. package/lib/cjs/formio.form.js +5 -5
  110. package/lib/cjs/providers/storage/uploadAdapter.js +8 -6
  111. package/lib/cjs/translations/en.d.ts +1 -234
  112. package/lib/cjs/translations/en.js +4 -2
  113. package/lib/cjs/utils/Evaluator.d.ts +20 -6
  114. package/lib/cjs/utils/Evaluator.js +38 -15
  115. package/lib/cjs/utils/builder.js +5 -5
  116. package/lib/cjs/utils/conditionOperators/IsEqualTo.js +3 -3
  117. package/lib/cjs/utils/formUtils.d.ts +2 -2
  118. package/lib/cjs/utils/index.d.ts +169 -2
  119. package/lib/cjs/utils/index.js +22 -2
  120. package/lib/cjs/utils/utils.d.ts +31 -45
  121. package/lib/cjs/utils/utils.js +80 -156
  122. package/lib/cjs/widgets/CalendarWidget.d.ts +1 -8
  123. package/lib/cjs/widgets/CalendarWidget.js +19 -40
  124. package/lib/mjs/Element.d.ts +2 -1
  125. package/lib/mjs/Element.js +11 -9
  126. package/lib/mjs/EventEmitter.js +2 -2
  127. package/lib/mjs/Form.js +1 -1
  128. package/lib/mjs/PDF.js +1 -1
  129. package/lib/mjs/PDFBuilder.js +1 -2
  130. package/lib/mjs/Webform.d.ts +2 -2
  131. package/lib/mjs/Webform.js +12 -13
  132. package/lib/mjs/WebformBuilder.d.ts +1 -0
  133. package/lib/mjs/WebformBuilder.js +37 -8
  134. package/lib/mjs/Wizard.d.ts +2 -2
  135. package/lib/mjs/Wizard.js +39 -25
  136. package/lib/mjs/WizardBuilder.js +1 -1
  137. package/lib/mjs/components/_classes/component/Component.d.ts +49 -15
  138. package/lib/mjs/components/_classes/component/Component.js +161 -75
  139. package/lib/mjs/components/_classes/component/editForm/Component.edit.conditional.js +1 -1
  140. package/lib/mjs/components/_classes/component/editForm/Component.edit.data.js +19 -0
  141. package/lib/mjs/components/_classes/component/editForm/Component.edit.logic.js +1 -1
  142. package/lib/mjs/components/_classes/component/editForm/utils.js +1 -1
  143. package/lib/mjs/components/_classes/componentModal/ComponentModal.js +1 -1
  144. package/lib/mjs/components/_classes/input/Input.js +1 -1
  145. package/lib/mjs/components/_classes/list/ListComponent.js +3 -3
  146. package/lib/mjs/components/_classes/nested/NestedComponent.d.ts +0 -1
  147. package/lib/mjs/components/_classes/nested/NestedComponent.form.js +13 -0
  148. package/lib/mjs/components/_classes/nested/NestedComponent.js +17 -25
  149. package/lib/mjs/components/_classes/nestedarray/NestedArrayComponent.js +1 -1
  150. package/lib/mjs/components/_classes/nesteddata/NestedDataComponent.d.ts +0 -2
  151. package/lib/mjs/components/_classes/nesteddata/NestedDataComponent.js +1 -12
  152. package/lib/mjs/components/address/Address.d.ts +9 -0
  153. package/lib/mjs/components/address/Address.js +32 -9
  154. package/lib/mjs/components/address/editForm/Address.edit.display.d.ts +4 -0
  155. package/lib/mjs/components/address/editForm/Address.edit.display.js +1 -0
  156. package/lib/mjs/components/address/editForm/Address.edit.provider.js +8 -8
  157. package/lib/mjs/components/alert/Alert.js +1 -1
  158. package/lib/mjs/components/button/Button.d.ts +1 -1
  159. package/lib/mjs/components/button/Button.js +7 -10
  160. package/lib/mjs/components/checkbox/Checkbox.js +1 -1
  161. package/lib/mjs/components/container/Container.js +1 -1
  162. package/lib/mjs/components/content/editForm/Content.edit.display.js +8 -0
  163. package/lib/mjs/components/currency/Currency.js +1 -1
  164. package/lib/mjs/components/currency/editForm/Currency.edit.display.js +12 -0
  165. package/lib/mjs/components/datagrid/DataGrid.js +5 -4
  166. package/lib/mjs/components/datamap/DataMap.js +2 -6
  167. package/lib/mjs/components/datetime/DateTime.d.ts +1 -1
  168. package/lib/mjs/components/datetime/DateTime.js +15 -13
  169. package/lib/mjs/components/datetime/editForm/DateTime.edit.validation.d.ts +66 -15
  170. package/lib/mjs/components/datetime/editForm/DateTime.edit.validation.js +68 -47
  171. package/lib/mjs/components/day/Day.js +2 -2
  172. package/lib/mjs/components/day/editForm/Day.edit.display.js +8 -0
  173. package/lib/mjs/components/editgrid/EditGrid.js +4 -13
  174. package/lib/mjs/components/editgrid/editForm/EditGrid.edit.display.js +1 -1
  175. package/lib/mjs/components/email/editForm/Email.edit.display.js +12 -0
  176. package/lib/mjs/components/fieldset/editForm/Fieldset.edit.display.js +8 -0
  177. package/lib/mjs/components/file/File.js +6 -2
  178. package/lib/mjs/components/file/editForm/File.edit.file.d.ts +13 -0
  179. package/lib/mjs/components/file/editForm/File.edit.file.js +1 -0
  180. package/lib/mjs/components/form/Form.d.ts +0 -1
  181. package/lib/mjs/components/form/Form.js +31 -24
  182. package/lib/mjs/components/form/editForm/Form.edit.form.js +3 -2
  183. package/lib/mjs/components/hidden/editForm/Hidden.edit.display.js +8 -0
  184. package/lib/mjs/components/html/HTML.js +1 -2
  185. package/lib/mjs/components/html/editForm/HTML.edit.display.js +8 -0
  186. package/lib/mjs/components/number/Number.js +1 -1
  187. package/lib/mjs/components/number/editForm/Number.edit.display.js +12 -0
  188. package/lib/mjs/components/panel/Panel.js +1 -1
  189. package/lib/mjs/components/password/editForm/Password.edit.display.js +13 -1
  190. package/lib/mjs/components/phonenumber/PhoneNumber.form.js +9 -1
  191. package/lib/mjs/components/radio/Radio.d.ts +8 -0
  192. package/lib/mjs/components/radio/Radio.js +17 -7
  193. package/lib/mjs/components/recaptcha/editForm/ReCaptcha.edit.display.js +1 -1
  194. package/lib/mjs/components/select/Select.d.ts +1 -0
  195. package/lib/mjs/components/select/Select.js +21 -5
  196. package/lib/mjs/components/select/editForm/Select.edit.data.d.ts +68 -110
  197. package/lib/mjs/components/select/editForm/Select.edit.data.js +3 -38
  198. package/lib/mjs/components/selectboxes/SelectBoxes.d.ts +6 -0
  199. package/lib/mjs/components/selectboxes/SelectBoxes.js +7 -1
  200. package/lib/mjs/components/signature/Signature.js +1 -1
  201. package/lib/mjs/components/survey/Survey.js +2 -2
  202. package/lib/mjs/components/tabs/Tabs.js +1 -0
  203. package/lib/mjs/components/tabs/editForm/Tabs.edit.display.js +8 -0
  204. package/lib/mjs/components/tags/Tags.js +1 -1
  205. package/lib/mjs/components/textarea/TextArea.js +10 -2
  206. package/lib/mjs/components/textarea/editForm/TextArea.edit.display.js +12 -0
  207. package/lib/mjs/components/textfield/TextField.js +3 -3
  208. package/lib/mjs/components/time/Time.js +1 -1
  209. package/lib/mjs/components/unknown/Unknown.form.d.ts +2 -1
  210. package/lib/mjs/components/unknown/Unknown.form.js +13 -9
  211. package/lib/mjs/components/url/editForm/Url.edit.display.js +12 -0
  212. package/lib/mjs/components/well/editForm/Well.edit.display.js +8 -0
  213. package/lib/mjs/formio.form.js +3 -3
  214. package/lib/mjs/providers/storage/uploadAdapter.js +8 -6
  215. package/lib/mjs/translations/en.d.ts +1 -234
  216. package/lib/mjs/translations/en.js +6 -47
  217. package/lib/mjs/utils/Evaluator.d.ts +20 -6
  218. package/lib/mjs/utils/Evaluator.js +31 -13
  219. package/lib/mjs/utils/builder.js +1 -1
  220. package/lib/mjs/utils/conditionOperators/IsEqualTo.js +1 -1
  221. package/lib/mjs/utils/formUtils.d.ts +2 -2
  222. package/lib/mjs/utils/index.d.ts +169 -2
  223. package/lib/mjs/utils/index.js +18 -1
  224. package/lib/mjs/utils/utils.d.ts +31 -45
  225. package/lib/mjs/utils/utils.js +72 -129
  226. package/lib/mjs/widgets/CalendarWidget.d.ts +1 -8
  227. package/lib/mjs/widgets/CalendarWidget.js +19 -40
  228. package/package.json +8 -6
  229. package/lib/cjs/i18n.d.ts +0 -13
  230. package/lib/cjs/i18n.js +0 -19
  231. package/lib/cjs/utils/i18n.d.ts +0 -19
  232. package/lib/cjs/utils/i18n.js +0 -120
  233. package/lib/mjs/i18n.d.ts +0 -13
  234. package/lib/mjs/i18n.js +0 -14
  235. package/lib/mjs/utils/i18n.d.ts +0 -19
  236. package/lib/mjs/utils/i18n.js +0 -112
@@ -9,6 +9,18 @@ exports.default = [
9
9
  key: 'allowMultipleMasks',
10
10
  ignore: true
11
11
  },
12
+ {
13
+ key: 'inputMasks',
14
+ ignore: true
15
+ },
16
+ {
17
+ key: 'widget.type',
18
+ ignore: true
19
+ },
20
+ {
21
+ key: 'widget',
22
+ ignore: true
23
+ },
12
24
  {
13
25
  key: 'showWordCount',
14
26
  ignore: true
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const lodash_1 = __importDefault(require("lodash"));
7
7
  const NestedArrayComponent_1 = __importDefault(require("../_classes/nestedarray/NestedArrayComponent"));
8
- const utils_1 = require("../../utils/utils");
8
+ const utils_1 = require("../../utils");
9
9
  class DataGridComponent extends NestedArrayComponent_1.default {
10
10
  static schema(...extend) {
11
11
  return NestedArrayComponent_1.default.schema({
@@ -492,6 +492,10 @@ class DataGridComponent extends NestedArrayComponent_1.default {
492
492
  options.row = `${rowIndex}-${colIndex}`;
493
493
  options.rowIndex = rowIndex;
494
494
  options.onChange = (flags, changed, modified) => {
495
+ if (changed.component.type === 'form') {
496
+ const formComp = (0, utils_1.getComponent)(this.component.components, changed.component.key);
497
+ lodash_1.default.set(formComp, 'components', changed.component.components);
498
+ }
495
499
  this.triggerChange({ modified });
496
500
  };
497
501
  let columnComponent;
@@ -613,9 +617,6 @@ class DataGridComponent extends NestedArrayComponent_1.default {
613
617
  this.updateOnChange(flags, changed);
614
618
  return changed;
615
619
  }
616
- restoreComponentsContext() {
617
- this.rows.forEach((row, index) => lodash_1.default.forIn(row, (component) => component.data = this.dataValue[index]));
618
- }
619
620
  toggleGroup(element, index) {
620
621
  element.classList.toggle('collapsed');
621
622
  lodash_1.default.each(this.refs.chunks[index], row => {
@@ -73,14 +73,10 @@ class DataMapComponent extends DataGrid_1.default {
73
73
  return {};
74
74
  }
75
75
  get dataValue() {
76
- if (!this.key ||
77
- (this.conditionallyHidden && this.component.clearOnHide)) {
76
+ if (!this.key) {
78
77
  return this.emptyValue;
79
78
  }
80
- if (!this.hasValue() && this.shouldAddDefaultValue) {
81
- this.dataValue = this.emptyValue;
82
- }
83
- return lodash_1.default.get(this.data, this.key);
79
+ return lodash_1.default.get(this.data, this.key, this.emptyValue);
84
80
  }
85
81
  set dataValue(value) {
86
82
  super.dataValue = value;
@@ -17,7 +17,7 @@ export default class DateTimeComponent extends Input {
17
17
  };
18
18
  static savedValueTypes(schema: any): string[];
19
19
  get emptyValue(): string;
20
- get momentFormat(): string;
20
+ get dayjsFormat(): string;
21
21
  createWrapper(): boolean;
22
22
  checkValidity(data: any, dirty: any, rowData: any): boolean;
23
23
  getValueAsString(value: any, options: any): any;
@@ -4,9 +4,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const lodash_1 = __importDefault(require("lodash"));
7
- const moment_1 = __importDefault(require("moment"));
7
+ const dayjs_1 = __importDefault(require("dayjs"));
8
8
  const utils_1 = __importDefault(require("../../utils"));
9
- const utils_2 = require("../../utils/utils");
9
+ const utils_2 = require("../../utils");
10
10
  const Input_1 = __importDefault(require("../_classes/input/Input"));
11
11
  class DateTimeComponent extends Input_1.default {
12
12
  static schema(...extend) {
@@ -123,8 +123,8 @@ class DateTimeComponent extends Input_1.default {
123
123
  get emptyValue() {
124
124
  return '';
125
125
  }
126
- get momentFormat() {
127
- return utils_1.default.convertFormatToMoment(this.component.format);
126
+ get dayjsFormat() {
127
+ return utils_1.default.convertFormatToDayjs(this.component.format);
128
128
  }
129
129
  isEmpty(value = this.dataValue) {
130
130
  if (value && (value.toString() === 'Invalid Date')) {
@@ -133,12 +133,14 @@ class DateTimeComponent extends Input_1.default {
133
133
  return super.isEmpty(value);
134
134
  }
135
135
  formatValue(input) {
136
- const result = moment_1.default.utc(input).toISOString();
137
- return result === 'Invalid date' ? input : result;
136
+ if ((0, dayjs_1.default)(input).isValid()) {
137
+ return dayjs_1.default.utc(input).toISOString();
138
+ }
139
+ return input;
138
140
  }
139
141
  isEqual(valueA, valueB = this.dataValue) {
140
142
  return (this.isEmpty(valueA) && this.isEmpty(valueB))
141
- || moment_1.default.utc(valueA).format(this.momentFormat) === moment_1.default.utc(valueB).format(this.momentFormat);
143
+ || dayjs_1.default.utc(valueA).format(this.dayjsFormat) === dayjs_1.default.utc(valueB).format(this.dayjsFormat);
142
144
  }
143
145
  createWrapper() {
144
146
  return false;
@@ -154,19 +156,19 @@ class DateTimeComponent extends Input_1.default {
154
156
  return super.checkValidity(data, dirty, rowData);
155
157
  }
156
158
  getValueAsString(value, options) {
157
- let format = utils_1.default.convertFormatToMoment(this.component.format);
158
- format += format.match(/z$/) ? '' : ' z';
159
+ let format = utils_1.default.convertFormatToDayjs(this.component.format);
159
160
  const timezone = this.timezone;
160
161
  if (value && !this.attached && timezone) {
162
+ format += format.match(/z$/) ? '' : ' z';
161
163
  if (Array.isArray(value) && this.component.multiple) {
162
- return value.map(item => lodash_1.default.trim(utils_1.default.momentDate(item, format, timezone, options).format(format))).join(', ');
164
+ return value.map(item => lodash_1.default.trim(utils_1.default.dayjsDate(item, format, timezone, options).format(format))).join(', ');
163
165
  }
164
- return lodash_1.default.trim(utils_1.default.momentDate(value, format, timezone, options).format(format));
166
+ return lodash_1.default.trim(utils_1.default.dayjsDate(value, format, timezone, options).format(format));
165
167
  }
166
168
  if (Array.isArray(value) && this.component.multiple) {
167
- return value.map(item => lodash_1.default.trim((0, moment_1.default)(item).format(format))).join(', ');
169
+ return value.map(item => lodash_1.default.trim((0, dayjs_1.default)(item).format(format))).join(', ');
168
170
  }
169
- return (value ? lodash_1.default.trim((0, moment_1.default)(value).format(format)) : value) || '';
171
+ return (value ? lodash_1.default.trim((0, dayjs_1.default)(value).format(format)) : value) || '';
170
172
  }
171
173
  }
172
174
  exports.default = DateTimeComponent;
@@ -6,36 +6,87 @@ declare const _default: ({
6
6
  persistent: boolean;
7
7
  weight: number;
8
8
  tooltip: string;
9
+ applyMaskOn?: undefined;
10
+ logic?: undefined;
9
11
  skipMerge?: undefined;
10
- customConditional?: undefined;
12
+ tableView?: undefined;
13
+ validateWhenHidden?: undefined;
11
14
  enableTime?: undefined;
12
15
  } | {
16
+ label: string;
17
+ tooltip: string;
18
+ applyMaskOn: string;
19
+ key: string;
20
+ logic: ({
21
+ name: string;
22
+ trigger: {
23
+ type: string;
24
+ javascript: string;
25
+ event?: undefined;
26
+ };
27
+ actions: {
28
+ name: string;
29
+ type: string;
30
+ schemaDefinition: string;
31
+ }[];
32
+ } | {
33
+ name: string;
34
+ trigger: {
35
+ type: string;
36
+ event: string;
37
+ javascript?: undefined;
38
+ };
39
+ actions: {
40
+ name: string;
41
+ type: string;
42
+ customAction: string;
43
+ }[];
44
+ })[];
13
45
  type: string;
14
46
  input: boolean;
15
- key: string;
16
- label: string;
17
47
  skipMerge: boolean;
18
48
  weight: number;
19
- tooltip: string;
20
- customConditional({ data, component }: {
21
- data: any;
22
- component: any;
23
- }): boolean;
24
49
  persistent?: undefined;
50
+ tableView?: undefined;
51
+ validateWhenHidden?: undefined;
25
52
  enableTime?: undefined;
26
53
  } | {
54
+ label: string;
55
+ tooltip: string;
56
+ applyMaskOn: string;
57
+ tableView: boolean;
58
+ validateWhenHidden: boolean;
59
+ key: string;
60
+ logic: ({
61
+ name: string;
62
+ trigger: {
63
+ type: string;
64
+ javascript: string;
65
+ event?: undefined;
66
+ };
67
+ actions: {
68
+ name: string;
69
+ type: string;
70
+ schemaDefinition: string;
71
+ }[];
72
+ } | {
73
+ name: string;
74
+ trigger: {
75
+ type: string;
76
+ event: string;
77
+ javascript?: undefined;
78
+ };
79
+ actions: {
80
+ name: string;
81
+ type: string;
82
+ customAction: string;
83
+ }[];
84
+ })[];
27
85
  type: string;
28
86
  input: boolean;
29
87
  enableTime: boolean;
30
- key: string;
31
88
  skipMerge: boolean;
32
- label: string;
33
89
  weight: number;
34
- tooltip: string;
35
- customConditional({ data, component }: {
36
- data: any;
37
- component: any;
38
- }): any;
39
90
  persistent?: undefined;
40
91
  })[];
41
92
  export default _default;
@@ -11,35 +11,44 @@ exports.default = [
11
11
  tooltip: 'Enables to use input for moment functions instead of calendar.'
12
12
  },
13
13
  {
14
- type: 'datetime',
15
- input: true,
14
+ label: 'Minimum Date',
15
+ tooltip: "The minimum date that can be picked. You can also use Moment.js functions. For example: moment().subtract(10, 'days')",
16
+ applyMaskOn: 'change',
16
17
  key: 'datePicker.minDate',
17
- label: 'Use calendar to set minDate',
18
- skipMerge: true,
19
- weight: 10,
20
- tooltip: 'Enables to use calendar to set date.',
21
- customConditional({ data, component }) {
22
- if (component.datePicker && component.datePicker.minDate && component.datePicker.minDate.indexOf('moment') !== -1) {
23
- return false;
24
- }
25
- return !data.enableMinDateInput;
26
- },
27
- },
28
- {
18
+ logic: [
19
+ {
20
+ name: 'check input mode',
21
+ trigger: {
22
+ type: 'javascript',
23
+ javascript: "if (component.datePicker && component.datePicker.minDate && component.datePicker.minDate.indexOf('moment') !== -1) {\r\n result = false;\r\n}\r\nelse {\r\n result = !data.enableMinDateInput;\r\n}",
24
+ },
25
+ actions: [
26
+ {
27
+ name: 'change component',
28
+ type: 'mergeComponentSchema',
29
+ schemaDefinition: "schema = {\n type: 'datetime',\n label: 'Use calendar to set minDate',\n enableDate: true,\n enableTime: true,\n tooltip: 'Enables to use calendar to set date.',\n widget: {\n type: 'calendar',\n displayInTimezone: 'viewer',\n locale: 'en',\n useLocaleSettings: false,\n allowInput: true,\n mode: 'single',\n enableTime: true,\n noCalendar: false,\n format: 'yyyy-MM-dd hh:mm a',\n hourIncrement: 1,\n minuteIncrement: 1,\n time_24hr: false,\n disableWeekends: false,\n disableWeekdays: false,\n maxDate: null,\n },\n};",
30
+ },
31
+ ],
32
+ },
33
+ {
34
+ name: 'clear value',
35
+ trigger: {
36
+ type: 'event',
37
+ event: 'componentChange',
38
+ },
39
+ actions: [
40
+ {
41
+ name: 'reset value',
42
+ type: 'customAction',
43
+ customAction: "var isDateInput = instance.component?.type === 'datetime';\nvar enableInput = data.enableMinDateInput;\nvar allowReset = result[0].component && result[0].component.key === 'enableMinDateInput' && !result[0].flags?.fromSubmission;\nif(((enableInput && isDateInput) || (!enableInput && !isDateInput)) && allowReset) {\n instance.resetValue()\n}\n",
44
+ },
45
+ ],
46
+ },
47
+ ],
29
48
  type: 'textfield',
30
49
  input: true,
31
- enableTime: false,
32
- key: 'datePicker.minDate',
33
50
  skipMerge: true,
34
- label: 'Minimum Date',
35
51
  weight: 10,
36
- tooltip: 'The minimum date that can be picked. You can also use Moment.js functions. For example: \n \n moment().subtract(10, \'days\')',
37
- customConditional({ data, component }) {
38
- if (component.datePicker && component.datePicker.minDate && component.datePicker.minDate.indexOf('moment') !== -1) {
39
- return true;
40
- }
41
- return data.enableMinDateInput;
42
- },
43
52
  },
44
53
  {
45
54
  type: 'checkbox',
@@ -51,34 +60,46 @@ exports.default = [
51
60
  tooltip: 'Enables to use input for moment functions instead of calendar.'
52
61
  },
53
62
  {
54
- type: 'datetime',
55
- input: true,
63
+ label: 'Maximum Date',
64
+ tooltip: "The maximum date that can be picked. You can also use Moment.js functions. For example: moment().add(10, 'days')",
65
+ applyMaskOn: 'change',
66
+ tableView: true,
67
+ validateWhenHidden: false,
56
68
  key: 'datePicker.maxDate',
57
- skipMerge: true,
58
- label: 'Use calendar to set maxDate',
59
- weight: 20,
60
- tooltip: 'Enables to use calendar to set date.',
61
- customConditional({ data, component }) {
62
- if (component.datePicker && component.datePicker.maxDate && component.datePicker.maxDate.indexOf('moment') !== -1) {
63
- return false;
64
- }
65
- return !data.enableMaxDateInput;
66
- },
67
- },
68
- {
69
+ logic: [
70
+ {
71
+ name: 'check input mode',
72
+ trigger: {
73
+ type: 'javascript',
74
+ javascript: "if (component.datePicker && component.datePicker.maxDate && component.datePicker.maxDate.indexOf('moment') !== -1) {\r\n result = false;\r\n}\r\nelse {\r\n result = !data.enableMaxDateInput;\r\n}",
75
+ },
76
+ actions: [
77
+ {
78
+ name: 'change component',
79
+ type: 'mergeComponentSchema',
80
+ schemaDefinition: "schema = {\n type: 'datetime',\n label: 'Use calendar to set maxDate',\n enableDate: true,\n enableTime: true,\n tooltip: 'Enables to use calendar to set date.',\n widget: {\n type: 'calendar',\n displayInTimezone: 'viewer',\n locale: 'en',\n useLocaleSettings: false,\n allowInput: true,\n mode: 'single',\n enableTime: true,\n noCalendar: false,\n format: 'yyyy-MM-dd hh:mm a',\n hourIncrement: 1,\n minuteIncrement: 1,\n time_24hr: false,\n disableWeekends: false,\n disableWeekdays: false,\n maxDate: null,\n },\n};",
81
+ },
82
+ ],
83
+ },
84
+ {
85
+ name: 'clear value',
86
+ trigger: {
87
+ type: 'event',
88
+ event: 'componentChange',
89
+ },
90
+ actions: [
91
+ {
92
+ name: 'reset value',
93
+ type: 'customAction',
94
+ customAction: "var isDateInput = instance.component?.type === 'datetime';\nvar enableInput = data.enableMaxDateInput;\nvar allowReset = result[0].component && result[0].component.key === 'enableMaxDateInput' && !result[0].flags?.fromSubmission;\nif(((enableInput && isDateInput) || (!enableInput && !isDateInput)) && allowReset) {\n instance.resetValue()\n}\n",
95
+ },
96
+ ],
97
+ },
98
+ ],
69
99
  type: 'textfield',
70
100
  input: true,
71
101
  enableTime: false,
72
- key: 'datePicker.maxDate',
73
102
  skipMerge: true,
74
- label: 'Maximum Date',
75
- tooltip: 'The maximum date that can be picked. You can also use Moment.js functions. For example: \n \n moment().add(10, \'days\')',
76
103
  weight: 20,
77
- customConditional({ data, component }) {
78
- if (component.datePicker && component.datePicker.maxDate && component.datePicker.maxDate.indexOf('moment') !== -1) {
79
- return true;
80
- }
81
- return data.enableMaxDateInput;
82
- },
83
104
  }
84
105
  ];
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const lodash_1 = __importDefault(require("lodash"));
7
7
  const moment_1 = __importDefault(require("moment"));
8
8
  const Field_1 = __importDefault(require("../_classes/field/Field"));
9
- const utils_1 = require("../../utils/utils");
9
+ const utils_1 = require("../../utils");
10
10
  const core_1 = require("@formio/core");
11
11
  class DayComponent extends Field_1.default {
12
12
  static schema(...extend) {
@@ -53,7 +53,7 @@ class DayComponent extends Field_1.default {
53
53
  return (0, utils_1.getComponentSavedTypes)(schema) || [utils_1.componentValueTypes.string];
54
54
  }
55
55
  constructor(component, options, data) {
56
- if (!options.inFormBuilder && !options.building) {
56
+ if (options && !options.inFormBuilder && !options.building) {
57
57
  if (component.maxDate && component.maxDate.indexOf('moment(') === -1) {
58
58
  component.maxDate = (0, moment_1.default)(component.maxDate, 'YYYY-MM-DD').toISOString();
59
59
  }
@@ -5,6 +5,14 @@ exports.default = [
5
5
  key: 'labelPosition',
6
6
  ignore: true
7
7
  },
8
+ {
9
+ key: 'labelWidth',
10
+ ignore: true
11
+ },
12
+ {
13
+ key: 'labelMargin',
14
+ ignore: true
15
+ },
8
16
  {
9
17
  weight: 15,
10
18
  type: 'checkbox',
@@ -9,7 +9,7 @@ const components_1 = require("@formio/bootstrap/components");
9
9
  const NestedArrayComponent_1 = __importDefault(require("../_classes/nestedarray/NestedArrayComponent"));
10
10
  const Component_1 = __importDefault(require("../_classes/component/Component"));
11
11
  const Alert_1 = __importDefault(require("../alert/Alert"));
12
- const utils_1 = require("../../utils/utils");
12
+ const utils_1 = require("../../utils");
13
13
  const EditRowState = {
14
14
  New: 'new',
15
15
  Editing: 'editing',
@@ -553,14 +553,6 @@ class EditGridComponent extends NestedArrayComponent_1.default {
553
553
  }
554
554
  });
555
555
  }
556
- restoreComponentsContext() {
557
- this.getComponents().forEach((component) => {
558
- var _a;
559
- const rowData = this.dataValue[component.rowIndex];
560
- const editRowData = (_a = this.editRows[component.rowIndex]) === null || _a === void 0 ? void 0 : _a.data;
561
- component.data = rowData || editRowData;
562
- });
563
- }
564
556
  flattenComponents(rowIndex) {
565
557
  const result = {};
566
558
  this.everyComponent((component) => {
@@ -1115,7 +1107,9 @@ class EditGridComponent extends NestedArrayComponent_1.default {
1115
1107
  errors.push(...this._errors);
1116
1108
  return false;
1117
1109
  }
1118
- const message = this.invalid || this.invalidMessage(data, dirty, false, row);
1110
+ // TODO: this is the only place invalidMessage gets called, and it's not clear why it's needed - we already validate the editGrid
1111
+ // component above with super.checkComponentValidity
1112
+ const message = this.invalid || this.invalidMessage(data, dirty, false, row, options);
1119
1113
  if (allRowErrors.length && ((_b = this.root) === null || _b === void 0 ? void 0 : _b.submitted) && !message) {
1120
1114
  this._errors = this.setCustomValidity(message, dirty);
1121
1115
  errors.push(...this._errors);
@@ -1159,9 +1153,6 @@ class EditGridComponent extends NestedArrayComponent_1.default {
1159
1153
  }
1160
1154
  }
1161
1155
  const changed = this.hasChanged(value, this.dataValue);
1162
- if (this.parent) {
1163
- this.parent.checkComponentConditions();
1164
- }
1165
1156
  this.dataValue = value;
1166
1157
  // Refresh editRow data when data changes.
1167
1158
  this.dataValue.forEach((row, rowIndex) => {
@@ -1192,7 +1183,6 @@ class EditGridComponent extends NestedArrayComponent_1.default {
1192
1183
  this.editRows = this.editRows.slice(0, dataLength);
1193
1184
  this.openWhenEmpty();
1194
1185
  this.updateOnChange(flags, changed);
1195
- this.checkData();
1196
1186
  this.changeState(changed, flags);
1197
1187
  return changed;
1198
1188
  }
@@ -35,7 +35,7 @@ exports.default = [
35
35
  weight: 1002,
36
36
  input: false,
37
37
  customConditional() {
38
- return !Evaluator_1.Evaluator.noeval;
38
+ return !Evaluator_1.Evaluator.noeval || !Evaluator_1.Evaluator.protectedEval;
39
39
  },
40
40
  },
41
41
  {
@@ -9,6 +9,18 @@ exports.default = [
9
9
  key: 'allowMultipleMasks',
10
10
  ignore: true,
11
11
  },
12
+ {
13
+ key: 'inputMasks',
14
+ ignore: true
15
+ },
16
+ {
17
+ key: 'widget.type',
18
+ ignore: true
19
+ },
20
+ {
21
+ key: 'widget',
22
+ ignore: true
23
+ },
12
24
  {
13
25
  key: 'showWordCount',
14
26
  ignore: true
@@ -5,6 +5,14 @@ exports.default = [
5
5
  key: 'labelPosition',
6
6
  ignore: true
7
7
  },
8
+ {
9
+ key: 'labelWidth',
10
+ ignore: true
11
+ },
12
+ {
13
+ key: 'labelMargin',
14
+ ignore: true
15
+ },
8
16
  {
9
17
  key: 'placeholder',
10
18
  ignore: true
@@ -13,7 +13,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  const Field_1 = __importDefault(require("../_classes/field/Field"));
16
- const utils_1 = require("../../utils/utils");
16
+ const utils_1 = require("../../utils");
17
17
  const downloadjs_1 = __importDefault(require("downloadjs"));
18
18
  const lodash_1 = __importDefault(require("lodash"));
19
19
  const fileProcessor_1 = __importDefault(require("../../providers/processor/fileProcessor"));
@@ -907,7 +907,9 @@ class FileComponent extends Field_1.default {
907
907
  return __awaiter(this, void 0, void 0, function* () {
908
908
  return yield this.fileService.uploadFile(fileToSync.storage, fileToSync.file, fileToSync.name, fileToSync.dir,
909
909
  // Progress callback
910
- this.updateProgress.bind(this, fileToSync), fileToSync.url, fileToSync.options, fileToSync.fileKey, fileToSync.groupPermissions, fileToSync.groupResourceId, () => { },
910
+ this.updateProgress.bind(this, fileToSync), fileToSync.url, fileToSync.options, fileToSync.fileKey, fileToSync.groupPermissions, fileToSync.groupResourceId, () => {
911
+ this.emit('fileUploadingStart');
912
+ },
911
913
  // Abort upload callback
912
914
  (abort) => this.abortUploads.push({
913
915
  id: fileToSync.id,
@@ -934,6 +936,7 @@ class FileComponent extends Field_1.default {
934
936
  fileToSync.message = this.t('succefullyUploaded');
935
937
  fileInfo.originalName = fileToSync.originalName;
936
938
  fileInfo.hash = fileToSync.hash;
939
+ this.emit('fileUploadingEnd');
937
940
  }
938
941
  catch (response) {
939
942
  fileToSync.status = 'error';
@@ -943,6 +946,7 @@ class FileComponent extends Field_1.default {
943
946
  : response.type === 'abort'
944
947
  ? this.t('Request was aborted')
945
948
  : response.toString();
949
+ this.emit('fileUploadingEnd');
946
950
  this.emit('fileUploadError', {
947
951
  fileToSync,
948
952
  response,
@@ -16,6 +16,7 @@ declare const _default: ({
16
16
  components?: undefined;
17
17
  rows?: undefined;
18
18
  editor?: undefined;
19
+ as?: undefined;
19
20
  optionsLabelPosition?: undefined;
20
21
  inline?: undefined;
21
22
  defaultValue?: undefined;
@@ -45,6 +46,7 @@ declare const _default: ({
45
46
  components?: undefined;
46
47
  rows?: undefined;
47
48
  editor?: undefined;
49
+ as?: undefined;
48
50
  optionsLabelPosition?: undefined;
49
51
  inline?: undefined;
50
52
  defaultValue?: undefined;
@@ -91,6 +93,7 @@ declare const _default: ({
91
93
  data?: undefined;
92
94
  rows?: undefined;
93
95
  editor?: undefined;
96
+ as?: undefined;
94
97
  optionsLabelPosition?: undefined;
95
98
  inline?: undefined;
96
99
  defaultValue?: undefined;
@@ -120,6 +123,7 @@ declare const _default: ({
120
123
  components?: undefined;
121
124
  rows?: undefined;
122
125
  editor?: undefined;
126
+ as?: undefined;
123
127
  optionsLabelPosition?: undefined;
124
128
  inline?: undefined;
125
129
  defaultValue?: undefined;
@@ -149,6 +153,7 @@ declare const _default: ({
149
153
  components?: undefined;
150
154
  rows?: undefined;
151
155
  editor?: undefined;
156
+ as?: undefined;
152
157
  optionsLabelPosition?: undefined;
153
158
  inline?: undefined;
154
159
  defaultValue?: undefined;
@@ -160,6 +165,7 @@ declare const _default: ({
160
165
  tooltip: string;
161
166
  rows: number;
162
167
  editor: string;
168
+ as: string;
163
169
  input: boolean;
164
170
  weight: number;
165
171
  placeholder: string;
@@ -207,6 +213,7 @@ declare const _default: ({
207
213
  components?: undefined;
208
214
  rows?: undefined;
209
215
  editor?: undefined;
216
+ as?: undefined;
210
217
  optionsLabelPosition?: undefined;
211
218
  inline?: undefined;
212
219
  defaultValue?: undefined;
@@ -227,6 +234,7 @@ declare const _default: ({
227
234
  components?: undefined;
228
235
  rows?: undefined;
229
236
  editor?: undefined;
237
+ as?: undefined;
230
238
  optionsLabelPosition?: undefined;
231
239
  inline?: undefined;
232
240
  defaultValue?: undefined;
@@ -247,6 +255,7 @@ declare const _default: ({
247
255
  components?: undefined;
248
256
  rows?: undefined;
249
257
  editor?: undefined;
258
+ as?: undefined;
250
259
  optionsLabelPosition?: undefined;
251
260
  inline?: undefined;
252
261
  defaultValue?: undefined;
@@ -276,6 +285,7 @@ declare const _default: ({
276
285
  components?: undefined;
277
286
  rows?: undefined;
278
287
  editor?: undefined;
288
+ as?: undefined;
279
289
  optionsLabelPosition?: undefined;
280
290
  inline?: undefined;
281
291
  defaultValue?: undefined;
@@ -305,6 +315,7 @@ declare const _default: ({
305
315
  components?: undefined;
306
316
  rows?: undefined;
307
317
  editor?: undefined;
318
+ as?: undefined;
308
319
  optionsLabelPosition?: undefined;
309
320
  inline?: undefined;
310
321
  defaultValue?: undefined;
@@ -332,6 +343,7 @@ declare const _default: ({
332
343
  components?: undefined;
333
344
  rows?: undefined;
334
345
  editor?: undefined;
346
+ as?: undefined;
335
347
  } | {
336
348
  type: string;
337
349
  input: boolean;
@@ -353,6 +365,7 @@ declare const _default: ({
353
365
  tableView?: undefined;
354
366
  rows?: undefined;
355
367
  editor?: undefined;
368
+ as?: undefined;
356
369
  optionsLabelPosition?: undefined;
357
370
  inline?: undefined;
358
371
  defaultValue?: undefined;
@@ -120,6 +120,7 @@ exports.default = [
120
120
  tooltip: 'Pass your custom xhr options(optional)',
121
121
  rows: 5,
122
122
  editor: 'ace',
123
+ as: 'json',
123
124
  input: true,
124
125
  weight: 15,
125
126
  placeholder: `{