@formio/js 5.0.0-dev.5672.279701a → 5.0.0-dev.5673.ae99c16

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 (279) hide show
  1. package/Changelog.md +63 -1
  2. package/dist/formio.builder.css +0 -1
  3. package/dist/formio.builder.min.css +1 -1
  4. package/dist/formio.embed.js +1 -1
  5. package/dist/formio.embed.min.js +1 -1
  6. package/dist/formio.form.css +0 -1
  7. package/dist/formio.form.js +648 -596
  8. package/dist/formio.form.min.css +1 -1
  9. package/dist/formio.form.min.js +1 -1
  10. package/dist/formio.form.min.js.LICENSE.txt +1 -9
  11. package/dist/formio.full.css +0 -1
  12. package/dist/formio.full.js +635 -603
  13. package/dist/formio.full.min.css +1 -1
  14. package/dist/formio.full.min.js +1 -1
  15. package/dist/formio.full.min.js.LICENSE.txt +1 -9
  16. package/dist/formio.js +4 -4
  17. package/dist/formio.min.js +1 -1
  18. package/dist/formio.utils.js +102 -40
  19. package/dist/formio.utils.min.js +1 -1
  20. package/dist/formio.utils.min.js.LICENSE.txt +5 -3
  21. package/lib/cjs/CDN.d.ts +1 -0
  22. package/lib/cjs/CDN.js +2 -2
  23. package/lib/cjs/Form.d.ts +2 -2
  24. package/lib/cjs/Form.js +11 -5
  25. package/lib/cjs/Formio.js +1 -0
  26. package/lib/cjs/PDF.js +1 -1
  27. package/lib/cjs/PDFBuilder.js +2 -1
  28. package/lib/cjs/Webform.d.ts +1 -1
  29. package/lib/cjs/Webform.js +11 -6
  30. package/lib/cjs/WebformBuilder.js +13 -3
  31. package/lib/cjs/Wizard.js +1 -1
  32. package/lib/cjs/components/_classes/component/Component.d.ts +4 -3
  33. package/lib/cjs/components/_classes/component/Component.js +31 -8
  34. package/lib/cjs/components/_classes/component/editForm/Component.edit.display.js +8 -0
  35. package/lib/cjs/components/_classes/component/fixtures/comp7.d.ts +84 -0
  36. package/lib/cjs/components/_classes/component/fixtures/comp7.js +86 -0
  37. package/lib/cjs/components/_classes/component/fixtures/index.d.ts +2 -1
  38. package/lib/cjs/components/_classes/component/fixtures/index.js +3 -1
  39. package/lib/cjs/components/_classes/input/Input.js +23 -1
  40. package/lib/cjs/components/_classes/multivalue/Multivalue.d.ts +8 -1
  41. package/lib/cjs/components/_classes/multivalue/Multivalue.js +45 -25
  42. package/lib/cjs/components/_classes/nested/NestedComponent.d.ts +2 -1
  43. package/lib/cjs/components/_classes/nested/NestedComponent.js +5 -1
  44. package/lib/cjs/components/_classes/nestedarray/NestedArrayComponent.d.ts +3 -0
  45. package/lib/cjs/components/_classes/nestedarray/NestedArrayComponent.js +56 -29
  46. package/lib/cjs/components/address/Address.d.ts +6 -0
  47. package/lib/cjs/components/address/Address.js +11 -1
  48. package/lib/cjs/components/address/editForm/Address.edit.provider.js +1 -1
  49. package/lib/cjs/components/checkbox/Checkbox.d.ts +1 -1
  50. package/lib/cjs/components/checkbox/Checkbox.js +1 -1
  51. package/lib/cjs/components/checkbox/fixtures/comp6.d.ts +32 -0
  52. package/lib/cjs/components/checkbox/fixtures/comp6.js +30 -0
  53. package/lib/cjs/components/checkbox/fixtures/index.d.ts +2 -1
  54. package/lib/cjs/components/checkbox/fixtures/index.js +3 -1
  55. package/lib/cjs/components/currency/Currency.d.ts +2 -0
  56. package/lib/cjs/components/datagrid/DataGrid.d.ts +11 -1
  57. package/lib/cjs/components/datagrid/DataGrid.js +59 -36
  58. package/lib/cjs/components/datagrid/fixtures/comp-with-reorder.d.ts +100 -0
  59. package/lib/cjs/components/datagrid/fixtures/comp-with-reorder.js +139 -0
  60. package/lib/cjs/components/datagrid/fixtures/comp10.d.ts +81 -0
  61. package/lib/cjs/components/datagrid/fixtures/comp10.js +87 -0
  62. package/lib/cjs/components/datagrid/fixtures/comp11.d.ts +50 -0
  63. package/lib/cjs/components/datagrid/fixtures/comp11.js +55 -0
  64. package/lib/cjs/components/datagrid/fixtures/comp9.d.ts +41 -0
  65. package/lib/cjs/components/datagrid/fixtures/comp9.js +44 -0
  66. package/lib/cjs/components/datagrid/fixtures/index.d.ts +5 -1
  67. package/lib/cjs/components/datagrid/fixtures/index.js +9 -1
  68. package/lib/cjs/components/datamap/DataMap.js +2 -2
  69. package/lib/cjs/components/datetime/fixtures/comp14.d.ts +35 -0
  70. package/lib/cjs/components/datetime/fixtures/comp14.js +38 -0
  71. package/lib/cjs/components/datetime/fixtures/index.d.ts +6 -5
  72. package/lib/cjs/components/datetime/fixtures/index.js +3 -1
  73. package/lib/cjs/components/day/Day.d.ts +3 -4
  74. package/lib/cjs/components/day/Day.js +31 -10
  75. package/lib/cjs/components/day/fixtures/comp8.d.ts +41 -0
  76. package/lib/cjs/components/day/fixtures/comp8.js +40 -0
  77. package/lib/cjs/components/day/fixtures/index.d.ts +2 -1
  78. package/lib/cjs/components/day/fixtures/index.js +3 -1
  79. package/lib/cjs/components/editgrid/EditGrid.js +16 -8
  80. package/lib/cjs/components/editgrid/fixtures/comp-test-events.d.ts +54 -0
  81. package/lib/cjs/components/editgrid/fixtures/comp-test-events.js +54 -0
  82. package/lib/cjs/components/editgrid/fixtures/comp16.d.ts +52 -0
  83. package/lib/cjs/components/editgrid/fixtures/comp16.js +71 -0
  84. package/lib/cjs/components/editgrid/fixtures/comp17.d.ts +80 -0
  85. package/lib/cjs/components/editgrid/fixtures/comp17.js +99 -0
  86. package/lib/cjs/components/editgrid/fixtures/index.d.ts +10 -7
  87. package/lib/cjs/components/editgrid/fixtures/index.js +7 -1
  88. package/lib/cjs/components/file/File.d.ts +2 -2
  89. package/lib/cjs/components/file/File.js +13 -2
  90. package/lib/cjs/components/file/editForm/File.edit.display.js +1 -1
  91. package/lib/cjs/components/form/Form.d.ts +1 -1
  92. package/lib/cjs/components/form/Form.js +1 -1
  93. package/lib/cjs/components/form/editForm/Form.edit.form.js +1 -1
  94. package/lib/cjs/components/form/fixtures/index.d.ts +2 -1
  95. package/lib/cjs/components/form/fixtures/index.js +3 -1
  96. package/lib/cjs/components/form/fixtures/nestedWizardForm.d.ts +771 -0
  97. package/lib/cjs/components/form/fixtures/nestedWizardForm.js +765 -0
  98. package/lib/cjs/components/html/HTML.js +1 -1
  99. package/lib/cjs/components/number/Number.d.ts +17 -2
  100. package/lib/cjs/components/number/Number.js +27 -7
  101. package/lib/cjs/components/number/fixtures/comp10.d.ts +18 -0
  102. package/lib/cjs/components/number/fixtures/comp10.js +21 -0
  103. package/lib/cjs/components/number/fixtures/comp8.d.ts +32 -0
  104. package/lib/cjs/components/number/fixtures/comp8.js +28 -0
  105. package/lib/cjs/components/number/fixtures/comp9.d.ts +18 -0
  106. package/lib/cjs/components/number/fixtures/comp9.js +21 -0
  107. package/lib/cjs/components/number/fixtures/index.d.ts +4 -1
  108. package/lib/cjs/components/number/fixtures/index.js +7 -1
  109. package/lib/cjs/components/panel/Panel.d.ts +1 -0
  110. package/lib/cjs/components/panel/Panel.js +1 -0
  111. package/lib/cjs/components/radio/Radio.d.ts +2 -18
  112. package/lib/cjs/components/radio/Radio.js +29 -27
  113. package/lib/cjs/components/radio/fixtures/comp12.d.ts +29 -0
  114. package/lib/cjs/components/radio/fixtures/comp12.js +36 -0
  115. package/lib/cjs/components/radio/fixtures/index.d.ts +2 -1
  116. package/lib/cjs/components/radio/fixtures/index.js +3 -1
  117. package/lib/cjs/components/recaptcha/ReCaptcha.d.ts +6 -0
  118. package/lib/cjs/components/recaptcha/ReCaptcha.js +6 -0
  119. package/lib/cjs/components/select/Select.d.ts +38 -0
  120. package/lib/cjs/components/select/Select.js +14 -5
  121. package/lib/cjs/components/select/fixtures/comp25.d.ts +59 -0
  122. package/lib/cjs/components/select/fixtures/comp25.js +66 -0
  123. package/lib/cjs/components/select/fixtures/comp26.d.ts +44 -0
  124. package/lib/cjs/components/select/fixtures/comp26.js +59 -0
  125. package/lib/cjs/components/select/fixtures/index.d.ts +3 -1
  126. package/lib/cjs/components/select/fixtures/index.js +5 -1
  127. package/lib/cjs/components/selectboxes/SelectBoxes.d.ts +0 -22
  128. package/lib/cjs/components/selectboxes/SelectBoxes.js +12 -9
  129. package/lib/cjs/components/signature/editForm/Signature.edit.display.d.ts +0 -6
  130. package/lib/cjs/components/signature/editForm/Signature.edit.display.js +0 -1
  131. package/lib/cjs/components/tags/Tags.js +3 -3
  132. package/lib/cjs/components/time/Time.d.ts +2 -2
  133. package/lib/cjs/components/time/Time.form.js +2 -2
  134. package/lib/cjs/components/time/Time.js +3 -7
  135. package/lib/cjs/components/time/fixtures/comp4.d.ts +166 -0
  136. package/lib/cjs/components/time/fixtures/comp4.js +171 -0
  137. package/lib/cjs/components/time/fixtures/index.d.ts +2 -1
  138. package/lib/cjs/components/time/fixtures/index.js +3 -1
  139. package/lib/cjs/providers/address/GoogleAddressProvider.d.ts +5 -0
  140. package/lib/cjs/providers/address/GoogleAddressProvider.js +23 -1
  141. package/lib/cjs/templates/Templates.js +1 -1
  142. package/lib/cjs/translations/en.d.ts +4 -0
  143. package/lib/cjs/translations/en.js +5 -1
  144. package/lib/cjs/utils/conditionOperators/DateGreaterThan.js +2 -1
  145. package/lib/cjs/utils/conditionOperators/IsEmptyValue.js +4 -3
  146. package/lib/cjs/utils/conditionOperators/IsEqualTo.js +3 -3
  147. package/lib/cjs/utils/utils.d.ts +2 -11
  148. package/lib/cjs/utils/utils.js +60 -24
  149. package/lib/cjs/widgets/CalendarWidget.js +24 -10
  150. package/lib/mjs/CDN.d.ts +1 -0
  151. package/lib/mjs/CDN.js +2 -2
  152. package/lib/mjs/Form.d.ts +2 -2
  153. package/lib/mjs/Form.js +11 -5
  154. package/lib/mjs/Formio.js +1 -0
  155. package/lib/mjs/PDF.js +1 -1
  156. package/lib/mjs/PDFBuilder.js +1 -1
  157. package/lib/mjs/Webform.d.ts +1 -1
  158. package/lib/mjs/Webform.js +15 -6
  159. package/lib/mjs/WebformBuilder.js +12 -3
  160. package/lib/mjs/Wizard.js +1 -1
  161. package/lib/mjs/components/_classes/component/Component.d.ts +4 -3
  162. package/lib/mjs/components/_classes/component/Component.js +17 -5
  163. package/lib/mjs/components/_classes/component/editForm/Component.edit.display.js +8 -0
  164. package/lib/mjs/components/_classes/component/fixtures/comp7.d.ts +84 -0
  165. package/lib/mjs/components/_classes/component/fixtures/comp7.js +84 -0
  166. package/lib/mjs/components/_classes/component/fixtures/index.d.ts +2 -1
  167. package/lib/mjs/components/_classes/component/fixtures/index.js +2 -1
  168. package/lib/mjs/components/_classes/input/Input.js +22 -1
  169. package/lib/mjs/components/_classes/multivalue/Multivalue.d.ts +8 -1
  170. package/lib/mjs/components/_classes/multivalue/Multivalue.js +45 -25
  171. package/lib/mjs/components/_classes/nested/NestedComponent.d.ts +2 -1
  172. package/lib/mjs/components/_classes/nested/NestedComponent.js +5 -1
  173. package/lib/mjs/components/_classes/nestedarray/NestedArrayComponent.d.ts +3 -0
  174. package/lib/mjs/components/_classes/nestedarray/NestedArrayComponent.js +57 -29
  175. package/lib/mjs/components/address/Address.d.ts +6 -0
  176. package/lib/mjs/components/address/Address.js +14 -1
  177. package/lib/mjs/components/address/editForm/Address.edit.provider.js +1 -1
  178. package/lib/mjs/components/checkbox/Checkbox.d.ts +1 -1
  179. package/lib/mjs/components/checkbox/Checkbox.js +1 -1
  180. package/lib/mjs/components/checkbox/fixtures/comp6.d.ts +32 -0
  181. package/lib/mjs/components/checkbox/fixtures/comp6.js +28 -0
  182. package/lib/mjs/components/checkbox/fixtures/index.d.ts +2 -1
  183. package/lib/mjs/components/checkbox/fixtures/index.js +2 -1
  184. package/lib/mjs/components/currency/Currency.d.ts +2 -0
  185. package/lib/mjs/components/datagrid/DataGrid.d.ts +11 -1
  186. package/lib/mjs/components/datagrid/DataGrid.js +58 -35
  187. package/lib/mjs/components/datagrid/fixtures/comp-with-reorder.d.ts +100 -0
  188. package/lib/mjs/components/datagrid/fixtures/comp-with-reorder.js +137 -0
  189. package/lib/mjs/components/datagrid/fixtures/comp10.d.ts +81 -0
  190. package/lib/mjs/components/datagrid/fixtures/comp10.js +85 -0
  191. package/lib/mjs/components/datagrid/fixtures/comp11.d.ts +50 -0
  192. package/lib/mjs/components/datagrid/fixtures/comp11.js +53 -0
  193. package/lib/mjs/components/datagrid/fixtures/comp9.d.ts +41 -0
  194. package/lib/mjs/components/datagrid/fixtures/comp9.js +42 -0
  195. package/lib/mjs/components/datagrid/fixtures/index.d.ts +5 -1
  196. package/lib/mjs/components/datagrid/fixtures/index.js +5 -1
  197. package/lib/mjs/components/datamap/DataMap.js +2 -2
  198. package/lib/mjs/components/datetime/fixtures/comp14.d.ts +35 -0
  199. package/lib/mjs/components/datetime/fixtures/comp14.js +36 -0
  200. package/lib/mjs/components/datetime/fixtures/index.d.ts +6 -5
  201. package/lib/mjs/components/datetime/fixtures/index.js +2 -1
  202. package/lib/mjs/components/day/Day.d.ts +3 -4
  203. package/lib/mjs/components/day/Day.js +30 -10
  204. package/lib/mjs/components/day/fixtures/comp8.d.ts +41 -0
  205. package/lib/mjs/components/day/fixtures/comp8.js +38 -0
  206. package/lib/mjs/components/day/fixtures/index.d.ts +2 -1
  207. package/lib/mjs/components/day/fixtures/index.js +2 -1
  208. package/lib/mjs/components/editgrid/EditGrid.js +16 -8
  209. package/lib/mjs/components/editgrid/fixtures/comp-test-events.d.ts +54 -0
  210. package/lib/mjs/components/editgrid/fixtures/comp-test-events.js +52 -0
  211. package/lib/mjs/components/editgrid/fixtures/comp16.d.ts +52 -0
  212. package/lib/mjs/components/editgrid/fixtures/comp16.js +69 -0
  213. package/lib/mjs/components/editgrid/fixtures/comp17.d.ts +80 -0
  214. package/lib/mjs/components/editgrid/fixtures/comp17.js +97 -0
  215. package/lib/mjs/components/editgrid/fixtures/index.d.ts +10 -7
  216. package/lib/mjs/components/editgrid/fixtures/index.js +4 -1
  217. package/lib/mjs/components/file/File.d.ts +2 -2
  218. package/lib/mjs/components/file/File.js +13 -2
  219. package/lib/mjs/components/file/editForm/File.edit.display.js +1 -1
  220. package/lib/mjs/components/form/Form.d.ts +1 -1
  221. package/lib/mjs/components/form/Form.js +1 -1
  222. package/lib/mjs/components/form/editForm/Form.edit.form.js +1 -1
  223. package/lib/mjs/components/form/fixtures/index.d.ts +2 -1
  224. package/lib/mjs/components/form/fixtures/index.js +2 -1
  225. package/lib/mjs/components/form/fixtures/nestedWizardForm.d.ts +771 -0
  226. package/lib/mjs/components/form/fixtures/nestedWizardForm.js +763 -0
  227. package/lib/mjs/components/html/HTML.js +1 -1
  228. package/lib/mjs/components/number/Number.d.ts +17 -2
  229. package/lib/mjs/components/number/Number.js +26 -6
  230. package/lib/mjs/components/number/fixtures/comp10.d.ts +18 -0
  231. package/lib/mjs/components/number/fixtures/comp10.js +19 -0
  232. package/lib/mjs/components/number/fixtures/comp8.d.ts +32 -0
  233. package/lib/mjs/components/number/fixtures/comp8.js +26 -0
  234. package/lib/mjs/components/number/fixtures/comp9.d.ts +18 -0
  235. package/lib/mjs/components/number/fixtures/comp9.js +19 -0
  236. package/lib/mjs/components/number/fixtures/index.d.ts +4 -1
  237. package/lib/mjs/components/number/fixtures/index.js +4 -1
  238. package/lib/mjs/components/panel/Panel.d.ts +1 -0
  239. package/lib/mjs/components/panel/Panel.js +1 -0
  240. package/lib/mjs/components/radio/Radio.d.ts +2 -18
  241. package/lib/mjs/components/radio/Radio.js +32 -30
  242. package/lib/mjs/components/radio/fixtures/comp12.d.ts +29 -0
  243. package/lib/mjs/components/radio/fixtures/comp12.js +34 -0
  244. package/lib/mjs/components/radio/fixtures/index.d.ts +2 -1
  245. package/lib/mjs/components/radio/fixtures/index.js +2 -1
  246. package/lib/mjs/components/recaptcha/ReCaptcha.d.ts +6 -0
  247. package/lib/mjs/components/recaptcha/ReCaptcha.js +9 -0
  248. package/lib/mjs/components/select/Select.d.ts +38 -0
  249. package/lib/mjs/components/select/Select.js +17 -6
  250. package/lib/mjs/components/select/fixtures/comp25.d.ts +59 -0
  251. package/lib/mjs/components/select/fixtures/comp25.js +64 -0
  252. package/lib/mjs/components/select/fixtures/comp26.d.ts +44 -0
  253. package/lib/mjs/components/select/fixtures/comp26.js +57 -0
  254. package/lib/mjs/components/select/fixtures/index.d.ts +3 -1
  255. package/lib/mjs/components/select/fixtures/index.js +3 -1
  256. package/lib/mjs/components/selectboxes/SelectBoxes.d.ts +0 -22
  257. package/lib/mjs/components/selectboxes/SelectBoxes.js +16 -9
  258. package/lib/mjs/components/signature/editForm/Signature.edit.display.d.ts +0 -6
  259. package/lib/mjs/components/signature/editForm/Signature.edit.display.js +0 -1
  260. package/lib/mjs/components/tags/Tags.js +3 -3
  261. package/lib/mjs/components/time/Time.d.ts +2 -2
  262. package/lib/mjs/components/time/Time.form.js +2 -2
  263. package/lib/mjs/components/time/Time.js +3 -13
  264. package/lib/mjs/components/time/fixtures/comp4.d.ts +166 -0
  265. package/lib/mjs/components/time/fixtures/comp4.js +169 -0
  266. package/lib/mjs/components/time/fixtures/index.d.ts +2 -1
  267. package/lib/mjs/components/time/fixtures/index.js +2 -1
  268. package/lib/mjs/providers/address/GoogleAddressProvider.d.ts +5 -0
  269. package/lib/mjs/providers/address/GoogleAddressProvider.js +22 -1
  270. package/lib/mjs/templates/Templates.js +1 -1
  271. package/lib/mjs/translations/en.d.ts +4 -0
  272. package/lib/mjs/translations/en.js +5 -1
  273. package/lib/mjs/utils/conditionOperators/DateGreaterThan.js +1 -1
  274. package/lib/mjs/utils/conditionOperators/IsEmptyValue.js +3 -3
  275. package/lib/mjs/utils/conditionOperators/IsEqualTo.js +1 -1
  276. package/lib/mjs/utils/utils.d.ts +2 -11
  277. package/lib/mjs/utils/utils.js +59 -13
  278. package/lib/mjs/widgets/CalendarWidget.js +24 -10
  279. package/package.json +5 -6
