envoc-form 5.0.2 → 5.0.4-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 (323) hide show
  1. package/README.md +4650 -1250
  2. package/dist/index.cjs +21523 -0
  3. package/dist/index.d.ts +575 -0
  4. package/dist/index.js +21456 -0
  5. package/package.json +107 -111
  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 -87
  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/Field/CustomFieldInputProps.d.ts +0 -7
  25. package/es/Field/CustomFieldInputProps.js +0 -1
  26. package/es/Field/CustomFieldMetaProps.d.ts +0 -4
  27. package/es/Field/CustomFieldMetaProps.js +0 -1
  28. package/es/Field/Field.d.ts +0 -28
  29. package/es/Field/Field.js +0 -51
  30. package/es/Field/FieldErrorScrollTarget.d.ts +0 -2
  31. package/es/Field/FieldErrorScrollTarget.js +0 -12
  32. package/es/Field/FieldNameContext.d.ts +0 -3
  33. package/es/Field/FieldNameContext.js +0 -3
  34. package/es/Field/FieldSection.d.ts +0 -7
  35. package/es/Field/FieldSection.js +0 -9
  36. package/es/Field/InjectedFieldProps.d.ts +0 -7
  37. package/es/Field/InjectedFieldProps.js +0 -1
  38. package/es/Field/StandAloneInput.d.ts +0 -13
  39. package/es/Field/StandAloneInput.js +0 -50
  40. package/es/Field/useStandardField.d.ts +0 -21
  41. package/es/Field/useStandardField.js +0 -92
  42. package/es/FieldArray/FieldArray.d.ts +0 -24
  43. package/es/FieldArray/FieldArray.js +0 -77
  44. package/es/File/FileGroup.d.ts +0 -10
  45. package/es/File/FileGroup.js +0 -53
  46. package/es/File/FileList.d.ts +0 -5
  47. package/es/File/FileList.js +0 -10
  48. package/es/File/humanFileSize.d.ts +0 -1
  49. package/es/File/humanFileSize.js +0 -6
  50. package/es/Form/FocusError.d.ts +0 -7
  51. package/es/Form/FocusError.js +0 -42
  52. package/es/Form/Form.d.ts +0 -33
  53. package/es/Form/Form.js +0 -141
  54. package/es/Form/FormBasedPreventNavigation.d.ts +0 -6
  55. package/es/Form/FormBasedPreventNavigation.js +0 -20
  56. package/es/Form/LegacyFormBasedPreventNavigation.d.ts +0 -17
  57. package/es/Form/LegacyFormBasedPreventNavigation.js +0 -69
  58. package/es/Form/NewFormBasedPreventNavigation.d.ts +0 -14
  59. package/es/Form/NewFormBasedPreventNavigation.js +0 -39
  60. package/es/Form/ServerErrorContext.d.ts +0 -11
  61. package/es/Form/ServerErrorContext.js +0 -9
  62. package/es/FormActions.d.ts +0 -12
  63. package/es/FormActions.js +0 -16
  64. package/es/FormDefaults.d.ts +0 -4
  65. package/es/FormDefaults.js +0 -2
  66. package/es/Group.d.ts +0 -16
  67. package/es/Group.js +0 -14
  68. package/es/Input/IconInputGroup.d.ts +0 -12
  69. package/es/Input/IconInputGroup.js +0 -43
  70. package/es/Input/InputGroup.d.ts +0 -12
  71. package/es/Input/InputGroup.js +0 -34
  72. package/es/Input/MoneyInputGroup.d.ts +0 -9
  73. package/es/Input/MoneyInputGroup.js +0 -43
  74. package/es/Input/NumberInputGroup.d.ts +0 -9
  75. package/es/Input/NumberInputGroup.js +0 -43
  76. package/es/Input/PhoneNumberInputGroup.d.ts +0 -10
  77. package/es/Input/PhoneNumberInputGroup.js +0 -47
  78. package/es/Input/StringInputGroup.d.ts +0 -8
  79. package/es/Input/StringInputGroup.js +0 -43
  80. package/es/Normalization/NormalizationFunction.d.ts +0 -4
  81. package/es/Normalization/NormalizationFunction.js +0 -1
  82. package/es/Normalization/normalizers.d.ts +0 -4
  83. package/es/Normalization/normalizers.js +0 -32
  84. package/es/Select/BooleanSelectGroup.d.ts +0 -7
  85. package/es/Select/BooleanSelectGroup.js +0 -28
  86. package/es/Select/NumberSelectGroup.d.ts +0 -9
  87. package/es/Select/NumberSelectGroup.js +0 -21
  88. package/es/Select/SelectGroup.d.ts +0 -27
  89. package/es/Select/SelectGroup.js +0 -65
  90. package/es/Select/SelectGroupPropsHelper.d.ts +0 -3
  91. package/es/Select/SelectGroupPropsHelper.js +0 -1
  92. package/es/Select/StringSelectGroup.d.ts +0 -9
  93. package/es/Select/StringSelectGroup.js +0 -21
  94. package/es/StandardFormActions.d.ts +0 -11
  95. package/es/StandardFormActions.js +0 -14
  96. package/es/SubmitFormButton.d.ts +0 -10
  97. package/es/SubmitFormButton.js +0 -40
  98. package/es/TextArea/TextAreaGroup.d.ts +0 -9
  99. package/es/TextArea/TextAreaGroup.js +0 -35
  100. package/es/Validation/ValidatedApiResult.d.ts +0 -6
  101. package/es/Validation/ValidatedApiResult.js +0 -1
  102. package/es/Validation/ValidationError.d.ts +0 -5
  103. package/es/Validation/ValidationError.js +0 -1
  104. package/es/Validation/ValidationFunction.d.ts +0 -4
  105. package/es/Validation/ValidationFunction.js +0 -1
  106. package/es/Validation/validators.d.ts +0 -18
  107. package/es/Validation/validators.js +0 -77
  108. package/es/index.d.ts +0 -75
  109. package/es/index.js +0 -51
  110. package/es/setupTests.d.ts +0 -1
  111. package/es/setupTests.js +0 -1
  112. package/es/utils/objectContainsNonSerializableProperty.d.ts +0 -1
  113. package/es/utils/objectContainsNonSerializableProperty.js +0 -14
  114. package/es/utils/objectToFormData.d.ts +0 -10
  115. package/es/utils/objectToFormData.js +0 -77
  116. package/es/utils/typeChecks.d.ts +0 -8
  117. package/es/utils/typeChecks.js +0 -18
  118. package/lib/AddressInput/AddressInput.d.ts +0 -24
  119. package/lib/AddressInput/AddressInput.js +0 -26
  120. package/lib/AddressInput/UsStates.d.ts +0 -3
  121. package/lib/AddressInput/UsStates.js +0 -55
  122. package/lib/ConfirmBaseForm/ConfirmBaseForm.d.ts +0 -26
  123. package/lib/ConfirmBaseForm/ConfirmBaseForm.js +0 -48
  124. package/lib/ConfirmDeleteForm/ConfirmDeleteForm.d.ts +0 -24
  125. package/lib/ConfirmDeleteForm/ConfirmDeleteForm.js +0 -66
  126. package/lib/DatePicker/DatePickerGroup.d.ts +0 -13
  127. package/lib/DatePicker/DatePickerGroup.js +0 -95
  128. package/lib/DatePicker/DatePickerHelper.d.ts +0 -3
  129. package/lib/DatePicker/DatePickerHelper.js +0 -2
  130. package/lib/DatePicker/StringDateOnlyPickerGroup.d.ts +0 -9
  131. package/lib/DatePicker/StringDateOnlyPickerGroup.js +0 -35
  132. package/lib/DatePicker/StringDatePickerGroup.d.ts +0 -9
  133. package/lib/DatePicker/StringDatePickerGroup.js +0 -30
  134. package/lib/Field/CustomFieldInputProps.d.ts +0 -7
  135. package/lib/Field/CustomFieldInputProps.js +0 -2
  136. package/lib/Field/CustomFieldMetaProps.d.ts +0 -4
  137. package/lib/Field/CustomFieldMetaProps.js +0 -2
  138. package/lib/Field/Field.d.ts +0 -28
  139. package/lib/Field/Field.js +0 -56
  140. package/lib/Field/FieldErrorScrollTarget.d.ts +0 -2
  141. package/lib/Field/FieldErrorScrollTarget.js +0 -15
  142. package/lib/Field/FieldNameContext.d.ts +0 -3
  143. package/lib/Field/FieldNameContext.js +0 -9
  144. package/lib/Field/FieldSection.d.ts +0 -7
  145. package/lib/Field/FieldSection.js +0 -12
  146. package/lib/Field/InjectedFieldProps.d.ts +0 -7
  147. package/lib/Field/InjectedFieldProps.js +0 -2
  148. package/lib/Field/StandAloneInput.d.ts +0 -13
  149. package/lib/Field/StandAloneInput.js +0 -76
  150. package/lib/Field/useStandardField.d.ts +0 -21
  151. package/lib/Field/useStandardField.js +0 -95
  152. package/lib/FieldArray/FieldArray.d.ts +0 -24
  153. package/lib/FieldArray/FieldArray.js +0 -83
  154. package/lib/File/FileGroup.d.ts +0 -10
  155. package/lib/File/FileGroup.js +0 -58
  156. package/lib/File/FileList.d.ts +0 -5
  157. package/lib/File/FileList.js +0 -13
  158. package/lib/File/humanFileSize.d.ts +0 -1
  159. package/lib/File/humanFileSize.js +0 -10
  160. package/lib/Form/FocusError.d.ts +0 -7
  161. package/lib/Form/FocusError.js +0 -48
  162. package/lib/Form/Form.d.ts +0 -33
  163. package/lib/Form/Form.js +0 -147
  164. package/lib/Form/FormBasedPreventNavigation.d.ts +0 -6
  165. package/lib/Form/FormBasedPreventNavigation.js +0 -26
  166. package/lib/Form/LegacyFormBasedPreventNavigation.d.ts +0 -17
  167. package/lib/Form/LegacyFormBasedPreventNavigation.js +0 -72
  168. package/lib/Form/NewFormBasedPreventNavigation.d.ts +0 -14
  169. package/lib/Form/NewFormBasedPreventNavigation.js +0 -42
  170. package/lib/Form/ServerErrorContext.d.ts +0 -11
  171. package/lib/Form/ServerErrorContext.js +0 -15
  172. package/lib/FormActions.d.ts +0 -12
  173. package/lib/FormActions.js +0 -22
  174. package/lib/FormDefaults.d.ts +0 -4
  175. package/lib/FormDefaults.js +0 -5
  176. package/lib/Group.d.ts +0 -16
  177. package/lib/Group.js +0 -20
  178. package/lib/Input/IconInputGroup.d.ts +0 -12
  179. package/lib/Input/IconInputGroup.js +0 -48
  180. package/lib/Input/InputGroup.d.ts +0 -12
  181. package/lib/Input/InputGroup.js +0 -39
  182. package/lib/Input/MoneyInputGroup.d.ts +0 -9
  183. package/lib/Input/MoneyInputGroup.js +0 -48
  184. package/lib/Input/NumberInputGroup.d.ts +0 -9
  185. package/lib/Input/NumberInputGroup.js +0 -48
  186. package/lib/Input/PhoneNumberInputGroup.d.ts +0 -10
  187. package/lib/Input/PhoneNumberInputGroup.js +0 -52
  188. package/lib/Input/StringInputGroup.d.ts +0 -8
  189. package/lib/Input/StringInputGroup.js +0 -48
  190. package/lib/Normalization/NormalizationFunction.d.ts +0 -4
  191. package/lib/Normalization/NormalizationFunction.js +0 -2
  192. package/lib/Normalization/normalizers.d.ts +0 -4
  193. package/lib/Normalization/normalizers.js +0 -37
  194. package/lib/Select/BooleanSelectGroup.d.ts +0 -7
  195. package/lib/Select/BooleanSelectGroup.js +0 -35
  196. package/lib/Select/NumberSelectGroup.d.ts +0 -9
  197. package/lib/Select/NumberSelectGroup.js +0 -29
  198. package/lib/Select/SelectGroup.d.ts +0 -27
  199. package/lib/Select/SelectGroup.js +0 -71
  200. package/lib/Select/SelectGroupPropsHelper.d.ts +0 -3
  201. package/lib/Select/SelectGroupPropsHelper.js +0 -2
  202. package/lib/Select/StringSelectGroup.d.ts +0 -9
  203. package/lib/Select/StringSelectGroup.js +0 -29
  204. package/lib/StandardFormActions.d.ts +0 -11
  205. package/lib/StandardFormActions.js +0 -20
  206. package/lib/SubmitFormButton.d.ts +0 -10
  207. package/lib/SubmitFormButton.js +0 -45
  208. package/lib/TextArea/TextAreaGroup.d.ts +0 -9
  209. package/lib/TextArea/TextAreaGroup.js +0 -40
  210. package/lib/Validation/ValidatedApiResult.d.ts +0 -6
  211. package/lib/Validation/ValidatedApiResult.js +0 -2
  212. package/lib/Validation/ValidationError.d.ts +0 -5
  213. package/lib/Validation/ValidationError.js +0 -2
  214. package/lib/Validation/ValidationFunction.d.ts +0 -4
  215. package/lib/Validation/ValidationFunction.js +0 -2
  216. package/lib/Validation/validators.d.ts +0 -18
  217. package/lib/Validation/validators.js +0 -90
  218. package/lib/index.d.ts +0 -75
  219. package/lib/index.js +0 -119
  220. package/lib/setupTests.d.ts +0 -1
  221. package/lib/setupTests.js +0 -3
  222. package/lib/utils/objectContainsNonSerializableProperty.d.ts +0 -1
  223. package/lib/utils/objectContainsNonSerializableProperty.js +0 -17
  224. package/lib/utils/objectToFormData.d.ts +0 -10
  225. package/lib/utils/objectToFormData.js +0 -79
  226. package/lib/utils/typeChecks.d.ts +0 -8
  227. package/lib/utils/typeChecks.js +0 -29
  228. package/src/AddressInput/AddressInput.test.tsx +0 -27
  229. package/src/AddressInput/AddressInput.tsx +0 -82
  230. package/src/AddressInput/UsStates.ts +0 -55
  231. package/src/AddressInput/__snapshots__/AddressInput.test.tsx.snap +0 -182
  232. package/src/ConfirmBaseForm/ConfirmBaseForm.test.tsx +0 -24
  233. package/src/ConfirmBaseForm/ConfirmBaseForm.tsx +0 -74
  234. package/src/ConfirmBaseForm/__snapshots__/ConfirmBaseForm.test.tsx.snap +0 -23
  235. package/src/ConfirmDeleteForm/ConfirmDeleteForm.test.tsx +0 -24
  236. package/src/ConfirmDeleteForm/ConfirmDeleteForm.tsx +0 -87
  237. package/src/ConfirmDeleteForm/__snapshots__/ConfirmDeleteForm.test.tsx.snap +0 -25
  238. package/src/DatePicker/DatePicker.test.tsx +0 -48
  239. package/src/DatePicker/DatePickerGroup.tsx +0 -115
  240. package/src/DatePicker/DatePickerHelper.ts +0 -4
  241. package/src/DatePicker/StringDateOnlyPickerGroup.tsx +0 -28
  242. package/src/DatePicker/StringDatePickerGroup.tsx +0 -20
  243. package/src/DatePicker/__snapshots__/DatePicker.test.tsx.snap +0 -152
  244. package/src/Field/CustomFieldInputProps.ts +0 -10
  245. package/src/Field/CustomFieldMetaProps.ts +0 -5
  246. package/src/Field/Field.tsx +0 -113
  247. package/src/Field/FieldErrorScrollTarget.tsx +0 -12
  248. package/src/Field/FieldNameContext.ts +0 -6
  249. package/src/Field/FieldSection.tsx +0 -18
  250. package/src/Field/InjectedFieldProps.ts +0 -8
  251. package/src/Field/StandAloneInput.tsx +0 -55
  252. package/src/Field/useStandardField.ts +0 -125
  253. package/src/FieldArray/FieldArray.tsx +0 -154
  254. package/src/File/FileGroup.test.tsx +0 -35
  255. package/src/File/FileGroup.tsx +0 -85
  256. package/src/File/FileList.tsx +0 -21
  257. package/src/File/__snapshots__/FileGroup.test.tsx.snap +0 -34
  258. package/src/File/humanFileSize.ts +0 -8
  259. package/src/Form/FocusError.tsx +0 -55
  260. package/src/Form/Form.test.tsx +0 -14
  261. package/src/Form/Form.tsx +0 -237
  262. package/src/Form/FormBasedPreventNavigation.tsx +0 -56
  263. package/src/Form/LegacyFormBasedPreventNavigation.tsx +0 -77
  264. package/src/Form/NewFormBasedPreventNavigation.tsx +0 -59
  265. package/src/Form/ServerErrorContext.ts +0 -18
  266. package/src/Form/__snapshots__/Form.test.tsx.snap +0 -10
  267. package/src/FormActions.tsx +0 -47
  268. package/src/FormDefaults.ts +0 -2
  269. package/src/Group.tsx +0 -62
  270. package/src/Input/IconInputGroup.tsx +0 -54
  271. package/src/Input/InputGroup.tsx +0 -72
  272. package/src/Input/MoneyInputGroup.tsx +0 -50
  273. package/src/Input/NumberInputGroup.tsx +0 -48
  274. package/src/Input/PhoneNumberInputGroup.tsx +0 -45
  275. package/src/Input/StringInputGroup.tsx +0 -53
  276. package/src/Input/__Tests__/IconInputGroup.test.tsx +0 -35
  277. package/src/Input/__Tests__/MoneyInputGroup.test.tsx +0 -37
  278. package/src/Input/__Tests__/NumberInputGroup.test.tsx +0 -35
  279. package/src/Input/__Tests__/PhoneNumberInputGroup.test.tsx +0 -36
  280. package/src/Input/__Tests__/StringInputGroup.test.tsx +0 -27
  281. package/src/Input/__Tests__/__snapshots__/IconInputGroup.test.tsx.snap +0 -32
  282. package/src/Input/__Tests__/__snapshots__/MoneyInputGroup.test.tsx.snap +0 -34
  283. package/src/Input/__Tests__/__snapshots__/NumberInputGroup.test.tsx.snap +0 -32
  284. package/src/Input/__Tests__/__snapshots__/PhoneNumberInputGroup.test.tsx.snap +0 -33
  285. package/src/Input/__Tests__/__snapshots__/StringInputGroup.test.tsx.snap +0 -31
  286. package/src/Normalization/NormalizationFunction.ts +0 -4
  287. package/src/Normalization/normalizers.ts +0 -44
  288. package/src/Select/BooleanSelectGroup.tsx +0 -28
  289. package/src/Select/NumberSelectGroup.tsx +0 -16
  290. package/src/Select/SelectGroup.tsx +0 -124
  291. package/src/Select/SelectGroupPropsHelper.ts +0 -4
  292. package/src/Select/StringSelectGroup.tsx +0 -16
  293. package/src/Select/__tests__/BooleanSelectGroup.test.tsx +0 -35
  294. package/src/Select/__tests__/NumberSelectGroup.test.tsx +0 -87
  295. package/src/Select/__tests__/StringSelectGroup.test.tsx +0 -89
  296. package/src/Select/__tests__/__snapshots__/BooleanSelectGroup.test.tsx.snap +0 -98
  297. package/src/Select/__tests__/__snapshots__/NumberSelectGroup.test.tsx.snap +0 -195
  298. package/src/Select/__tests__/__snapshots__/StringSelectGroup.test.tsx.snap +0 -195
  299. package/src/StandardFormActions.tsx +0 -41
  300. package/src/SubmitFormButton.tsx +0 -54
  301. package/src/TextArea/TextAreaGroup.tsx +0 -64
  302. package/src/Validation/ValidatedApiResult.ts +0 -8
  303. package/src/Validation/ValidationError.ts +0 -6
  304. package/src/Validation/ValidationFunction.ts +0 -4
  305. package/src/Validation/validators.test.tsx +0 -81
  306. package/src/Validation/validators.ts +0 -97
  307. package/src/__Tests__/FormTestBase.tsx +0 -64
  308. package/src/__Tests__/RealisticForm.test.tsx +0 -82
  309. package/src/__Tests__/StandardFormActions.test.tsx +0 -17
  310. package/src/__Tests__/SubmitFormButton.test.tsx +0 -17
  311. package/src/__Tests__/__snapshots__/StandardFormActions.test.tsx.snap +0 -27
  312. package/src/__Tests__/__snapshots__/SubmitFormButton.test.tsx.snap +0 -20
  313. package/src/__Tests__/index.ts +0 -3
  314. package/src/_variables.scss +0 -11
  315. package/src/index.ts +0 -153
  316. package/src/react-app-env.d.ts +0 -1
  317. package/src/setupTests.ts +0 -1
  318. package/src/styles.scss +0 -0
  319. package/src/utils/objectContainsNonSerializableProperty.test.tsx +0 -49
  320. package/src/utils/objectContainsNonSerializableProperty.ts +0 -17
  321. package/src/utils/objectToFormData.test.tsx +0 -76
  322. package/src/utils/objectToFormData.ts +0 -105
  323. package/src/utils/typeChecks.ts +0 -18
