envoc-form 3.3.0 → 4.0.1-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 (428) 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/DatePickerInput/DatePickerInput.d.ts +14 -0
  13. package/es/DatePickerInput/DatePickerInput.js +63 -95
  14. package/es/Field/CustomFieldInputProps.d.ts +7 -0
  15. package/es/Field/CustomFieldInputProps.js +1 -0
  16. package/es/Field/CustomFieldMetaProps.d.ts +4 -0
  17. package/es/Field/CustomFieldMetaProps.js +1 -0
  18. package/es/Field/Field.d.ts +22 -0
  19. package/es/Field/Field.js +46 -0
  20. package/es/Field/FieldErrorScrollTarget.d.ts +2 -0
  21. package/es/Field/FieldErrorScrollTarget.js +11 -0
  22. package/es/Field/FieldNameContext.d.ts +3 -0
  23. package/es/Field/FieldNameContext.js +3 -0
  24. package/es/Field/FieldSection.d.ts +7 -0
  25. package/es/Field/FieldSection.js +20 -0
  26. package/es/Field/InjectedFieldProps.d.ts +7 -0
  27. package/es/Field/InjectedFieldProps.js +1 -0
  28. package/es/Field/useStandardField.d.ts +15 -0
  29. package/es/Field/useStandardField.js +93 -0
  30. package/es/FieldArray/FieldArray.d.ts +15 -0
  31. package/es/FieldArray/FieldArray.js +80 -0
  32. package/es/File/FileGroup.d.ts +8 -0
  33. package/es/File/FileGroup.js +50 -0
  34. package/es/File/FileList.d.ts +6 -0
  35. package/es/File/FileList.js +20 -0
  36. package/es/File/humanFileSize.d.ts +1 -0
  37. package/es/File/humanFileSize.js +6 -0
  38. package/es/Form/FocusError.d.ts +5 -0
  39. package/es/Form/FocusError.js +41 -53
  40. package/es/Form/Form.d.ts +22 -0
  41. package/es/Form/Form.js +111 -125
  42. package/es/Form/FormBasedPreventNavigation.d.ts +5 -0
  43. package/es/Form/FormBasedPreventNavigation.js +53 -30
  44. package/es/Form/ServerErrorContext.d.ts +10 -0
  45. package/es/Form/ServerErrorContext.js +8 -6
  46. package/es/FormActions.d.ts +7 -0
  47. package/es/FormActions.js +22 -0
  48. package/es/Group.d.ts +13 -0
  49. package/es/Group.js +22 -0
  50. package/es/Input/IconInputGroup.d.ts +9 -0
  51. package/es/Input/IconInputGroup.js +40 -0
  52. package/es/Input/InputGroup.d.ts +12 -0
  53. package/es/Input/InputGroup.js +33 -0
  54. package/es/Input/MoneyInputGroup.d.ts +7 -0
  55. package/es/Input/MoneyInputGroup.js +41 -0
  56. package/es/Input/NumberInputGroup.d.ts +7 -0
  57. package/es/Input/NumberInputGroup.js +41 -0
  58. package/es/Input/StringInputGroup.d.ts +7 -0
  59. package/es/Input/StringInputGroup.js +40 -0
  60. package/es/Normalization/NormalizationFunction.d.ts +4 -0
  61. package/es/Normalization/NormalizationFunction.js +1 -0
  62. package/es/Normalization/normalizers.d.ts +2 -0
  63. package/es/Normalization/normalizers.js +30 -0
  64. package/es/Select/BooleanSelectGroup.d.ts +7 -0
  65. package/es/Select/BooleanSelectGroup.js +27 -0
  66. package/es/Select/NumberSelectGroup.d.ts +8 -0
  67. package/es/Select/NumberSelectGroup.js +19 -0
  68. package/es/Select/SelectGroup.d.ts +22 -0
  69. package/es/Select/SelectGroup.js +59 -0
  70. package/es/Select/SelectGroupPropsHelper.d.ts +3 -0
  71. package/es/Select/SelectGroupPropsHelper.js +1 -0
  72. package/es/Select/StringSelectGroup.d.ts +8 -0
  73. package/es/Select/StringSelectGroup.js +19 -0
  74. package/es/StandardFormActions.d.ts +6 -0
  75. package/es/StandardFormActions.js +23 -24
  76. package/es/SubmitFormButton.d.ts +7 -0
  77. package/es/SubmitFormButton.js +37 -23
  78. package/es/Validation/ValidatedApiResult.d.ts +6 -0
  79. package/es/Validation/ValidatedApiResult.js +1 -0
  80. package/es/Validation/ValidationError.d.ts +5 -0
  81. package/es/Validation/ValidationError.js +1 -0
  82. package/es/Validation/ValidationFunction.d.ts +4 -0
  83. package/es/Validation/ValidationFunction.js +1 -0
  84. package/es/Validation/validators.d.ts +15 -0
  85. package/es/Validation/validators.js +73 -0
  86. package/es/__Tests__/FormTestBase.d.ts +27 -0
  87. package/es/__Tests__/FormTestBase.js +83 -12
  88. package/{src/__Tests__/index.js → es/__Tests__/index.d.ts} +0 -0
  89. package/es/__Tests__/index.js +2 -2
  90. package/es/index.d.ts +57 -0
  91. package/es/index.js +41 -25
  92. package/es/utils/objectContainsNonSerializableProperty.d.ts +1 -0
  93. package/es/utils/objectContainsNonSerializableProperty.js +14 -16
  94. package/es/utils/objectToFormData.d.ts +10 -0
  95. package/es/utils/objectToFormData.js +77 -65
  96. package/es/utils/typeChecks.d.ts +8 -0
  97. package/es/utils/typeChecks.js +18 -25
  98. package/lib/AddressInput/AddressInput.d.ts +15 -0
  99. package/lib/AddressInput/AddressInput.js +27 -123
  100. package/lib/AddressInput/UsStates.d.ts +3 -0
  101. package/lib/AddressInput/UsStates.js +55 -159
  102. package/lib/ConfirmBaseForm/ConfirmBaseForm.d.ts +10 -0
  103. package/lib/ConfirmBaseForm/ConfirmBaseForm.js +41 -57
  104. package/lib/ConfirmDeleteForm/ConfirmDeleteForm.d.ts +11 -0
  105. package/lib/ConfirmDeleteForm/ConfirmDeleteForm.js +60 -56
  106. package/lib/DatePickerInput/DatePickerInput.d.ts +14 -0
  107. package/lib/DatePickerInput/DatePickerInput.js +69 -113
  108. package/lib/Field/CustomFieldInputProps.d.ts +7 -0
  109. package/lib/Field/CustomFieldInputProps.js +2 -0
  110. package/lib/Field/CustomFieldMetaProps.d.ts +4 -0
  111. package/lib/Field/CustomFieldMetaProps.js +2 -0
  112. package/lib/Field/Field.d.ts +22 -0
  113. package/lib/Field/Field.js +51 -0
  114. package/lib/Field/FieldErrorScrollTarget.d.ts +2 -0
  115. package/lib/Field/FieldErrorScrollTarget.js +14 -0
  116. package/lib/Field/FieldNameContext.d.ts +3 -0
  117. package/lib/Field/FieldNameContext.js +9 -0
  118. package/lib/Field/FieldSection.d.ts +7 -0
  119. package/lib/Field/FieldSection.js +23 -0
  120. package/lib/Field/InjectedFieldProps.d.ts +7 -0
  121. package/lib/Field/InjectedFieldProps.js +2 -0
  122. package/lib/Field/useStandardField.d.ts +15 -0
  123. package/lib/Field/useStandardField.js +96 -0
  124. package/lib/FieldArray/FieldArray.d.ts +15 -0
  125. package/lib/FieldArray/FieldArray.js +86 -0
  126. package/lib/File/FileGroup.d.ts +8 -0
  127. package/lib/File/FileGroup.js +55 -0
  128. package/lib/File/FileList.d.ts +6 -0
  129. package/lib/File/FileList.js +23 -0
  130. package/lib/File/humanFileSize.d.ts +1 -0
  131. package/lib/File/humanFileSize.js +10 -0
  132. package/lib/Form/FocusError.d.ts +5 -0
  133. package/lib/Form/FocusError.js +47 -66
  134. package/lib/Form/Form.d.ts +22 -0
  135. package/lib/Form/Form.js +117 -153
  136. package/lib/Form/FormBasedPreventNavigation.d.ts +5 -0
  137. package/lib/Form/FormBasedPreventNavigation.js +56 -39
  138. package/lib/Form/ServerErrorContext.d.ts +10 -0
  139. package/lib/Form/ServerErrorContext.js +14 -18
  140. package/lib/FormActions.d.ts +7 -0
  141. package/lib/FormActions.js +28 -0
  142. package/lib/Group.d.ts +13 -0
  143. package/lib/Group.js +28 -0
  144. package/lib/Input/IconInputGroup.d.ts +9 -0
  145. package/lib/Input/IconInputGroup.js +45 -0
  146. package/lib/Input/InputGroup.d.ts +12 -0
  147. package/lib/Input/InputGroup.js +38 -0
  148. package/lib/Input/MoneyInputGroup.d.ts +7 -0
  149. package/lib/Input/MoneyInputGroup.js +46 -0
  150. package/lib/Input/NumberInputGroup.d.ts +7 -0
  151. package/lib/Input/NumberInputGroup.js +46 -0
  152. package/lib/Input/StringInputGroup.d.ts +7 -0
  153. package/lib/Input/StringInputGroup.js +45 -0
  154. package/lib/Normalization/NormalizationFunction.d.ts +4 -0
  155. package/lib/Normalization/NormalizationFunction.js +2 -0
  156. package/lib/Normalization/normalizers.d.ts +2 -0
  157. package/lib/Normalization/normalizers.js +35 -0
  158. package/lib/Select/BooleanSelectGroup.d.ts +7 -0
  159. package/lib/Select/BooleanSelectGroup.js +34 -0
  160. package/lib/Select/NumberSelectGroup.d.ts +8 -0
  161. package/lib/Select/NumberSelectGroup.js +27 -0
  162. package/lib/Select/SelectGroup.d.ts +22 -0
  163. package/lib/Select/SelectGroup.js +65 -0
  164. package/lib/Select/SelectGroupPropsHelper.d.ts +3 -0
  165. package/lib/Select/SelectGroupPropsHelper.js +2 -0
  166. package/lib/Select/StringSelectGroup.d.ts +8 -0
  167. package/lib/Select/StringSelectGroup.js +27 -0
  168. package/lib/StandardFormActions.d.ts +6 -0
  169. package/lib/StandardFormActions.js +29 -37
  170. package/lib/SubmitFormButton.d.ts +7 -0
  171. package/lib/SubmitFormButton.js +42 -38
  172. package/lib/Validation/ValidatedApiResult.d.ts +6 -0
  173. package/lib/Validation/ValidatedApiResult.js +2 -0
  174. package/lib/Validation/ValidationError.d.ts +5 -0
  175. package/lib/Validation/ValidationError.js +2 -0
  176. package/lib/Validation/ValidationFunction.d.ts +4 -0
  177. package/lib/Validation/ValidationFunction.js +2 -0
  178. package/lib/Validation/validators.d.ts +15 -0
  179. package/lib/Validation/validators.js +86 -0
  180. package/lib/__Tests__/FormTestBase.d.ts +27 -0
  181. package/lib/__Tests__/FormTestBase.js +86 -25
  182. package/lib/__Tests__/index.d.ts +2 -0
  183. package/lib/__Tests__/index.js +8 -15
  184. package/lib/index.d.ts +57 -0
  185. package/lib/index.js +101 -262
  186. package/lib/utils/objectContainsNonSerializableProperty.d.ts +1 -0
  187. package/lib/utils/objectContainsNonSerializableProperty.js +17 -24
  188. package/lib/utils/objectToFormData.d.ts +10 -0
  189. package/lib/utils/objectToFormData.js +79 -73
  190. package/lib/utils/typeChecks.d.ts +8 -0
  191. package/lib/utils/typeChecks.js +29 -58
  192. package/package.json +106 -101
  193. package/src/AddressInput/{AddesssInput.test.js → AddressInput.test.tsx} +7 -3
  194. package/src/AddressInput/AddressInput.tsx +72 -0
  195. package/src/AddressInput/{UsStates.js → UsStates.ts} +3 -1
  196. package/src/AddressInput/__snapshots__/AddressInput.test.tsx.snap +175 -0
  197. package/src/ConfirmBaseForm/ConfirmBaseForm.test.tsx +24 -0
  198. package/src/ConfirmBaseForm/ConfirmBaseForm.tsx +50 -0
  199. package/src/ConfirmBaseForm/__snapshots__/{ConfirmBaseForm.test.js.snap → ConfirmBaseForm.test.tsx.snap} +2 -2
  200. package/src/ConfirmDeleteForm/{ConfirmDeleteForm.test.js → ConfirmDeleteForm.test.tsx} +3 -3
  201. package/src/ConfirmDeleteForm/ConfirmDeleteForm.tsx +67 -0
  202. package/src/ConfirmDeleteForm/__snapshots__/{ConfirmDeleteForm.test.js.snap → ConfirmDeleteForm.test.tsx.snap} +2 -2
  203. package/src/DatePickerInput/DatePickerInput.test.tsx +48 -0
  204. package/src/DatePickerInput/DatePickerInput.tsx +85 -0
  205. package/src/DatePickerInput/__snapshots__/DatePickerInput.test.tsx.snap +151 -0
  206. package/src/Field/CustomFieldInputProps.ts +10 -0
  207. package/src/Field/CustomFieldMetaProps.ts +5 -0
  208. package/src/Field/Field.tsx +90 -0
  209. package/src/Field/FieldErrorScrollTarget.tsx +11 -0
  210. package/src/Field/FieldNameContext.ts +6 -0
  211. package/src/Field/FieldSection.tsx +18 -0
  212. package/src/Field/InjectedFieldProps.ts +8 -0
  213. package/src/Field/useStandardField.ts +121 -0
  214. package/src/FieldArray/FieldArray.tsx +133 -0
  215. package/src/File/FileGroup.test.tsx +35 -0
  216. package/src/File/FileGroup.tsx +71 -0
  217. package/src/File/FileList.tsx +19 -0
  218. package/src/File/__snapshots__/FileGroup.test.tsx.snap +32 -0
  219. package/src/File/humanFileSize.ts +8 -0
  220. package/src/Form/{FocusError.js → FocusError.tsx} +10 -6
  221. package/src/Form/Form.test.tsx +14 -0
  222. package/src/Form/{Form.js → Form.tsx} +71 -31
  223. package/src/Form/FormBasedPreventNavigation.tsx +74 -0
  224. package/src/Form/ServerErrorContext.ts +17 -0
  225. package/src/Form/__snapshots__/{Form.test.js.snap → Form.test.tsx.snap} +1 -1
  226. package/src/FormActions.tsx +34 -0
  227. package/src/Group.tsx +43 -0
  228. package/src/Input/IconInputGroup.tsx +48 -0
  229. package/src/Input/InputGroup.tsx +57 -0
  230. package/src/Input/MoneyInputGroup.tsx +44 -0
  231. package/src/Input/NumberInputGroup.tsx +42 -0
  232. package/src/Input/StringInputGroup.tsx +40 -0
  233. package/src/Input/__Tests__/IconInputGroup.test.tsx +35 -0
  234. package/src/Input/__Tests__/MoneyInputGroup.test.tsx +37 -0
  235. package/src/Input/__Tests__/NumberInputGroup.test.tsx +35 -0
  236. package/src/Input/__Tests__/StringInputGroup.test.tsx +27 -0
  237. package/src/Input/__Tests__/__snapshots__/IconInputGroup.test.tsx.snap +29 -0
  238. package/src/Input/__Tests__/__snapshots__/MoneyInputGroup.test.tsx.snap +31 -0
  239. package/src/Input/__Tests__/__snapshots__/NumberInputGroup.test.tsx.snap +29 -0
  240. package/src/Input/__Tests__/__snapshots__/StringInputGroup.test.tsx.snap +28 -0
  241. package/src/Normalization/NormalizationFunction.ts +4 -0
  242. package/src/{normalizers.js → Normalization/normalizers.ts} +5 -5
  243. package/src/Select/BooleanSelectGroup.tsx +27 -0
  244. package/src/Select/NumberSelectGroup.tsx +14 -0
  245. package/src/Select/SelectGroup.tsx +106 -0
  246. package/src/Select/SelectGroupPropsHelper.ts +4 -0
  247. package/src/Select/StringSelectGroup.tsx +14 -0
  248. package/src/Select/__tests__/BooleanSelectGroup.test.tsx +35 -0
  249. package/src/Select/__tests__/NumberSelectGroup.test.tsx +87 -0
  250. package/src/Select/__tests__/StringSelectGroup.test.tsx +89 -0
  251. package/src/Select/__tests__/__snapshots__/BooleanSelectGroup.test.tsx.snap +99 -0
  252. package/src/Select/__tests__/__snapshots__/NumberSelectGroup.test.tsx.snap +197 -0
  253. package/src/Select/__tests__/__snapshots__/StringSelectGroup.test.tsx.snap +197 -0
  254. package/src/{StandardFormActions.js → StandardFormActions.tsx} +12 -6
  255. package/src/SubmitFormButton.tsx +44 -0
  256. package/src/Validation/ValidatedApiResult.ts +8 -0
  257. package/src/Validation/ValidationError.ts +6 -0
  258. package/src/Validation/ValidationFunction.ts +4 -0
  259. package/src/{validators/validators.test.js → Validation/validators.test.tsx} +6 -4
  260. package/src/Validation/validators.ts +92 -0
  261. package/src/__Tests__/FormTestBase.tsx +63 -0
  262. package/src/__Tests__/{StandardFormActions.test.js → StandardFormActions.test.tsx} +2 -8
  263. package/src/__Tests__/{SubmitFormButton.test.js → SubmitFormButton.test.tsx} +2 -8
  264. package/src/__Tests__/__snapshots__/{StandardFormActions.test.js.snap → StandardFormActions.test.tsx.snap} +2 -2
  265. package/src/__Tests__/__snapshots__/{SubmitFormButton.test.js.snap → SubmitFormButton.test.tsx.snap} +1 -1
  266. package/src/__Tests__/index.ts +3 -0
  267. package/src/index.ts +114 -0
  268. package/src/react-app-env.d.ts +1 -0
  269. package/src/styles.scss +0 -7
  270. package/src/utils/{objectContainsNonSerializableProperty.test.js → objectContainsNonSerializableProperty.test.tsx} +0 -0
  271. package/src/utils/{objectContainsNonSerializableProperty.js → objectContainsNonSerializableProperty.ts} +4 -2
  272. package/src/utils/{objectToFormData.test.js → objectToFormData.test.tsx} +0 -0
  273. package/src/utils/{objectToFormData.js → objectToFormData.ts} +29 -13
  274. package/src/utils/typeChecks.ts +18 -0
  275. package/es/AddressInput/index.js +0 -3
  276. package/es/BoolInput/BoolInput.js +0 -10
  277. package/es/BoolInput/InlineBoolInput.js +0 -10
  278. package/es/BoolInput/boolOptions.js +0 -8
  279. package/es/BoolInput/index.js +0 -3
  280. package/es/ConfirmBaseForm/index.js +0 -2
  281. package/es/ConfirmDeleteForm/index.js +0 -2
  282. package/es/DatePickerInput/index.js +0 -2
  283. package/es/ErrorScrollTarget.js +0 -10
  284. package/es/FileInput/DefaultFileList.js +0 -36
  285. package/es/FileInput/DropzoneFileInput.js +0 -58
  286. package/es/FileInput/FileInput.js +0 -62
  287. package/es/FileInput/index.js +0 -4
  288. package/es/Form/index.js +0 -5
  289. package/es/FormGroup.js +0 -22
  290. package/es/FormGroupWrapper.js +0 -22
  291. package/es/FormInput/FormInput.js +0 -212
  292. package/es/FormInput/index.js +0 -2
  293. package/es/FormInputArray/FormInputArray.js +0 -225
  294. package/es/FormInputArray/index.js +0 -2
  295. package/es/FormSection.js +0 -11
  296. package/es/IconInput.js +0 -33
  297. package/es/InlineFormInput/InlineFormInput.js +0 -8
  298. package/es/InlineFormInput/index.js +0 -2
  299. package/es/MoneyFormattedInput/MoneyFormattedInput.js +0 -106
  300. package/es/MoneyFormattedInput/index.js +0 -2
  301. package/es/MoneyInput/InlineMoneyInput.js +0 -7
  302. package/es/MoneyInput/MoneyInput.js +0 -7
  303. package/es/MoneyInput/index.js +0 -3
  304. package/es/MoneyInput/moneyInputProps.js +0 -13
  305. package/es/NestedFormFieldContext.js +0 -4
  306. package/es/ReactSelectField/ReactSelectField.js +0 -162
  307. package/es/ReactSelectField/index.js +0 -2
  308. package/es/normalizers.js +0 -39
  309. package/es/selectors.js +0 -6
  310. package/es/useStandardFormInput.js +0 -119
  311. package/es/utils/index.js +0 -3
  312. package/es/validators/index.js +0 -2
  313. package/es/validators/validators.js +0 -94
  314. package/lib/AddressInput/index.js +0 -23
  315. package/lib/BoolInput/BoolInput.js +0 -23
  316. package/lib/BoolInput/InlineBoolInput.js +0 -23
  317. package/lib/BoolInput/boolOptions.js +0 -15
  318. package/lib/BoolInput/index.js +0 -23
  319. package/lib/ConfirmBaseForm/index.js +0 -13
  320. package/lib/ConfirmDeleteForm/index.js +0 -13
  321. package/lib/DatePickerInput/index.js +0 -13
  322. package/lib/ErrorScrollTarget.js +0 -20
  323. package/lib/FileInput/DefaultFileList.js +0 -47
  324. package/lib/FileInput/DropzoneFileInput.js +0 -75
  325. package/lib/FileInput/FileInput.js +0 -82
  326. package/lib/FileInput/index.js +0 -31
  327. package/lib/Form/index.js +0 -39
  328. package/lib/FormGroup.js +0 -33
  329. package/lib/FormGroupWrapper.js +0 -37
  330. package/lib/FormInput/FormInput.js +0 -236
  331. package/lib/FormInput/index.js +0 -13
  332. package/lib/FormInputArray/FormInputArray.js +0 -248
  333. package/lib/FormInputArray/index.js +0 -13
  334. package/lib/FormSection.js +0 -28
  335. package/lib/IconInput.js +0 -51
  336. package/lib/InlineFormInput/InlineFormInput.js +0 -20
  337. package/lib/InlineFormInput/index.js +0 -13
  338. package/lib/MoneyFormattedInput/MoneyFormattedInput.js +0 -126
  339. package/lib/MoneyFormattedInput/index.js +0 -15
  340. package/lib/MoneyInput/InlineMoneyInput.js +0 -20
  341. package/lib/MoneyInput/MoneyInput.js +0 -20
  342. package/lib/MoneyInput/index.js +0 -23
  343. package/lib/MoneyInput/moneyInputProps.js +0 -26
  344. package/lib/NestedFormFieldContext.js +0 -16
  345. package/lib/ReactSelectField/ReactSelectField.js +0 -187
  346. package/lib/ReactSelectField/index.js +0 -31
  347. package/lib/normalizers.js +0 -51
  348. package/lib/selectors.js +0 -18
  349. package/lib/useStandardFormInput.js +0 -135
  350. package/lib/utils/index.js +0 -23
  351. package/lib/validators/index.js +0 -17
  352. package/lib/validators/validators.js +0 -130
  353. package/src/AddressInput/AddressInput.js +0 -73
  354. package/src/AddressInput/__snapshots__/AddesssInput.test.js.snap +0 -207
  355. package/src/AddressInput/index.js +0 -3
  356. package/src/BoolInput/BoolInput.js +0 -7
  357. package/src/BoolInput/BoolInput.test.js +0 -23
  358. package/src/BoolInput/InlineBoolInput.js +0 -7
  359. package/src/BoolInput/__snapshots__/BoolInput.test.js.snap +0 -89
  360. package/src/BoolInput/boolOptions.js +0 -6
  361. package/src/BoolInput/index.js +0 -4
  362. package/src/ConfirmBaseForm/ConfirmBaseForm.js +0 -37
  363. package/src/ConfirmBaseForm/ConfirmBaseForm.test.js +0 -14
  364. package/src/ConfirmBaseForm/index.js +0 -2
  365. package/src/ConfirmDeleteForm/ConfirmDeleteForm.js +0 -39
  366. package/src/ConfirmDeleteForm/index.js +0 -2
  367. package/src/DatePickerInput/DatePickerInput.js +0 -49
  368. package/src/DatePickerInput/DatePickerInput.test.js +0 -74
  369. package/src/DatePickerInput/__snapshots__/DatePickerInput.test.js.snap +0 -134
  370. package/src/DatePickerInput/date-picker-input.scss +0 -42
  371. package/src/DatePickerInput/index.js +0 -3
  372. package/src/ErrorScrollTarget.js +0 -6
  373. package/src/FileInput/DefaultFileList.js +0 -39
  374. package/src/FileInput/DropzoneFileInput.js +0 -56
  375. package/src/FileInput/DropzoneFileInput.test.js +0 -24
  376. package/src/FileInput/FileInput.js +0 -77
  377. package/src/FileInput/FileInput.test.js +0 -24
  378. package/src/FileInput/__snapshots__/DropzoneFileInput.test.js.snap +0 -57
  379. package/src/FileInput/__snapshots__/FileInput.test.js.snap +0 -58
  380. package/src/FileInput/file-input.scss +0 -58
  381. package/src/FileInput/index.js +0 -5
  382. package/src/Form/Form.test.js +0 -23
  383. package/src/Form/FormBasedPreventNavigation.js +0 -25
  384. package/src/Form/ServerErrorContext.js +0 -7
  385. package/src/Form/index.js +0 -11
  386. package/src/FormGroup.js +0 -30
  387. package/src/FormGroupWrapper.js +0 -28
  388. package/src/FormInput/FormInput.js +0 -148
  389. package/src/FormInput/FormInput.test.js +0 -66
  390. package/src/FormInput/__snapshots__/FormInput.test.js.snap +0 -323
  391. package/src/FormInput/form-input.scss +0 -9
  392. package/src/FormInput/index.js +0 -2
  393. package/src/FormInputArray/FormInputArray.js +0 -224
  394. package/src/FormInputArray/FormInputArray.test.js +0 -108
  395. package/src/FormInputArray/__snapshots__/FormInputArray.test.js.snap +0 -52
  396. package/src/FormInputArray/form-input-array.scss +0 -13
  397. package/src/FormInputArray/index.js +0 -2
  398. package/src/FormSection.js +0 -13
  399. package/src/IconInput.js +0 -31
  400. package/src/InlineFormInput/InlineFormInput.js +0 -6
  401. package/src/InlineFormInput/InlineFormInput.test.js +0 -23
  402. package/src/InlineFormInput/__snapshots__/InlineFormInput.test.js.snap +0 -26
  403. package/src/InlineFormInput/index.js +0 -3
  404. package/src/InlineFormInput/inline-form-input.scss +0 -3
  405. package/src/MoneyFormattedInput/MoneyFormattedInput.js +0 -115
  406. package/src/MoneyFormattedInput/index.js +0 -3
  407. package/src/MoneyInput/InlineMoneyInput.js +0 -7
  408. package/src/MoneyInput/MoneyInput.js +0 -7
  409. package/src/MoneyInput/MoneyInputs.test.js +0 -43
  410. package/src/MoneyInput/__snapshots__/MoneyInputs.test.js.snap +0 -81
  411. package/src/MoneyInput/index.js +0 -4
  412. package/src/MoneyInput/money-input.scss +0 -3
  413. package/src/MoneyInput/moneyInputProps.js +0 -12
  414. package/src/NestedFormFieldContext.js +0 -6
  415. package/src/ReactSelectField/ReactSelectField.js +0 -155
  416. package/src/ReactSelectField/index.js +0 -6
  417. package/src/ReactSelectField/react-select-field.scss +0 -5
  418. package/src/SubmitFormButton.js +0 -28
  419. package/src/__Tests__/FormTestBase.js +0 -14
  420. package/src/__Tests__/IconInput.test.js +0 -23
  421. package/src/__Tests__/__snapshots__/IconInput.test.js.snap +0 -38
  422. package/src/index.js +0 -70
  423. package/src/selectors.js +0 -3
  424. package/src/useStandardFormInput.js +0 -118
  425. package/src/utils/index.js +0 -3
  426. package/src/utils/typeChecks.js +0 -18
  427. package/src/validators/index.js +0 -2
  428. package/src/validators/validators.js +0 -93
