@formio/js 5.2.4-rc.0 → 5.2.5

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 (512) hide show
  1. package/dist/formio.builder.css +50 -161
  2. package/dist/formio.builder.min.css +1 -1
  3. package/dist/formio.embed.js +1 -1
  4. package/dist/formio.embed.min.js +1 -1
  5. package/dist/formio.embed.min.js.LICENSE.txt +1 -1
  6. package/dist/formio.form.css +49 -158
  7. package/dist/formio.form.js +108 -152
  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 -1
  11. package/dist/formio.full.css +50 -161
  12. package/dist/formio.full.js +227 -401
  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 -1
  16. package/dist/formio.js +18 -51
  17. package/dist/formio.min.js +1 -1
  18. package/dist/formio.min.js.LICENSE.txt +1 -1
  19. package/dist/formio.utils.js +14 -47
  20. package/dist/formio.utils.min.js +1 -1
  21. package/dist/formio.utils.min.js.LICENSE.txt +1 -1
  22. package/lib/cjs/CDN.js +12 -12
  23. package/lib/cjs/Element.d.ts +2 -3
  24. package/lib/cjs/Element.js +26 -29
  25. package/lib/cjs/Embed.js +42 -75
  26. package/lib/cjs/EventEmitter.js +1 -1
  27. package/lib/cjs/Form.d.ts +341 -371
  28. package/lib/cjs/Form.js +39 -153
  29. package/lib/cjs/FormBuilder.d.ts +3 -3
  30. package/lib/cjs/FormBuilder.js +3 -2
  31. package/lib/cjs/Formio.js +23 -26
  32. package/lib/cjs/InlineEmbed.js +17 -23
  33. package/lib/cjs/PDF.d.ts +0 -1
  34. package/lib/cjs/PDF.js +15 -18
  35. package/lib/cjs/PDFBuilder.js +36 -51
  36. package/lib/cjs/Webform.d.ts +366 -8
  37. package/lib/cjs/Webform.js +238 -177
  38. package/lib/cjs/WebformBuilder.js +152 -221
  39. package/lib/cjs/Wizard.js +65 -95
  40. package/lib/cjs/WizardBuilder.js +19 -27
  41. package/lib/cjs/addons/FormioAddon.js +1 -1
  42. package/lib/cjs/addons/PasswordStrength/PasswordStrengthAddon.form.js +57 -59
  43. package/lib/cjs/addons/PasswordStrength/PasswordStrengthAddon.js +16 -24
  44. package/lib/cjs/addons/index.js +3 -3
  45. package/lib/cjs/components/Components.js +4 -0
  46. package/lib/cjs/components/_classes/component/Component.form.js +11 -11
  47. package/lib/cjs/components/_classes/component/Component.js +198 -309
  48. package/lib/cjs/components/_classes/component/editForm/Component.edit.addons.js +4 -2
  49. package/lib/cjs/components/_classes/component/editForm/Component.edit.api.js +5 -5
  50. package/lib/cjs/components/_classes/component/editForm/Component.edit.conditional.js +11 -9
  51. package/lib/cjs/components/_classes/component/editForm/Component.edit.data.d.ts +0 -37
  52. package/lib/cjs/components/_classes/component/editForm/Component.edit.data.js +25 -39
  53. package/lib/cjs/components/_classes/component/editForm/Component.edit.display.js +29 -47
  54. package/lib/cjs/components/_classes/component/editForm/Component.edit.layout.js +9 -9
  55. package/lib/cjs/components/_classes/component/editForm/Component.edit.logic.js +7 -5
  56. package/lib/cjs/components/_classes/component/editForm/Component.edit.validation.js +34 -37
  57. package/lib/cjs/components/_classes/component/editForm/utils.js +16 -12
  58. package/lib/cjs/components/_classes/componentModal/ComponentModal.js +6 -6
  59. package/lib/cjs/components/_classes/field/Field.js +1 -7
  60. package/lib/cjs/components/_classes/input/Input.js +26 -30
  61. package/lib/cjs/components/_classes/list/ListComponent.form.js +1 -1
  62. package/lib/cjs/components/_classes/list/ListComponent.js +18 -27
  63. package/lib/cjs/components/_classes/list/editForm/ListComponent.edit.data.js +9 -36
  64. package/lib/cjs/components/_classes/multivalue/Multivalue.js +13 -32
  65. package/lib/cjs/components/_classes/nested/NestedComponent.d.ts +1 -1
  66. package/lib/cjs/components/_classes/nested/NestedComponent.form.js +3 -3
  67. package/lib/cjs/components/_classes/nested/NestedComponent.js +75 -67
  68. package/lib/cjs/components/_classes/nestedarray/NestedArrayComponent.js +14 -19
  69. package/lib/cjs/components/_classes/nesteddata/NestedDataComponent.js +17 -19
  70. package/lib/cjs/components/address/Address.d.ts +0 -1
  71. package/lib/cjs/components/address/Address.js +52 -57
  72. package/lib/cjs/components/address/editForm/Address.edit.data.js +2 -2
  73. package/lib/cjs/components/address/editForm/Address.edit.display.js +2 -2
  74. package/lib/cjs/components/address/editForm/Address.edit.provider.js +11 -53
  75. package/lib/cjs/components/alert/Alert.js +15 -21
  76. package/lib/cjs/components/button/Button.form.js +1 -1
  77. package/lib/cjs/components/button/Button.js +47 -64
  78. package/lib/cjs/components/button/editForm/Button.edit.display.js +9 -49
  79. package/lib/cjs/components/checkbox/Checkbox.d.ts +1 -1
  80. package/lib/cjs/components/checkbox/Checkbox.form.js +3 -3
  81. package/lib/cjs/components/checkbox/Checkbox.js +20 -28
  82. package/lib/cjs/components/checkbox/editForm/Checkbox.edit.data.js +1 -1
  83. package/lib/cjs/components/checkbox/editForm/Checkbox.edit.display.js +3 -13
  84. package/lib/cjs/components/checkbox/editForm/Checkbox.edit.validation.js +2 -2
  85. package/lib/cjs/components/columns/Columns.form.js +1 -1
  86. package/lib/cjs/components/columns/Columns.js +12 -24
  87. package/lib/cjs/components/columns/editForm/Columns.edit.display.js +17 -17
  88. package/lib/cjs/components/container/Container.form.js +2 -2
  89. package/lib/cjs/components/container/Container.js +4 -6
  90. package/lib/cjs/components/container/editForm/Container.edit.data.js +3 -3
  91. package/lib/cjs/components/container/editForm/Container.edit.display.js +4 -4
  92. package/lib/cjs/components/content/Content.form.js +2 -4
  93. package/lib/cjs/components/content/Content.js +8 -10
  94. package/lib/cjs/components/content/editForm/Content.edit.display.js +10 -10
  95. package/lib/cjs/components/currency/Currency.form.js +3 -3
  96. package/lib/cjs/components/currency/Currency.js +10 -19
  97. package/lib/cjs/components/currency/editForm/Currency.edit.data.js +5 -5
  98. package/lib/cjs/components/currency/editForm/Currency.edit.display.js +8 -8
  99. package/lib/cjs/components/datagrid/DataGrid.form.js +3 -3
  100. package/lib/cjs/components/datagrid/DataGrid.js +42 -92
  101. package/lib/cjs/components/datagrid/editForm/DataGrid.edit.data.js +1 -1
  102. package/lib/cjs/components/datagrid/editForm/DataGrid.edit.display.js +14 -14
  103. package/lib/cjs/components/datagrid/editForm/DataGrid.edit.validation.js +3 -3
  104. package/lib/cjs/components/datamap/DataMap.form.js +2 -2
  105. package/lib/cjs/components/datamap/DataMap.js +35 -46
  106. package/lib/cjs/components/datamap/editForm/DataMap.edit.data.js +1 -1
  107. package/lib/cjs/components/datamap/editForm/DataMap.edit.display.js +8 -8
  108. package/lib/cjs/components/datetime/DateTime.form.js +5 -5
  109. package/lib/cjs/components/datetime/DateTime.js +15 -30
  110. package/lib/cjs/components/datetime/editForm/DateTime.edit.data.js +3 -4
  111. package/lib/cjs/components/datetime/editForm/DateTime.edit.date.js +10 -10
  112. package/lib/cjs/components/datetime/editForm/DateTime.edit.display.js +17 -22
  113. package/lib/cjs/components/datetime/editForm/DateTime.edit.time.js +5 -5
  114. package/lib/cjs/components/datetime/editForm/DateTime.edit.validation.js +3 -3
  115. package/lib/cjs/components/day/Day.form.js +5 -5
  116. package/lib/cjs/components/day/Day.js +58 -147
  117. package/lib/cjs/components/day/editForm/Day.edit.day.js +9 -13
  118. package/lib/cjs/components/day/editForm/Day.edit.display.js +7 -7
  119. package/lib/cjs/components/day/editForm/Day.edit.month.js +8 -12
  120. package/lib/cjs/components/day/editForm/Day.edit.validation.js +7 -7
  121. package/lib/cjs/components/day/editForm/Day.edit.year.js +8 -8
  122. package/lib/cjs/components/editgrid/EditGrid.form.js +2 -2
  123. package/lib/cjs/components/editgrid/EditGrid.js +96 -142
  124. package/lib/cjs/components/editgrid/editForm/EditGrid.edit.data.js +2 -2
  125. package/lib/cjs/components/editgrid/editForm/EditGrid.edit.display.js +2 -7
  126. package/lib/cjs/components/editgrid/editForm/EditGrid.edit.templates.js +16 -16
  127. package/lib/cjs/components/editgrid/editForm/EditGrid.edit.validation.js +3 -3
  128. package/lib/cjs/components/email/Email.js +4 -4
  129. package/lib/cjs/components/email/editForm/Email.edit.display.js +3 -3
  130. package/lib/cjs/components/email/editForm/Email.edit.validation.js +6 -6
  131. package/lib/cjs/components/fieldset/Fieldset.form.js +1 -1
  132. package/lib/cjs/components/fieldset/Fieldset.js +2 -2
  133. package/lib/cjs/components/fieldset/editForm/Fieldset.edit.display.js +8 -8
  134. package/lib/cjs/components/file/File.form.js +4 -4
  135. package/lib/cjs/components/file/File.js +90 -131
  136. package/lib/cjs/components/file/editForm/File.edit.display.js +5 -9
  137. package/lib/cjs/components/file/editForm/File.edit.file.js +53 -97
  138. package/lib/cjs/components/file/editForm/File.edit.validation.js +2 -2
  139. package/lib/cjs/components/form/Form.form.js +3 -3
  140. package/lib/cjs/components/form/Form.js +58 -68
  141. package/lib/cjs/components/form/editForm/Form.edit.data.js +3 -1
  142. package/lib/cjs/components/form/editForm/Form.edit.display.js +7 -6
  143. package/lib/cjs/components/form/editForm/Form.edit.form.js +9 -11
  144. package/lib/cjs/components/hidden/Hidden.form.js +4 -4
  145. package/lib/cjs/components/hidden/Hidden.js +2 -2
  146. package/lib/cjs/components/hidden/editForm/Hidden.edit.data.js +3 -3
  147. package/lib/cjs/components/hidden/editForm/Hidden.edit.display.js +10 -10
  148. package/lib/cjs/components/html/HTML.js +17 -23
  149. package/lib/cjs/components/html/editForm/HTML.edit.display.js +17 -17
  150. package/lib/cjs/components/html/editForm/HTML.edit.logic.js +2 -2
  151. package/lib/cjs/components/number/Number.form.js +3 -3
  152. package/lib/cjs/components/number/Number.js +11 -27
  153. package/lib/cjs/components/number/editForm/Number.edit.data.js +3 -3
  154. package/lib/cjs/components/number/editForm/Number.edit.display.js +4 -4
  155. package/lib/cjs/components/number/editForm/Number.edit.validation.js +9 -9
  156. package/lib/cjs/components/panel/Panel.form.js +1 -1
  157. package/lib/cjs/components/panel/Panel.js +2 -2
  158. package/lib/cjs/components/panel/editForm/Panel.edit.conditional.js +7 -5
  159. package/lib/cjs/components/panel/editForm/Panel.edit.display.js +29 -55
  160. package/lib/cjs/components/password/Password.form.js +3 -3
  161. package/lib/cjs/components/password/Password.js +2 -5
  162. package/lib/cjs/components/password/editForm/Password.edit.data.js +11 -11
  163. package/lib/cjs/components/password/editForm/Password.edit.display.js +3 -3
  164. package/lib/cjs/components/password/editForm/Password.edit.validation.js +3 -3
  165. package/lib/cjs/components/phonenumber/PhoneNumber.form.js +8 -8
  166. package/lib/cjs/components/phonenumber/PhoneNumber.js +3 -3
  167. package/lib/cjs/components/phonenumber/editForm/PhoneNumber.edit.validation.js +6 -6
  168. package/lib/cjs/components/radio/Radio.form.js +3 -3
  169. package/lib/cjs/components/radio/Radio.js +32 -58
  170. package/lib/cjs/components/radio/editForm/Radio.edit.data.js +9 -23
  171. package/lib/cjs/components/radio/editForm/Radio.edit.display.js +6 -6
  172. package/lib/cjs/components/radio/editForm/Radio.edit.validation.js +2 -2
  173. package/lib/cjs/components/recaptcha/ReCaptcha.form.js +5 -5
  174. package/lib/cjs/components/recaptcha/ReCaptcha.js +10 -10
  175. package/lib/cjs/components/recaptcha/editForm/ReCaptcha.edit.display.js +24 -24
  176. package/lib/cjs/components/select/Select.form.js +3 -3
  177. package/lib/cjs/components/select/Select.js +140 -235
  178. package/lib/cjs/components/select/editForm/Select.edit.data.d.ts +1 -1
  179. package/lib/cjs/components/select/editForm/Select.edit.data.js +57 -191
  180. package/lib/cjs/components/select/editForm/Select.edit.display.js +2 -2
  181. package/lib/cjs/components/select/editForm/Select.edit.validation.js +4 -4
  182. package/lib/cjs/components/selectboxes/SelectBoxes.form.js +3 -3
  183. package/lib/cjs/components/selectboxes/SelectBoxes.js +16 -29
  184. package/lib/cjs/components/selectboxes/editForm/SelectBoxes.edit.validation.js +5 -5
  185. package/lib/cjs/components/signature/Signature.form.js +3 -3
  186. package/lib/cjs/components/signature/Signature.js +17 -26
  187. package/lib/cjs/components/signature/editForm/Signature.edit.display.js +10 -19
  188. package/lib/cjs/components/survey/Survey.form.js +3 -3
  189. package/lib/cjs/components/survey/Survey.js +17 -30
  190. package/lib/cjs/components/survey/editForm/Survey.edit.data.js +11 -23
  191. package/lib/cjs/components/survey/editForm/Survey.edit.display.js +1 -1
  192. package/lib/cjs/components/survey/editForm/Survey.edit.validation.js +1 -1
  193. package/lib/cjs/components/table/Table.form.js +1 -1
  194. package/lib/cjs/components/table/Table.js +7 -8
  195. package/lib/cjs/components/table/editForm/Table.edit.display.js +22 -22
  196. package/lib/cjs/components/tabs/Tabs.form.js +1 -1
  197. package/lib/cjs/components/tabs/Tabs.js +10 -27
  198. package/lib/cjs/components/tabs/editForm/Tabs.edit.display.js +17 -21
  199. package/lib/cjs/components/tags/Tags.form.js +1 -1
  200. package/lib/cjs/components/tags/Tags.js +12 -28
  201. package/lib/cjs/components/tags/editForm/Tags.edit.data.js +7 -7
  202. package/lib/cjs/components/textarea/TextArea.form.js +2 -2
  203. package/lib/cjs/components/textarea/TextArea.js +45 -63
  204. package/lib/cjs/components/textarea/editForm/TextArea.edit.display.js +72 -96
  205. package/lib/cjs/components/textarea/editForm/TextArea.edit.validation.js +3 -3
  206. package/lib/cjs/components/textfield/TextField.form.js +3 -3
  207. package/lib/cjs/components/textfield/TextField.js +21 -32
  208. package/lib/cjs/components/textfield/editForm/TextField.edit.data.js +13 -15
  209. package/lib/cjs/components/textfield/editForm/TextField.edit.display.js +21 -31
  210. package/lib/cjs/components/textfield/editForm/TextField.edit.validation.js +6 -6
  211. package/lib/cjs/components/time/Time.js +10 -17
  212. package/lib/cjs/components/time/editForm/Time.edit.display.js +2 -2
  213. package/lib/cjs/components/unknown/Unknown.form.js +5 -5
  214. package/lib/cjs/components/unknown/Unknown.js +2 -2
  215. package/lib/cjs/components/unknown/editForm/Unknown.edit.display.js +3 -3
  216. package/lib/cjs/components/url/Url.form.js +3 -3
  217. package/lib/cjs/components/url/Url.js +2 -2
  218. package/lib/cjs/components/url/editForm/Url.edit.display.js +3 -3
  219. package/lib/cjs/components/url/editForm/Url.edit.validation.js +1 -1
  220. package/lib/cjs/components/well/Well.form.js +1 -1
  221. package/lib/cjs/components/well/Well.js +2 -2
  222. package/lib/cjs/components/well/editForm/Well.edit.display.js +10 -10
  223. package/lib/cjs/formio.form.d.ts +1 -2
  224. package/lib/cjs/formio.form.js +12 -38
  225. package/lib/cjs/i18n.d.ts +0 -4
  226. package/lib/cjs/i18n.js +3 -7
  227. package/lib/cjs/package.json +1 -1
  228. package/lib/cjs/pdf.image.d.ts +2 -0
  229. package/lib/cjs/pdf.image.js +94 -0
  230. package/lib/cjs/providers/address/AddressProvider.js +5 -8
  231. package/lib/cjs/providers/address/GoogleAddressProvider.d.ts +3 -3
  232. package/lib/cjs/providers/address/GoogleAddressProvider.js +13 -24
  233. package/lib/cjs/providers/processor/fileProcessor.js +1 -3
  234. package/lib/cjs/providers/storage/azure.js +2 -5
  235. package/lib/cjs/providers/storage/dropbox.js +5 -4
  236. package/lib/cjs/providers/storage/googleDrive.js +4 -3
  237. package/lib/cjs/providers/storage/index.js +1 -1
  238. package/lib/cjs/providers/storage/indexeddb.js +6 -16
  239. package/lib/cjs/providers/storage/s3.js +6 -17
  240. package/lib/cjs/providers/storage/uploadAdapter.js +11 -17
  241. package/lib/cjs/providers/storage/url.js +11 -13
  242. package/lib/cjs/providers/storage/xhr.js +9 -17
  243. package/lib/cjs/templates/index.js +1 -1
  244. package/lib/cjs/translations/en.d.ts +2 -0
  245. package/lib/cjs/translations/en.js +9 -7
  246. package/lib/cjs/utils/ChoicesWrapper.js +2 -2
  247. package/lib/cjs/utils/builder.js +7 -31
  248. package/lib/cjs/utils/calendarUtils.js +5 -7
  249. package/lib/cjs/utils/conditionOperators/ConditionOperator.js +1 -1
  250. package/lib/cjs/utils/conditionOperators/DateGreaterThan.js +4 -12
  251. package/lib/cjs/utils/conditionOperators/IsEmptyValue.js +1 -3
  252. package/lib/cjs/utils/conditionOperators/IsEqualTo.js +6 -10
  253. package/lib/cjs/utils/conditionOperators/index.js +1 -1
  254. package/lib/cjs/utils/formUtils.js +1 -1
  255. package/lib/cjs/utils/i18n.js +1 -7
  256. package/lib/cjs/utils/index.d.ts +1 -2
  257. package/lib/cjs/utils/index.js +2 -2
  258. package/lib/cjs/utils/jsonlogic/operators.d.ts +1 -0
  259. package/lib/cjs/utils/jsonlogic/operators.js +265 -0
  260. package/lib/cjs/utils/utils.d.ts +1 -10
  261. package/lib/cjs/utils/utils.js +92 -175
  262. package/lib/cjs/widgets/CalendarWidget.js +49 -66
  263. package/lib/cjs/widgets/InputWidget.js +4 -6
  264. package/lib/cjs/widgets/index.js +1 -1
  265. package/lib/mjs/CDN.js +12 -12
  266. package/lib/mjs/Element.d.ts +2 -3
  267. package/lib/mjs/Element.js +23 -29
  268. package/lib/mjs/Embed.js +43 -77
  269. package/lib/mjs/EventEmitter.js +1 -1
  270. package/lib/mjs/Form.d.ts +341 -371
  271. package/lib/mjs/Form.js +126 -142
  272. package/lib/mjs/FormBuilder.d.ts +3 -3
  273. package/lib/mjs/FormBuilder.js +3 -2
  274. package/lib/mjs/Formio.js +23 -26
  275. package/lib/mjs/InlineEmbed.js +17 -23
  276. package/lib/mjs/PDF.d.ts +0 -1
  277. package/lib/mjs/PDF.js +15 -18
  278. package/lib/mjs/PDFBuilder.js +36 -51
  279. package/lib/mjs/Webform.d.ts +366 -8
  280. package/lib/mjs/Webform.js +251 -184
  281. package/lib/mjs/WebformBuilder.js +151 -224
  282. package/lib/mjs/Wizard.js +64 -94
  283. package/lib/mjs/WizardBuilder.js +19 -27
  284. package/lib/mjs/addons/FormioAddon.js +1 -1
  285. package/lib/mjs/addons/PasswordStrength/PasswordStrengthAddon.form.js +57 -59
  286. package/lib/mjs/addons/PasswordStrength/PasswordStrengthAddon.js +16 -24
  287. package/lib/mjs/addons/index.js +3 -3
  288. package/lib/mjs/components/Components.js +4 -0
  289. package/lib/mjs/components/_classes/component/Component.form.js +11 -11
  290. package/lib/mjs/components/_classes/component/Component.js +194 -313
  291. package/lib/mjs/components/_classes/component/editForm/Component.edit.addons.js +4 -2
  292. package/lib/mjs/components/_classes/component/editForm/Component.edit.api.js +5 -5
  293. package/lib/mjs/components/_classes/component/editForm/Component.edit.conditional.js +11 -9
  294. package/lib/mjs/components/_classes/component/editForm/Component.edit.data.d.ts +0 -37
  295. package/lib/mjs/components/_classes/component/editForm/Component.edit.data.js +25 -39
  296. package/lib/mjs/components/_classes/component/editForm/Component.edit.display.js +29 -47
  297. package/lib/mjs/components/_classes/component/editForm/Component.edit.layout.js +9 -9
  298. package/lib/mjs/components/_classes/component/editForm/Component.edit.logic.js +7 -5
  299. package/lib/mjs/components/_classes/component/editForm/Component.edit.validation.js +34 -37
  300. package/lib/mjs/components/_classes/component/editForm/utils.js +16 -12
  301. package/lib/mjs/components/_classes/componentModal/ComponentModal.js +2 -2
  302. package/lib/mjs/components/_classes/field/Field.js +2 -8
  303. package/lib/mjs/components/_classes/input/Input.js +23 -27
  304. package/lib/mjs/components/_classes/list/ListComponent.form.js +1 -1
  305. package/lib/mjs/components/_classes/list/ListComponent.js +18 -27
  306. package/lib/mjs/components/_classes/list/editForm/ListComponent.edit.data.js +9 -36
  307. package/lib/mjs/components/_classes/multivalue/Multivalue.js +13 -32
  308. package/lib/mjs/components/_classes/nested/NestedComponent.d.ts +1 -1
  309. package/lib/mjs/components/_classes/nested/NestedComponent.form.js +3 -3
  310. package/lib/mjs/components/_classes/nested/NestedComponent.js +33 -41
  311. package/lib/mjs/components/_classes/nestedarray/NestedArrayComponent.js +15 -20
  312. package/lib/mjs/components/_classes/nesteddata/NestedDataComponent.js +17 -19
  313. package/lib/mjs/components/address/Address.d.ts +0 -1
  314. package/lib/mjs/components/address/Address.js +49 -60
  315. package/lib/mjs/components/address/editForm/Address.edit.data.js +2 -2
  316. package/lib/mjs/components/address/editForm/Address.edit.display.js +2 -2
  317. package/lib/mjs/components/address/editForm/Address.edit.provider.js +11 -53
  318. package/lib/mjs/components/alert/Alert.js +16 -22
  319. package/lib/mjs/components/button/Button.form.js +1 -1
  320. package/lib/mjs/components/button/Button.js +42 -65
  321. package/lib/mjs/components/button/editForm/Button.edit.display.js +9 -49
  322. package/lib/mjs/components/checkbox/Checkbox.d.ts +1 -1
  323. package/lib/mjs/components/checkbox/Checkbox.form.js +3 -3
  324. package/lib/mjs/components/checkbox/Checkbox.js +21 -29
  325. package/lib/mjs/components/checkbox/editForm/Checkbox.edit.data.js +1 -1
  326. package/lib/mjs/components/checkbox/editForm/Checkbox.edit.display.js +3 -13
  327. package/lib/mjs/components/checkbox/editForm/Checkbox.edit.validation.js +2 -2
  328. package/lib/mjs/components/columns/Columns.form.js +1 -1
  329. package/lib/mjs/components/columns/Columns.js +12 -24
  330. package/lib/mjs/components/columns/editForm/Columns.edit.display.js +17 -17
  331. package/lib/mjs/components/container/Container.form.js +2 -2
  332. package/lib/mjs/components/container/Container.js +4 -6
  333. package/lib/mjs/components/container/editForm/Container.edit.data.js +3 -3
  334. package/lib/mjs/components/container/editForm/Container.edit.display.js +4 -4
  335. package/lib/mjs/components/content/Content.form.js +2 -4
  336. package/lib/mjs/components/content/Content.js +8 -10
  337. package/lib/mjs/components/content/editForm/Content.edit.display.js +10 -10
  338. package/lib/mjs/components/currency/Currency.form.js +3 -3
  339. package/lib/mjs/components/currency/Currency.js +10 -19
  340. package/lib/mjs/components/currency/editForm/Currency.edit.data.js +5 -5
  341. package/lib/mjs/components/currency/editForm/Currency.edit.display.js +8 -8
  342. package/lib/mjs/components/datagrid/DataGrid.form.js +3 -3
  343. package/lib/mjs/components/datagrid/DataGrid.js +41 -92
  344. package/lib/mjs/components/datagrid/editForm/DataGrid.edit.data.js +1 -1
  345. package/lib/mjs/components/datagrid/editForm/DataGrid.edit.display.js +14 -14
  346. package/lib/mjs/components/datagrid/editForm/DataGrid.edit.validation.js +3 -3
  347. package/lib/mjs/components/datamap/DataMap.form.js +2 -2
  348. package/lib/mjs/components/datamap/DataMap.js +33 -46
  349. package/lib/mjs/components/datamap/editForm/DataMap.edit.data.js +1 -1
  350. package/lib/mjs/components/datamap/editForm/DataMap.edit.display.js +8 -8
  351. package/lib/mjs/components/datetime/DateTime.form.js +5 -5
  352. package/lib/mjs/components/datetime/DateTime.js +16 -31
  353. package/lib/mjs/components/datetime/editForm/DateTime.edit.data.js +3 -4
  354. package/lib/mjs/components/datetime/editForm/DateTime.edit.date.js +10 -10
  355. package/lib/mjs/components/datetime/editForm/DateTime.edit.display.js +17 -22
  356. package/lib/mjs/components/datetime/editForm/DateTime.edit.time.js +5 -5
  357. package/lib/mjs/components/datetime/editForm/DateTime.edit.validation.js +3 -3
  358. package/lib/mjs/components/day/Day.form.js +5 -5
  359. package/lib/mjs/components/day/Day.js +58 -148
  360. package/lib/mjs/components/day/editForm/Day.edit.day.js +9 -13
  361. package/lib/mjs/components/day/editForm/Day.edit.display.js +7 -7
  362. package/lib/mjs/components/day/editForm/Day.edit.month.js +8 -12
  363. package/lib/mjs/components/day/editForm/Day.edit.validation.js +7 -7
  364. package/lib/mjs/components/day/editForm/Day.edit.year.js +8 -8
  365. package/lib/mjs/components/editgrid/EditGrid.form.js +2 -2
  366. package/lib/mjs/components/editgrid/EditGrid.js +92 -140
  367. package/lib/mjs/components/editgrid/editForm/EditGrid.edit.data.js +2 -2
  368. package/lib/mjs/components/editgrid/editForm/EditGrid.edit.display.js +2 -7
  369. package/lib/mjs/components/editgrid/editForm/EditGrid.edit.templates.js +16 -16
  370. package/lib/mjs/components/editgrid/editForm/EditGrid.edit.validation.js +3 -3
  371. package/lib/mjs/components/email/Email.js +4 -4
  372. package/lib/mjs/components/email/editForm/Email.edit.display.js +3 -3
  373. package/lib/mjs/components/email/editForm/Email.edit.validation.js +6 -6
  374. package/lib/mjs/components/fieldset/Fieldset.form.js +1 -1
  375. package/lib/mjs/components/fieldset/Fieldset.js +2 -2
  376. package/lib/mjs/components/fieldset/editForm/Fieldset.edit.display.js +8 -8
  377. package/lib/mjs/components/file/File.form.js +4 -4
  378. package/lib/mjs/components/file/File.js +89 -136
  379. package/lib/mjs/components/file/editForm/File.edit.display.js +5 -9
  380. package/lib/mjs/components/file/editForm/File.edit.file.js +53 -97
  381. package/lib/mjs/components/file/editForm/File.edit.validation.js +2 -2
  382. package/lib/mjs/components/form/Form.form.js +3 -3
  383. package/lib/mjs/components/form/Form.js +55 -68
  384. package/lib/mjs/components/form/editForm/Form.edit.data.js +3 -1
  385. package/lib/mjs/components/form/editForm/Form.edit.display.js +7 -6
  386. package/lib/mjs/components/form/editForm/Form.edit.form.js +8 -10
  387. package/lib/mjs/components/hidden/Hidden.form.js +4 -4
  388. package/lib/mjs/components/hidden/Hidden.js +2 -2
  389. package/lib/mjs/components/hidden/editForm/Hidden.edit.data.js +3 -3
  390. package/lib/mjs/components/hidden/editForm/Hidden.edit.display.js +10 -10
  391. package/lib/mjs/components/html/HTML.js +17 -23
  392. package/lib/mjs/components/html/editForm/HTML.edit.display.js +17 -17
  393. package/lib/mjs/components/html/editForm/HTML.edit.logic.js +2 -2
  394. package/lib/mjs/components/number/Number.form.js +3 -3
  395. package/lib/mjs/components/number/Number.js +12 -28
  396. package/lib/mjs/components/number/editForm/Number.edit.data.js +3 -3
  397. package/lib/mjs/components/number/editForm/Number.edit.display.js +4 -4
  398. package/lib/mjs/components/number/editForm/Number.edit.validation.js +9 -9
  399. package/lib/mjs/components/panel/Panel.form.js +1 -1
  400. package/lib/mjs/components/panel/Panel.js +2 -2
  401. package/lib/mjs/components/panel/editForm/Panel.edit.conditional.js +8 -6
  402. package/lib/mjs/components/panel/editForm/Panel.edit.display.js +29 -55
  403. package/lib/mjs/components/password/Password.form.js +3 -3
  404. package/lib/mjs/components/password/Password.js +2 -5
  405. package/lib/mjs/components/password/editForm/Password.edit.data.js +11 -11
  406. package/lib/mjs/components/password/editForm/Password.edit.display.js +3 -3
  407. package/lib/mjs/components/password/editForm/Password.edit.validation.js +3 -3
  408. package/lib/mjs/components/phonenumber/PhoneNumber.form.js +8 -8
  409. package/lib/mjs/components/phonenumber/PhoneNumber.js +3 -3
  410. package/lib/mjs/components/phonenumber/editForm/PhoneNumber.edit.validation.js +6 -6
  411. package/lib/mjs/components/radio/Radio.form.js +3 -3
  412. package/lib/mjs/components/radio/Radio.js +30 -59
  413. package/lib/mjs/components/radio/editForm/Radio.edit.data.js +9 -23
  414. package/lib/mjs/components/radio/editForm/Radio.edit.display.js +6 -6
  415. package/lib/mjs/components/radio/editForm/Radio.edit.validation.js +2 -2
  416. package/lib/mjs/components/recaptcha/ReCaptcha.form.js +5 -5
  417. package/lib/mjs/components/recaptcha/ReCaptcha.js +8 -10
  418. package/lib/mjs/components/recaptcha/editForm/ReCaptcha.edit.display.js +24 -24
  419. package/lib/mjs/components/select/Select.form.js +3 -3
  420. package/lib/mjs/components/select/Select.js +145 -240
  421. package/lib/mjs/components/select/editForm/Select.edit.data.d.ts +1 -1
  422. package/lib/mjs/components/select/editForm/Select.edit.data.js +57 -191
  423. package/lib/mjs/components/select/editForm/Select.edit.display.js +2 -2
  424. package/lib/mjs/components/select/editForm/Select.edit.validation.js +4 -4
  425. package/lib/mjs/components/selectboxes/SelectBoxes.form.js +3 -3
  426. package/lib/mjs/components/selectboxes/SelectBoxes.js +16 -30
  427. package/lib/mjs/components/selectboxes/editForm/SelectBoxes.edit.validation.js +5 -5
  428. package/lib/mjs/components/signature/Signature.form.js +3 -3
  429. package/lib/mjs/components/signature/Signature.js +16 -26
  430. package/lib/mjs/components/signature/editForm/Signature.edit.display.js +10 -19
  431. package/lib/mjs/components/survey/Survey.form.js +3 -3
  432. package/lib/mjs/components/survey/Survey.js +17 -30
  433. package/lib/mjs/components/survey/editForm/Survey.edit.data.js +11 -23
  434. package/lib/mjs/components/survey/editForm/Survey.edit.display.js +1 -1
  435. package/lib/mjs/components/survey/editForm/Survey.edit.validation.js +1 -1
  436. package/lib/mjs/components/table/Table.form.js +1 -1
  437. package/lib/mjs/components/table/Table.js +6 -8
  438. package/lib/mjs/components/table/editForm/Table.edit.display.js +22 -22
  439. package/lib/mjs/components/tabs/Tabs.form.js +1 -1
  440. package/lib/mjs/components/tabs/Tabs.js +9 -27
  441. package/lib/mjs/components/tabs/editForm/Tabs.edit.display.js +17 -21
  442. package/lib/mjs/components/tags/Tags.form.js +1 -1
  443. package/lib/mjs/components/tags/Tags.js +12 -28
  444. package/lib/mjs/components/tags/editForm/Tags.edit.data.js +7 -7
  445. package/lib/mjs/components/textarea/TextArea.form.js +2 -2
  446. package/lib/mjs/components/textarea/TextArea.js +51 -75
  447. package/lib/mjs/components/textarea/editForm/TextArea.edit.display.js +72 -96
  448. package/lib/mjs/components/textarea/editForm/TextArea.edit.validation.js +3 -3
  449. package/lib/mjs/components/textfield/TextField.form.js +3 -3
  450. package/lib/mjs/components/textfield/TextField.js +23 -34
  451. package/lib/mjs/components/textfield/editForm/TextField.edit.data.js +13 -15
  452. package/lib/mjs/components/textfield/editForm/TextField.edit.display.js +21 -31
  453. package/lib/mjs/components/textfield/editForm/TextField.edit.validation.js +6 -6
  454. package/lib/mjs/components/time/Time.js +10 -17
  455. package/lib/mjs/components/time/editForm/Time.edit.display.js +2 -2
  456. package/lib/mjs/components/unknown/Unknown.form.js +5 -5
  457. package/lib/mjs/components/unknown/Unknown.js +2 -2
  458. package/lib/mjs/components/unknown/editForm/Unknown.edit.display.js +3 -3
  459. package/lib/mjs/components/url/Url.form.js +3 -3
  460. package/lib/mjs/components/url/Url.js +2 -2
  461. package/lib/mjs/components/url/editForm/Url.edit.display.js +3 -3
  462. package/lib/mjs/components/url/editForm/Url.edit.validation.js +1 -1
  463. package/lib/mjs/components/well/Well.form.js +1 -1
  464. package/lib/mjs/components/well/Well.js +2 -2
  465. package/lib/mjs/components/well/editForm/Well.edit.display.js +10 -10
  466. package/lib/mjs/formio.form.d.ts +1 -2
  467. package/lib/mjs/formio.form.js +8 -10
  468. package/lib/mjs/i18n.d.ts +0 -4
  469. package/lib/mjs/i18n.js +3 -7
  470. package/lib/mjs/package.json +1 -1
  471. package/lib/mjs/pdf.image.d.ts +2 -0
  472. package/lib/mjs/pdf.image.js +94 -0
  473. package/lib/mjs/providers/address/AddressProvider.js +5 -8
  474. package/lib/mjs/providers/address/GoogleAddressProvider.d.ts +3 -3
  475. package/lib/mjs/providers/address/GoogleAddressProvider.js +13 -24
  476. package/lib/mjs/providers/processor/fileProcessor.js +1 -3
  477. package/lib/mjs/providers/storage/azure.js +2 -5
  478. package/lib/mjs/providers/storage/dropbox.js +5 -4
  479. package/lib/mjs/providers/storage/googleDrive.js +4 -3
  480. package/lib/mjs/providers/storage/index.js +1 -1
  481. package/lib/mjs/providers/storage/indexeddb.js +6 -16
  482. package/lib/mjs/providers/storage/s3.js +8 -19
  483. package/lib/mjs/providers/storage/uploadAdapter.js +11 -17
  484. package/lib/mjs/providers/storage/url.js +11 -13
  485. package/lib/mjs/providers/storage/xhr.js +9 -17
  486. package/lib/mjs/templates/index.js +1 -1
  487. package/lib/mjs/translations/en.d.ts +2 -0
  488. package/lib/mjs/translations/en.js +9 -7
  489. package/lib/mjs/utils/ChoicesWrapper.js +2 -2
  490. package/lib/mjs/utils/builder.js +7 -31
  491. package/lib/mjs/utils/calendarUtils.js +5 -7
  492. package/lib/mjs/utils/conditionOperators/ConditionOperator.js +1 -1
  493. package/lib/mjs/utils/conditionOperators/DateGreaterThan.js +5 -16
  494. package/lib/mjs/utils/conditionOperators/IsEmptyValue.js +1 -3
  495. package/lib/mjs/utils/conditionOperators/IsEqualTo.js +6 -10
  496. package/lib/mjs/utils/conditionOperators/index.js +1 -1
  497. package/lib/mjs/utils/formUtils.js +2 -2
  498. package/lib/mjs/utils/i18n.js +1 -7
  499. package/lib/mjs/utils/index.d.ts +1 -2
  500. package/lib/mjs/utils/index.js +3 -3
  501. package/lib/mjs/utils/jsonlogic/operators.d.ts +1 -0
  502. package/lib/mjs/utils/jsonlogic/operators.js +262 -0
  503. package/lib/mjs/utils/utils.d.ts +1 -10
  504. package/lib/mjs/utils/utils.js +91 -178
  505. package/lib/mjs/widgets/CalendarWidget.js +50 -67
  506. package/lib/mjs/widgets/InputWidget.js +4 -6
  507. package/lib/mjs/widgets/index.js +1 -1
  508. package/package.json +3 -3
  509. package/lib/cjs/translations/de.d.ts +0 -80
  510. package/lib/cjs/translations/de.js +0 -81
  511. package/lib/mjs/translations/de.d.ts +0 -80
  512. package/lib/mjs/translations/de.js +0 -79