@@ -25,7 +25,8 @@ export default class DayComponent extends Field {
25
25
  required: false
26
26
  }
27
27
  },
28
- dayFirst: false
28
+ dayFirst: false,
29
+ defaultValue: ''
29
30
  }, ...extend);
30
31
  }
31
32
  static get builderInfo() {
@@ -62,10 +63,10 @@ export default class DayComponent extends Field {
62
63
  }
63
64
  /**
64
65
  * The empty value for day component.
65
- * @returns {'00/00/0000'} - The empty value of the day component.
66
+ * @returns {''} - The empty value of the day component.
66
67
  */
67
68
  get emptyValue() {
68
- return '00/00/0000';
69
+ return '';
69
70
  }
70
71
  get valueMask() {
71
72
  return /^\d{2}\/\d{2}\/\d{4}$/;
@@ -341,15 +342,21 @@ export default class DayComponent extends Field {
341
342
  const valueParts = value.split('/');
342
343
  const [DAY, MONTH, YEAR] = this.component.dayFirst ? [0, 1, 2] : [1, 0, 2];
343
344
  const defaultValue = this.component.defaultValue ? this.component.defaultValue.split('/') : '';
344
- const getNextPart = (shouldTake, defaultValue) => dateParts.push(shouldTake ? valueParts.shift() : defaultValue);
345
+ const getNextPart = (shouldTake, defaultValue) => {
346
+ // Only push the part if it's not an empty string
347
+ const part = shouldTake ? valueParts.shift() : defaultValue;
348
+ if (part !== '') {
349
+ dateParts.push(part);
350
+ }
351
+ };
345
352
  if (this.dayFirst) {
346
- getNextPart(this.showDay, defaultValue ? defaultValue[DAY] : '00');
353
+ getNextPart(this.showDay, defaultValue ? defaultValue[DAY] : '');
347
354
  }
348
- getNextPart(this.showMonth, defaultValue ? defaultValue[MONTH] : '00');
355
+ getNextPart(this.showMonth, defaultValue ? defaultValue[MONTH] : '');
349
356
  if (!this.dayFirst) {
350
- getNextPart(this.showDay, defaultValue ? defaultValue[DAY] : '00');
357
+ getNextPart(this.showDay, defaultValue ? defaultValue[DAY] : '');
351
358
  }
352
- getNextPart(this.showYear, defaultValue ? defaultValue[YEAR] : '0000');
359
+ getNextPart(this.showYear, defaultValue ? defaultValue[YEAR] : '');
353
360
  return dateParts.join('/');
354
361
  }
355
362
  /**
@@ -361,7 +368,7 @@ export default class DayComponent extends Field {
361
368
  setValueAt(index, value) {
362
369
  // temporary solution to avoid input reset
363
370
  // on invalid date.
364
- if (!value || value === 'Invalid date') {
371
+ if (value === 'Invalid date') {
365
372
  return null;
366
373
  }
367
374
  const parts = value.split('/');
@@ -554,9 +561,22 @@ export default class DayComponent extends Field {
554
561
  }
555
562
  const [DAY, MONTH, YEAR] = this.component.dayFirst ? [0, 1, 2] : [1, 0, 2];
556
563
  const values = value.split('/');
564
+ if (values.length < 3) {
565
+ return true;
566
+ }
557
567
  return (values[DAY] === '00' || values[MONTH] === '00' || values[YEAR] === '0000');
558
568
  }
559
569
  getValidationFormat() {
560
- return this.dayFirst ? 'DD-MM-YYYY' : 'MM-DD-YYYY';
570
+ let validationFormat = this.dayFirst ? 'DD-MM-YYYY' : 'MM-DD-YYYY';
571
+ if (this.fields?.day?.hide) {
572
+ validationFormat = validationFormat.replace('DD-', '');
573
+ }
574
+ if (this.fields?.month?.hide) {
575
+ validationFormat = validationFormat.replace('MM-', '');
576
+ }
577
+ if (this.fields?.year?.hide) {
578
+ validationFormat = validationFormat.replace('-YYYY', '');
579
+ }
580
+ return validationFormat;
561
581
  }
562
582
  }
@@ -0,0 +1,41 @@
1
+ declare namespace _default {
2
+ let components: ({
3
+ label: string;
4
+ hideInputLabels: boolean;
5
+ inputsLabelPosition: string;
6
+ useLocaleSettings: boolean;
7
+ alwaysEnabled: boolean;
8
+ tableView: boolean;
9
+ fields: {
10
+ day: {
11
+ hide: boolean;
12
+ required: boolean;
13
+ };
14
+ month: {
15
+ hide: boolean;
16
+ required: boolean;
17
+ };
18
+ year: {
19
+ hide: boolean;
20
+ required: boolean;
21
+ };
22
+ };
23
+ key: string;
24
+ type: string;
25
+ input: boolean;
26
+ showValidations?: undefined;
27
+ } | {
28
+ label: string;
29
+ showValidations: boolean;
30
+ alwaysEnabled: boolean;
31
+ tableView: boolean;
32
+ key: string;
33
+ type: string;
34
+ input: boolean;
35
+ hideInputLabels?: undefined;
36
+ inputsLabelPosition?: undefined;
37
+ useLocaleSettings?: undefined;
38
+ fields?: undefined;
39
+ })[];
40
+ }
41
+ export default _default;
@@ -0,0 +1,38 @@
1
+ export default {
2
+ "components": [
3
+ {
4
+ "label": "Day - Table",
5
+ "hideInputLabels": false,
6
+ "inputsLabelPosition": "top",
7
+ "useLocaleSettings": false,
8
+ "alwaysEnabled": false,
9
+ "tableView": false,
10
+ "fields": {
11
+ "day": {
12
+ "hide": false,
13
+ "required": true
14
+ },
15
+ "month": {
16
+ "hide": false,
17
+ "required": true
18
+ },
19
+ "year": {
20
+ "hide": false,
21
+ "required": true
22
+ }
23
+ },
24
+ "key": "dayTable",
25
+ "type": "day",
26
+ "input": true
27
+ },
28
+ {
29
+ "label": "Submit",
30
+ "showValidations": false,
31
+ "alwaysEnabled": false,
32
+ "tableView": false,
33
+ "key": "submit",
34
+ "type": "button",
35
+ "input": true
36
+ }
37
+ ]
38
+ };
@@ -5,4 +5,5 @@ import comp4 from './comp4';
5
5
  import comp5 from './comp5';
6
6
  import comp6 from './comp6';
7
7
  import comp7 from './comp7';
8
- export { comp1, comp2, comp3, comp4, comp5, comp6, comp7 };
8
+ import comp8 from './comp8';
9
+ export { comp1, comp2, comp3, comp4, comp5, comp6, comp7, comp8 };
@@ -5,4 +5,5 @@ import comp4 from './comp4';
5
5
  import comp5 from './comp5';
6
6
  import comp6 from './comp6';
7
7
  import comp7 from './comp7';
8
- export { comp1, comp2, comp3, comp4, comp5, comp6, comp7 };
8
+ import comp8 from './comp8';
9
+ export { comp1, comp2, comp3, comp4, comp5, comp6, comp7, comp8 };
@@ -83,7 +83,7 @@ export default class EditGridComponent extends NestedArrayComponent {
83
83
  {% if (!instance.options.readOnly && !instance.disabled) { %}
84
84
  <div class="col-sm-2">
85
85
  <div class="btn-group pull-right">
86
- <button class="btn btn-default btn-light btn-sm editRow"><i class="{{ iconClass('pen-fill') }}"></i></button>
86
+ <button class="btn btn-default btn-light btn-sm editRow"><i class="{{ iconClass('edit') }}"></i></button>
87
87
  {% if (!instance.hasRemoveButtons || instance.hasRemoveButtons()) { %}
88
88
  <button class="btn btn-danger btn-sm removeRow"><i class="{{ iconClass('trash') }}"></i></button>
89
89
  {% } %}
@@ -104,7 +104,7 @@ export default class EditGridComponent extends NestedArrayComponent {
104
104
  {% if (!instance.options.readOnly && !instance.disabled) { %}
105
105
  <td class="editgrid-table-column">
106
106
  <div class="btn-group">
107
- <button class="btn btn-default btn-light btn-sm editRow" aria-label="{{ t('Edit row') }}"><i class="{{ iconClass('pen-fill') }}"></i></button>
107
+ <button class="btn btn-default btn-light btn-sm editRow" aria-label="{{ t('Edit row') }}"><i class="{{ iconClass('edit') }}"></i></button>
108
108
  {% if (!instance.hasRemoveButtons || instance.hasRemoveButtons()) { %}
109
109
  <button class="btn btn-danger btn-sm removeRow" aria-label="{{ t('Remove row') }}"><i class="{{ iconClass('trash') }}"></i></button>
110
110
  {% } %}
@@ -484,11 +484,7 @@ export default class EditGridComponent extends NestedArrayComponent {
484
484
  else {
485
485
  this.removeClass(this.refs.component, `formio-component-${this.component.type}-row-open`);
486
486
  }
487
- const superAttach = super.attach(element);
488
- this.loadRefs(element, {
489
- messageContainer: 'single-scope',
490
- });
491
- return superAttach;
487
+ return super.attach(element);
492
488
  }
493
489
  flattenRowDataValue(dataValue) {
494
490
  const flattened = {};
@@ -672,6 +668,11 @@ export default class EditGridComponent extends NestedArrayComponent {
672
668
  }
673
669
  },
674
670
  }, this.component.saveRow || 'Save'));
671
+ this.emit('editGridOpenModal', {
672
+ component: this.component,
673
+ row: editRow,
674
+ instance: this,
675
+ });
675
676
  return this.attachComponents(modalContent, components);
676
677
  }
677
678
  showDialog(rowIndex) {
@@ -729,6 +730,11 @@ export default class EditGridComponent extends NestedArrayComponent {
729
730
  editRow.data = dataSnapshot;
730
731
  this.restoreRowContext(editRow);
731
732
  }
733
+ this.emit('editGridEditRow', {
734
+ component: this.component,
735
+ row: editRow,
736
+ instance: this,
737
+ });
732
738
  if (this.component.modal) {
733
739
  return this.addRowModal(rowIndex);
734
740
  }
@@ -879,6 +885,7 @@ export default class EditGridComponent extends NestedArrayComponent {
879
885
  }
880
886
  this.clearErrors(rowIndex);
881
887
  this.baseRemoveRow(rowIndex);
888
+ this.removeSubmissionMetadataRow(rowIndex);
882
889
  this.splice(rowIndex);
883
890
  this.emit('editGridDeleteRow', {
884
891
  index: rowIndex
@@ -1079,7 +1086,8 @@ export default class EditGridComponent extends NestedArrayComponent {
1079
1086
  return false;
1080
1087
  }
1081
1088
  else if (rowsEditing && this.saveEditMode && !this.component.openWhenEmpty) {
1082
- this.setCustomValidity(this.t(this.errorMessage('unsavedRowsError')), dirty);
1089
+ this._errors = this.setCustomValidity(this.t(this.errorMessage('unsavedRowsError')), dirty);
1090
+ errors.push(...this._errors);
1083
1091
  return false;
1084
1092
  }
1085
1093
  const message = this.invalid || this.invalidMessage(data, dirty, false, row);
@@ -0,0 +1,54 @@
1
+ declare namespace _default {
2
+ let _id: string;
3
+ let title: string;
4
+ let name: string;
5
+ let path: string;
6
+ let type: string;
7
+ let display: string;
8
+ let owner: string;
9
+ let components: ({
10
+ label: string;
11
+ tableView: boolean;
12
+ modal: boolean;
13
+ validateWhenHidden: boolean;
14
+ rowDrafts: boolean;
15
+ key: string;
16
+ type: string;
17
+ displayAsTable: boolean;
18
+ input: boolean;
19
+ components: {
20
+ label: string;
21
+ applyMaskOn: string;
22
+ tableView: boolean;
23
+ validateWhenHidden: boolean;
24
+ key: string;
25
+ type: string;
26
+ input: boolean;
27
+ }[];
28
+ disableOnInvalid?: undefined;
29
+ } | {
30
+ type: string;
31
+ label: string;
32
+ key: string;
33
+ disableOnInvalid: boolean;
34
+ input: boolean;
35
+ tableView: boolean;
36
+ modal?: undefined;
37
+ validateWhenHidden?: undefined;
38
+ rowDrafts?: undefined;
39
+ displayAsTable?: undefined;
40
+ components?: undefined;
41
+ })[];
42
+ let pdfComponents: never[];
43
+ let settings: {};
44
+ let properties: {};
45
+ let project: string;
46
+ let controller: string;
47
+ let revisions: string;
48
+ let submissionRevisions: string;
49
+ let _vid: number;
50
+ let created: string;
51
+ let modified: string;
52
+ let machineName: string;
53
+ }
54
+ export default _default;
@@ -0,0 +1,52 @@
1
+ export default {
2
+ _id: '669e1c88a40e327e67e7d1c5',
3
+ title: 'editGrid test',
4
+ name: 'editGridTest',
5
+ path: 'editgridtest',
6
+ type: 'form',
7
+ display: 'form',
8
+ owner: '637b2e6b48c1227e60b1f910',
9
+ components: [
10
+ {
11
+ label: 'Edit Grid',
12
+ tableView: false,
13
+ modal: false,
14
+ validateWhenHidden: false,
15
+ rowDrafts: false,
16
+ key: 'editGrid',
17
+ type: 'editgrid',
18
+ displayAsTable: false,
19
+ input: true,
20
+ components: [
21
+ {
22
+ label: 'Text Field',
23
+ applyMaskOn: 'change',
24
+ tableView: true,
25
+ validateWhenHidden: false,
26
+ key: 'textField',
27
+ type: 'textfield',
28
+ input: true,
29
+ },
30
+ ],
31
+ },
32
+ {
33
+ type: 'button',
34
+ label: 'Submit',
35
+ key: 'submit',
36
+ disableOnInvalid: true,
37
+ input: true,
38
+ tableView: false,
39
+ },
40
+ ],
41
+ pdfComponents: [],
42
+ settings: {},
43
+ properties: {},
44
+ project: '669e1c68a40e327e67e7cedd',
45
+ controller: '',
46
+ revisions: '',
47
+ submissionRevisions: '',
48
+ _vid: 0,
49
+ created: '2024-07-22T08:47:04.399Z',
50
+ modified: '2024-07-22T10:04:23.474Z',
51
+ machineName: 'authoring-qzdhayddccjauyr:editGridTest',
52
+ };
@@ -0,0 +1,52 @@
1
+ declare namespace _default {
2
+ let type: string;
3
+ let display: string;
4
+ let components: ({
5
+ title: string;
6
+ breadcrumbClickable: boolean;
7
+ buttonSettings: {
8
+ previous: boolean;
9
+ cancel: boolean;
10
+ next: boolean;
11
+ };
12
+ collapsible: boolean;
13
+ tableView: boolean;
14
+ key: string;
15
+ type: string;
16
+ label: string;
17
+ input: boolean;
18
+ components: {
19
+ label: string;
20
+ tableView: boolean;
21
+ rowDrafts: boolean;
22
+ key: string;
23
+ type: string;
24
+ input: boolean;
25
+ components: {
26
+ label: string;
27
+ tableView: boolean;
28
+ key: string;
29
+ type: string;
30
+ input: boolean;
31
+ alwaysEnabled: boolean;
32
+ }[];
33
+ alwaysEnabled: boolean;
34
+ }[];
35
+ alwaysEnabled: boolean;
36
+ showValidations?: undefined;
37
+ } | {
38
+ label: string;
39
+ showValidations: boolean;
40
+ alwaysEnabled: boolean;
41
+ tableView: boolean;
42
+ key: string;
43
+ type: string;
44
+ input: boolean;
45
+ title?: undefined;
46
+ breadcrumbClickable?: undefined;
47
+ buttonSettings?: undefined;
48
+ collapsible?: undefined;
49
+ components?: undefined;
50
+ })[];
51
+ }
52
+ export default _default;
@@ -0,0 +1,69 @@
1
+ export default {
2
+ type: 'form',
3
+ display: 'wizard',
4
+ components: [
5
+ {
6
+ title: 'Page 1',
7
+ breadcrumbClickable: true,
8
+ buttonSettings: {
9
+ previous: true,
10
+ cancel: true,
11
+ next: true
12
+ },
13
+ collapsible: false,
14
+ tableView: false,
15
+ key: 'page3',
16
+ type: 'panel',
17
+ label: 'Page 2',
18
+ input: false,
19
+ components: [
20
+ {
21
+ label: 'Edit Grid',
22
+ tableView: true,
23
+ rowDrafts: false,
24
+ key: 'editGrid',
25
+ type: 'editgrid',
26
+ input: true,
27
+ components: [
28
+ {
29
+ label: 'Text Field',
30
+ tableView: true,
31
+ key: 'textField',
32
+ type: 'textfield',
33
+ input: true,
34
+ alwaysEnabled: false
35
+ }
36
+ ],
37
+ alwaysEnabled: false
38
+ }
39
+ ],
40
+ alwaysEnabled: false
41
+ },
42
+ {
43
+ title: 'Page 2',
44
+ breadcrumbClickable: true,
45
+ buttonSettings: {
46
+ previous: true,
47
+ cancel: true,
48
+ next: true
49
+ },
50
+ collapsible: false,
51
+ tableView: false,
52
+ key: 'page2',
53
+ type: 'panel',
54
+ label: 'Page 1',
55
+ input: false,
56
+ alwaysEnabled: false,
57
+ components: []
58
+ },
59
+ {
60
+ label: 'Submit',
61
+ showValidations: false,
62
+ alwaysEnabled: false,
63
+ tableView: false,
64
+ key: 'submit',
65
+ type: 'button',
66
+ input: true
67
+ }
68
+ ]
69
+ };
@@ -0,0 +1,80 @@
1
+ declare namespace _default {
2
+ let type: string;
3
+ let display: string;
4
+ let components: ({
5
+ label: string;
6
+ tableView: boolean;
7
+ rowDrafts: boolean;
8
+ key: string;
9
+ type: string;
10
+ input: boolean;
11
+ components: {
12
+ collapsible: boolean;
13
+ key: string;
14
+ type: string;
15
+ label: string;
16
+ input: boolean;
17
+ tableView: boolean;
18
+ components: {
19
+ label: string;
20
+ columns: ({
21
+ components: {
22
+ label: string;
23
+ optionsLabelPosition: string;
24
+ inline: boolean;
25
+ tableView: boolean;
26
+ values: {
27
+ label: string;
28
+ value: string;
29
+ shortcut: string;
30
+ }[];
31
+ key: string;
32
+ type: string;
33
+ input: boolean;
34
+ }[];
35
+ width: number;
36
+ offset: number;
37
+ push: number;
38
+ pull: number;
39
+ size: string;
40
+ currentWidth: number;
41
+ } | {
42
+ components: {
43
+ label: string;
44
+ applyMaskOn: string;
45
+ autoExpand: boolean;
46
+ tableView: boolean;
47
+ key: string;
48
+ conditional: {
49
+ show: boolean;
50
+ conjunction: string;
51
+ };
52
+ type: string;
53
+ input: boolean;
54
+ }[];
55
+ width: number;
56
+ offset: number;
57
+ push: number;
58
+ pull: number;
59
+ size: string;
60
+ currentWidth: number;
61
+ })[];
62
+ key: string;
63
+ type: string;
64
+ input: boolean;
65
+ tableView: boolean;
66
+ }[];
67
+ }[];
68
+ disableOnInvalid?: undefined;
69
+ } | {
70
+ type: string;
71
+ label: string;
72
+ key: string;
73
+ disableOnInvalid: boolean;
74
+ input: boolean;
75
+ tableView: boolean;
76
+ rowDrafts?: undefined;
77
+ components?: undefined;
78
+ })[];
79
+ }
80
+ export default _default;
@@ -0,0 +1,97 @@
1
+ export default {
2
+ type: 'form',
3
+ display: 'form',
4
+ components: [
5
+ {
6
+ label: 'Edit Grid',
7
+ tableView: false,
8
+ rowDrafts: false,
9
+ key: 'editGrid',
10
+ type: 'editgrid',
11
+ input: true,
12
+ components: [
13
+ {
14
+ collapsible: false,
15
+ key: 'panel',
16
+ type: 'panel',
17
+ label: 'Panel',
18
+ input: false,
19
+ tableView: false,
20
+ components: [
21
+ {
22
+ label: 'Columns',
23
+ columns: [
24
+ {
25
+ components: [
26
+ {
27
+ label: 'Radio',
28
+ optionsLabelPosition: 'right',
29
+ inline: false,
30
+ tableView: true,
31
+ values: [
32
+ {
33
+ label: 'yes',
34
+ value: 'yes',
35
+ shortcut: ''
36
+ },
37
+ {
38
+ label: 'no',
39
+ value: 'no',
40
+ shortcut: ''
41
+ }
42
+ ],
43
+ key: 'radio',
44
+ type: 'radio',
45
+ input: true
46
+ }
47
+ ],
48
+ width: 6,
49
+ offset: 0,
50
+ push: 0,
51
+ pull: 0,
52
+ size: 'md',
53
+ currentWidth: 6
54
+ },
55
+ {
56
+ components: [
57
+ {
58
+ label: 'Text Area',
59
+ applyMaskOn: 'change',
60
+ autoExpand: false,
61
+ tableView: true,
62
+ key: 'textArea',
63
+ conditional: {
64
+ show: true,
65
+ conjunction: 'all'
66
+ },
67
+ type: 'textarea',
68
+ input: true
69
+ }
70
+ ],
71
+ width: 6,
72
+ offset: 0,
73
+ push: 0,
74
+ pull: 0,
75
+ size: 'md',
76
+ currentWidth: 6
77
+ }
78
+ ],
79
+ key: 'columns',
80
+ type: 'columns',
81
+ input: false,
82
+ tableView: false
83
+ }
84
+ ]
85
+ }
86
+ ]
87
+ },
88
+ {
89
+ type: 'button',
90
+ label: 'Submit',
91
+ key: 'submit',
92
+ disableOnInvalid: true,
93
+ input: true,
94
+ tableView: false
95
+ }
96
+ ]
97
+ };