envoc-form 3.2.0 → 4.0.1-1

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 (449) hide show
  1. package/README.md +10 -1
  2. package/dist/css/envoc-form-styles.css +0 -113
  3. package/dist/css/envoc-form-styles.css.map +1 -1
  4. package/es/AddressInput/AddressInput.d.ts +15 -0
  5. package/es/AddressInput/AddressInput.js +21 -97
  6. package/es/AddressInput/UsStates.d.ts +3 -0
  7. package/es/AddressInput/UsStates.js +53 -152
  8. package/es/ConfirmBaseForm/ConfirmBaseForm.d.ts +10 -0
  9. package/es/ConfirmBaseForm/ConfirmBaseForm.js +35 -43
  10. package/es/ConfirmDeleteForm/ConfirmDeleteForm.d.ts +11 -0
  11. package/es/ConfirmDeleteForm/ConfirmDeleteForm.js +54 -40
  12. package/es/DatePicker/DateOnlyDatePickerGroup.d.ts +10 -0
  13. package/es/DatePicker/DateOnlyDatePickerGroup.js +23 -0
  14. package/es/DatePicker/DatePickerGroup.d.ts +8 -0
  15. package/es/DatePicker/DatePickerGroup.js +60 -0
  16. package/es/DatePicker/DatePickerHelper.d.ts +3 -0
  17. package/es/DatePicker/DatePickerHelper.js +1 -0
  18. package/es/DatePicker/StringDatePickerGroup.d.ts +5 -0
  19. package/es/DatePicker/StringDatePickerGroup.js +19 -0
  20. package/es/Field/CustomFieldInputProps.d.ts +7 -0
  21. package/es/Field/CustomFieldInputProps.js +1 -0
  22. package/es/Field/CustomFieldMetaProps.d.ts +4 -0
  23. package/es/Field/CustomFieldMetaProps.js +1 -0
  24. package/es/Field/Field.d.ts +22 -0
  25. package/es/Field/Field.js +46 -0
  26. package/es/Field/FieldErrorScrollTarget.d.ts +2 -0
  27. package/es/Field/FieldErrorScrollTarget.js +11 -0
  28. package/es/Field/FieldNameContext.d.ts +3 -0
  29. package/es/Field/FieldNameContext.js +3 -0
  30. package/es/Field/FieldSection.d.ts +7 -0
  31. package/es/Field/FieldSection.js +20 -0
  32. package/es/Field/InjectedFieldProps.d.ts +7 -0
  33. package/es/Field/InjectedFieldProps.js +1 -0
  34. package/es/Field/StandAloneInput.d.ts +9 -0
  35. package/es/Field/StandAloneInput.js +49 -0
  36. package/es/Field/useStandardField.d.ts +15 -0
  37. package/es/Field/useStandardField.js +93 -0
  38. package/es/FieldArray/FieldArray.d.ts +15 -0
  39. package/es/FieldArray/FieldArray.js +80 -0
  40. package/es/File/FileGroup.d.ts +8 -0
  41. package/es/File/FileGroup.js +50 -0
  42. package/es/File/FileList.d.ts +6 -0
  43. package/es/File/FileList.js +20 -0
  44. package/es/File/humanFileSize.d.ts +1 -0
  45. package/es/File/humanFileSize.js +6 -0
  46. package/es/Form/FocusError.d.ts +5 -0
  47. package/es/Form/FocusError.js +41 -53
  48. package/es/Form/Form.d.ts +22 -0
  49. package/es/Form/Form.js +111 -125
  50. package/es/Form/FormBasedPreventNavigation.d.ts +5 -0
  51. package/es/Form/FormBasedPreventNavigation.js +53 -30
  52. package/es/Form/ServerErrorContext.d.ts +10 -0
  53. package/es/Form/ServerErrorContext.js +8 -6
  54. package/es/FormActions.d.ts +7 -0
  55. package/es/FormActions.js +22 -0
  56. package/es/Group.d.ts +13 -0
  57. package/es/Group.js +22 -0
  58. package/es/Input/IconInputGroup.d.ts +9 -0
  59. package/es/Input/IconInputGroup.js +40 -0
  60. package/es/Input/InputGroup.d.ts +12 -0
  61. package/es/Input/InputGroup.js +33 -0
  62. package/es/Input/MoneyInputGroup.d.ts +7 -0
  63. package/es/Input/MoneyInputGroup.js +41 -0
  64. package/es/Input/NumberInputGroup.d.ts +7 -0
  65. package/es/Input/NumberInputGroup.js +41 -0
  66. package/es/Input/StringInputGroup.d.ts +7 -0
  67. package/es/Input/StringInputGroup.js +40 -0
  68. package/es/Normalization/NormalizationFunction.d.ts +4 -0
  69. package/es/Normalization/NormalizationFunction.js +1 -0
  70. package/es/Normalization/normalizers.d.ts +2 -0
  71. package/es/Normalization/normalizers.js +30 -0
  72. package/es/Select/BooleanSelectGroup.d.ts +7 -0
  73. package/es/Select/BooleanSelectGroup.js +27 -0
  74. package/es/Select/NumberSelectGroup.d.ts +8 -0
  75. package/es/Select/NumberSelectGroup.js +19 -0
  76. package/es/Select/SelectGroup.d.ts +22 -0
  77. package/es/Select/SelectGroup.js +59 -0
  78. package/es/Select/SelectGroupPropsHelper.d.ts +3 -0
  79. package/es/Select/SelectGroupPropsHelper.js +1 -0
  80. package/es/Select/StringSelectGroup.d.ts +8 -0
  81. package/es/Select/StringSelectGroup.js +19 -0
  82. package/es/StandardFormActions.d.ts +6 -0
  83. package/es/StandardFormActions.js +23 -24
  84. package/es/SubmitFormButton.d.ts +7 -0
  85. package/es/SubmitFormButton.js +37 -23
  86. package/es/TextArea/TextAreaGroup.d.ts +8 -0
  87. package/es/TextArea/TextAreaGroup.js +33 -0
  88. package/es/Validation/ValidatedApiResult.d.ts +6 -0
  89. package/es/Validation/ValidatedApiResult.js +1 -0
  90. package/es/Validation/ValidationError.d.ts +5 -0
  91. package/es/Validation/ValidationError.js +1 -0
  92. package/es/Validation/ValidationFunction.d.ts +4 -0
  93. package/es/Validation/ValidationFunction.js +1 -0
  94. package/es/Validation/validators.d.ts +15 -0
  95. package/es/Validation/validators.js +73 -0
  96. package/es/__Tests__/FormTestBase.d.ts +27 -0
  97. package/es/__Tests__/FormTestBase.js +83 -12
  98. package/{src/__Tests__/index.js → es/__Tests__/index.d.ts} +0 -0
  99. package/es/__Tests__/index.js +2 -2
  100. package/es/index.d.ts +71 -0
  101. package/es/index.js +47 -20
  102. package/es/utils/objectContainsNonSerializableProperty.d.ts +1 -0
  103. package/es/utils/objectContainsNonSerializableProperty.js +14 -16
  104. package/es/utils/objectToFormData.d.ts +10 -0
  105. package/es/utils/objectToFormData.js +77 -65
  106. package/es/utils/typeChecks.d.ts +8 -0
  107. package/es/utils/typeChecks.js +18 -25
  108. package/lib/AddressInput/AddressInput.d.ts +15 -0
  109. package/lib/AddressInput/AddressInput.js +27 -123
  110. package/lib/AddressInput/UsStates.d.ts +3 -0
  111. package/lib/AddressInput/UsStates.js +55 -159
  112. package/lib/ConfirmBaseForm/ConfirmBaseForm.d.ts +10 -0
  113. package/lib/ConfirmBaseForm/ConfirmBaseForm.js +41 -57
  114. package/lib/ConfirmDeleteForm/ConfirmDeleteForm.d.ts +11 -0
  115. package/lib/ConfirmDeleteForm/ConfirmDeleteForm.js +60 -56
  116. package/lib/DatePicker/DateOnlyDatePickerGroup.d.ts +10 -0
  117. package/lib/DatePicker/DateOnlyDatePickerGroup.js +29 -0
  118. package/lib/DatePicker/DatePickerGroup.d.ts +8 -0
  119. package/lib/DatePicker/DatePickerGroup.js +66 -0
  120. package/lib/DatePicker/DatePickerHelper.d.ts +3 -0
  121. package/lib/DatePicker/DatePickerHelper.js +2 -0
  122. package/lib/DatePicker/StringDatePickerGroup.d.ts +5 -0
  123. package/lib/DatePicker/StringDatePickerGroup.js +25 -0
  124. package/lib/Field/CustomFieldInputProps.d.ts +7 -0
  125. package/lib/Field/CustomFieldInputProps.js +2 -0
  126. package/lib/Field/CustomFieldMetaProps.d.ts +4 -0
  127. package/lib/Field/CustomFieldMetaProps.js +2 -0
  128. package/lib/Field/Field.d.ts +22 -0
  129. package/lib/Field/Field.js +51 -0
  130. package/lib/Field/FieldErrorScrollTarget.d.ts +2 -0
  131. package/lib/Field/FieldErrorScrollTarget.js +14 -0
  132. package/lib/Field/FieldNameContext.d.ts +3 -0
  133. package/lib/Field/FieldNameContext.js +9 -0
  134. package/lib/Field/FieldSection.d.ts +7 -0
  135. package/lib/Field/FieldSection.js +23 -0
  136. package/lib/Field/InjectedFieldProps.d.ts +7 -0
  137. package/lib/Field/InjectedFieldProps.js +2 -0
  138. package/lib/Field/StandAloneInput.d.ts +9 -0
  139. package/lib/Field/StandAloneInput.js +75 -0
  140. package/lib/Field/useStandardField.d.ts +15 -0
  141. package/lib/Field/useStandardField.js +96 -0
  142. package/lib/FieldArray/FieldArray.d.ts +15 -0
  143. package/lib/FieldArray/FieldArray.js +86 -0
  144. package/lib/File/FileGroup.d.ts +8 -0
  145. package/lib/File/FileGroup.js +55 -0
  146. package/lib/File/FileList.d.ts +6 -0
  147. package/lib/File/FileList.js +23 -0
  148. package/lib/File/humanFileSize.d.ts +1 -0
  149. package/lib/File/humanFileSize.js +10 -0
  150. package/lib/Form/FocusError.d.ts +5 -0
  151. package/lib/Form/FocusError.js +47 -66
  152. package/lib/Form/Form.d.ts +22 -0
  153. package/lib/Form/Form.js +117 -153
  154. package/lib/Form/FormBasedPreventNavigation.d.ts +5 -0
  155. package/lib/Form/FormBasedPreventNavigation.js +56 -39
  156. package/lib/Form/ServerErrorContext.d.ts +10 -0
  157. package/lib/Form/ServerErrorContext.js +14 -18
  158. package/lib/FormActions.d.ts +7 -0
  159. package/lib/FormActions.js +28 -0
  160. package/lib/Group.d.ts +13 -0
  161. package/lib/Group.js +28 -0
  162. package/lib/Input/IconInputGroup.d.ts +9 -0
  163. package/lib/Input/IconInputGroup.js +45 -0
  164. package/lib/Input/InputGroup.d.ts +12 -0
  165. package/lib/Input/InputGroup.js +38 -0
  166. package/lib/Input/MoneyInputGroup.d.ts +7 -0
  167. package/lib/Input/MoneyInputGroup.js +46 -0
  168. package/lib/Input/NumberInputGroup.d.ts +7 -0
  169. package/lib/Input/NumberInputGroup.js +46 -0
  170. package/lib/Input/StringInputGroup.d.ts +7 -0
  171. package/lib/Input/StringInputGroup.js +45 -0
  172. package/lib/Normalization/NormalizationFunction.d.ts +4 -0
  173. package/lib/Normalization/NormalizationFunction.js +2 -0
  174. package/lib/Normalization/normalizers.d.ts +2 -0
  175. package/lib/Normalization/normalizers.js +35 -0
  176. package/lib/Select/BooleanSelectGroup.d.ts +7 -0
  177. package/lib/Select/BooleanSelectGroup.js +34 -0
  178. package/lib/Select/NumberSelectGroup.d.ts +8 -0
  179. package/lib/Select/NumberSelectGroup.js +27 -0
  180. package/lib/Select/SelectGroup.d.ts +22 -0
  181. package/lib/Select/SelectGroup.js +65 -0
  182. package/lib/Select/SelectGroupPropsHelper.d.ts +3 -0
  183. package/lib/Select/SelectGroupPropsHelper.js +2 -0
  184. package/lib/Select/StringSelectGroup.d.ts +8 -0
  185. package/lib/Select/StringSelectGroup.js +27 -0
  186. package/lib/StandardFormActions.d.ts +6 -0
  187. package/lib/StandardFormActions.js +29 -37
  188. package/lib/SubmitFormButton.d.ts +7 -0
  189. package/lib/SubmitFormButton.js +42 -38
  190. package/lib/TextArea/TextAreaGroup.d.ts +8 -0
  191. package/lib/TextArea/TextAreaGroup.js +38 -0
  192. package/lib/Validation/ValidatedApiResult.d.ts +6 -0
  193. package/lib/Validation/ValidatedApiResult.js +2 -0
  194. package/lib/Validation/ValidationError.d.ts +5 -0
  195. package/lib/Validation/ValidationError.js +2 -0
  196. package/lib/Validation/ValidationFunction.d.ts +4 -0
  197. package/lib/Validation/ValidationFunction.js +2 -0
  198. package/lib/Validation/validators.d.ts +15 -0
  199. package/lib/Validation/validators.js +86 -0
  200. package/lib/__Tests__/FormTestBase.d.ts +27 -0
  201. package/lib/__Tests__/FormTestBase.js +86 -25
  202. package/lib/__Tests__/index.d.ts +2 -0
  203. package/lib/__Tests__/index.js +8 -15
  204. package/lib/index.d.ts +71 -0
  205. package/lib/index.js +112 -174
  206. package/lib/utils/objectContainsNonSerializableProperty.d.ts +1 -0
  207. package/lib/utils/objectContainsNonSerializableProperty.js +17 -24
  208. package/lib/utils/objectToFormData.d.ts +10 -0
  209. package/lib/utils/objectToFormData.js +79 -73
  210. package/lib/utils/typeChecks.d.ts +8 -0
  211. package/lib/utils/typeChecks.js +29 -58
  212. package/package.json +106 -100
  213. package/src/AddressInput/{AddesssInput.test.js → AddressInput.test.tsx} +7 -3
  214. package/src/AddressInput/AddressInput.tsx +72 -0
  215. package/src/AddressInput/{UsStates.js → UsStates.ts} +3 -1
  216. package/src/AddressInput/__snapshots__/AddressInput.test.tsx.snap +175 -0
  217. package/src/ConfirmBaseForm/ConfirmBaseForm.test.tsx +24 -0
  218. package/src/ConfirmBaseForm/ConfirmBaseForm.tsx +50 -0
  219. package/src/ConfirmBaseForm/__snapshots__/{ConfirmBaseForm.test.js.snap → ConfirmBaseForm.test.tsx.snap} +2 -2
  220. package/src/ConfirmDeleteForm/{ConfirmDeleteForm.test.js → ConfirmDeleteForm.test.tsx} +3 -3
  221. package/src/ConfirmDeleteForm/ConfirmDeleteForm.tsx +67 -0
  222. package/src/ConfirmDeleteForm/__snapshots__/{ConfirmDeleteForm.test.js.snap → ConfirmDeleteForm.test.tsx.snap} +2 -2
  223. package/src/DatePicker/DateOnlyDatePickerGroup.tsx +24 -0
  224. package/src/DatePicker/DatePicker.test.tsx +48 -0
  225. package/src/DatePicker/DatePickerGroup.tsx +75 -0
  226. package/src/DatePicker/DatePickerHelper.ts +4 -0
  227. package/src/DatePicker/StringDatePickerGroup.tsx +14 -0
  228. package/src/DatePicker/__snapshots__/DatePicker.test.tsx.snap +151 -0
  229. package/src/Field/CustomFieldInputProps.ts +10 -0
  230. package/src/Field/CustomFieldMetaProps.ts +5 -0
  231. package/src/Field/Field.tsx +93 -0
  232. package/src/Field/FieldErrorScrollTarget.tsx +11 -0
  233. package/src/Field/FieldNameContext.ts +6 -0
  234. package/src/Field/FieldSection.tsx +18 -0
  235. package/src/Field/InjectedFieldProps.ts +8 -0
  236. package/src/Field/StandAloneInput.tsx +51 -0
  237. package/src/Field/useStandardField.ts +121 -0
  238. package/src/FieldArray/FieldArray.tsx +133 -0
  239. package/src/File/FileGroup.test.tsx +35 -0
  240. package/src/File/FileGroup.tsx +71 -0
  241. package/src/File/FileList.tsx +19 -0
  242. package/src/File/__snapshots__/FileGroup.test.tsx.snap +32 -0
  243. package/src/File/humanFileSize.ts +8 -0
  244. package/src/Form/{FocusError.js → FocusError.tsx} +10 -6
  245. package/src/Form/Form.test.tsx +14 -0
  246. package/src/Form/{Form.js → Form.tsx} +71 -31
  247. package/src/Form/FormBasedPreventNavigation.tsx +74 -0
  248. package/src/Form/ServerErrorContext.ts +17 -0
  249. package/src/Form/__snapshots__/{Form.test.js.snap → Form.test.tsx.snap} +1 -1
  250. package/src/FormActions.tsx +34 -0
  251. package/src/Group.tsx +43 -0
  252. package/src/Input/IconInputGroup.tsx +48 -0
  253. package/src/Input/InputGroup.tsx +57 -0
  254. package/src/Input/MoneyInputGroup.tsx +44 -0
  255. package/src/Input/NumberInputGroup.tsx +42 -0
  256. package/src/Input/StringInputGroup.tsx +48 -0
  257. package/src/Input/__Tests__/IconInputGroup.test.tsx +35 -0
  258. package/src/Input/__Tests__/MoneyInputGroup.test.tsx +37 -0
  259. package/src/Input/__Tests__/NumberInputGroup.test.tsx +35 -0
  260. package/src/Input/__Tests__/StringInputGroup.test.tsx +27 -0
  261. package/src/Input/__Tests__/__snapshots__/IconInputGroup.test.tsx.snap +29 -0
  262. package/src/Input/__Tests__/__snapshots__/MoneyInputGroup.test.tsx.snap +31 -0
  263. package/src/Input/__Tests__/__snapshots__/NumberInputGroup.test.tsx.snap +29 -0
  264. package/src/Input/__Tests__/__snapshots__/StringInputGroup.test.tsx.snap +28 -0
  265. package/src/Normalization/NormalizationFunction.ts +4 -0
  266. package/src/{normalizers.js → Normalization/normalizers.ts} +5 -5
  267. package/src/Select/BooleanSelectGroup.tsx +27 -0
  268. package/src/Select/NumberSelectGroup.tsx +14 -0
  269. package/src/Select/SelectGroup.tsx +106 -0
  270. package/src/Select/SelectGroupPropsHelper.ts +4 -0
  271. package/src/Select/StringSelectGroup.tsx +14 -0
  272. package/src/Select/__tests__/BooleanSelectGroup.test.tsx +35 -0
  273. package/src/Select/__tests__/NumberSelectGroup.test.tsx +87 -0
  274. package/src/Select/__tests__/StringSelectGroup.test.tsx +89 -0
  275. package/src/Select/__tests__/__snapshots__/BooleanSelectGroup.test.tsx.snap +99 -0
  276. package/src/Select/__tests__/__snapshots__/NumberSelectGroup.test.tsx.snap +197 -0
  277. package/src/Select/__tests__/__snapshots__/StringSelectGroup.test.tsx.snap +197 -0
  278. package/src/{StandardFormActions.js → StandardFormActions.tsx} +12 -6
  279. package/src/SubmitFormButton.tsx +44 -0
  280. package/src/TextArea/TextAreaGroup.tsx +55 -0
  281. package/src/Validation/ValidatedApiResult.ts +8 -0
  282. package/src/Validation/ValidationError.ts +6 -0
  283. package/src/Validation/ValidationFunction.ts +4 -0
  284. package/src/{validators/validators.test.js → Validation/validators.test.tsx} +6 -4
  285. package/src/Validation/validators.ts +92 -0
  286. package/src/__Tests__/FormTestBase.tsx +63 -0
  287. package/src/__Tests__/{StandardFormActions.test.js → StandardFormActions.test.tsx} +2 -8
  288. package/src/__Tests__/{SubmitFormButton.test.js → SubmitFormButton.test.tsx} +2 -8
  289. package/src/__Tests__/__snapshots__/{StandardFormActions.test.js.snap → StandardFormActions.test.tsx.snap} +2 -2
  290. package/src/__Tests__/__snapshots__/{SubmitFormButton.test.js.snap → SubmitFormButton.test.tsx.snap} +1 -1
  291. package/src/__Tests__/index.ts +3 -0
  292. package/src/index.ts +149 -0
  293. package/src/react-app-env.d.ts +1 -0
  294. package/src/styles.scss +0 -7
  295. package/src/utils/{objectContainsNonSerializableProperty.test.js → objectContainsNonSerializableProperty.test.tsx} +0 -0
  296. package/src/utils/{objectContainsNonSerializableProperty.js → objectContainsNonSerializableProperty.ts} +4 -2
  297. package/src/utils/{objectToFormData.test.js → objectToFormData.test.tsx} +0 -0
  298. package/src/utils/{objectToFormData.js → objectToFormData.ts} +29 -13
  299. package/src/utils/typeChecks.ts +18 -0
  300. package/es/AddressInput/index.js +0 -2
  301. package/es/BoolInput/BoolInput.js +0 -10
  302. package/es/BoolInput/InlineBoolInput.js +0 -10
  303. package/es/BoolInput/boolOptions.js +0 -8
  304. package/es/BoolInput/index.js +0 -3
  305. package/es/ConfirmBaseForm/index.js +0 -2
  306. package/es/ConfirmDeleteForm/index.js +0 -2
  307. package/es/DatePickerInput/DatePickerInput.js +0 -95
  308. package/es/DatePickerInput/index.js +0 -2
  309. package/es/ErrorScrollTarget.js +0 -10
  310. package/es/FileInput/DefaultFileList.js +0 -36
  311. package/es/FileInput/DropzoneFileInput.js +0 -58
  312. package/es/FileInput/FileInput.js +0 -62
  313. package/es/FileInput/index.js +0 -3
  314. package/es/Form/index.js +0 -3
  315. package/es/FormGroup.js +0 -22
  316. package/es/FormGroupWrapper.js +0 -22
  317. package/es/FormInput/FormInput.js +0 -206
  318. package/es/FormInput/index.js +0 -2
  319. package/es/FormInputArray/FormInputArray.js +0 -225
  320. package/es/FormInputArray/index.js +0 -2
  321. package/es/FormSection.js +0 -11
  322. package/es/IconInput.js +0 -33
  323. package/es/InlineFormInput/InlineFormInput.js +0 -8
  324. package/es/InlineFormInput/index.js +0 -2
  325. package/es/MoneyInput/InlineMoneyInput.js +0 -7
  326. package/es/MoneyInput/MoneyInput.js +0 -7
  327. package/es/MoneyInput/index.js +0 -3
  328. package/es/MoneyInput/moneyInputProps.js +0 -13
  329. package/es/NestedFormFieldContext.js +0 -4
  330. package/es/ReactSelectField/ReactSelectField.js +0 -162
  331. package/es/ReactSelectField/index.js +0 -2
  332. package/es/normalizers.js +0 -39
  333. package/es/selectors.js +0 -6
  334. package/es/useStandardFormInput.js +0 -119
  335. package/es/utils/index.js +0 -3
  336. package/es/validators/index.js +0 -2
  337. package/es/validators/validators.js +0 -94
  338. package/lib/AddressInput/index.js +0 -13
  339. package/lib/BoolInput/BoolInput.js +0 -23
  340. package/lib/BoolInput/InlineBoolInput.js +0 -23
  341. package/lib/BoolInput/boolOptions.js +0 -15
  342. package/lib/BoolInput/index.js +0 -23
  343. package/lib/ConfirmBaseForm/index.js +0 -13
  344. package/lib/ConfirmDeleteForm/index.js +0 -13
  345. package/lib/DatePickerInput/DatePickerInput.js +0 -113
  346. package/lib/DatePickerInput/index.js +0 -13
  347. package/lib/ErrorScrollTarget.js +0 -20
  348. package/lib/FileInput/DefaultFileList.js +0 -47
  349. package/lib/FileInput/DropzoneFileInput.js +0 -75
  350. package/lib/FileInput/FileInput.js +0 -82
  351. package/lib/FileInput/index.js +0 -23
  352. package/lib/Form/index.js +0 -23
  353. package/lib/FormGroup.js +0 -33
  354. package/lib/FormGroupWrapper.js +0 -37
  355. package/lib/FormInput/FormInput.js +0 -229
  356. package/lib/FormInput/index.js +0 -13
  357. package/lib/FormInputArray/FormInputArray.js +0 -248
  358. package/lib/FormInputArray/index.js +0 -13
  359. package/lib/FormSection.js +0 -28
  360. package/lib/IconInput.js +0 -51
  361. package/lib/InlineFormInput/InlineFormInput.js +0 -20
  362. package/lib/InlineFormInput/index.js +0 -13
  363. package/lib/MoneyInput/InlineMoneyInput.js +0 -20
  364. package/lib/MoneyInput/MoneyInput.js +0 -20
  365. package/lib/MoneyInput/index.js +0 -23
  366. package/lib/MoneyInput/moneyInputProps.js +0 -26
  367. package/lib/NestedFormFieldContext.js +0 -16
  368. package/lib/ReactSelectField/ReactSelectField.js +0 -187
  369. package/lib/ReactSelectField/index.js +0 -31
  370. package/lib/normalizers.js +0 -51
  371. package/lib/selectors.js +0 -18
  372. package/lib/useStandardFormInput.js +0 -135
  373. package/lib/utils/index.js +0 -23
  374. package/lib/validators/index.js +0 -17
  375. package/lib/validators/validators.js +0 -130
  376. package/src/AddressInput/AddressInput.js +0 -73
  377. package/src/AddressInput/__snapshots__/AddesssInput.test.js.snap +0 -207
  378. package/src/AddressInput/index.js +0 -2
  379. package/src/BoolInput/BoolInput.js +0 -7
  380. package/src/BoolInput/BoolInput.test.js +0 -23
  381. package/src/BoolInput/InlineBoolInput.js +0 -7
  382. package/src/BoolInput/__snapshots__/BoolInput.test.js.snap +0 -89
  383. package/src/BoolInput/boolOptions.js +0 -6
  384. package/src/BoolInput/index.js +0 -4
  385. package/src/ConfirmBaseForm/ConfirmBaseForm.js +0 -37
  386. package/src/ConfirmBaseForm/ConfirmBaseForm.test.js +0 -14
  387. package/src/ConfirmBaseForm/index.js +0 -2
  388. package/src/ConfirmDeleteForm/ConfirmDeleteForm.js +0 -39
  389. package/src/ConfirmDeleteForm/index.js +0 -2
  390. package/src/DatePickerInput/DatePickerInput.js +0 -49
  391. package/src/DatePickerInput/DatePickerInput.test.js +0 -74
  392. package/src/DatePickerInput/__snapshots__/DatePickerInput.test.js.snap +0 -134
  393. package/src/DatePickerInput/date-picker-input.scss +0 -42
  394. package/src/DatePickerInput/index.js +0 -3
  395. package/src/ErrorScrollTarget.js +0 -6
  396. package/src/FileInput/DefaultFileList.js +0 -39
  397. package/src/FileInput/DropzoneFileInput.js +0 -56
  398. package/src/FileInput/DropzoneFileInput.test.js +0 -24
  399. package/src/FileInput/FileInput.js +0 -77
  400. package/src/FileInput/FileInput.test.js +0 -24
  401. package/src/FileInput/__snapshots__/DropzoneFileInput.test.js.snap +0 -57
  402. package/src/FileInput/__snapshots__/FileInput.test.js.snap +0 -58
  403. package/src/FileInput/file-input.scss +0 -58
  404. package/src/FileInput/index.js +0 -4
  405. package/src/Form/Form.test.js +0 -23
  406. package/src/Form/FormBasedPreventNavigation.js +0 -25
  407. package/src/Form/ServerErrorContext.js +0 -7
  408. package/src/Form/index.js +0 -3
  409. package/src/FormGroup.js +0 -30
  410. package/src/FormGroupWrapper.js +0 -28
  411. package/src/FormInput/FormInput.js +0 -145
  412. package/src/FormInput/FormInput.test.js +0 -66
  413. package/src/FormInput/__snapshots__/FormInput.test.js.snap +0 -323
  414. package/src/FormInput/form-input.scss +0 -9
  415. package/src/FormInput/index.js +0 -2
  416. package/src/FormInputArray/FormInputArray.js +0 -224
  417. package/src/FormInputArray/FormInputArray.test.js +0 -108
  418. package/src/FormInputArray/__snapshots__/FormInputArray.test.js.snap +0 -52
  419. package/src/FormInputArray/form-input-array.scss +0 -13
  420. package/src/FormInputArray/index.js +0 -2
  421. package/src/FormSection.js +0 -13
  422. package/src/IconInput.js +0 -31
  423. package/src/InlineFormInput/InlineFormInput.js +0 -6
  424. package/src/InlineFormInput/InlineFormInput.test.js +0 -23
  425. package/src/InlineFormInput/__snapshots__/InlineFormInput.test.js.snap +0 -26
  426. package/src/InlineFormInput/index.js +0 -3
  427. package/src/InlineFormInput/inline-form-input.scss +0 -3
  428. package/src/MoneyInput/InlineMoneyInput.js +0 -7
  429. package/src/MoneyInput/MoneyInput.js +0 -7
  430. package/src/MoneyInput/MoneyInputs.test.js +0 -43
  431. package/src/MoneyInput/__snapshots__/MoneyInputs.test.js.snap +0 -81
  432. package/src/MoneyInput/index.js +0 -4
  433. package/src/MoneyInput/money-input.scss +0 -3
  434. package/src/MoneyInput/moneyInputProps.js +0 -12
  435. package/src/NestedFormFieldContext.js +0 -6
  436. package/src/ReactSelectField/ReactSelectField.js +0 -155
  437. package/src/ReactSelectField/index.js +0 -6
  438. package/src/ReactSelectField/react-select-field.scss +0 -5
  439. package/src/SubmitFormButton.js +0 -28
  440. package/src/__Tests__/FormTestBase.js +0 -14
  441. package/src/__Tests__/IconInput.test.js +0 -23
  442. package/src/__Tests__/__snapshots__/IconInput.test.js.snap +0 -38
  443. package/src/index.js +0 -45
  444. package/src/selectors.js +0 -3
  445. package/src/useStandardFormInput.js +0 -118
  446. package/src/utils/index.js +0 -3
  447. package/src/utils/typeChecks.js +0 -18
  448. package/src/validators/index.js +0 -2
  449. package/src/validators/validators.js +0 -93
