envoc-form 5.0.9 → 6.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 (352) hide show
  1. package/README.md +4930 -1645
  2. package/dist/index.cjs +25531 -0
  3. package/dist/index.d.ts +624 -0
  4. package/dist/index.js +25461 -0
  5. package/package.json +73 -77
  6. package/dist/css/envoc-form-styles.css +0 -3
  7. package/dist/css/envoc-form-styles.css.map +0 -1
  8. package/es/AddressInput/AddressInput.d.ts +0 -24
  9. package/es/AddressInput/AddressInput.js +0 -20
  10. package/es/AddressInput/UsStates.d.ts +0 -3
  11. package/es/AddressInput/UsStates.js +0 -53
  12. package/es/ConfirmBaseForm/ConfirmBaseForm.d.ts +0 -26
  13. package/es/ConfirmBaseForm/ConfirmBaseForm.js +0 -42
  14. package/es/ConfirmDeleteForm/ConfirmDeleteForm.d.ts +0 -24
  15. package/es/ConfirmDeleteForm/ConfirmDeleteForm.js +0 -60
  16. package/es/DatePicker/DatePickerGroup.d.ts +0 -13
  17. package/es/DatePicker/DatePickerGroup.js +0 -88
  18. package/es/DatePicker/DatePickerHelper.d.ts +0 -3
  19. package/es/DatePicker/DatePickerHelper.js +0 -1
  20. package/es/DatePicker/StringDateOnlyPickerGroup.d.ts +0 -9
  21. package/es/DatePicker/StringDateOnlyPickerGroup.js +0 -29
  22. package/es/DatePicker/StringDatePickerGroup.d.ts +0 -9
  23. package/es/DatePicker/StringDatePickerGroup.js +0 -24
  24. package/es/DateTimePicker/DateTimePickerGroup.d.ts +0 -12
  25. package/es/DateTimePicker/DateTimePickerGroup.js +0 -87
  26. package/es/DateTimePicker/DateTimePickerHelper.d.ts +0 -3
  27. package/es/DateTimePicker/DateTimePickerHelper.js +0 -1
  28. package/es/DateTimePicker/StringDateTimePickerGroup.d.ts +0 -9
  29. package/es/DateTimePicker/StringDateTimePickerGroup.js +0 -53
  30. package/es/Field/CustomFieldInputProps.d.ts +0 -7
  31. package/es/Field/CustomFieldInputProps.js +0 -1
  32. package/es/Field/CustomFieldMetaProps.d.ts +0 -4
  33. package/es/Field/CustomFieldMetaProps.js +0 -1
  34. package/es/Field/Field.d.ts +0 -29
  35. package/es/Field/Field.js +0 -59
  36. package/es/Field/FieldErrorScrollTarget.d.ts +0 -2
  37. package/es/Field/FieldErrorScrollTarget.js +0 -12
  38. package/es/Field/FieldNameContext.d.ts +0 -3
  39. package/es/Field/FieldNameContext.js +0 -3
  40. package/es/Field/FieldSection.d.ts +0 -7
  41. package/es/Field/FieldSection.js +0 -9
  42. package/es/Field/InjectedFieldProps.d.ts +0 -7
  43. package/es/Field/InjectedFieldProps.js +0 -1
  44. package/es/Field/StandAloneInput.d.ts +0 -13
  45. package/es/Field/StandAloneInput.js +0 -50
  46. package/es/Field/useStandardField.d.ts +0 -21
  47. package/es/Field/useStandardField.js +0 -92
  48. package/es/FieldArray/FieldArray.d.ts +0 -24
  49. package/es/FieldArray/FieldArray.js +0 -77
  50. package/es/File/FileGroup.d.ts +0 -10
  51. package/es/File/FileGroup.js +0 -53
  52. package/es/File/FileList.d.ts +0 -5
  53. package/es/File/FileList.js +0 -10
  54. package/es/File/humanFileSize.d.ts +0 -1
  55. package/es/File/humanFileSize.js +0 -6
  56. package/es/Form/FocusError.d.ts +0 -7
  57. package/es/Form/FocusError.js +0 -42
  58. package/es/Form/Form.d.ts +0 -33
  59. package/es/Form/Form.js +0 -141
  60. package/es/Form/FormBasedPreventNavigation.d.ts +0 -6
  61. package/es/Form/FormBasedPreventNavigation.js +0 -20
  62. package/es/Form/LegacyFormBasedPreventNavigation.d.ts +0 -17
  63. package/es/Form/LegacyFormBasedPreventNavigation.js +0 -69
  64. package/es/Form/NewFormBasedPreventNavigation.d.ts +0 -14
  65. package/es/Form/NewFormBasedPreventNavigation.js +0 -39
  66. package/es/Form/ServerErrorContext.d.ts +0 -11
  67. package/es/Form/ServerErrorContext.js +0 -9
  68. package/es/FormActions.d.ts +0 -12
  69. package/es/FormActions.js +0 -16
  70. package/es/FormDefaults.d.ts +0 -4
  71. package/es/FormDefaults.js +0 -2
  72. package/es/Group.d.ts +0 -16
  73. package/es/Group.js +0 -14
  74. package/es/Input/CheckboxGroup.d.ts +0 -6
  75. package/es/Input/CheckboxGroup.js +0 -14
  76. package/es/Input/CheckboxInputGroup.d.ts +0 -13
  77. package/es/Input/CheckboxInputGroup.js +0 -41
  78. package/es/Input/IconInputGroup.d.ts +0 -12
  79. package/es/Input/IconInputGroup.js +0 -43
  80. package/es/Input/InputGroup.d.ts +0 -12
  81. package/es/Input/InputGroup.js +0 -34
  82. package/es/Input/MoneyInputGroup.d.ts +0 -9
  83. package/es/Input/MoneyInputGroup.js +0 -43
  84. package/es/Input/NumberInputGroup.d.ts +0 -9
  85. package/es/Input/NumberInputGroup.js +0 -43
  86. package/es/Input/PhoneNumberInputGroup.d.ts +0 -10
  87. package/es/Input/PhoneNumberInputGroup.js +0 -47
  88. package/es/Input/StringInputGroup.d.ts +0 -8
  89. package/es/Input/StringInputGroup.js +0 -43
  90. package/es/Normalization/NormalizationFunction.d.ts +0 -4
  91. package/es/Normalization/NormalizationFunction.js +0 -1
  92. package/es/Normalization/normalizers.d.ts +0 -4
  93. package/es/Normalization/normalizers.js +0 -32
  94. package/es/Select/BooleanSelectGroup.d.ts +0 -7
  95. package/es/Select/BooleanSelectGroup.js +0 -28
  96. package/es/Select/NumberSelectGroup.d.ts +0 -9
  97. package/es/Select/NumberSelectGroup.js +0 -21
  98. package/es/Select/SelectGroup.d.ts +0 -29
  99. package/es/Select/SelectGroup.js +0 -65
  100. package/es/Select/SelectGroupPropsHelper.d.ts +0 -3
  101. package/es/Select/SelectGroupPropsHelper.js +0 -1
  102. package/es/Select/StringSelectGroup.d.ts +0 -9
  103. package/es/Select/StringSelectGroup.js +0 -21
  104. package/es/StandardFormActions.d.ts +0 -11
  105. package/es/StandardFormActions.js +0 -14
  106. package/es/SubmitFormButton.d.ts +0 -10
  107. package/es/SubmitFormButton.js +0 -40
  108. package/es/TextArea/TextAreaGroup.d.ts +0 -9
  109. package/es/TextArea/TextAreaGroup.js +0 -35
  110. package/es/Validation/ValidatedApiResult.d.ts +0 -6
  111. package/es/Validation/ValidatedApiResult.js +0 -1
  112. package/es/Validation/ValidationError.d.ts +0 -5
  113. package/es/Validation/ValidationError.js +0 -1
  114. package/es/Validation/ValidationFunction.d.ts +0 -4
  115. package/es/Validation/ValidationFunction.js +0 -1
  116. package/es/Validation/validators.d.ts +0 -18
  117. package/es/Validation/validators.js +0 -77
  118. package/es/index.d.ts +0 -81
  119. package/es/index.js +0 -55
  120. package/es/setupTests.d.ts +0 -1
  121. package/es/setupTests.js +0 -1
  122. package/es/utils/objectContainsNonSerializableProperty.d.ts +0 -1
  123. package/es/utils/objectContainsNonSerializableProperty.js +0 -14
  124. package/es/utils/objectToFormData.d.ts +0 -10
  125. package/es/utils/objectToFormData.js +0 -77
  126. package/es/utils/typeChecks.d.ts +0 -8
  127. package/es/utils/typeChecks.js +0 -18
  128. package/lib/AddressInput/AddressInput.d.ts +0 -24
  129. package/lib/AddressInput/AddressInput.js +0 -26
  130. package/lib/AddressInput/UsStates.d.ts +0 -3
  131. package/lib/AddressInput/UsStates.js +0 -55
  132. package/lib/ConfirmBaseForm/ConfirmBaseForm.d.ts +0 -26
  133. package/lib/ConfirmBaseForm/ConfirmBaseForm.js +0 -45
  134. package/lib/ConfirmDeleteForm/ConfirmDeleteForm.d.ts +0 -24
  135. package/lib/ConfirmDeleteForm/ConfirmDeleteForm.js +0 -66
  136. package/lib/DatePicker/DatePickerGroup.d.ts +0 -13
  137. package/lib/DatePicker/DatePickerGroup.js +0 -96
  138. package/lib/DatePicker/DatePickerHelper.d.ts +0 -3
  139. package/lib/DatePicker/DatePickerHelper.js +0 -2
  140. package/lib/DatePicker/StringDateOnlyPickerGroup.d.ts +0 -9
  141. package/lib/DatePicker/StringDateOnlyPickerGroup.js +0 -35
  142. package/lib/DatePicker/StringDatePickerGroup.d.ts +0 -9
  143. package/lib/DatePicker/StringDatePickerGroup.js +0 -30
  144. package/lib/DateTimePicker/DateTimePickerGroup.d.ts +0 -12
  145. package/lib/DateTimePicker/DateTimePickerGroup.js +0 -93
  146. package/lib/DateTimePicker/DateTimePickerHelper.d.ts +0 -3
  147. package/lib/DateTimePicker/DateTimePickerHelper.js +0 -2
  148. package/lib/DateTimePicker/StringDateTimePickerGroup.d.ts +0 -9
  149. package/lib/DateTimePicker/StringDateTimePickerGroup.js +0 -59
  150. package/lib/Field/CustomFieldInputProps.d.ts +0 -7
  151. package/lib/Field/CustomFieldInputProps.js +0 -2
  152. package/lib/Field/CustomFieldMetaProps.d.ts +0 -4
  153. package/lib/Field/CustomFieldMetaProps.js +0 -2
  154. package/lib/Field/Field.d.ts +0 -29
  155. package/lib/Field/Field.js +0 -64
  156. package/lib/Field/FieldErrorScrollTarget.d.ts +0 -2
  157. package/lib/Field/FieldErrorScrollTarget.js +0 -15
  158. package/lib/Field/FieldNameContext.d.ts +0 -3
  159. package/lib/Field/FieldNameContext.js +0 -9
  160. package/lib/Field/FieldSection.d.ts +0 -7
  161. package/lib/Field/FieldSection.js +0 -12
  162. package/lib/Field/InjectedFieldProps.d.ts +0 -7
  163. package/lib/Field/InjectedFieldProps.js +0 -2
  164. package/lib/Field/StandAloneInput.d.ts +0 -13
  165. package/lib/Field/StandAloneInput.js +0 -76
  166. package/lib/Field/useStandardField.d.ts +0 -21
  167. package/lib/Field/useStandardField.js +0 -95
  168. package/lib/FieldArray/FieldArray.d.ts +0 -24
  169. package/lib/FieldArray/FieldArray.js +0 -83
  170. package/lib/File/FileGroup.d.ts +0 -10
  171. package/lib/File/FileGroup.js +0 -58
  172. package/lib/File/FileList.d.ts +0 -5
  173. package/lib/File/FileList.js +0 -13
  174. package/lib/File/humanFileSize.d.ts +0 -1
  175. package/lib/File/humanFileSize.js +0 -10
  176. package/lib/Form/FocusError.d.ts +0 -7
  177. package/lib/Form/FocusError.js +0 -48
  178. package/lib/Form/Form.d.ts +0 -33
  179. package/lib/Form/Form.js +0 -147
  180. package/lib/Form/FormBasedPreventNavigation.d.ts +0 -6
  181. package/lib/Form/FormBasedPreventNavigation.js +0 -26
  182. package/lib/Form/LegacyFormBasedPreventNavigation.d.ts +0 -17
  183. package/lib/Form/LegacyFormBasedPreventNavigation.js +0 -72
  184. package/lib/Form/NewFormBasedPreventNavigation.d.ts +0 -14
  185. package/lib/Form/NewFormBasedPreventNavigation.js +0 -42
  186. package/lib/Form/ServerErrorContext.d.ts +0 -11
  187. package/lib/Form/ServerErrorContext.js +0 -15
  188. package/lib/FormActions.d.ts +0 -12
  189. package/lib/FormActions.js +0 -22
  190. package/lib/FormDefaults.d.ts +0 -4
  191. package/lib/FormDefaults.js +0 -5
  192. package/lib/Group.d.ts +0 -16
  193. package/lib/Group.js +0 -20
  194. package/lib/Input/CheckboxGroup.d.ts +0 -6
  195. package/lib/Input/CheckboxGroup.js +0 -20
  196. package/lib/Input/CheckboxInputGroup.d.ts +0 -13
  197. package/lib/Input/CheckboxInputGroup.js +0 -46
  198. package/lib/Input/IconInputGroup.d.ts +0 -12
  199. package/lib/Input/IconInputGroup.js +0 -48
  200. package/lib/Input/InputGroup.d.ts +0 -12
  201. package/lib/Input/InputGroup.js +0 -39
  202. package/lib/Input/MoneyInputGroup.d.ts +0 -9
  203. package/lib/Input/MoneyInputGroup.js +0 -48
  204. package/lib/Input/NumberInputGroup.d.ts +0 -9
  205. package/lib/Input/NumberInputGroup.js +0 -48
  206. package/lib/Input/PhoneNumberInputGroup.d.ts +0 -10
  207. package/lib/Input/PhoneNumberInputGroup.js +0 -52
  208. package/lib/Input/StringInputGroup.d.ts +0 -8
  209. package/lib/Input/StringInputGroup.js +0 -48
  210. package/lib/Normalization/NormalizationFunction.d.ts +0 -4
  211. package/lib/Normalization/NormalizationFunction.js +0 -2
  212. package/lib/Normalization/normalizers.d.ts +0 -4
  213. package/lib/Normalization/normalizers.js +0 -37
  214. package/lib/Select/BooleanSelectGroup.d.ts +0 -7
  215. package/lib/Select/BooleanSelectGroup.js +0 -35
  216. package/lib/Select/NumberSelectGroup.d.ts +0 -9
  217. package/lib/Select/NumberSelectGroup.js +0 -29
  218. package/lib/Select/SelectGroup.d.ts +0 -29
  219. package/lib/Select/SelectGroup.js +0 -71
  220. package/lib/Select/SelectGroupPropsHelper.d.ts +0 -3
  221. package/lib/Select/SelectGroupPropsHelper.js +0 -2
  222. package/lib/Select/StringSelectGroup.d.ts +0 -9
  223. package/lib/Select/StringSelectGroup.js +0 -29
  224. package/lib/StandardFormActions.d.ts +0 -11
  225. package/lib/StandardFormActions.js +0 -20
  226. package/lib/SubmitFormButton.d.ts +0 -10
  227. package/lib/SubmitFormButton.js +0 -45
  228. package/lib/TextArea/TextAreaGroup.d.ts +0 -9
  229. package/lib/TextArea/TextAreaGroup.js +0 -40
  230. package/lib/Validation/ValidatedApiResult.d.ts +0 -6
  231. package/lib/Validation/ValidatedApiResult.js +0 -2
  232. package/lib/Validation/ValidationError.d.ts +0 -5
  233. package/lib/Validation/ValidationError.js +0 -2
  234. package/lib/Validation/ValidationFunction.d.ts +0 -4
  235. package/lib/Validation/ValidationFunction.js +0 -2
  236. package/lib/Validation/validators.d.ts +0 -18
  237. package/lib/Validation/validators.js +0 -90
  238. package/lib/index.d.ts +0 -81
  239. package/lib/index.js +0 -126
  240. package/lib/setupTests.d.ts +0 -1
  241. package/lib/setupTests.js +0 -3
  242. package/lib/utils/objectContainsNonSerializableProperty.d.ts +0 -1
  243. package/lib/utils/objectContainsNonSerializableProperty.js +0 -17
  244. package/lib/utils/objectToFormData.d.ts +0 -10
  245. package/lib/utils/objectToFormData.js +0 -79
  246. package/lib/utils/typeChecks.d.ts +0 -8
  247. package/lib/utils/typeChecks.js +0 -29
  248. package/src/AddressInput/AddressInput.test.tsx +0 -27
  249. package/src/AddressInput/AddressInput.tsx +0 -82
  250. package/src/AddressInput/UsStates.ts +0 -55
  251. package/src/AddressInput/__snapshots__/AddressInput.test.tsx.snap +0 -183
  252. package/src/ConfirmBaseForm/ConfirmBaseForm.test.tsx +0 -24
  253. package/src/ConfirmBaseForm/ConfirmBaseForm.tsx +0 -74
  254. package/src/ConfirmBaseForm/__snapshots__/ConfirmBaseForm.test.tsx.snap +0 -23
  255. package/src/ConfirmDeleteForm/ConfirmDeleteForm.test.tsx +0 -24
  256. package/src/ConfirmDeleteForm/ConfirmDeleteForm.tsx +0 -87
  257. package/src/ConfirmDeleteForm/__snapshots__/ConfirmDeleteForm.test.tsx.snap +0 -25
  258. package/src/DatePicker/DatePicker.test.tsx +0 -48
  259. package/src/DatePicker/DatePickerGroup.tsx +0 -115
  260. package/src/DatePicker/DatePickerHelper.ts +0 -4
  261. package/src/DatePicker/StringDateOnlyPickerGroup.tsx +0 -28
  262. package/src/DatePicker/StringDatePickerGroup.tsx +0 -20
  263. package/src/DatePicker/__snapshots__/DatePicker.test.tsx.snap +0 -152
  264. package/src/DateTimePicker/DateTimePicker.test.tsx +0 -243
  265. package/src/DateTimePicker/DateTimePickerGroup.tsx +0 -116
  266. package/src/DateTimePicker/DateTimePickerHelper.ts +0 -4
  267. package/src/DateTimePicker/StringDateTimePickerGroup.tsx +0 -61
  268. package/src/DateTimePicker/__snapshots__/DateTimePicker.test.tsx.snap +0 -217
  269. package/src/Field/CustomFieldInputProps.ts +0 -10
  270. package/src/Field/CustomFieldMetaProps.ts +0 -5
  271. package/src/Field/Field.tsx +0 -127
  272. package/src/Field/FieldErrorScrollTarget.tsx +0 -12
  273. package/src/Field/FieldNameContext.ts +0 -6
  274. package/src/Field/FieldSection.tsx +0 -18
  275. package/src/Field/InjectedFieldProps.ts +0 -8
  276. package/src/Field/StandAloneInput.tsx +0 -55
  277. package/src/Field/useStandardField.ts +0 -125
  278. package/src/FieldArray/FieldArray.tsx +0 -154
  279. package/src/File/FileGroup.test.tsx +0 -35
  280. package/src/File/FileGroup.tsx +0 -82
  281. package/src/File/FileList.tsx +0 -21
  282. package/src/File/__snapshots__/FileGroup.test.tsx.snap +0 -34
  283. package/src/File/humanFileSize.ts +0 -8
  284. package/src/Form/FocusError.tsx +0 -55
  285. package/src/Form/Form.test.tsx +0 -14
  286. package/src/Form/Form.tsx +0 -234
  287. package/src/Form/FormBasedPreventNavigation.tsx +0 -56
  288. package/src/Form/LegacyFormBasedPreventNavigation.tsx +0 -77
  289. package/src/Form/NewFormBasedPreventNavigation.tsx +0 -59
  290. package/src/Form/ServerErrorContext.ts +0 -18
  291. package/src/Form/__snapshots__/Form.test.tsx.snap +0 -10
  292. package/src/FormActions.tsx +0 -47
  293. package/src/FormDefaults.ts +0 -2
  294. package/src/Group.tsx +0 -62
  295. package/src/Input/CheckboxGroup.tsx +0 -60
  296. package/src/Input/CheckboxInputGroup.tsx +0 -78
  297. package/src/Input/IconInputGroup.tsx +0 -54
  298. package/src/Input/InputGroup.tsx +0 -69
  299. package/src/Input/MoneyInputGroup.tsx +0 -47
  300. package/src/Input/NumberInputGroup.tsx +0 -45
  301. package/src/Input/PhoneNumberInputGroup.tsx +0 -45
  302. package/src/Input/StringInputGroup.tsx +0 -50
  303. package/src/Input/__Tests__/CheckboxInputGroup.test.tsx +0 -26
  304. package/src/Input/__Tests__/IconInputGroup.test.tsx +0 -35
  305. package/src/Input/__Tests__/MoneyInputGroup.test.tsx +0 -37
  306. package/src/Input/__Tests__/NumberInputGroup.test.tsx +0 -35
  307. package/src/Input/__Tests__/PhoneNumberInputGroup.test.tsx +0 -36
  308. package/src/Input/__Tests__/StringInputGroup.test.tsx +0 -27
  309. package/src/Input/__Tests__/__snapshots__/CheckboxInputGroup.test.tsx.snap +0 -33
  310. package/src/Input/__Tests__/__snapshots__/IconInputGroup.test.tsx.snap +0 -32
  311. package/src/Input/__Tests__/__snapshots__/MoneyInputGroup.test.tsx.snap +0 -34
  312. package/src/Input/__Tests__/__snapshots__/NumberInputGroup.test.tsx.snap +0 -32
  313. package/src/Input/__Tests__/__snapshots__/PhoneNumberInputGroup.test.tsx.snap +0 -33
  314. package/src/Input/__Tests__/__snapshots__/StringInputGroup.test.tsx.snap +0 -31
  315. package/src/Normalization/NormalizationFunction.ts +0 -4
  316. package/src/Normalization/normalizers.ts +0 -44
  317. package/src/Select/BooleanSelectGroup.tsx +0 -28
  318. package/src/Select/NumberSelectGroup.tsx +0 -16
  319. package/src/Select/SelectGroup.tsx +0 -132
  320. package/src/Select/SelectGroupPropsHelper.ts +0 -4
  321. package/src/Select/StringSelectGroup.tsx +0 -16
  322. package/src/Select/__tests__/BooleanSelectGroup.test.tsx +0 -35
  323. package/src/Select/__tests__/NumberSelectGroup.test.tsx +0 -87
  324. package/src/Select/__tests__/StringSelectGroup.test.tsx +0 -89
  325. package/src/Select/__tests__/__snapshots__/BooleanSelectGroup.test.tsx.snap +0 -99
  326. package/src/Select/__tests__/__snapshots__/NumberSelectGroup.test.tsx.snap +0 -197
  327. package/src/Select/__tests__/__snapshots__/StringSelectGroup.test.tsx.snap +0 -197
  328. package/src/StandardFormActions.tsx +0 -41
  329. package/src/SubmitFormButton.tsx +0 -54
  330. package/src/TextArea/TextAreaGroup.tsx +0 -64
  331. package/src/Validation/ValidatedApiResult.ts +0 -8
  332. package/src/Validation/ValidationError.ts +0 -6
  333. package/src/Validation/ValidationFunction.ts +0 -4
  334. package/src/Validation/validators.test.tsx +0 -81
  335. package/src/Validation/validators.ts +0 -97
  336. package/src/__Tests__/FormTestBase.tsx +0 -66
  337. package/src/__Tests__/RealisticForm.test.tsx +0 -82
  338. package/src/__Tests__/StandardFormActions.test.tsx +0 -17
  339. package/src/__Tests__/SubmitFormButton.test.tsx +0 -17
  340. package/src/__Tests__/__snapshots__/StandardFormActions.test.tsx.snap +0 -27
  341. package/src/__Tests__/__snapshots__/SubmitFormButton.test.tsx.snap +0 -20
  342. package/src/__Tests__/index.ts +0 -3
  343. package/src/_variables.scss +0 -11
  344. package/src/index.ts +0 -163
  345. package/src/react-app-env.d.ts +0 -1
  346. package/src/setupTests.ts +0 -1
  347. package/src/styles.scss +0 -0
  348. package/src/utils/objectContainsNonSerializableProperty.test.tsx +0 -49
  349. package/src/utils/objectContainsNonSerializableProperty.ts +0 -17
  350. package/src/utils/objectToFormData.test.tsx +0 -76
  351. package/src/utils/objectToFormData.ts +0 -105
  352. package/src/utils/typeChecks.ts +0 -18
