@formio/js 5.2.3 → 5.2.4-rc.0

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