@@ -0,0 +1,80 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __rest = (this && this.__rest) || function (s, e) {
13
+ var t = {};
14
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
15
+ t[p] = s[p];
16
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
17
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
18
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
19
+ t[p[i]] = s[p[i]];
20
+ }
21
+ return t;
22
+ };
23
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
24
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
25
+ if (ar || !(i in from)) {
26
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
27
+ ar[i] = from[i];
28
+ }
29
+ }
30
+ return to.concat(ar || Array.prototype.slice.call(from));
31
+ };
32
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
33
+ import classNames from 'classnames';
34
+ import Field from '../Field/Field';
35
+ import { FieldNameContext } from '../Field/FieldNameContext';
36
+ import useStandardFormInput from '../Field/useStandardField';
37
+ export default function FieldArray(_a) {
38
+ var name = _a.name, label = _a.label, validate = _a.validate, disabled = _a.disabled, children = _a.children, rest = __rest(_a, ["name", "label", "validate", "disabled", "children"]);
39
+ var _b = useStandardFormInput({
40
+ name: String(name),
41
+ validate: validate,
42
+ disabled: disabled,
43
+ }), input = _b[0], meta = _b[1];
44
+ var values = !input.value
45
+ ? []
46
+ : Array.isArray(input.value)
47
+ ? input.value
48
+ : [];
49
+ return (_jsxs("div", __assign({ className: "field-array" }, { children: [_jsxs("div", __assign({ className: "field-array-header" }, { children: [_jsx("div", __assign({ className: "field-array-title" }, { children: label })), _jsx("button", __assign({ className: classNames('add-array-item-button', { disabled: disabled }), title: "Add Item", type: "button", onClick: addItem }, { children: "+" }))] })), _jsx("div", __assign({ className: "field-array-body" }, { children: values.map(function (value, index) {
50
+ var itemName = "".concat(input.name, "[").concat(index, "]");
51
+ return (_jsxs("div", __assign({ className: classNames('field-array-item', {
52
+ removed: value.isDeleted,
53
+ }), role: "listitem" }, { children: [_jsx(FieldNameContext.Provider, __assign({ value: itemName }, { children: children({
54
+ Field: Field,
55
+ FieldArray: FieldArray,
56
+ }) })), _jsx("button", __assign({ className: classNames('remove-array-item-button', { disabled: disabled }), type: "button", title: "Remove Item", onClick: function () { return removeItem(value); } }, { children: "-" }))] }), (value && value['form-input-array-key']) ||
57
+ (value && value['id']) ||
58
+ itemName));
59
+ }) }))] })));
60
+ function addItem() {
61
+ if (disabled) {
62
+ return;
63
+ }
64
+ input.onChange(__spreadArray(__spreadArray([], values, true), [{}], false));
65
+ }
66
+ function removeItem(item) {
67
+ if (disabled) {
68
+ return;
69
+ }
70
+ // assumes anything from the server has an 'id' value sent
71
+ if (!item.id) {
72
+ input.onChange(values.filter(function (x) { return x !== item; }));
73
+ return;
74
+ }
75
+ var mapped = values.map(function (x) {
76
+ return x !== item ? x : Object.assign({}, x, { isDeleted: true });
77
+ });
78
+ input.onChange(mapped);
79
+ }
80
+ }
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import { InjectedFieldProps } from '../Field/InjectedFieldProps';
3
+ import { GroupProps } from '../Group';
4
+ export interface FileGroupProps extends InjectedFieldProps<any | undefined>, Omit<GroupProps, keyof InjectedFieldProps<any> | 'children'>, Omit<React.HTMLProps<HTMLInputElement>, keyof InjectedFieldProps<any> | 'children' | 'className' | 'label'> {
5
+ multiple?: boolean | undefined;
6
+ }
7
+ declare const FileGroupWithRef: React.ComponentType<FileGroupProps>;
8
+ export default FileGroupWithRef;
@@ -0,0 +1,50 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __rest = (this && this.__rest) || function (s, e) {
13
+ var t = {};
14
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
15
+ t[p] = s[p];
16
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
17
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
18
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
19
+ t[p[i]] = s[p[i]];
20
+ }
21
+ return t;
22
+ };
23
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
24
+ import React from 'react';
25
+ import classNames from 'classnames';
26
+ import FileList from './FileList';
27
+ import Group from '../Group';
28
+ function FileGroup(_a, ref) {
29
+ var input = _a.input, meta = _a.meta, label = _a.label, helpText = _a.helpText, className = _a.className, multiple = _a.multiple, rest = __rest(_a, ["input", "meta", "label", "helpText", "className", "multiple"]);
30
+ return (_jsxs(Group, __assign({ input: input, meta: meta, label: label, helpText: helpText, className: classNames(className, { multiple: multiple }, 'file-group') }, { children: [_jsx("input", __assign({}, input, rest, { multiple: multiple, onChange: function (e) {
31
+ var _a, _b;
32
+ if (!((_b = (_a = e === null || e === void 0 ? void 0 : e.target) === null || _a === void 0 ? void 0 : _a.files) === null || _b === void 0 ? void 0 : _b.length)) {
33
+ input.onChange(undefined);
34
+ }
35
+ else {
36
+ var files = [];
37
+ for (var i = 0; i < e.target.files.length; i++) {
38
+ files.push(e.target.files[i]);
39
+ }
40
+ if (!multiple) {
41
+ input.onChange(files[0]);
42
+ }
43
+ else {
44
+ input.onChange(files);
45
+ }
46
+ }
47
+ }, value: undefined, ref: ref, type: "file", className: classNames(className, 'file-group') })), _jsx(FileList, { files: input.value })] })));
48
+ }
49
+ var FileGroupWithRef = React.forwardRef(FileGroup);
50
+ export default FileGroupWithRef;
@@ -0,0 +1,6 @@
1
+ /// <reference types="react" />
2
+ export interface FileListProps {
3
+ files?: File | File[] | undefined;
4
+ rejectedFiles?: File | File[] | undefined;
5
+ }
6
+ export default function FileList({ files, rejectedFiles }: FileListProps): JSX.Element;
@@ -0,0 +1,20 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx } from "react/jsx-runtime";
13
+ export default function FileList(_a) {
14
+ var files = _a.files, rejectedFiles = _a.rejectedFiles;
15
+ return (_jsx("div", __assign({ className: "file-list" }, { children: !files ? null : Array.isArray(files) ? (files.map(function (x, i) { return _jsx(File, { file: x }, i); })) : (_jsx(File, { file: files })) })));
16
+ }
17
+ function File(_a) {
18
+ var file = _a.file;
19
+ return null;
20
+ }
@@ -0,0 +1 @@
1
+ export declare function humanFileSize(size: number): string;
@@ -0,0 +1,6 @@
1
+ export function humanFileSize(size) {
2
+ var i = Math.floor(Math.log(size) / Math.log(1024));
3
+ return ((size / Math.pow(1024, i)).toFixed(2) +
4
+ ' ' +
5
+ ['B', 'KB', 'MB', 'GB', 'TB'][i]);
6
+ }
@@ -0,0 +1,5 @@
1
+ import { ServerErrorContextProps } from './ServerErrorContext';
2
+ export interface FocusErrorProps {
3
+ serverErrors: ServerErrorContextProps;
4
+ }
5
+ export default function FocusError(props: FocusErrorProps): null;
@@ -1,53 +1,41 @@
1
- import { useEffect } from 'react';
2
- import { useFormikContext } from 'formik';
3
- import smoothscroll from 'smoothscroll-polyfill';
4
- export default function FocusError(props) {
5
- var _useFormikContext = useFormikContext(),
6
- errors = _useFormikContext.errors,
7
- isSubmitting = _useFormikContext.isSubmitting,
8
- isValidating = _useFormikContext.isValidating;
9
-
10
- smoothscroll.polyfill();
11
- useEffect(function () {
12
- if (!isSubmitting || isValidating) {
13
- return;
14
- } //This block handles any front-end input validation errors
15
- //e.g. required fields, max characters, etc
16
-
17
-
18
- var keys = Object.keys(errors);
19
-
20
- if (keys.length > 0) {
21
- return scrollToErrorElement(keys);
22
- } //This block handles any input-specific server-side errors
23
- //e.g. improper email formatting, invalid phone number, etc.
24
-
25
-
26
- if (props.serverErrors.errors && Object.values(props.serverErrors.errors).some(function (x) {
27
- return !!x;
28
- })) {
29
- var names = Object.keys(props.serverErrors.errors);
30
- return scrollToErrorElement(names);
31
- }
32
- }, [errors, isSubmitting, isValidating, props]);
33
- return null;
34
- }
35
-
36
- var scrollToErrorElement = function scrollToErrorElement(keys) {
37
- var firstErrorElement = document.getElementById("".concat(keys[0].toLowerCase(), "-error-scroll-target"));
38
-
39
- if (firstErrorElement == null || firstErrorElement.parentNode == null) {
40
- return;
41
- }
42
-
43
- firstErrorElement = firstErrorElement.parentNode;
44
- var headerOffset = -110;
45
- var y = firstErrorElement.getBoundingClientRect().top + window.pageYOffset + headerOffset;
46
- window.scrollTo({
47
- top: y,
48
- behavior: 'smooth'
49
- });
50
- setTimeout(function () {
51
- firstErrorElement.focus();
52
- }, 500);
53
- };
1
+ import { useEffect } from 'react';
2
+ import { useFormikContext } from 'formik';
3
+ import smoothscroll from 'smoothscroll-polyfill';
4
+ export default function FocusError(props) {
5
+ var _a = useFormikContext(), errors = _a.errors, isSubmitting = _a.isSubmitting, isValidating = _a.isValidating;
6
+ smoothscroll.polyfill();
7
+ useEffect(function () {
8
+ if (!isSubmitting || isValidating) {
9
+ return;
10
+ }
11
+ //This block handles any front-end input validation errors
12
+ //e.g. required fields, max characters, etc
13
+ var keys = Object.keys(errors);
14
+ if (keys.length > 0) {
15
+ return scrollToErrorElement(keys);
16
+ }
17
+ //This block handles any input-specific server-side errors
18
+ //e.g. improper email formatting, invalid phone number, etc.
19
+ if (props.serverErrors.errors &&
20
+ Object.values(props.serverErrors.errors).some(function (x) { return !!x; })) {
21
+ var names = Object.keys(props.serverErrors.errors);
22
+ return scrollToErrorElement(names);
23
+ }
24
+ }, [errors, isSubmitting, isValidating, props]);
25
+ return null;
26
+ }
27
+ var scrollToErrorElement = function (keys) {
28
+ var firstErrorElement = document.getElementById("".concat(keys[0].toLowerCase(), "-error-scroll-target"));
29
+ if (!firstErrorElement || !firstErrorElement.parentNode) {
30
+ return;
31
+ }
32
+ firstErrorElement = firstErrorElement.parentNode;
33
+ var headerOffset = -110;
34
+ var y = firstErrorElement.getBoundingClientRect().top +
35
+ window.pageYOffset +
36
+ headerOffset;
37
+ window.scrollTo({ top: y, behavior: 'smooth' });
38
+ setTimeout(function () {
39
+ firstErrorElement === null || firstErrorElement === void 0 ? void 0 : firstErrorElement.focus();
40
+ }, 500);
41
+ };
@@ -0,0 +1,22 @@
1
+ import { CSSProperties, ElementType } from 'react';
2
+ import { FormikHelpers } from 'formik';
3
+ import { FieldProps } from '../Field/Field';
4
+ import { FieldArrayProps } from '../FieldArray/FieldArray';
5
+ import { ValidatedApiResult } from '../Validation/ValidatedApiResult';
6
+ export declare type FormBuilderProp<TForm extends object> = {
7
+ Field: <TProp extends keyof TForm, TRenderComponent extends ElementType>(props: FieldProps<TForm, TProp, TRenderComponent>) => JSX.Element;
8
+ FieldArray: <TProp extends keyof TForm>(props: FieldArrayProps<TForm, TProp>) => JSX.Element;
9
+ };
10
+ export interface FormProps<TForm extends object> {
11
+ children: (formBuilder: FormBuilderProp<TForm>) => JSX.Element;
12
+ onSubmit: (formValues: FormData | TForm, formikBag: FormikHelpers<TForm>) => Promise<ValidatedApiResult>;
13
+ className?: string;
14
+ style?: CSSProperties;
15
+ ignoreLostChanges?: boolean;
16
+ initialValues?: TForm;
17
+ }
18
+ declare function Form<TForm extends object>({ children, className, style, ignoreLostChanges, onSubmit, initialValues, ...props }: FormProps<TForm>): JSX.Element;
19
+ declare namespace Form {
20
+ var DisplayFormState: () => JSX.Element;
21
+ }
22
+ export default Form;
package/es/Form/Form.js CHANGED
@@ -1,125 +1,111 @@
1
- import _extends from "@babel/runtime/helpers/esm/extends";
2
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
3
- import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
4
- import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
5
- var _excluded = ["children", "className", "style", "ignoreLostChanges", "onSubmit", "initialValues"];
6
- import React, { useState, useMemo, useContext } from 'react';
7
- import PropTypes from 'prop-types';
8
- import FocusError from './FocusError';
9
- import { Formik, Form as FormikFormWrapper, useFormikContext } from 'formik';
10
- import FormBasedPreventNavigation from './FormBasedPreventNavigation';
11
- import ServerErrorContext from './ServerErrorContext';
12
- import { objectToFormData, objectContainsNonSerializableProperty } from '../utils';
13
- export default function Form(_ref) {
14
- var children = _ref.children,
15
- className = _ref.className,
16
- style = _ref.style,
17
- ignoreLostChanges = _ref.ignoreLostChanges,
18
- onSubmit = _ref.onSubmit,
19
- initialValues = _ref.initialValues,
20
- props = _objectWithoutProperties(_ref, _excluded);
21
-
22
- // formik resets all error on each blur (with our settings)
23
- // this means that ALL errors from the server disappear when any one field is blurred
24
- // So, we have to store server errors ourselves
25
- // Since we only use useStandardFormInput, that means there is only one consumer
26
- var _useState = useState(null),
27
- _useState2 = _slicedToArray(_useState, 2),
28
- serverErrors = _useState2[0],
29
- setServerErrors = _useState2[1];
30
-
31
- var serverErrorContextValue = useMemo(function () {
32
- return {
33
- errors: serverErrors,
34
- getError: function getError(path) {
35
- var lowered = path.toLowerCase();
36
- return serverErrors && serverErrors[lowered];
37
- },
38
- setError: function setError(path, errorMessage) {
39
- var lowered = path.toLowerCase();
40
- setServerErrors(Object.assign({}, serverErrors, _defineProperty({}, lowered, !errorMessage ? undefined : errorMessage)));
41
- }
42
- };
43
- }, [serverErrors]);
44
- return /*#__PURE__*/React.createElement(Formik, _extends({
45
- validateOnChange: false,
46
- validateOnBlur: true,
47
- validateOnMount: false,
48
- initialValues: initialValues || {},
49
- onSubmit: handleSubmit
50
- }, props), /*#__PURE__*/React.createElement(ServerErrorContext.Provider, {
51
- value: serverErrorContextValue
52
- }, /*#__PURE__*/React.createElement(FormikFormWrapper, {
53
- className: className,
54
- style: style
55
- }, /*#__PURE__*/React.createElement(FocusError, {
56
- serverErrors: serverErrorContextValue
57
- }), /*#__PURE__*/React.createElement(FormBasedPreventNavigation, {
58
- ignoreLostChanges: ignoreLostChanges
59
- }), typeof children === 'function' ? children(props) : children)));
60
-
61
- function handleSubmit(values, formikBag) {
62
- var formData = null;
63
-
64
- if (objectContainsNonSerializableProperty(values)) {
65
- formData = objectToFormData(values, {
66
- indices: true,
67
- dotNotation: true,
68
- allowEmptyArrays: true,
69
- noFileListBrackets: true
70
- });
71
- }
72
-
73
- return Promise.resolve(onSubmit(formData || values)).then(function (response) {
74
- return response;
75
- })["catch"](function (err) {
76
- //this is an http error
77
- if (err && err.response && err.response.data && err.response.data.validationFailures) {
78
- try {
79
- var _serverErrors = err.response.data.validationFailures.map(function (error) {
80
- return {
81
- // case insensitive path
82
- path: error.propertyName.toLowerCase(),
83
- errorMessage: error.errorMessage
84
- };
85
- }).reduce(function (acc, value) {
86
- // for simplicity, just keep it to one server error at a time per path
87
- acc[value.path] = value.errorMessage;
88
- return acc;
89
- }, {});
90
-
91
- setServerErrors(_serverErrors);
92
- } catch (err) {
93
- console.error('Failure to getErrorObject');
94
- console.error(err);
95
- throw err;
96
- }
97
- }
98
-
99
- throw err;
100
- });
101
- }
102
- }
103
- Form.DisplayFormState = DisplayFormState;
104
-
105
- function DisplayFormState() {
106
- var formState = useFormikContext();
107
- var serverErrorContext = useContext(ServerErrorContext);
108
- return /*#__PURE__*/React.createElement("div", {
109
- style: {
110
- margin: '1rem 0'
111
- }
112
- }, /*#__PURE__*/React.createElement("pre", {
113
- style: {
114
- background: '#f6f8fa',
115
- fontSize: '.65rem',
116
- padding: '.5rem'
117
- }
118
- }, serverErrorContext && serverErrorContext.errors && /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("strong", null, "serverErrors = "), JSON.stringify(serverErrorContext.errors, null, 2)), /*#__PURE__*/React.createElement("strong", null, "formState = "), JSON.stringify(formState, null, 2)));
119
- }
120
-
121
- Form.propTypes = {
122
- ignoreLostChanges: PropTypes.bool,
123
- onSubmit: PropTypes.func.isRequired,
124
- initialValues: PropTypes.object
125
- };
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __rest = (this && this.__rest) || function (s, e) {
13
+ var t = {};
14
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
15
+ t[p] = s[p];
16
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
17
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
18
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
19
+ t[p[i]] = s[p[i]];
20
+ }
21
+ return t;
22
+ };
23
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
24
+ import { useContext, useMemo, useState, } from 'react';
25
+ import { Form as FormikFormWrapper, Formik, useFormikContext, } from 'formik';
26
+ import FocusError from './FocusError';
27
+ import FormBasedPreventNavigation from './FormBasedPreventNavigation';
28
+ import { ServerErrorContext, } from './ServerErrorContext';
29
+ import Field from '../Field/Field';
30
+ import FieldArray from '../FieldArray/FieldArray';
31
+ import objectContainsNonSerializableProperty from '../utils/objectContainsNonSerializableProperty';
32
+ import objectToFormData from '../utils/objectToFormData';
33
+ export default function Form(_a) {
34
+ var children = _a.children, className = _a.className, style = _a.style, ignoreLostChanges = _a.ignoreLostChanges, onSubmit = _a.onSubmit, initialValues = _a.initialValues, props = __rest(_a, ["children", "className", "style", "ignoreLostChanges", "onSubmit", "initialValues"]);
35
+ // formik resets all error on each blur (with our settings)
36
+ // this means that ALL errors from the server disappear when any one field is blurred
37
+ // So, we have to store server errors ourselves
38
+ // Since we only use useStandardFormInput, that means there is only one consumer
39
+ var _b = useState({}), serverErrors = _b[0], setServerErrors = _b[1];
40
+ var serverErrorContextValue = useMemo(function () { return ({
41
+ errors: serverErrors,
42
+ getError: function (path) {
43
+ var lowered = path.toLowerCase();
44
+ return serverErrors && serverErrors[lowered];
45
+ },
46
+ setError: function (path, errorMessage) {
47
+ var _a;
48
+ var lowered = path.toLowerCase();
49
+ setServerErrors(Object.assign({}, serverErrors, (_a = {},
50
+ _a[lowered] = !errorMessage ? undefined : errorMessage,
51
+ _a)));
52
+ },
53
+ }); }, [serverErrors]);
54
+ return (_jsx(Formik, __assign({ validateOnChange: false, validateOnBlur: true, validateOnMount: false, initialValues: initialValues || {}, onSubmit: handleSubmit }, props, { children: _jsx(ServerErrorContext.Provider, __assign({ value: serverErrorContextValue }, { children: _jsxs(FormikFormWrapper, __assign({ className: className, style: style }, { children: [_jsx(FocusError, { serverErrors: serverErrorContextValue }), _jsx(FormBasedPreventNavigation, { ignoreLostChanges: ignoreLostChanges }), children({
55
+ // hack for ref forwarding
56
+ Field: Field,
57
+ FieldArray: FieldArray,
58
+ })] })) })) })));
59
+ function handleSubmit(values, formikBag) {
60
+ var formData = undefined;
61
+ if (objectContainsNonSerializableProperty(values)) {
62
+ formData = objectToFormData(values, {
63
+ indices: true,
64
+ dotNotation: true,
65
+ allowEmptyArrays: true,
66
+ noFileListBrackets: true,
67
+ });
68
+ }
69
+ return onSubmit(formData !== null && formData !== void 0 ? formData : values, formikBag)
70
+ .then(function (response) {
71
+ return response;
72
+ })
73
+ .catch(function (err) {
74
+ //this is an http error
75
+ if (err &&
76
+ err.response &&
77
+ err.response.data &&
78
+ err.response.data.validationFailures) {
79
+ try {
80
+ var serverErrors_1 = err.response.data.validationFailures.reduce(function (acc, value) {
81
+ var _a;
82
+ // for simplicity, just keep it to one server error at a time per path
83
+ // don't care of the property name case changes
84
+ var path = (_a = value.propertyName) === null || _a === void 0 ? void 0 : _a.toLowerCase();
85
+ if (!!path && !!value.errorMessage) {
86
+ acc[path] = value.errorMessage;
87
+ }
88
+ return acc;
89
+ }, {});
90
+ setServerErrors(serverErrors_1);
91
+ }
92
+ catch (err) {
93
+ console.error('Failure to getErrorObject');
94
+ console.error(err);
95
+ throw err;
96
+ }
97
+ }
98
+ throw err;
99
+ });
100
+ }
101
+ }
102
+ Form.DisplayFormState = DisplayFormState;
103
+ function DisplayFormState() {
104
+ var formState = useFormikContext();
105
+ var serverErrorContext = useContext(ServerErrorContext);
106
+ return (_jsx("div", __assign({ style: { margin: '1rem 0' } }, { children: _jsxs("pre", __assign({ style: {
107
+ background: '#f6f8fa',
108
+ fontSize: '.65rem',
109
+ padding: '.5rem',
110
+ } }, { children: [serverErrorContext && serverErrorContext.errors && (_jsxs("div", { children: [_jsx("strong", { children: "serverErrors = " }), JSON.stringify(serverErrorContext.errors, null, 2)] })), _jsx("strong", { children: "formState = " }), JSON.stringify(formState, null, 2)] })) })));
111
+ }
@@ -0,0 +1,5 @@
1
+ export interface FormBasedPreventNavigationProps {
2
+ ignoreLostChanges?: boolean;
3
+ promptMessage?: string;
4
+ }
5
+ export default function FormBasedPreventNavigation({ ignoreLostChanges, promptMessage, }: FormBasedPreventNavigationProps): null;