@@ -1,115 +0,0 @@
1
- import { useEffect, useState } from 'react';
2
- import DatePicker, {
3
- DatePickerProps,
4
- } from 'react-date-picker/dist/entry.nostyle';
5
- import { clsx } from 'clsx';
6
- import parseISO from 'date-fns/parseISO';
7
- import { InjectedFieldProps } from '../Field/InjectedFieldProps';
8
- import { FormDefaults } from '../FormDefaults';
9
- import Group, { GroupProps } from '../Group';
10
-
11
- export interface DatePickerGroupProps<T>
12
- extends InjectedFieldProps<T | undefined | null>,
13
- Omit<
14
- DatePickerProps,
15
- keyof InjectedFieldProps<T> | 'name' | 'value' | 'className'
16
- >,
17
- Omit<GroupProps, keyof InjectedFieldProps<T> | 'children'> {
18
- convert: (arg: Date) => T;
19
- }
20
-
21
- /**
22
- * Field for inputting dates. Uses `<Group/>` and `<DatePicker/>`.
23
- *
24
- * Uses [react-date-picker](https://www.npmjs.com/package/react-date-picker)
25
- */
26
- export default function DatePickerGroup<T>({
27
- input,
28
- meta,
29
- label,
30
- helpText,
31
- className,
32
- required,
33
- disabled,
34
- convert,
35
- maxDate = new Date(9999, 11, 31),
36
- minDate = new Date(1000, 0, 1),
37
- ...rest
38
- }: DatePickerGroupProps<T>) {
39
- const [displayDate, setDisplayDate] = useState<Date | null>(null);
40
-
41
- useEffect(() => {
42
- if (!input.value) {
43
- setDisplayDate(null);
44
- } else if (typeof input.value === 'string') {
45
- if (input.value.indexOf('T') === -1) {
46
- setDisplayDate(new Date(`${input.value}T00:00:00.000`));
47
- } else {
48
- setDisplayDate(new Date(input.value));
49
- }
50
- }
51
- }, [setDisplayDate, input.value]);
52
-
53
- return (
54
- <Group
55
- input={input}
56
- meta={meta}
57
- label={label}
58
- helpText={helpText}
59
- className={clsx(className, FormDefaults.cssClassPrefix + 'date-picker')}
60
- required={required}
61
- disabled={disabled}>
62
- <DatePicker
63
- {...rest}
64
- className={clsx(FormDefaults.cssClassPrefix + 'date-picker', className)}
65
- value={displayDate}
66
- onChange={handleChange}
67
- maxDate={maxDate}
68
- minDate={minDate}
69
- disabled={disabled}
70
- />
71
- </Group>
72
- );
73
-
74
- function handleChange(e: Date | Date[] | string | undefined) {
75
- const { onChange } = input;
76
- if (onChange === null) {
77
- return;
78
- }
79
-
80
- if (!e) {
81
- onChange(undefined);
82
- setDisplayDate(null);
83
- return;
84
- } else if (typeof e === 'string') {
85
- const parsedValue = parseISO(e.toString().split('T')[0]);
86
- setDisplayDate(parsedValue);
87
- onChange(convert(parsedValue));
88
- } else if (e instanceof Date) {
89
- const parsedValue = parseISO(
90
- convertToTimeZoneInsensitiveISOString(e).split('T')[0]
91
- );
92
- setDisplayDate(parsedValue);
93
- onChange(convert(parsedValue));
94
- } else {
95
- // e is instanceof Date[]
96
- const parsedValue = parseISO(
97
- convertToTimeZoneInsensitiveISOString(e[0]).split('T')[0]
98
- );
99
- setDisplayDate(parsedValue);
100
- onChange(convert(parsedValue));
101
- }
102
- }
103
- }
104
-
105
- export function convertToTimeZoneInsensitiveISOString(date: Date): string {
106
- const year = new Intl.DateTimeFormat('en', { year: 'numeric' })
107
- .format(date)
108
- .substring(0, 4)
109
- .padStart(4, '0');
110
- const month = new Intl.DateTimeFormat('en', { month: '2-digit' }).format(
111
- date
112
- );
113
- const day = new Intl.DateTimeFormat('en', { day: '2-digit' }).format(date);
114
- return `${year}-${month}-${day}T00:00:00.000Z`;
115
- }
@@ -1,4 +0,0 @@
1
- import { DatePickerGroupProps } from './DatePickerGroup';
2
-
3
- export interface DatePickerHelper<T>
4
- extends Omit<DatePickerGroupProps<T>, 'convert'> {}
@@ -1,28 +0,0 @@
1
- import DatePickerGroup from './DatePickerGroup';
2
- import { DatePickerHelper } from './DatePickerHelper';
3
-
4
- export interface StringDateOnlyPickerGroupProps
5
- extends DatePickerHelper<string | undefined | null> {}
6
-
7
- /**
8
- * Date picker input that consumes and outputs as a date only string in ISO format `YYYY-MM-DD`.
9
- *
10
- * Default display to the user is in `MM/DD/YYYY` format.
11
- */
12
- export default function StringDatePickerGroup(
13
- props: StringDateOnlyPickerGroupProps
14
- ) {
15
- return <DatePickerGroup {...props} convert={convertToDateOnly} />;
16
- }
17
-
18
- function convertToDateOnly(arg: Date) {
19
- const year = new Intl.DateTimeFormat('en', { year: 'numeric' })
20
- .format(arg)
21
- .padStart(4, '0');
22
-
23
- const month = new Intl.DateTimeFormat('en', { month: '2-digit' }).format(arg);
24
-
25
- const day = new Intl.DateTimeFormat('en', { day: '2-digit' }).format(arg);
26
-
27
- return `${year}-${month}-${day}`;
28
- }
@@ -1,20 +0,0 @@
1
- import DatePickerGroup from './DatePickerGroup';
2
- import { DatePickerHelper } from './DatePickerHelper';
3
-
4
- export interface StringDatePickerGroupProps
5
- extends DatePickerHelper<string | undefined | null> {}
6
-
7
- /**
8
- * Date picker input that consumes and outputs as a date only string in ISO format `YYYY-MM-DDTHH:mm:ss.sssZ` or `±YYYYYY-MM-DDTHH:mm:ss.sssZ`
9
- *
10
- * If you need `YYYY-MM-DD` format use `<StringDateOnlyPickerGroup/>`.
11
- */
12
- export default function StringDatePickerGroup(
13
- props: StringDatePickerGroupProps
14
- ) {
15
- return <DatePickerGroup {...props} convert={convertToDateOnly} />;
16
- }
17
-
18
- function convertToDateOnly(arg: Date) {
19
- return arg.toISOString();
20
- }
@@ -1,152 +0,0 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`IconInputGroup has matching snapshot 1`] = `
4
- <DocumentFragment>
5
- <form
6
- action="#"
7
- class="envoc-form-form"
8
- >
9
- <div
10
- class="envoc-form-date-picker envoc-form-group"
11
- >
12
- <div
13
- id="favoritedate-error-scroll-target"
14
- style="display: none;"
15
- />
16
- <label
17
- for="favoriteDate"
18
- >
19
- Favorite Date
20
- </label>
21
- <div
22
- class="react-date-picker react-date-picker--closed react-date-picker--enabled envoc-form-date-picker"
23
- >
24
- <div
25
- class="react-date-picker__wrapper"
26
- >
27
- <div
28
- class="react-date-picker__inputGroup"
29
- >
30
- <input
31
- max="2023-09-23"
32
- min="2022-06-22"
33
- name="date"
34
- style="visibility: hidden; position: absolute; z-index: -999;"
35
- type="date"
36
- value=""
37
- />
38
- <input
39
- autocomplete="off"
40
- class="react-date-picker__inputGroup__input react-date-picker__inputGroup__month"
41
- data-input="true"
42
- inputmode="numeric"
43
- max="12"
44
- min="1"
45
- name="month"
46
- placeholder="mm"
47
- type="number"
48
- value=""
49
- />
50
- <span
51
- class="react-date-picker__inputGroup__divider"
52
- >
53
- /
54
- </span>
55
- <input
56
- autocomplete="off"
57
- class="react-date-picker__inputGroup__input react-date-picker__inputGroup__day"
58
- data-input="true"
59
- inputmode="numeric"
60
- max="31"
61
- min="1"
62
- name="day"
63
- placeholder="dd"
64
- type="number"
65
- value=""
66
- />
67
- <span
68
- class="react-date-picker__inputGroup__divider"
69
- >
70
- /
71
- </span>
72
- <input
73
- autocomplete="off"
74
- class="react-date-picker__inputGroup__input react-date-picker__inputGroup__year"
75
- data-input="true"
76
- inputmode="numeric"
77
- max="2023"
78
- min="2022"
79
- name="year"
80
- placeholder="yyyy"
81
- step="1"
82
- type="number"
83
- value=""
84
- />
85
- </div>
86
- <button
87
- class="react-date-picker__clear-button react-date-picker__button"
88
- type="button"
89
- >
90
- <svg
91
- class="react-date-picker__clear-button__icon react-date-picker__button__icon"
92
- height="19"
93
- stroke="black"
94
- stroke-width="2"
95
- viewBox="0 0 19 19"
96
- width="19"
97
- xmlns="http://www.w3.org/2000/svg"
98
- >
99
- <line
100
- x1="4"
101
- x2="15"
102
- y1="4"
103
- y2="15"
104
- />
105
- <line
106
- x1="15"
107
- x2="4"
108
- y1="4"
109
- y2="15"
110
- />
111
- </svg>
112
- </button>
113
- <button
114
- class="react-date-picker__calendar-button react-date-picker__button"
115
- type="button"
116
- >
117
- <svg
118
- class="react-date-picker__calendar-button__icon react-date-picker__button__icon"
119
- height="19"
120
- stroke="black"
121
- stroke-width="2"
122
- viewBox="0 0 19 19"
123
- width="19"
124
- xmlns="http://www.w3.org/2000/svg"
125
- >
126
- <rect
127
- fill="none"
128
- height="15"
129
- width="15"
130
- x="2"
131
- y="2"
132
- />
133
- <line
134
- x1="6"
135
- x2="6"
136
- y1="0"
137
- y2="4"
138
- />
139
- <line
140
- x1="13"
141
- x2="13"
142
- y1="0"
143
- y2="4"
144
- />
145
- </svg>
146
- </button>
147
- </div>
148
- </div>
149
- </div>
150
- </form>
151
- </DocumentFragment>
152
- `;
@@ -1,243 +0,0 @@
1
- import React from 'react';
2
- import { render } from '@testing-library/react';
3
- import StringDateTimePickerGroup from './StringDateTimePickerGroup';
4
- import FormTestBase, { PersonDto } from '../__Tests__/FormTestBase';
5
-
6
- //hack so the datetimepicker internals don't complain about this not existing in the context of jest
7
- HTMLCanvasElement.prototype.getContext = () => null;
8
-
9
- describe('StringDateTimePickerGroup', () => {
10
- it('renders without crashing', () => {
11
- render(
12
- <FormTestBase>
13
- {({ Field }) => (
14
- <Field
15
- name="createdDateTime"
16
- Component={StringDateTimePickerGroup}
17
- label="Created Date Time"
18
- monthPlaceholder="mm"
19
- dayPlaceholder="dd"
20
- yearPlaceholder="yyyy"
21
- disableClock
22
- maxDate={new Date('9/23/2023')}
23
- minDate={new Date('6/22/2022')}
24
- />
25
- )}
26
- </FormTestBase>
27
- );
28
- });
29
-
30
- it('has matching snapshot', () => {
31
- const renderResult = render(
32
- <FormTestBase>
33
- {({ Field }) => (
34
- <Field
35
- name="createdDateTime"
36
- Component={StringDateTimePickerGroup}
37
- label="Created Date Time"
38
- monthPlaceholder="mm"
39
- dayPlaceholder="dd"
40
- yearPlaceholder="yyyy"
41
- disableClock
42
- maxDate={new Date('9/23/2023')}
43
- minDate={new Date('6/22/2022')}
44
- />
45
- )}
46
- </FormTestBase>
47
- );
48
- expect(renderResult.asFragment()).toMatchSnapshot();
49
- });
50
-
51
- it('does not render with initial date-only string and throws exception', () => {
52
- const dateOnlyString = '2024-09-04';
53
- const personDtoWithDateOnlyString: PersonDto = {
54
- createdDateTime: dateOnlyString,
55
- };
56
-
57
- try {
58
- render(
59
- <FormTestBase initialValues={personDtoWithDateOnlyString}>
60
- {({ Field }) => (
61
- <Field
62
- name="createdDateTime"
63
- Component={StringDateTimePickerGroup}
64
- label="Created Date Time"
65
- monthPlaceholder="mm"
66
- dayPlaceholder="dd"
67
- yearPlaceholder="yyyy"
68
- disableClock
69
- />
70
- )}
71
- </FormTestBase>
72
- );
73
-
74
- fail('Expected an exception to be thrown for date-only string');
75
- } catch (error: any) {
76
- // Assert that the error message matches the expected message
77
- expect(error.message).toEqual(
78
- `Invalid "date time" value of ${dateOnlyString} provided to DateTimePickerGroup component. Please provide ISO 8601 string that includes the time zone designator. Sample strings: 2022-09-24T:08:54:12+00:00, 2022-09-24T:08:54:12Z, 2022-09-24T:08:54:12.123-05:00`
79
- );
80
- }
81
- });
82
-
83
- it('renders with ISO UTC date time string taking browser timezone into account', () => {
84
- const isoUTCDateTimeString = '2024-04-09T21:00:24.670Z';
85
- const personDtoWithDateTimeString: PersonDto = {
86
- createdDateTime: isoUTCDateTimeString,
87
- };
88
-
89
- render(
90
- <FormTestBase initialValues={personDtoWithDateTimeString}>
91
- {({ Field }) => (
92
- <Field
93
- name="createdDateTime"
94
- Component={StringDateTimePickerGroup}
95
- label="Created Date Time"
96
- monthPlaceholder="mm"
97
- dayPlaceholder="dd"
98
- yearPlaceholder="yyyy"
99
- disableClock
100
- />
101
- )}
102
- </FormTestBase>
103
- );
104
-
105
- const dateTimePickerInputComponent = document.querySelector(
106
- 'input[name="datetime"][type="datetime-local"]'
107
- );
108
- const utcDate = new Date(isoUTCDateTimeString);
109
- const localDateTimeString =
110
- convertToDateTimePickerComponentValueString(utcDate);
111
-
112
- // Assert that no exception is thrown during rendering
113
- expect(true).toBe(true);
114
- // Assert the value of the component
115
- expect(dateTimePickerInputComponent).toHaveValue(localDateTimeString);
116
- });
117
-
118
- it('does not render with invalid datetime ISO string and throws exception', () => {
119
- const invalidISODateTimeString = '2024-04-11T01:00:00.000-5:00';
120
- const personDtoWithDateOnlyString: PersonDto = {
121
- createdDateTime: invalidISODateTimeString,
122
- };
123
-
124
- try {
125
- render(
126
- <FormTestBase initialValues={personDtoWithDateOnlyString}>
127
- {({ Field }) => (
128
- <Field
129
- name="createdDateTime"
130
- Component={StringDateTimePickerGroup}
131
- label="Created Date Time"
132
- monthPlaceholder="mm"
133
- dayPlaceholder="dd"
134
- yearPlaceholder="yyyy"
135
- disableClock
136
- />
137
- )}
138
- </FormTestBase>
139
- );
140
-
141
- fail('Expected an exception to be thrown for invalid datetime string');
142
- } catch (error: any) {
143
- // Assert that the error message matches the expected message
144
- expect(error.message).toEqual(
145
- `Invalid "date time" value of ${invalidISODateTimeString} provided to DateTimePickerGroup component. Please provide ISO 8601 string that includes the time zone designator. Sample strings: 2022-09-24T:08:54:12+00:00, 2022-09-24T:08:54:12Z, 2022-09-24T:08:54:12.123-05:00`
146
- );
147
- }
148
- });
149
-
150
- it('renders with ISO date time string with different offset than browser taking browser timezone into account', () => {
151
- const isoDateTimeString = '2024-04-09T21:00:24.670-01:00';
152
- const personDtoWithDateTimeString: PersonDto = {
153
- createdDateTime: isoDateTimeString,
154
- };
155
-
156
- render(
157
- <FormTestBase initialValues={personDtoWithDateTimeString}>
158
- {({ Field }) => (
159
- <Field
160
- name="createdDateTime"
161
- Component={StringDateTimePickerGroup}
162
- label="Created Date Time"
163
- monthPlaceholder="mm"
164
- dayPlaceholder="dd"
165
- yearPlaceholder="yyyy"
166
- disableClock
167
- />
168
- )}
169
- </FormTestBase>
170
- );
171
-
172
- const dateTimePickerInputComponent = document.querySelector(
173
- 'input[name="datetime"][type="datetime-local"]'
174
- );
175
- const utcDate = new Date(isoDateTimeString);
176
- const localDateTimeString =
177
- convertToDateTimePickerComponentValueString(utcDate);
178
-
179
- // Assert that no exception is thrown during rendering
180
- expect(true).toBe(true);
181
- // Assert the value of the component
182
- expect(dateTimePickerInputComponent).toHaveValue(localDateTimeString);
183
- });
184
-
185
- it('renders with ISO date time string with same offset as the browser taking browser timezone into account', () => {
186
- const isoDateTimeString = '2024-04-09T21:00:24.670-05:00';
187
- const personDtoWithDateTimeString: PersonDto = {
188
- createdDateTime: isoDateTimeString,
189
- };
190
-
191
- render(
192
- <FormTestBase initialValues={personDtoWithDateTimeString}>
193
- {({ Field }) => (
194
- <Field
195
- name="createdDateTime"
196
- Component={StringDateTimePickerGroup}
197
- label="Created Date Time"
198
- monthPlaceholder="mm"
199
- dayPlaceholder="dd"
200
- yearPlaceholder="yyyy"
201
- disableClock
202
- />
203
- )}
204
- </FormTestBase>
205
- );
206
-
207
- const dateTimePickerInputComponent = document.querySelector(
208
- 'input[name="datetime"][type="datetime-local"]'
209
- );
210
- const utcDate = new Date(isoDateTimeString);
211
- const localDateTimeString =
212
- convertToDateTimePickerComponentValueString(utcDate);
213
-
214
- // Assert that no exception is thrown during rendering
215
- expect(true).toBe(true);
216
- // Assert the value of the component
217
- expect(dateTimePickerInputComponent).toHaveValue(localDateTimeString);
218
- });
219
- });
220
-
221
- function convertToDateTimePickerComponentValueString(date: Date): string {
222
- // Format the date in the required format using `intl.DateTimeFormat`
223
- const year = new Intl.DateTimeFormat('en', { year: 'numeric' })
224
- .format(date)
225
- .padStart(4, '0');
226
-
227
- const month = new Intl.DateTimeFormat('en', { month: '2-digit' }).format(
228
- date
229
- );
230
-
231
- const day = new Intl.DateTimeFormat('en', { day: '2-digit' }).format(date);
232
-
233
- const hour = new Intl.DateTimeFormat('en', {
234
- hour: '2-digit',
235
- hourCycle: 'h23',
236
- }).format(date);
237
-
238
- const minute = new Intl.DateTimeFormat('en', { minute: '2-digit' })
239
- .format(date)
240
- .padStart(2, '0');
241
-
242
- return `${year}-${month}-${day}T${hour}:${minute}`;
243
- }
@@ -1,116 +0,0 @@
1
- import { useEffect, useState } from 'react';
2
- import { DateTimePicker, DateTimePickerProps } from 'react-datetime-picker';
3
- import { clsx } from 'clsx';
4
- import parseISO from 'date-fns/parseISO';
5
- import { InjectedFieldProps } from '../Field/InjectedFieldProps';
6
- import { FormDefaults } from '../FormDefaults';
7
- import Group, { GroupProps } from '../Group';
8
-
9
- // Represents a single date/date string, or null
10
- type DateTimePickerValuePiece = Date | string | null;
11
- // Represents either a single date/date string, a pair of dates/date strings for a range, or null
12
- type DateTimePickerValue =
13
- | DateTimePickerValuePiece
14
- | [DateTimePickerValuePiece, DateTimePickerValuePiece];
15
-
16
- export interface DateTimePickerGroupProps<T>
17
- extends InjectedFieldProps<T | undefined | null>,
18
- Omit<
19
- DateTimePickerProps,
20
- keyof InjectedFieldProps<T> | 'name' | 'value' | 'className'
21
- >,
22
- Omit<GroupProps, keyof InjectedFieldProps<T> | 'children'> {
23
- convert: (date: Date) => T;
24
- }
25
-
26
- /**
27
- * Field for inputting date and time. Uses `<Group/>` and `<DateTimePicker/>`.
28
- *
29
- * Uses [react-datetime-picker](https://www.npmjs.com/package/react-datetime-picker)
30
- */
31
- export default function DateTimePickerGroup<T>({
32
- input,
33
- meta,
34
- label,
35
- helpText,
36
- className,
37
- required,
38
- disabled,
39
- convert,
40
- ...rest
41
- }: DateTimePickerGroupProps<T>) {
42
- const [displayDateTime, setDisplayDateTime] = useState<Date | null>(null);
43
-
44
- useEffect(() => {
45
- const inputValue = input.value;
46
- if (!inputValue) {
47
- setDisplayDateTime(null);
48
- } else if (typeof inputValue === 'string') {
49
- const parsedDateTime = convertISODateTimeStringToDate(inputValue);
50
- setDisplayDateTime(parsedDateTime);
51
- } else if (inputValue instanceof Date) {
52
- setDisplayDateTime(inputValue);
53
- }
54
- }, [setDisplayDateTime, input.value]);
55
-
56
- return (
57
- <Group
58
- input={input}
59
- meta={meta}
60
- label={label}
61
- helpText={helpText}
62
- className={clsx(
63
- className,
64
- FormDefaults.cssClassPrefix + 'date-time-picker'
65
- )}
66
- required={required}
67
- disabled={disabled}>
68
- <DateTimePicker
69
- {...rest}
70
- className={clsx(
71
- FormDefaults.cssClassPrefix + 'date-time-picker',
72
- className
73
- )}
74
- value={displayDateTime}
75
- onChange={handleChange}
76
- />
77
- </Group>
78
- );
79
-
80
- function handleChange(newDateTime: DateTimePickerValue) {
81
- const { onChange } = input;
82
- if (onChange === null) {
83
- return;
84
- }
85
-
86
- if (!newDateTime) {
87
- onChange(undefined);
88
- setDisplayDateTime(null);
89
- return;
90
- } else if (typeof newDateTime === 'string') {
91
- const parsedDateTime = parseISO(newDateTime);
92
- setDisplayDateTime(parsedDateTime);
93
- onChange(convert(parsedDateTime));
94
- } else if (newDateTime instanceof Date) {
95
- setDisplayDateTime(newDateTime);
96
- onChange(convert(newDateTime));
97
- }
98
- }
99
- }
100
-
101
- function convertISODateTimeStringToDate(isoDateTimeString: string) {
102
- const isoDateTimeRegex =
103
- /^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?)([+-]\d{2}:\d{2}|Z)?$/;
104
- const isValidIsoDateTimeString = isoDateTimeRegex.test(isoDateTimeString);
105
- if (isValidIsoDateTimeString) {
106
- return new Date(isoDateTimeString);
107
- }
108
-
109
- const errorMessage = `Invalid "date time" value of ${isoDateTimeString} provided to DateTimePickerGroup component. Please provide ISO 8601 string that includes the time zone designator. Sample strings: 2022-09-24T:08:54:12+00:00, 2022-09-24T:08:54:12Z, 2022-09-24T:08:54:12.123-05:00`;
110
- if (process.env.NODE_ENV !== 'production') {
111
- throw new Error(errorMessage);
112
- } else {
113
- console.error(errorMessage);
114
- }
115
- return null;
116
- }
@@ -1,4 +0,0 @@
1
- import { DateTimePickerGroupProps } from './DateTimePickerGroup';
2
-
3
- export interface DateTimePickerHelper<T>
4
- extends Omit<DateTimePickerGroupProps<T>, 'convert'> {}