@@ -3,7 +3,7 @@ import Component from './components/_classes/component/Component';
3
3
  import tippy from 'tippy.js';
4
4
  import Components from './components/Components';
5
5
  import { Formio } from './Formio';
6
- import { fastCloneDeep, bootstrapVersion, getArrayFromComponentPath, getStringFromComponentPath, eachComponent, getComponent, componentInfo, } from './utils';
6
+ import { fastCloneDeep, bootstrapVersion, getArrayFromComponentPath, getStringFromComponentPath, eachComponent, getComponent, componentInfo } from './utils';
7
7
  import BuilderUtils from './utils/builder';
8
8
  import _ from 'lodash';
9
9
  import autoScroll from 'dom-autoscroller';
@@ -15,6 +15,7 @@ if (typeof window !== 'undefined' && typeof window.global === 'undefined') {
15
15
  }
16
16
  import dragula from 'dragula';
17
17
  export default class WebformBuilder extends Component {
18
+ // eslint-disable-next-line max-statements
18
19
  constructor() {
19
20
  let element, options;
20
21
  if (arguments[0] instanceof HTMLElement || arguments[1]) {
@@ -61,17 +62,17 @@ export default class WebformBuilder extends Component {
61
62
  }
62
63
  }
63
64
  this.groupOrder = this.groupOrder
64
- .filter((group) => group && !group.ignore)
65
+ .filter(group => group && !group.ignore)
65
66
  .sort((a, b) => a.weight - b.weight);
66
- const defaultOpenedGroup = this.groupOrder.find((x) => x.key !== 'basic' && x.default);
67
+ const defaultOpenedGroup = this.groupOrder.find(x => x.key !== 'basic' && x.default);
67
68
  if (defaultOpenedGroup) {
68
- this.groupOrder.forEach((x) => {
69
+ this.groupOrder.forEach(x => {
69
70
  if ('default' in x && x.key !== defaultOpenedGroup.key) {
70
71
  x.default = false;
71
72
  }
72
73
  });
73
74
  }
74
- this.groupOrder = this.groupOrder.map((group) => group.key);
75
+ this.groupOrder = this.groupOrder.map(group => group.key);
75
76
  for (const type in Components.components) {
76
77
  const component = Components.components[type];
77
78
  if (component.builderInfo && component.builderInfo.schema) {
@@ -89,7 +90,9 @@ export default class WebformBuilder extends Component {
89
90
  for (const key in info.components) {
90
91
  const compKey = group === 'resource' ? `component-${key}` : key;
91
92
  let comp = info.components[compKey];
92
- if (comp === true && Components.components[key] && Components.components[key].builderInfo) {
93
+ if (comp === true &&
94
+ Components.components[key] &&
95
+ Components.components[key].builderInfo) {
93
96
  comp = Components.components[key].builderInfo;
94
97
  }
95
98
  if (comp && comp.schema) {
@@ -112,8 +115,7 @@ export default class WebformBuilder extends Component {
112
115
  // The main webform shouldn't have this class as it adds extra styles.
113
116
  return template;
114
117
  }
115
- if ((this.options.disabled && this.options.disabled.includes(self.key)) ||
116
- self.parent.noDragDrop) {
118
+ if (this.options.disabled && this.options.disabled.includes(self.key) || self.parent.noDragDrop) {
117
119
  return html;
118
120
  }
119
121
  return this.renderTemplate('builderComponent', {
@@ -122,23 +124,20 @@ export default class WebformBuilder extends Component {
122
124
  childComponent: component,
123
125
  design: self?.options?.design,
124
126
  editJson: self?.options?.editJson,
125
- editComponent: this.hasEditTabs(component.type),
127
+ editComponent: this.hasEditTabs(component.type)
126
128
  });
127
129
  };
128
130
  this.options.hooks.renderComponents = (html, { components, self }) => {
129
131
  // if Datagrid and already has a component, don't make it droppable.
130
- if ((self.type === 'datagrid' && components.length > 0) || self.noDragDrop) {
132
+ if (self.type === 'datagrid' && components.length > 0 || self.noDragDrop) {
131
133
  return html;
132
134
  }
133
135
  if (!components ||
134
136
  (!components.length && !components.nodrop) ||
135
- (self.type === 'form' &&
136
- components.length <= 1 &&
137
- (components.length === 0 || components[0].type === 'button'))) {
138
- html =
139
- this.renderTemplate('builderPlaceholder', {
140
- position: 0,
141
- }) + html;
137
+ (self.type === 'form' && components.length <= 1 && (components.length === 0 || components[0].type === 'button'))) {
138
+ html = this.renderTemplate('builderPlaceholder', {
139
+ position: 0
140
+ }) + html;
142
141
  }
143
142
  return this.renderTemplate('builderComponents', {
144
143
  key: self.key,
@@ -175,8 +174,7 @@ export default class WebformBuilder extends Component {
175
174
  this.dragula.containers.push(containerElement);
176
175
  }
177
176
  // If this is an existing datagrid element, don't make it draggable.
178
- if ((component.type === 'datagrid' || component.type === 'datamap') &&
179
- components.length > 0) {
177
+ if ((component.type === 'datagrid' || component.type === 'datamap') && components.length > 0) {
180
178
  return element;
181
179
  }
182
180
  // Since we added a wrapper, need to return the original element so that we can find the components inside it.
@@ -198,27 +196,19 @@ export default class WebformBuilder extends Component {
198
196
  params: {
199
197
  type: 'resource',
200
198
  limit: 1000000,
201
- select: '_id,title,name,components',
202
- },
199
+ select: '_id,title,name,components'
200
+ }
203
201
  };
204
202
  if (this.options && this.options.resourceTag) {
205
- query.params.tags = [
206
- this.options.resourceTag,
207
- ];
203
+ query.params.tags = [this.options.resourceTag];
208
204
  }
209
205
  else if (!this.options || !this.options.hasOwnProperty('resourceTag')) {
210
- query.params.tags = [
211
- 'builder',
212
- ];
206
+ query.params.tags = ['builder'];
213
207
  }
214
208
  const formio = new Formio(Formio.projectUrl);
215
209
  const isResourcesDisabled = this.options.builder && this.options.builder.resource === false;
216
- formio
217
- .loadProject()
218
- .then((project) => {
219
- if (project &&
220
- (_.get(project, 'settings.addConfigToForms', false) ||
221
- _.get(project, 'addConfigToForms', false))) {
210
+ formio.loadProject().then((project) => {
211
+ if (project && (_.get(project, 'settings.addConfigToForms', false) || _.get(project, 'addConfigToForms', false))) {
222
212
  const config = project.config || {};
223
213
  this.options.formConfig = config;
224
214
  const pathToFormConfig = 'webform._form.config';
@@ -227,13 +217,13 @@ export default class WebformBuilder extends Component {
227
217
  _.set(this, pathToFormConfig, config);
228
218
  }
229
219
  }
230
- })
231
- .catch((err) => {
220
+ }).catch((err) => {
232
221
  console.warn(`Could not load project settings: ${err.message || err}`);
233
222
  });
234
223
  if (!formio.noProject && !isResourcesDisabled && formio.formsUrl) {
235
224
  const resourceOptions = this.options.builder && this.options.builder.resource;
236
- formio.loadForms(query).then((resources) => {
225
+ formio.loadForms(query)
226
+ .then((resources) => {
237
227
  if (resources.length) {
238
228
  this.builder.resource = {
239
229
  title: resourceOptions ? resourceOptions.title : 'Existing Resource Fields',
@@ -241,7 +231,7 @@ export default class WebformBuilder extends Component {
241
231
  weight: resourceOptions ? resourceOptions.weight : 50,
242
232
  subgroups: [],
243
233
  components: [],
244
- componentOrder: [],
234
+ componentOrder: []
245
235
  };
246
236
  this.groups.resource = {
247
237
  title: resourceOptions ? resourceOptions.title : 'Existing Resource Fields',
@@ -249,7 +239,7 @@ export default class WebformBuilder extends Component {
249
239
  weight: resourceOptions ? resourceOptions.weight : 50,
250
240
  subgroups: [],
251
241
  components: [],
252
- componentOrder: [],
242
+ componentOrder: []
253
243
  };
254
244
  if (!this.groupOrder.includes('resource')) {
255
245
  this.groupOrder.push('resource');
@@ -304,26 +294,23 @@ export default class WebformBuilder extends Component {
304
294
  label: component.label,
305
295
  key: component.key,
306
296
  lockKey: true,
307
- source: !this.options.noSource ? resource._id : undefined,
308
- isNew: true,
309
- },
297
+ source: (!this.options.noSource ? resource._id : undefined),
298
+ isNew: true
299
+ }
310
300
  });
311
301
  }, true);
312
302
  this.groups.resource.subgroups.push(subgroup);
313
303
  });
314
- this.triggerRedraw();
304
+ this.triggerRedraw?.();
315
305
  }
316
306
  attachTooltip(component, title) {
317
307
  return tippy(component, {
318
308
  allowHTML: true,
319
309
  trigger: 'mouseenter focus',
320
310
  placement: 'top',
321
- delay: [
322
- 200,
323
- 0,
324
- ],
311
+ delay: [200, 0],
325
312
  zIndex: 10000,
326
- content: title,
313
+ content: title
327
314
  });
328
315
  }
329
316
  attachComponent(element, component) {
@@ -338,7 +325,7 @@ export default class WebformBuilder extends Component {
338
325
  moveComponent: 'single',
339
326
  copyComponent: 'single',
340
327
  pasteComponent: 'single',
341
- editJson: 'single',
328
+ editJson: 'single'
342
329
  });
343
330
  if (component.refs.copyComponent) {
344
331
  this.attachTooltip(component.refs.copyComponent, this.t('Copy'));
@@ -362,9 +349,7 @@ export default class WebformBuilder extends Component {
362
349
  const parent = this.getParentElement(element);
363
350
  if (component.refs.editComponent) {
364
351
  this.attachTooltip(component.refs.editComponent, this.t('Edit'));
365
- component.addEventListener(component.refs.editComponent, 'click', () => this.editComponent(component.schema, parent, false, false, component.component, {
366
- inDataGrid: component.isInDataGrid,
367
- }));
352
+ component.addEventListener(component.refs.editComponent, 'click', () => this.editComponent(component.schema, parent, false, false, component.component, { inDataGrid: component.isInDataGrid }));
368
353
  }
369
354
  if (component.refs.editJson) {
370
355
  this.attachTooltip(component.refs.editJson, this.t('Edit JSON'));
@@ -380,7 +365,7 @@ export default class WebformBuilder extends Component {
380
365
  this.webform = new Webform(this.element, options);
381
366
  if (this.element) {
382
367
  this.loadRefs(this.element, {
383
- form: 'single',
368
+ form: 'single'
384
369
  });
385
370
  if (this.refs.form) {
386
371
  this.webform.element = this.refs.form;
@@ -404,20 +389,20 @@ export default class WebformBuilder extends Component {
404
389
  },
405
390
  advanced: {
406
391
  title: 'Advanced',
407
- weight: 10,
392
+ weight: 10
408
393
  },
409
394
  layout: {
410
395
  title: 'Layout',
411
- weight: 20,
396
+ weight: 20
412
397
  },
413
398
  data: {
414
399
  title: 'Data',
415
- weight: 30,
400
+ weight: 30
416
401
  },
417
402
  premium: {
418
403
  title: 'Premium',
419
- weight: 40,
420
- },
404
+ weight: 40
405
+ }
421
406
  };
422
407
  }
423
408
  redraw() {
@@ -454,10 +439,7 @@ export default class WebformBuilder extends Component {
454
439
  const componentSchema = component.component;
455
440
  // If the current component is the namespace, we don't need to find it again.
456
441
  if (namespaceKey === component.key) {
457
- return [
458
- ...componentSchema.components,
459
- componentSchema,
460
- ];
442
+ return [...componentSchema.components, componentSchema];
461
443
  }
462
444
  // Get the namespace component so we have the original object.
463
445
  const namespaceComponent = getComponent(this.form.components, namespaceKey, true);
@@ -469,16 +451,7 @@ export default class WebformBuilder extends Component {
469
451
  return null;
470
452
  }
471
453
  // Some components are their own namespace.
472
- if ([
473
- 'address',
474
- 'container',
475
- 'datagrid',
476
- 'editgrid',
477
- 'dynamicWizard',
478
- 'tree',
479
- ].includes(component.type) ||
480
- component.tree ||
481
- component.arrayTree) {
454
+ if (['address', 'container', 'datagrid', 'editgrid', 'dynamicWizard', 'tree'].includes(component.type) || component.tree || component.arrayTree) {
482
455
  return component.key;
483
456
  }
484
457
  // Anything else, keep going up.
@@ -498,7 +471,7 @@ export default class WebformBuilder extends Component {
498
471
  group,
499
472
  groupKey: group.key,
500
473
  groupId: `group-container-${groupKey}`,
501
- subgroups: [],
474
+ subgroups: []
502
475
  })),
503
476
  keyboardActionsEnabled: this.keyboardActionsEnabled,
504
477
  })),
@@ -517,7 +490,7 @@ export default class WebformBuilder extends Component {
517
490
  sidebar: 'single',
518
491
  'sidebar-search': 'single',
519
492
  'sidebar-groups': 'single',
520
- container: 'multiple',
493
+ 'container': 'multiple',
521
494
  'sidebar-anchor': 'multiple',
522
495
  'sidebar-group': 'multiple',
523
496
  'sidebar-container': 'multiple',
@@ -543,15 +516,11 @@ export default class WebformBuilder extends Component {
543
516
  };
544
517
  const hideShow = (group, forceShow, toggle = false) => {
545
518
  if (forceShow || (toggle && !Array.from(group.classList).includes('show'))) {
546
- group.classList.add([
547
- 'show',
548
- ]);
519
+ group.classList.add(['show']);
549
520
  group.style.display = 'inherit';
550
521
  }
551
522
  else {
552
- group.classList.remove([
553
- 'show',
554
- ]);
523
+ group.classList.remove(['show']);
555
524
  group.style.display = 'none';
556
525
  }
557
526
  };
@@ -568,9 +537,7 @@ export default class WebformBuilder extends Component {
568
537
  const openByDefault = getAttribute(group, 'default') === 'true';
569
538
  const groupId = group.getAttribute('id').slice('group-'.length);
570
539
  const groupParent = getAttribute(group, 'parent').slice('#builder-sidebar-'.length);
571
- if ((openByDefault && groupParent === clickedId) ||
572
- groupId === clickedParentId ||
573
- groupIndex === index) {
540
+ if (((openByDefault && groupParent === clickedId) || groupId === clickedParentId || groupIndex === index)) {
574
541
  hideShow(group, false, true);
575
542
  }
576
543
  });
@@ -595,15 +562,13 @@ export default class WebformBuilder extends Component {
595
562
  }
596
563
  const drake = this.dragula;
597
564
  if (this.refs.form) {
598
- autoScroll([
599
- window,
600
- ], {
565
+ autoScroll([window], {
601
566
  margin: 20,
602
567
  maxSpeed: 6,
603
568
  scrollWhenOutside: true,
604
569
  autoScroll: function () {
605
570
  return this.down && drake?.dragging;
606
- },
571
+ }
607
572
  });
608
573
  return this.webform.attach(this.refs.form);
609
574
  }
@@ -638,29 +603,30 @@ export default class WebformBuilder extends Component {
638
603
  };
639
604
  const filterGroupOrder = (groupOrder, searchValue) => {
640
605
  const result = _.cloneDeep(groupOrder);
641
- return result.filter((key) => filterGroupBy(this.groups[key], searchValue));
606
+ return result.filter(key => filterGroupBy(this.groups[key], searchValue));
642
607
  };
643
608
  const filterSubgroups = (groups, searchValue) => {
644
609
  const result = _.clone(groups);
645
610
  return result
646
- .map((subgroup) => filterGroupBy(subgroup, searchValue))
647
- .filter((subgroup) => !_.isNull(subgroup));
611
+ .map(subgroup => filterGroupBy(subgroup, searchValue))
612
+ .filter(subgroup => !_.isNull(subgroup));
648
613
  };
649
- const toTemplate = (groupKey) => {
614
+ const toTemplate = groupKey => {
650
615
  return {
651
616
  group: filterGroupBy(this.groups[groupKey], searchValue),
652
617
  groupKey,
653
618
  groupId: sidebar.id || sidebarGroups.id,
654
- subgroups: filterSubgroups(this.groups[groupKey].subgroups, searchValue).map((group) => this.renderTemplate('builderSidebarGroup', {
619
+ subgroups: filterSubgroups(this.groups[groupKey].subgroups, searchValue)
620
+ .map((group) => this.renderTemplate('builderSidebarGroup', {
655
621
  group,
656
622
  groupKey: group.key,
657
623
  groupId: `group-container-${groupKey}`,
658
- subgroups: [],
624
+ subgroups: []
659
625
  })),
660
626
  };
661
627
  };
662
628
  sidebarGroups.innerHTML = filterGroupOrder(this.groupOrder, searchValue)
663
- .map((groupKey) => this.renderTemplate('builderSidebarGroup', toTemplate(groupKey)))
629
+ .map(groupKey => this.renderTemplate('builderSidebarGroup', toTemplate(groupKey)))
664
630
  .join('');
665
631
  this.loadRefs(this.element, {
666
632
  'sidebar-groups': 'single',
@@ -670,7 +636,7 @@ export default class WebformBuilder extends Component {
670
636
  });
671
637
  this.updateDragAndDrop();
672
638
  if (searchValue === '') {
673
- this.triggerRedraw();
639
+ this.triggerRedraw?.();
674
640
  }
675
641
  }
676
642
  orderComponents(groupInfo, foundComponents) {
@@ -678,10 +644,10 @@ export default class WebformBuilder extends Component {
678
644
  const isResource = groupInfo.key.indexOf('resource-') === 0;
679
645
  if (components) {
680
646
  groupInfo.componentOrder = Object.keys(components)
681
- .map((key) => components[key])
682
- .filter((component) => component && !component.ignore && !component.ignoreForForm)
647
+ .map(key => components[key])
648
+ .filter(component => component && !component.ignore && !component.ignoreForForm)
683
649
  .sort((a, b) => a.weight - b.weight)
684
- .map((component) => (isResource ? `component-${component.key}` : component.key));
650
+ .map(component => isResource ? `component-${component.key}` : component.key);
685
651
  }
686
652
  }
687
653
  updateDragAndDrop() {
@@ -697,9 +663,7 @@ export default class WebformBuilder extends Component {
697
663
  if (this.dragula) {
698
664
  this.dragula.destroy();
699
665
  }
700
- const containersArray = Array.prototype.slice
701
- .call(this.refs['sidebar-container'])
702
- .filter((item) => {
666
+ const containersArray = Array.prototype.slice.call(this.refs['sidebar-container']).filter(item => {
703
667
  return item.id !== 'group-container-resource';
704
668
  });
705
669
  if (!dragula) {
@@ -708,8 +672,8 @@ export default class WebformBuilder extends Component {
708
672
  this.dragula = dragula(containersArray, {
709
673
  moves(el) {
710
674
  let moves = true;
711
- const list = Array.from(el.classList).filter((item) => item.indexOf('formio-component-') === 0);
712
- list.forEach((item) => {
675
+ const list = Array.from(el.classList).filter(item => item.indexOf('formio-component-') === 0);
676
+ list.forEach(item => {
713
677
  const key = item.slice('formio-component-'.length);
714
678
  if (options.disabled && options.disabled.includes(key)) {
715
679
  moves = false;
@@ -725,7 +689,7 @@ export default class WebformBuilder extends Component {
725
689
  },
726
690
  accepts(el, target) {
727
691
  return !el.contains(target) && !target.classList.contains('no-drop');
728
- },
692
+ }
729
693
  }).on('drop', (element, target, source, sibling) => this.onDrop(element, target, source, sibling));
730
694
  }
731
695
  detach() {
@@ -759,8 +723,7 @@ export default class WebformBuilder extends Component {
759
723
  info = fastCloneDeep(groupComponents[key].schema);
760
724
  }
761
725
  }
762
- else if (group === 'searchFields') {
763
- //Search components go into this group
726
+ else if (group === 'searchFields') { //Search components go into this group
764
727
  const resourceGroups = this.groups.resource.subgroups;
765
728
  for (let ix = 0; ix < resourceGroups.length; ix++) {
766
729
  const resourceGroup = resourceGroups[ix];
@@ -788,21 +751,22 @@ export default class WebformBuilder extends Component {
788
751
  let tabIndex = 0;
789
752
  switch (parent.type) {
790
753
  case 'table':
791
- tableRowIndex = _.findIndex(parent.rows, (row) => row.some((column) => column.components.some((comp) => comp.key === component.key)));
792
- tableColumnIndex = _.findIndex(parent.rows[tableRowIndex], (column) => column.components.some((comp) => comp.key === component.key));
754
+ tableRowIndex = _.findIndex(parent.rows, row => row.some(column => column.components.some(comp => comp.key === component.key)));
755
+ tableColumnIndex = _.findIndex(parent.rows[tableRowIndex], (column => column.components.some(comp => comp.key === component.key)));
793
756
  path = `rows[${tableRowIndex}][${tableColumnIndex}].components`;
794
757
  break;
795
758
  case 'columns':
796
- columnIndex = _.findIndex(parent.columns, (column) => column.components.some((comp) => comp.key === component.key));
759
+ columnIndex = _.findIndex(parent.columns, column => column.components.some(comp => comp.key === component.key));
797
760
  path = `columns[${columnIndex}].components`;
798
761
  break;
799
762
  case 'tabs':
800
- tabIndex = _.findIndex(parent.components, (tab) => tab.components.some((comp) => comp.key === component.key));
763
+ tabIndex = _.findIndex(parent.components, tab => tab.components.some(comp => comp.key === component.key));
801
764
  path = `components[${tabIndex}].components`;
802
765
  break;
803
766
  }
804
767
  return path;
805
768
  }
769
+ /* eslint-disable max-statements */
806
770
  onDrop(element, target, source, sibling) {
807
771
  if (!target) {
808
772
  return;
@@ -837,7 +801,7 @@ export default class WebformBuilder extends Component {
837
801
  return;
838
802
  }
839
803
  // Show an error if siblings are disabled for a component and such a component already exists.
840
- const compKey = group === 'resource' ? `component-${key}` : key;
804
+ const compKey = (group === 'resource') ? `component-${key}` : key;
841
805
  const draggableComponent = this.groups[group]?.components[compKey] || {};
842
806
  if (draggableComponent.disableSiblings) {
843
807
  let isCompAlreadyExists = false;
@@ -876,10 +840,8 @@ export default class WebformBuilder extends Component {
876
840
  if (target.formioContainer) {
877
841
  if (sibling) {
878
842
  if (!sibling.getAttribute('data-noattach')) {
879
- index = _.findIndex(target.formioContainer, {
880
- key: _.get(sibling, 'formioComponent.component.key'),
881
- });
882
- index = index === -1 ? 0 : index;
843
+ index = _.findIndex(target.formioContainer, { key: _.get(sibling, 'formioComponent.component.key') });
844
+ index = (index === -1) ? 0 : index;
883
845
  }
884
846
  else {
885
847
  index = sibling.getAttribute('data-position');
@@ -901,11 +863,11 @@ export default class WebformBuilder extends Component {
901
863
  parent.addChildComponent(info, element, target, source, sibling);
902
864
  }
903
865
  const componentInDataGrid = parent.type === 'datagrid';
904
- if (isNew &&
905
- !this.options.noNewEdit &&
906
- !info.noNewEdit &&
907
- this.hasEditTabs(info.type) &&
908
- !(this.options.design && info.type === 'reviewpage')) {
866
+ if (isNew
867
+ && !this.options.noNewEdit
868
+ && !info.noNewEdit
869
+ && this.hasEditTabs(info.type)
870
+ && !(this.options.design && info.type === 'reviewpage')) {
909
871
  this.editComponent(info, target, isNew, null, null, { inDataGrid: componentInDataGrid });
910
872
  }
911
873
  // Only rebuild the parts needing to be rebuilt.
@@ -968,12 +930,12 @@ export default class WebformBuilder extends Component {
968
930
  block: false,
969
931
  action: 'submit',
970
932
  disableOnInvalid: true,
971
- theme: 'primary',
933
+ theme: 'primary'
972
934
  });
973
935
  }
974
936
  if (this.webform) {
975
937
  const shouldRebuild = !this.webform.form.components ||
976
- form.components.length !== this.webform.form.components.length;
938
+ (form.components.length !== this.webform.form.components.length);
977
939
  return this.webform.setForm(form, { keepAsReference: true }).then(() => {
978
940
  if (this.refs.form) {
979
941
  this.builderHeight = this.refs.form.offsetHeight;
@@ -990,7 +952,7 @@ export default class WebformBuilder extends Component {
990
952
  //populate isEnabled for captcha form settings
991
953
  let isCaptchaEnabled = false;
992
954
  if (this.form.components) {
993
- eachComponent(form.components, (component) => {
955
+ eachComponent(form.components, component => {
994
956
  if (isCaptchaEnabled) {
995
957
  return;
996
958
  }
@@ -1017,8 +979,7 @@ export default class WebformBuilder extends Component {
1017
979
  (Array.isArray(component.rows) && component.rows.length) ||
1018
980
  (Array.isArray(component.columns) && component.columns.length));
1019
981
  if (this.options.alwaysConfirmComponentRemoval || removingComponentsGroup) {
1020
- const message = removingComponentsGroup
1021
- ? 'Removing this component will also remove all of its children. Are you sure you want to do this?'
982
+ const message = removingComponentsGroup ? 'Removing this component will also remove all of its children. Are you sure you want to do this?'
1022
983
  : 'Are you sure you want to remove this component?';
1023
984
  remove = window.confirm(this.t(message));
1024
985
  }
@@ -1037,7 +998,7 @@ export default class WebformBuilder extends Component {
1037
998
  if (component.input && componentInstance && parent.formioComponent) {
1038
999
  const parentDefaultValue = _.get(parent.formioComponent, 'component.defaultValue', null);
1039
1000
  if (Array.isArray(parentDefaultValue)) {
1040
- parentDefaultValue.forEach((v) => _.unset(v, componentInstance.key));
1001
+ parentDefaultValue.forEach(v => _.unset(v, componentInstance.key));
1041
1002
  }
1042
1003
  else if (typeof parentDefaultValue === 'object') {
1043
1004
  _.unset(parentDefaultValue, componentInstance.key);
@@ -1062,29 +1023,23 @@ export default class WebformBuilder extends Component {
1062
1023
  }
1063
1024
  }
1064
1025
  updateComponent(component, changed) {
1065
- const sanitizeConfig = _.get(this.webform, 'form.settings.sanitizeConfig') ||
1066
- _.get(this.webform, 'form.globalSettings.sanitizeConfig');
1026
+ const sanitizeConfig = _.get(this.webform, 'form.settings.sanitizeConfig') || _.get(this.webform, 'form.globalSettings.sanitizeConfig');
1067
1027
  // Update the preview.
1068
1028
  if (this.preview) {
1069
1029
  this.preview.form = {
1070
- components: [
1071
- _.omit({ ...component }, [
1030
+ components: [_.omit({ ...component }, [
1072
1031
  'hidden',
1073
1032
  'conditional',
1074
1033
  'calculateValue',
1075
1034
  'logic',
1076
1035
  'autofocus',
1077
1036
  'customConditional',
1078
- ]),
1079
- ],
1037
+ ])],
1080
1038
  config: this.options.formConfig || {},
1081
1039
  sanitizeConfig,
1082
1040
  };
1083
- const fieldsToRemoveDoubleQuotes = [
1084
- 'label',
1085
- 'tooltip',
1086
- ];
1087
- this.preview.form.components.forEach((component) => this.replaceDoubleQuotes(component, fieldsToRemoveDoubleQuotes));
1041
+ const fieldsToRemoveDoubleQuotes = ['label', 'tooltip'];
1042
+ this.preview.form.components.forEach(component => this.replaceDoubleQuotes(component, fieldsToRemoveDoubleQuotes));
1088
1043
  const previewElement = this.componentEdit.querySelector(`[${this._referenceAttributeName}="preview"]`);
1089
1044
  if (previewElement) {
1090
1045
  this.setContent(previewElement, this.preview.render(), null, sanitizeConfig);
@@ -1094,11 +1049,8 @@ export default class WebformBuilder extends Component {
1094
1049
  // Change the "default value" field to be reflective of this component.
1095
1050
  const defaultValueComponent = getComponent(this.editForm.components, 'defaultValue', true);
1096
1051
  if (defaultValueComponent && component.type !== 'hidden') {
1097
- const defaultChanged = changed &&
1098
- ((changed.component && changed.component.key === 'defaultValue') ||
1099
- (changed.instance &&
1100
- defaultValueComponent.hasComponent &&
1101
- defaultValueComponent.hasComponent(changed.instance)));
1052
+ const defaultChanged = changed && ((changed.component && changed.component.key === 'defaultValue')
1053
+ || (changed.instance && defaultValueComponent.hasComponent && defaultValueComponent.hasComponent(changed.instance)));
1102
1054
  if (!defaultChanged) {
1103
1055
  _.assign(defaultValueComponent.component, _.omit({ ...component }, [
1104
1056
  'key',
@@ -1127,11 +1079,11 @@ export default class WebformBuilder extends Component {
1127
1079
  if (!this.originalDefaultValue) {
1128
1080
  this.originalDefaultValue = fastCloneDeep(defaultValueComponent.component);
1129
1081
  }
1130
- eachComponent(defaultValueComponent.component.components, (comp) => {
1082
+ eachComponent(defaultValueComponent.component.components, (comp => {
1131
1083
  if (comp.validate?.required) {
1132
1084
  comp.validate.required = false;
1133
1085
  }
1134
- });
1086
+ }));
1135
1087
  }
1136
1088
  const parentComponent = defaultValueComponent.parent;
1137
1089
  let tabIndex = -1;
@@ -1186,15 +1138,9 @@ export default class WebformBuilder extends Component {
1186
1138
  const isLayout = componentInfo(comp).layout;
1187
1139
  if (!isLayout) {
1188
1140
  if (keys.has(paths.dataPath)) {
1189
- const onlyRadioCheckboxes = repeatablePaths[paths.dataPath]?.onlyRadioCheckboxes === false
1190
- ? false
1191
- : isRadioCheckbox;
1141
+ const onlyRadioCheckboxes = repeatablePaths[paths.dataPath]?.onlyRadioCheckboxes === false ? false : isRadioCheckbox;
1192
1142
  repeatablePaths[paths.dataPath] = {
1193
- comps: [
1194
- ...(repeatablePaths[paths.dataPath]?.comps || []),
1195
- keys.get(paths.dataPath),
1196
- comp,
1197
- ],
1143
+ comps: [...(repeatablePaths[paths.dataPath]?.comps || []), keys.get(paths.dataPath), comp],
1198
1144
  onlyRadioCheckboxes,
1199
1145
  };
1200
1146
  }
@@ -1239,9 +1185,7 @@ export default class WebformBuilder extends Component {
1239
1185
  const parentContainer = parent ? parent.formioContainer : this.container;
1240
1186
  const parentComponent = parent ? parent.formioComponent : this;
1241
1187
  this.dialog.close();
1242
- const path = parentContainer
1243
- ? this.getComponentsPath(component, parentComponent.component)
1244
- : '';
1188
+ const path = parentContainer ? this.getComponentsPath(component, parentComponent.component) : '';
1245
1189
  if (!original) {
1246
1190
  original = parent.formioContainer.find((comp) => comp.id === component.id);
1247
1191
  }
@@ -1253,10 +1197,7 @@ export default class WebformBuilder extends Component {
1253
1197
  submissionData.components = this.originalDefaultValue.components;
1254
1198
  this.originalDefaultValue = null;
1255
1199
  }
1256
- const fieldsToRemoveDoubleQuotes = [
1257
- 'label',
1258
- 'tooltip',
1259
- ];
1200
+ const fieldsToRemoveDoubleQuotes = ['label', 'tooltip'];
1260
1201
  this.replaceDoubleQuotes(submissionData, fieldsToRemoveDoubleQuotes);
1261
1202
  this.hook('beforeSaveComponentSettings', submissionData);
1262
1203
  let comp = null;
@@ -1280,7 +1221,7 @@ export default class WebformBuilder extends Component {
1280
1221
  const rebuild = parentComponent.rebuild() || Promise.resolve();
1281
1222
  return rebuild.then(() => {
1282
1223
  parentComponent.resetValue();
1283
- const schema = parentContainer ? parentContainer[index] : comp ? comp.schema : [];
1224
+ const schema = parentContainer ? parentContainer[index] : (comp ? comp.schema : []);
1284
1225
  this.emitSaveComponentEvent(schema, originalComp, parentComponent.schema, path, index, isNew, originalComponentSchema);
1285
1226
  this.emit('change', this.form);
1286
1227
  this.highlightInvalidComponents();
@@ -1325,7 +1266,7 @@ export default class WebformBuilder extends Component {
1325
1266
  this.editForm.addEventListener(saveButton, 'click', (event) => {
1326
1267
  event.preventDefault();
1327
1268
  const errors = this.editForm.validate(this.editForm.data, {
1328
- dirty: true,
1269
+ dirty: true
1329
1270
  });
1330
1271
  if (errors.length) {
1331
1272
  this.editForm.setPristine(false);
@@ -1384,13 +1325,7 @@ export default class WebformBuilder extends Component {
1384
1325
  editFormOptions.flags = flags;
1385
1326
  this.hook('editComponentParentInstance', editFormOptions, parent);
1386
1327
  this.editForm = new Webform({
1387
- ..._.omit(this.options, [
1388
- 'hooks',
1389
- 'builder',
1390
- 'events',
1391
- 'attachMode',
1392
- 'skipInit',
1393
- ]),
1328
+ ..._.omit(this.options, ['hooks', 'builder', 'events', 'attachMode', 'skipInit']),
1394
1329
  language: this.options.language,
1395
1330
  ...editFormOptions,
1396
1331
  evalContext: {
@@ -1399,66 +1334,60 @@ export default class WebformBuilder extends Component {
1399
1334
  },
1400
1335
  });
1401
1336
  this.hook('editFormProperties', parent);
1402
- this.editForm.form =
1403
- isJsonEdit && !isCustom
1404
- ? {
1405
- components: [
1406
- {
1407
- type: 'textarea',
1408
- as: 'json',
1409
- editor: 'ace',
1410
- weight: 10,
1411
- input: true,
1412
- key: 'componentJson',
1413
- label: 'Component JSON',
1414
- tooltip: 'Edit the JSON for this component.',
1415
- },
1416
- {
1417
- type: 'checkbox',
1418
- key: 'showFullSchema',
1419
- label: 'Full Schema',
1420
- },
1421
- ],
1337
+ this.editForm.form = (isJsonEdit && !isCustom) ? {
1338
+ components: [
1339
+ {
1340
+ type: 'textarea',
1341
+ as: 'json',
1342
+ editor: 'ace',
1343
+ weight: 10,
1344
+ input: true,
1345
+ key: 'componentJson',
1346
+ label: 'Component JSON',
1347
+ tooltip: 'Edit the JSON for this component.'
1348
+ },
1349
+ {
1350
+ type: 'checkbox',
1351
+ key: 'showFullSchema',
1352
+ label: 'Full Schema'
1422
1353
  }
1423
- : ComponentClass.editForm(_.cloneDeep(overrides));
1354
+ ]
1355
+ } : ComponentClass.editForm(_.cloneDeep(overrides));
1424
1356
  const instanceOptions = {
1425
1357
  inFormBuilder: true,
1426
1358
  };
1427
1359
  this.hook('instanceOptionsPreview', instanceOptions);
1428
1360
  const instance = new ComponentClass(componentCopy, instanceOptions);
1429
1361
  const schema = this.hook('builderComponentSchema', component, instance);
1430
- this.editForm.submission = isJsonEdit
1431
- ? {
1432
- data: {
1433
- componentJson: schema,
1434
- showFullSchema: this.options.showFullJsonSchema,
1435
- },
1436
- }
1437
- : {
1438
- data: instance.component,
1439
- };
1362
+ this.editForm.submission = isJsonEdit ? {
1363
+ data: {
1364
+ componentJson: schema,
1365
+ showFullSchema: this.options.showFullJsonSchema
1366
+ },
1367
+ } : {
1368
+ data: instance.component,
1369
+ };
1440
1370
  if (this.preview) {
1441
1371
  this.preview.destroy();
1442
1372
  }
1443
- if (!ComponentClass.builderInfo.hasOwnProperty('preview') ||
1444
- ComponentClass.builderInfo.preview) {
1373
+ if (!ComponentClass.builderInfo.hasOwnProperty('preview') || ComponentClass.builderInfo.preview) {
1445
1374
  this.preview = new Webform(_.omit({ ...this.options, preview: true }, [
1446
1375
  'hooks',
1447
1376
  'builder',
1448
1377
  'events',
1449
1378
  'attachMode',
1450
- 'calculateValue',
1379
+ 'calculateValue'
1451
1380
  ]));
1452
1381
  this.hook('previewFormSettitngs', schema, isJsonEdit);
1453
1382
  }
1454
1383
  this.showPreview = ComponentClass.builderInfo.showPreview ?? true;
1455
- this.componentEdit = this.ce('div', { class: 'component-edit-container' });
1384
+ this.componentEdit = this.ce('div', { 'class': 'component-edit-container' });
1456
1385
  this.setContent(this.componentEdit, this.renderTemplate('builderEditForm', {
1457
1386
  componentInfo: ComponentClass.builderInfo,
1458
1387
  editForm: this.editForm.render(),
1459
1388
  preview: this.preview ? this.preview.render() : false,
1460
1389
  showPreview: this.showPreview,
1461
- helplinks: this.helplinks,
1390
+ helplinks: this.helplinks
1462
1391
  }));
1463
1392
  this.dialog = this.createModal(this.componentEdit, _.get(this.options, 'dialogAttr', {}));
1464
1393
  // This is the attach step.
@@ -1472,33 +1401,27 @@ export default class WebformBuilder extends Component {
1472
1401
  this.editForm.submission = {
1473
1402
  data: {
1474
1403
  componentJson: value ? instance.component : component,
1475
- showFullSchema: value,
1404
+ showFullSchema: value
1476
1405
  },
1477
1406
  };
1478
1407
  return;
1479
1408
  }
1480
1409
  // See if this is a manually modified key. Treat custom component keys as manually modified
1481
- if ((event.changed.component && event.changed.component.key === 'key') || isJsonEdit) {
1410
+ if ((event.changed.component && (event.changed.component.key === 'key')) || isJsonEdit) {
1482
1411
  componentCopy.keyModified = true;
1483
1412
  }
1484
1413
  let isComponentLabelChanged = false;
1485
1414
  if (event.changed.instance) {
1486
- isComponentLabelChanged = [
1487
- 'label',
1488
- 'title',
1489
- ].includes(event.changed.instance.path);
1415
+ isComponentLabelChanged = ['label', 'title'].includes(event.changed.instance.path);
1490
1416
  }
1491
1417
  else if (event.changed.component) {
1492
- isComponentLabelChanged = [
1493
- 'label',
1494
- 'title',
1495
- ].includes(event.changed.component.key);
1418
+ isComponentLabelChanged = ['label', 'title'].includes(event.changed.component.key);
1496
1419
  }
1497
1420
  if (isComponentLabelChanged) {
1498
1421
  // Ensure this component has a key.
1499
1422
  if (isNew) {
1500
1423
  if (!event.data.keyModified) {
1501
- this.editForm.everyComponent((component) => {
1424
+ this.editForm.everyComponent(component => {
1502
1425
  if (component.key === 'key' && component.parent.component.key === 'tabs') {
1503
1426
  component.setValue(this.updateComponentKey(event.data));
1504
1427
  return false;
@@ -1508,7 +1431,7 @@ export default class WebformBuilder extends Component {
1508
1431
  if (this.form) {
1509
1432
  let formComponents = this.findNamespaceRoot(parent.formioComponent);
1510
1433
  // excluding component which key uniqueness is to be checked to prevent the comparing of the same keys
1511
- formComponents = formComponents.filter((comp) => editFormOptions.editComponent.id !== comp.id);
1434
+ formComponents = formComponents.filter(comp => editFormOptions.editComponent.id !== comp.id);
1512
1435
  // Set a unique key for this component.
1513
1436
  BuilderUtils.uniquify(formComponents, event.data);
1514
1437
  }
@@ -1517,9 +1440,7 @@ export default class WebformBuilder extends Component {
1517
1440
  // If the edit form has any nested form inside, we get a partial data (nested form's data) in the
1518
1441
  // event.data property
1519
1442
  let editFormData;
1520
- if (event.changed.instance &&
1521
- event.changed.instance.root &&
1522
- event.changed.instance.root.id !== this.editForm.id) {
1443
+ if (event.changed.instance && event.changed.instance.root && event.changed.instance.root.id !== this.editForm.id) {
1523
1444
  editFormData = this.editForm.data;
1524
1445
  }
1525
1446
  // Update the component.
@@ -1546,7 +1467,10 @@ export default class WebformBuilder extends Component {
1546
1467
  this.emit('editComponent', component);
1547
1468
  }
1548
1469
  updateComponentKey(data) {
1549
- return _.camelCase(data.title || data.label || data.placeholder || data.type).replace(/^[0-9]*/, '');
1470
+ return _.camelCase(data.title ||
1471
+ data.label ||
1472
+ data.placeholder ||
1473
+ data.type).replace(/^[0-9]*/, '');
1550
1474
  }
1551
1475
  moveComponent(component) {
1552
1476
  if (this.selectedComponent) {
@@ -1595,7 +1519,7 @@ export default class WebformBuilder extends Component {
1595
1519
  }
1596
1520
  }
1597
1521
  const len = source.formioComponent.components.length;
1598
- index = index === -1 ? 0 : index + step;
1522
+ index = (index === -1) ? 0 : index + step;
1599
1523
  if (index === -1) {
1600
1524
  source.formioContainer.push(info);
1601
1525
  source.appendChild(element);
@@ -1687,7 +1611,7 @@ export default class WebformBuilder extends Component {
1687
1611
  parent.formioComponent.saveChildComponent(schema, false);
1688
1612
  }
1689
1613
  parent.formioComponent.rebuild();
1690
- this.emitSaveComponentEvent(schema, schema, parent.formioComponent.component, path, index + 1, true, schema);
1614
+ this.emitSaveComponentEvent(schema, schema, parent.formioComponent.component, path, (index + 1), true, schema);
1691
1615
  }
1692
1616
  this.emit('change', this.form);
1693
1617
  }
@@ -1735,7 +1659,7 @@ export default class WebformBuilder extends Component {
1735
1659
  if (!this.groups[name]) {
1736
1660
  this.groups[name] = group;
1737
1661
  this.groupOrder.push(name);
1738
- this.triggerRedraw();
1662
+ this.triggerRedraw?.();
1739
1663
  }
1740
1664
  else {
1741
1665
  this.updateBuilderGroup(name, group);
@@ -1744,11 +1668,14 @@ export default class WebformBuilder extends Component {
1744
1668
  updateBuilderGroup(name, group) {
1745
1669
  if (this.groups[name]) {
1746
1670
  this.groups[name] = group;
1747
- this.triggerRedraw();
1671
+ this.triggerRedraw?.();
1748
1672
  }
1749
1673
  }
1750
1674
  generateKey(info) {
1751
- return info.key || _.camelCase(info.title || info.label || info.placeholder || info.type);
1675
+ return info.key || _.camelCase(info.title ||
1676
+ info.label ||
1677
+ info.placeholder ||
1678
+ info.type);
1752
1679
  }
1753
1680
  hasEditTabs(type) {
1754
1681
  // If the component type does not exist then it has no edit tabs