package/src/styles.scss CHANGED
@@ -1,7 +0,0 @@
1
- @use './DatePickerInput/date-picker-input.scss';
2
- @use './InlineFormInput/inline-form-input.scss';
3
- @use './MoneyInput/money-input.scss';
4
- @use './FormInput/form-input.scss';
5
- @use './FileInput/file-input.scss';
6
- @use './FormInputArray/form-input-array.scss';
7
- @use './ReactSelectField/react-select-field.scss';
@@ -1,6 +1,8 @@
1
- import { isObject, isBlob, isFile } from './typeChecks';
1
+ import { isBlob, isFile, isObject } from './typeChecks';
2
2
 
3
- export default function objectContainsNonSerializableProperty(object) {
3
+ export default function objectContainsNonSerializableProperty(
4
+ object: any
5
+ ): boolean {
4
6
  return Object.entries(object).some((value) => {
5
7
  if (value) {
6
8
  if (isBlob(value[1]) || isFile(value[1])) {
@@ -1,17 +1,33 @@
1
1
  // Original: https://github.com/therealparmesh/object-to-formdata/blob/master/src/index.js
2
2
  // With Multiple Form File Fix: https://github.com/therealparmesh/object-to-formdata/pull/94/files
3
3
  import {
4
- isUndefined,
5
- isNull,
6
- isBoolean,
7
- isObject,
8
4
  isArray,
9
- isDate,
10
5
  isBlob,
6
+ isBoolean,
7
+ isDate,
11
8
  isFile,
9
+ isNull,
10
+ isObject,
11
+ isUndefined,
12
12
  } from './typeChecks';
13
13
 
14
- const serialize = (obj, cfg, fd, pre) => {
14
+ // TODO: make all of these optional?
15
+ export interface ObjectToFormDataCfgProps {
16
+ indices: boolean;
17
+ dotNotation: boolean;
18
+ allowEmptyArrays: boolean;
19
+ noFileListBrackets: boolean;
20
+ nullsAsUndefineds?: boolean;
21
+ booleansAsIntegers?: boolean;
22
+ }
23
+
24
+ // 'pre' is not provided until this function recursively calls itself when 'obj' is an array or object
25
+ const serialize = (
26
+ obj: any,
27
+ cfg: ObjectToFormDataCfgProps,
28
+ fd?: FormData,
29
+ pre?: string
30
+ ) => {
15
31
  cfg = cfg || {};
16
32
 
17
33
  cfg.indices = isUndefined(cfg.indices) ? false : cfg.indices;
@@ -35,19 +51,21 @@ const serialize = (obj, cfg, fd, pre) => {
35
51
 
36
52
  if (isUndefined(obj)) {
37
53
  return fd;
38
- } else if (isNull(obj)) {
54
+ } else if (isNull(obj) && !!pre) {
39
55
  if (!cfg.nullsAsUndefineds) {
40
56
  fd.append(pre, '');
41
57
  }
42
- } else if (isBoolean(obj)) {
58
+ } else if (isBoolean(obj) && !!pre) {
43
59
  if (cfg.booleansAsIntegers) {
44
- fd.append(pre, obj ? 1 : 0);
60
+ fd.append(pre, obj ? '1' : '0');
45
61
  } else {
46
62
  fd.append(pre, obj);
47
63
  }
64
+ } else if (isDate(obj) && !!pre) {
65
+ fd.append(pre, obj.toISOString());
48
66
  } else if (isArray(obj)) {
49
67
  if (obj.length) {
50
- obj.forEach((value, index) => {
68
+ obj.forEach((value: any, index: number) => {
51
69
  let key;
52
70
  if (cfg.noFileListBrackets && isFile(value)) {
53
71
  key = pre;
@@ -59,8 +77,6 @@ const serialize = (obj, cfg, fd, pre) => {
59
77
  } else if (cfg.allowEmptyArrays) {
60
78
  fd.append(pre + '[]', '');
61
79
  }
62
- } else if (isDate(obj)) {
63
- fd.append(pre, obj.toISOString());
64
80
  } else if (isObject(obj) && !isFile(obj) && !isBlob(obj)) {
65
81
  Object.keys(obj).forEach((prop) => {
66
82
  const value = obj[prop];
@@ -79,7 +95,7 @@ const serialize = (obj, cfg, fd, pre) => {
79
95
 
80
96
  serialize(value, cfg, fd, key);
81
97
  });
82
- } else {
98
+ } else if (!!pre) {
83
99
  fd.append(pre, obj);
84
100
  }
85
101
 
@@ -0,0 +1,18 @@
1
+ export const isUndefined = (value: any) => value === undefined;
2
+ export const isNull = (value: any) => value === null;
3
+ export const isBoolean = (value: any) => typeof value === 'boolean';
4
+ export const isObject = (value: any) => value === Object(value);
5
+ export const isArray = (value: any) => Array.isArray(value);
6
+ export const isDate = (value: any) => value instanceof Date;
7
+
8
+ export const isBlob = (value: any) =>
9
+ value &&
10
+ typeof value.size === 'number' &&
11
+ typeof value.type === 'string' &&
12
+ typeof value.slice === 'function';
13
+
14
+ export const isFile = (value: any) =>
15
+ isBlob(value) &&
16
+ typeof value.name === 'string' &&
17
+ (typeof value.lastModifiedDate === 'object' ||
18
+ typeof value.lastModified === 'number');
@@ -1,3 +0,0 @@
1
- import AddressInput from './AddressInput';
2
- import UsStates from './UsStates';
3
- export { AddressInput as default, UsStates };
@@ -1,10 +0,0 @@
1
- import _extends from "@babel/runtime/helpers/esm/extends";
2
- import React from 'react';
3
- import boolOptions from './boolOptions';
4
- import FormInput from '../FormInput';
5
- export default function BoolInput(props) {
6
- return /*#__PURE__*/React.createElement(FormInput, _extends({
7
- options: boolOptions,
8
- type: "select"
9
- }, props));
10
- }
@@ -1,10 +0,0 @@
1
- import _extends from "@babel/runtime/helpers/esm/extends";
2
- import React from 'react';
3
- import boolOptions from './boolOptions';
4
- import InlineFormInput from '../InlineFormInput';
5
- export default function InlineBoolInput(props) {
6
- return /*#__PURE__*/React.createElement(InlineFormInput, _extends({
7
- options: boolOptions,
8
- type: "select"
9
- }, props));
10
- }
@@ -1,8 +0,0 @@
1
- var boolOptions = [{
2
- label: 'Yes',
3
- value: true
4
- }, {
5
- label: 'No',
6
- value: false
7
- }];
8
- export default boolOptions;
@@ -1,3 +0,0 @@
1
- import BoolInput from './BoolInput';
2
- import InlineBoolInput from './InlineBoolInput';
3
- export { BoolInput, InlineBoolInput };
@@ -1,2 +0,0 @@
1
- import ConfirmBaseForm from './ConfirmBaseForm';
2
- export default ConfirmBaseForm;
@@ -1,2 +0,0 @@
1
- import ConfirmDeleteForm from './ConfirmDeleteForm';
2
- export default ConfirmDeleteForm;
@@ -1,2 +0,0 @@
1
- import DatePickerInput from './DatePickerInput';
2
- export default DatePickerInput;
@@ -1,10 +0,0 @@
1
- import React from 'react';
2
- export default function ErrorScrollTarget(props) {
3
- var divId = "".concat(props.name.toLowerCase(), "-error-scroll-target");
4
- return /*#__PURE__*/React.createElement("div", {
5
- id: divId,
6
- style: {
7
- display: 'none'
8
- }
9
- });
10
- }
@@ -1,36 +0,0 @@
1
- import React from 'react';
2
- import { ListGroupItem, ListGroup } from 'reactstrap';
3
- export default function DefaultFileList(_ref) {
4
- var files = _ref.files,
5
- _ref$rejectedFiles = _ref.rejectedFiles,
6
- rejectedFiles = _ref$rejectedFiles === void 0 ? [] : _ref$rejectedFiles;
7
- return /*#__PURE__*/React.createElement(ListGroup, null, files.map(function (file) {
8
- return /*#__PURE__*/React.createElement(Group, {
9
- key: file.path,
10
- item: file,
11
- warning: false
12
- });
13
- }), rejectedFiles.map(function (_ref2) {
14
- var file = _ref2.file;
15
- return /*#__PURE__*/React.createElement(Group, {
16
- key: file.path,
17
- item: file,
18
- warning: true
19
- });
20
- }));
21
- }
22
-
23
- function Group(_ref3) {
24
- var item = _ref3.item,
25
- warning = _ref3.warning;
26
- return /*#__PURE__*/React.createElement(ListGroupItem, {
27
- color: "d-flex ".concat(warning ? 'warning' : 'success', " justify-content-between list-group-item ").concat(warning ? 'list-group-item-warning' : 'list-group-item-success', " px-3 py-1 rounded-1")
28
- }, /*#__PURE__*/React.createElement("span", {
29
- className: "d-flex justify-content-between w-100"
30
- }, /*#__PURE__*/React.createElement("span", null, item.name), " ", /*#__PURE__*/React.createElement("span", null, humanFileSize(item.size))));
31
- }
32
-
33
- function humanFileSize(size) {
34
- var i = Math.floor(Math.log(size) / Math.log(1024));
35
- return (size / Math.pow(1024, i)).toFixed(2) * 1 + ' ' + ['B', 'KB', 'MB', 'GB', 'TB'][i];
36
- }
@@ -1,58 +0,0 @@
1
- import _extends from "@babel/runtime/helpers/esm/extends";
2
- import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
- import _readOnlyError from "@babel/runtime/helpers/esm/readOnlyError";
4
- var _excluded = ["className", "onChange", "value", "accept", "disabled", "multiple", "FileList", "placeholder", "dropzone"];
5
- import React from 'react';
6
- import { useDropzone } from 'react-dropzone';
7
- import classNames from 'classnames';
8
- import DefaultFileList from './DefaultFileList';
9
- export default function DropzoneFileInput(_ref) {
10
- var classNameProp = _ref.className,
11
- onChange = _ref.onChange,
12
- value = _ref.value,
13
- accept = _ref.accept,
14
- disabled = _ref.disabled,
15
- _ref$multiple = _ref.multiple,
16
- multiple = _ref$multiple === void 0 ? false : _ref$multiple,
17
- _ref$FileList = _ref.FileList,
18
- FileList = _ref$FileList === void 0 ? DefaultFileList : _ref$FileList,
19
- _ref$placeholder = _ref.placeholder,
20
- placeholder = _ref$placeholder === void 0 ? 'Drag and drop some file(s) here, or click to select file(s)' : _ref$placeholder,
21
- dropzone = _ref.dropzone,
22
- props = _objectWithoutProperties(_ref, _excluded);
23
-
24
- var _useDropzone = useDropzone({
25
- accept: accept,
26
- onDrop: onDrop,
27
- disabled: disabled,
28
- multiple: multiple
29
- }),
30
- _useDropzone$accepted = _useDropzone.acceptedFiles,
31
- acceptedFiles = _useDropzone$accepted === void 0 ? (acceptedFiles[0], _readOnlyError("acceptedFiles")) : _useDropzone$accepted,
32
- _useDropzone$fileReje = _useDropzone.fileRejections,
33
- fileRejections = _useDropzone$fileReje === void 0 ? fileRejections.push(acceptedFiles.slice(1, acceptedFiles.length)) : _useDropzone$fileReje,
34
- getRootProps = _useDropzone.getRootProps,
35
- getInputProps = _useDropzone.getInputProps,
36
- isDragAccept = _useDropzone.isDragAccept,
37
- isDragReject = _useDropzone.isDragReject;
38
-
39
- function onDrop(acceptedFiles) {
40
- if (!(acceptedFiles !== null && acceptedFiles !== void 0 && acceptedFiles.length) > 1 && !multiple) {
41
- onChange(null);
42
- } else {
43
- onChange(acceptedFiles);
44
- }
45
- }
46
-
47
- var className = classNames('react-dropzone', classNameProp, {
48
- accept: isDragAccept,
49
- reject: isDragReject,
50
- disabled: disabled
51
- });
52
- return /*#__PURE__*/React.createElement("section", {
53
- className: className
54
- }, /*#__PURE__*/React.createElement("div", getRootProps(), /*#__PURE__*/React.createElement("input", _extends({}, props, getInputProps())), /*#__PURE__*/React.createElement(React.Fragment, null, placeholder), !multiple && /*#__PURE__*/React.createElement("b", null, "Only one file accepted."), accept && /*#__PURE__*/React.createElement("b", null, "Files of type \"".concat(accept, "\" accepted"))), /*#__PURE__*/React.createElement("aside", null, /*#__PURE__*/React.createElement(FileList, {
55
- files: acceptedFiles,
56
- rejectedFiles: fileRejections
57
- })));
58
- }
@@ -1,62 +0,0 @@
1
- import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
- import _extends from "@babel/runtime/helpers/esm/extends";
3
- import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
4
- import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
5
- var _excluded = ["className", "onChange", "value", "multiple"];
6
- import React, { useEffect, useRef, useState } from 'react';
7
- import DefaultFileList from './DefaultFileList';
8
- export default function FileInput(_ref) {
9
- var className = _ref.className,
10
- onChange = _ref.onChange,
11
- value = _ref.value,
12
- _ref$multiple = _ref.multiple,
13
- multiple = _ref$multiple === void 0 ? false : _ref$multiple,
14
- props = _objectWithoutProperties(_ref, _excluded);
15
-
16
- var inputRef = useRef();
17
-
18
- var _useState = useState([]),
19
- _useState2 = _slicedToArray(_useState, 2),
20
- acceptedFiles = _useState2[0],
21
- setAcceptedFiles = _useState2[1];
22
-
23
- useEffect(function () {
24
- if (!value && inputRef.current) {
25
- inputRef.current.value = null;
26
- }
27
- }, [value]);
28
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
29
- className: "custom-file file-input ".concat(className || '', " ").concat(props.disabled ? 'disabled' : '')
30
- }, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("input", _extends({
31
- ref: inputRef,
32
- type: "file",
33
- className: "custom-file-input",
34
- onChange: handleChange,
35
- multiple: multiple
36
- }, props))), /*#__PURE__*/React.createElement("label", {
37
- className: "custom-file-label"
38
- }, /*#__PURE__*/React.createElement("div", null, !value && /*#__PURE__*/React.createElement("span", null, "Choose A File..."), value && (!multiple ? /*#__PURE__*/React.createElement("span", null, value.name, " - size: ", humanFileSize(value.size)) : value.length === 1 ? /*#__PURE__*/React.createElement("span", null, value[0].name, " - size: ", humanFileSize(value[0].size)) : /*#__PURE__*/React.createElement("span", null, "Multiple files selected."))))), /*#__PURE__*/React.createElement(DefaultFileList, {
39
- files: acceptedFiles
40
- }));
41
-
42
- function handleChange(e) {
43
- if (e == null || !e.target || !e.target.files.length) {
44
- onChange(null);
45
- } else {
46
- var files = _toConsumableArray(e.target.files);
47
-
48
- setAcceptedFiles(files);
49
-
50
- if (!multiple) {
51
- onChange(files[0]);
52
- } else {
53
- onChange(files);
54
- }
55
- }
56
- }
57
- }
58
-
59
- function humanFileSize(size) {
60
- var i = Math.floor(Math.log(size) / Math.log(1024));
61
- return (size / Math.pow(1024, i)).toFixed(2) * 1 + ' ' + ['B', 'KB', 'MB', 'GB', 'TB'][i];
62
- }
@@ -1,4 +0,0 @@
1
- import FileInput from './FileInput';
2
- import DropzoneFileInput from './DropzoneFileInput';
3
- import DefaultFileList from './DefaultFileList';
4
- export { FileInput, DropzoneFileInput, DefaultFileList };
package/es/Form/index.js DELETED
@@ -1,5 +0,0 @@
1
- import FocusError from './FocusError';
2
- import Form from './Form';
3
- import FormBasedPreventNavigation from './FormBasedPreventNavigation';
4
- import ServerErrorContext from './ServerErrorContext';
5
- export { Form as default, ServerErrorContext, FocusError, FormBasedPreventNavigation };
package/es/FormGroup.js DELETED
@@ -1,22 +0,0 @@
1
- import React from 'react';
2
- import { FormGroup as BootstrapFormGroup, Label, FormFeedback, FormText, Alert } from 'reactstrap';
3
-
4
- var FormGroup = function FormGroup(_ref) {
5
- var label = _ref.label,
6
- id = _ref.id,
7
- helpText = _ref.helpText,
8
- className = _ref.className,
9
- style = _ref.style,
10
- children = _ref.children,
11
- meta = _ref.meta;
12
- return /*#__PURE__*/React.createElement(BootstrapFormGroup, {
13
- className: className,
14
- style: style
15
- }, !!meta.warning && /*#__PURE__*/React.createElement(Alert, {
16
- color: "warning"
17
- }, meta.warning), label && /*#__PURE__*/React.createElement(Label, {
18
- htmlFor: id
19
- }, label), children, meta.error && /*#__PURE__*/React.createElement(FormFeedback, null, meta.error), helpText && /*#__PURE__*/React.createElement(FormText, null, helpText));
20
- };
21
-
22
- export default FormGroup;
@@ -1,22 +0,0 @@
1
- import _extends from "@babel/runtime/helpers/esm/extends";
2
- import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
- var _excluded = ["prepend", "append", "Component", "helpText"];
4
- import React from 'react';
5
- import { InputGroup } from 'reactstrap';
6
- import FormGroup from './FormGroup';
7
- import ErrorScrollTarget from './ErrorScrollTarget';
8
- export default function FormGroupWrapper(_ref) {
9
- var prepend = _ref.prepend,
10
- append = _ref.append,
11
- Component = _ref.Component,
12
- helpText = _ref.helpText,
13
- props = _objectWithoutProperties(_ref, _excluded);
14
-
15
- var meta = props.meta;
16
- return /*#__PURE__*/React.createElement(FormGroup, _extends({
17
- meta: meta,
18
- helpText: helpText
19
- }, props), /*#__PURE__*/React.createElement(ErrorScrollTarget, {
20
- name: props.name
21
- }), prepend || append ? /*#__PURE__*/React.createElement(InputGroup, null, prepend, /*#__PURE__*/React.createElement(Component, props), append) : /*#__PURE__*/React.createElement(Component, props));
22
- }
@@ -1,212 +0,0 @@
1
- import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
- import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
- import _extends from "@babel/runtime/helpers/esm/extends";
4
- import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
5
- var _excluded = ["className", "meta", "helpText"],
6
- _excluded2 = ["meta"],
7
- _excluded3 = ["includeEmptyOption", "options"],
8
- _excluded4 = ["optionsUrl", "includeEmptyOption", "includeOtherOption", "cache", "maxAge"],
9
- _excluded5 = ["meta"],
10
- _excluded6 = ["helpText", "meta"];
11
- import React from 'react';
12
- import classnames from 'classnames';
13
- import { Input as BootstrapInput, FormFeedback, CustomInput, FormText, Alert } from 'reactstrap';
14
- import lru from 'lru-cache';
15
- import PropTypes from 'prop-types';
16
- import TextareaAutosize from 'react-textarea-autosize';
17
- import { useAxiosRequest } from 'envoc-request';
18
- import FormGroupWrapper from '../FormGroupWrapper';
19
- import DatePickerInput from '../DatePickerInput';
20
- import ReactSelectField from '../ReactSelectField';
21
- import useStandardFormInput from '../useStandardFormInput';
22
- import { MoneyFormattedInput } from '../MoneyFormattedInput';
23
- import { FileInput, DropzoneFileInput } from '../FileInput';
24
- export default function FormInput(props) {
25
- var _useStandardFormInput = useStandardFormInput(props),
26
- _useStandardFormInput2 = _slicedToArray(_useStandardFormInput, 2),
27
- input = _useStandardFormInput2[0],
28
- meta = _useStandardFormInput2[1];
29
-
30
- var className = props.className,
31
- hide = props.hide;
32
- return /*#__PURE__*/React.createElement(StandardFieldGroup, _extends({}, input, {
33
- className: classnames({
34
- 'd-none': hide
35
- }, className),
36
- meta: meta
37
- }));
38
- }
39
- FormInput.propTypes = {
40
- id: PropTypes.string,
41
- label: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),
42
- name: PropTypes.string.isRequired,
43
- placeholder: PropTypes.string,
44
- helpText: PropTypes.oneOfType([PropTypes.string, PropTypes.object])
45
- };
46
-
47
- function StandardFieldGroup(props) {
48
- switch (props.type) {
49
- case 'date':
50
- return /*#__PURE__*/React.createElement(FormGroupWrapper, _extends({}, props, {
51
- Component: DatePicker
52
- }));
53
-
54
- case 'select':
55
- if (props.optionsUrl) {
56
- return /*#__PURE__*/React.createElement(FormGroupWrapper, _extends({}, props, {
57
- Component: RemoteSelect
58
- }));
59
- } else {
60
- return /*#__PURE__*/React.createElement(FormGroupWrapper, _extends({}, props, {
61
- Component: Select
62
- }));
63
- }
64
-
65
- case 'checkbox':
66
- case 'radio':
67
- return Checkbox(props);
68
-
69
- case 'file':
70
- if (props.dropzone) {
71
- return /*#__PURE__*/React.createElement(FormGroupWrapper, _extends({}, props, {
72
- Component: DropzoneFileInput
73
- }));
74
- }
75
-
76
- return /*#__PURE__*/React.createElement(FormGroupWrapper, _extends({}, props, {
77
- Component: FileInput
78
- }));
79
-
80
- case 'textarea':
81
- return /*#__PURE__*/React.createElement(FormGroupWrapper, _extends({}, props, {
82
- Component: TextAreaInput
83
- }));
84
-
85
- case 'moneyFormatted':
86
- return /*#__PURE__*/React.createElement(FormGroupWrapper, _extends({}, props, {
87
- Component: MoneyFormattedInput
88
- }));
89
-
90
- default:
91
- return /*#__PURE__*/React.createElement(FormGroupWrapper, _extends({}, props, {
92
- Component: DefaultInput
93
- }));
94
- }
95
- }
96
-
97
- var TextAreaInput = function TextAreaInput(_ref) {
98
- var className = _ref.className,
99
- meta = _ref.meta,
100
- helpText = _ref.helpText,
101
- props = _objectWithoutProperties(_ref, _excluded);
102
-
103
- return /*#__PURE__*/React.createElement(TextareaAutosize, _extends({
104
- cacheMeasurements: true,
105
- className: classnames(className, 'form-control', meta.error ? 'is-invalid' : '')
106
- }, props));
107
- };
108
-
109
- var DefaultInput = function DefaultInput(_ref2) {
110
- var meta = _ref2.meta,
111
- props = _objectWithoutProperties(_ref2, _excluded2);
112
-
113
- return /*#__PURE__*/React.createElement(BootstrapInput, _extends({
114
- invalid: !!meta.error
115
- }, props));
116
- };
117
-
118
- var Select = function Select(_ref3) {
119
- var _ref3$includeEmptyOpt = _ref3.includeEmptyOption,
120
- includeEmptyOption = _ref3$includeEmptyOpt === void 0 ? true : _ref3$includeEmptyOpt,
121
- options = _ref3.options,
122
- props = _objectWithoutProperties(_ref3, _excluded3);
123
-
124
- var allOptions = includeEmptyOption && !props.isMulti ? [{
125
- label: ' ',
126
- value: null
127
- }].concat(_toConsumableArray(options)) : options;
128
- return /*#__PURE__*/React.createElement(ReactSelectField, _extends({}, props, {
129
- options: allOptions
130
- }));
131
- }; // low cache value just to prevent the same dropdown from hitting the API at the same time
132
- // TODO: global cache provider / "envoc-cache" instead of this static instance
133
-
134
-
135
- export var optionCache = new lru({
136
- max: 500,
137
- maxAge: 1000 * 10
138
- });
139
-
140
- var RemoteSelect = function RemoteSelect(_ref4) {
141
- var optionsUrl = _ref4.optionsUrl,
142
- _ref4$includeEmptyOpt = _ref4.includeEmptyOption,
143
- includeEmptyOption = _ref4$includeEmptyOpt === void 0 ? true : _ref4$includeEmptyOpt,
144
- _ref4$includeOtherOpt = _ref4.includeOtherOption,
145
- includeOtherOption = _ref4$includeOtherOpt === void 0 ? false : _ref4$includeOtherOpt,
146
- _ref4$cache = _ref4.cache,
147
- cache = _ref4$cache === void 0 ? optionCache : _ref4$cache,
148
- _ref4$maxAge = _ref4.maxAge,
149
- maxAge = _ref4$maxAge === void 0 ? 1000 * 10 : _ref4$maxAge,
150
- props = _objectWithoutProperties(_ref4, _excluded4);
151
-
152
- var request = {
153
- method: 'get',
154
- url: optionsUrl,
155
- cache: cache,
156
- maxAge: maxAge,
157
- autoExecute: true
158
- };
159
- var webRequest = useAxiosRequest(request);
160
-
161
- if (webRequest.error) {
162
- return /*#__PURE__*/React.createElement(Alert, {
163
- color: "danger"
164
- }, "An error occurred while loading.");
165
- }
166
-
167
- var options = [];
168
-
169
- if (webRequest.loading) {
170
- options.push({
171
- label: 'Loading...',
172
- value: ''
173
- });
174
- } else {
175
- if (includeEmptyOption && !props.isMulti) {
176
- options.push({
177
- label: ' ',
178
- value: null
179
- });
180
- }
181
-
182
- options.push.apply(options, _toConsumableArray(webRequest.resp.data.result));
183
-
184
- if (includeOtherOption) {
185
- options.push({
186
- label: 'Other',
187
- value: 'other'
188
- });
189
- }
190
- }
191
-
192
- return /*#__PURE__*/React.createElement(ReactSelectField, _extends({}, props, {
193
- options: options
194
- }));
195
- };
196
-
197
- var DatePicker = function DatePicker(_ref5) {
198
- var meta = _ref5.meta,
199
- props = _objectWithoutProperties(_ref5, _excluded5);
200
-
201
- return /*#__PURE__*/React.createElement(DatePickerInput, _extends({}, props, {
202
- className: meta.error ? 'is-invalid' : ''
203
- }));
204
- };
205
-
206
- var Checkbox = function Checkbox(_ref6) {
207
- var helpText = _ref6.helpText,
208
- meta = _ref6.meta,
209
- props = _objectWithoutProperties(_ref6, _excluded6);
210
-
211
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(CustomInput, props), meta.error && /*#__PURE__*/React.createElement(FormFeedback, null, meta.error), helpText && /*#__PURE__*/React.createElement(FormText, null, helpText));
212
- };
@@ -1,2 +0,0 @@
1
- import FormInput from './FormInput';
2
- export default FormInput;