@@ -1,74 +0,0 @@
1
- import React, { MouseEventHandler } from 'react';
2
- import classNames from 'classnames';
3
- import { useAxiosRequest, useAxiosRequestProps } from 'envoc-request';
4
- import { FormDefaults } from '../FormDefaults';
5
-
6
- // TODO: change the style prop type to Tailwind type (does this exist before Tailwind 3.1 ???), or
7
- // should this just be type 'string'
8
- export interface ConfirmBaseFormProps {
9
- /** Function to run when cancel button is clicked. */
10
- handleCancel?: MouseEventHandler<HTMLButtonElement>;
11
- /** Axios request upon confirmation */
12
- request: useAxiosRequestProps;
13
- style?: React.CSSProperties;
14
- /** `<h3/>` title text on top of the form. */
15
- title?: string;
16
- /** Custom confirm button text.
17
- * @defaultValue `Confirm`
18
- */
19
- confirmButtonText?: string;
20
- /** CSS class for the buttons. */
21
- confirmButtonClass?: string;
22
- /** Any components to be rendered in between the title and the buttons. */
23
- children?: React.ReactNode;
24
- }
25
-
26
- // TODO: ask about how we should use 'children'
27
- /**
28
- * Confimation dialog. Navigates to a different route to allow the user to either confirm or cancel an action.
29
- * Commonly used for confirming delete and archive.
30
- *
31
- * See `<ConfirmDeleteForm/>` if the confirmation is specifically for deletion.
32
- */
33
- export default function ConfirmBaseForm({
34
- handleCancel,
35
- request,
36
- style,
37
- title,
38
- confirmButtonText,
39
- confirmButtonClass,
40
- children,
41
- ...props
42
- }: ConfirmBaseFormProps) {
43
- const webRequest = useAxiosRequest(
44
- Object.assign({}, request, { autoExecute: false })
45
- );
46
- const onCancel = handleCancel ?? goBack;
47
-
48
- return (
49
- <div style={{ textAlign: 'center', ...style }} {...props}>
50
- <h3>{title}</h3>
51
- {children}
52
- <button
53
- className={classNames(
54
- confirmButtonClass ??
55
- FormDefaults.cssClassPrefix + 'confirm-base-form-confirm-button'
56
- )}
57
- type="button"
58
- onClick={webRequest.submitRequest}>
59
- {confirmButtonText ?? 'Confirm'}
60
- </button>
61
- <button
62
- className={classNames(
63
- FormDefaults.cssClassPrefix + 'confirm-base-form-cancel-button'
64
- )}
65
- type="button"
66
- onClick={onCancel}>
67
- Cancel
68
- </button>
69
- </div>
70
- );
71
- function goBack() {
72
- window.history.back();
73
- }
74
- }
@@ -1,23 +0,0 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`ConfirmBaseForm has matching snapshot 1`] = `
4
- <DocumentFragment>
5
- <div
6
- style="text-align: center;"
7
- >
8
- <h3 />
9
- <button
10
- class="envoc-form-confirm-base-form-confirm-button"
11
- type="button"
12
- >
13
- Confirm
14
- </button>
15
- <button
16
- class="envoc-form-confirm-base-form-cancel-button"
17
- type="button"
18
- >
19
- Cancel
20
- </button>
21
- </div>
22
- </DocumentFragment>
23
- `;
@@ -1,24 +0,0 @@
1
- import React from 'react';
2
- import { HashRouter } from 'react-router-dom';
3
- import { render } from '@testing-library/react';
4
-
5
- import ConfirmDeleteForm from './ConfirmDeleteForm';
6
-
7
- describe('ConfirmDeleteForm', () => {
8
- it('Renders without error', () => {
9
- render(
10
- <HashRouter>
11
- <ConfirmDeleteForm form="foo" />
12
- </HashRouter>
13
- );
14
- });
15
-
16
- it('has matching snapshot', () => {
17
- const renderResult = render(
18
- <HashRouter>
19
- <ConfirmDeleteForm form="foo" />
20
- </HashRouter>
21
- );
22
- expect(renderResult.asFragment()).toMatchSnapshot();
23
- });
24
- });
@@ -1,87 +0,0 @@
1
- import React from 'react';
2
- import { useNavigate, useParams } from 'react-router-dom';
3
- import { toast } from 'react-toastify';
4
- import { useAxiosRequestProps } from 'envoc-request';
5
- import ConfirmBaseForm, {
6
- ConfirmBaseFormProps,
7
- } from '../ConfirmBaseForm/ConfirmBaseForm';
8
- import { FormDefaults } from '../FormDefaults';
9
-
10
- export interface ConfirmDeleteFormProps
11
- extends Pick<ConfirmBaseFormProps, 'style'> {
12
- /** Url to navigate to on success. */
13
- successUrl?: string;
14
- /** Form name (key) to apply the confirmation on. */
15
- form: string;
16
- /** Custom message to display.
17
- * @defaultValue `Are you sure you want to delete this?`
18
- */
19
- title?: string;
20
- /** Custom function when the axios request succeeds. */
21
- handleComplete?: Function;
22
- /** Custom function when the axios request fails. */
23
- handleError?: Function;
24
- /** Any components to be rendered in between the title and the buttons. */
25
- children?: React.ReactNode;
26
- }
27
-
28
- /**
29
- * Deletion confirmation. Navigates to a different route to allow the user to either confirm or cancel an action.
30
- *
31
- * Wraps `<ConfirmBaseForm/>`.
32
- */
33
- export default function ConfirmDeleteForm({
34
- successUrl,
35
- form,
36
- title,
37
- handleComplete,
38
- handleError,
39
- children,
40
- ...props
41
- }: ConfirmDeleteFormProps) {
42
- const navigate = useNavigate();
43
- const { entityId } = useParams();
44
- const onComplete =
45
- handleComplete ??
46
- function () {
47
- toast.success('Deleted!');
48
- goBack();
49
- };
50
- const onError =
51
- handleError ??
52
- function (error: any) {
53
- toast.error(
54
- error.response?.data?.validationFailures[0]?.errorMessage ??
55
- 'Something went wrong talking to the portal. Contact support if this continues.'
56
- );
57
- };
58
-
59
- const request = {
60
- method: 'delete',
61
- url: `/api/${form}/${entityId}`,
62
- onComplete: onComplete,
63
- onError: onError,
64
- } as useAxiosRequestProps;
65
-
66
- return (
67
- <ConfirmBaseForm
68
- request={request}
69
- handleCancel={goBack}
70
- title={title ?? 'Are you sure you want to delete this?'}
71
- confirmButtonText="Yes"
72
- confirmButtonClass={
73
- FormDefaults.cssClassPrefix + 'confirm-delete-form-yes-button'
74
- }
75
- {...props}>
76
- {children}
77
- </ConfirmBaseForm>
78
- );
79
-
80
- function goBack() {
81
- if (successUrl) {
82
- navigate(successUrl);
83
- } else {
84
- navigate(-1);
85
- }
86
- }
87
- }
@@ -1,25 +0,0 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`ConfirmDeleteForm has matching snapshot 1`] = `
4
- <DocumentFragment>
5
- <div
6
- style="text-align: center;"
7
- >
8
- <h3>
9
- Are you sure you want to delete this?
10
- </h3>
11
- <button
12
- class="envoc-form-confirm-delete-form-yes-button"
13
- type="button"
14
- >
15
- Yes
16
- </button>
17
- <button
18
- class="envoc-form-confirm-base-form-cancel-button"
19
- type="button"
20
- >
21
- Cancel
22
- </button>
23
- </div>
24
- </DocumentFragment>
25
- `;
@@ -1,48 +0,0 @@
1
- import React from 'react';
2
- import { render } from '@testing-library/react';
3
- import StringDatePickerGroup from './StringDatePickerGroup';
4
- import FormTestBase from '../__Tests__/FormTestBase';
5
-
6
- //hack so the datepicker internals don't complain about this not existing in the context of jest
7
- HTMLCanvasElement.prototype.getContext = () => null;
8
-
9
- describe('IconInputGroup', () => {
10
- it('renders without crashing', () => {
11
- render(
12
- <FormTestBase>
13
- {({ Field }) => (
14
- <Field
15
- name="favoriteDate"
16
- Component={StringDatePickerGroup}
17
- label="Favorite Date"
18
- monthPlaceholder="mm"
19
- dayPlaceholder="dd"
20
- yearPlaceholder="yyyy"
21
- maxDate={new Date('9/23/2023')}
22
- minDate={new Date('6/22/2022')}
23
- />
24
- )}
25
- </FormTestBase>
26
- );
27
- });
28
-
29
- it('has matching snapshot', () => {
30
- const renderResult = render(
31
- <FormTestBase>
32
- {({ Field }) => (
33
- <Field
34
- name="favoriteDate"
35
- Component={StringDatePickerGroup}
36
- label="Favorite Date"
37
- monthPlaceholder="mm"
38
- dayPlaceholder="dd"
39
- yearPlaceholder="yyyy"
40
- maxDate={new Date('9/23/2023')}
41
- minDate={new Date('6/22/2022')}
42
- />
43
- )}
44
- </FormTestBase>
45
- );
46
- expect(renderResult.asFragment()).toMatchSnapshot();
47
- });
48
- });
@@ -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 classnames from 'classnames';
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
- ...rest
36
- }: DatePickerGroupProps<T>) {
37
- const [displayDate, setDisplayDate] = useState<Date | null>(null);
38
-
39
- useEffect(() => {
40
- if (!input.value) {
41
- setDisplayDate(null);
42
- } else if (typeof input.value === 'string') {
43
- if (input.value.indexOf('T') === -1) {
44
- setDisplayDate(new Date(`${input.value}T00:00:00.000`));
45
- } else {
46
- setDisplayDate(new Date(input.value));
47
- }
48
- }
49
- }, [setDisplayDate, input.value]);
50
-
51
- return (
52
- <Group
53
- input={input}
54
- meta={meta}
55
- label={label}
56
- helpText={helpText}
57
- className={classnames(
58
- className,
59
- FormDefaults.cssClassPrefix + 'date-picker'
60
- )}
61
- required={required}
62
- disabled={disabled}>
63
- <DatePicker
64
- {...rest}
65
- className={classnames(
66
- FormDefaults.cssClassPrefix + 'date-picker',
67
- className
68
- )}
69
- value={displayDate}
70
- onChange={handleChange}
71
- />
72
- </Group>
73
- );
74
-
75
- function handleChange(e: Date | Date[] | string | undefined) {
76
- const { onChange } = input;
77
- if (onChange === null) {
78
- return;
79
- }
80
-
81
- if (!e) {
82
- onChange(undefined);
83
- setDisplayDate(null);
84
- return;
85
- } else if (typeof e === 'string') {
86
- const parsedValue = parseISO(e.toString().split('T')[0]);
87
- setDisplayDate(parsedValue);
88
- onChange(convert(parsedValue));
89
- } else if (e instanceof Date) {
90
- const parsedValue = parseISO(
91
- convertToTimeZoneInsensitiveISOString(e).split('T')[0]
92
- );
93
- setDisplayDate(parsedValue);
94
- onChange(convert(parsedValue));
95
- } else {
96
- // e is instanceof Date[]
97
- const parsedValue = parseISO(
98
- convertToTimeZoneInsensitiveISOString(e[0]).split('T')[0]
99
- );
100
- setDisplayDate(parsedValue);
101
- onChange(convert(parsedValue));
102
- }
103
- }
104
- }
105
-
106
- export function convertToTimeZoneInsensitiveISOString(date: Date): string {
107
- const year = new Intl.DateTimeFormat('en', { year: 'numeric' })
108
- .format(date)
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,10 +0,0 @@
1
- export interface CustomFieldInputProps<TValue> {
2
- id: string;
3
- name: string;
4
- value: TValue;
5
- // we want to be more strict than formik is for setting the value
6
- onChange: (newValue: TValue) => void;
7
-
8
- // we don't want controlled vs uncontrolled components to behave oddly
9
- onBlur: () => void;
10
- }
@@ -1,5 +0,0 @@
1
- import { FieldMetaProps } from 'formik';
2
-
3
- export interface CustomFieldMetaProps<TValue> extends FieldMetaProps<TValue> {
4
- warning: string | undefined;
5
- }