envoc-form 5.0.3 → 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,54 +0,0 @@
1
- import React, { LegacyRef } from 'react';
2
- import classNames from 'classnames';
3
- import InputGroupWithRef, { InputGroupProps } from './InputGroup';
4
- import { FormDefaults } from '../FormDefaults';
5
-
6
- // TODO: make className tailwind-able instead of css. make it typeof string ????
7
- // or should we just give a div a className and let each project decide? (this seems to be the patern)
8
- export interface IconInputGroupProps
9
- extends Omit<
10
- InputGroupProps<string | undefined | null>,
11
- 'onChange' | 'type' | 'value'
12
- > {
13
- type?: 'color' | 'email' | 'search' | 'tel' | 'text' | 'url';
14
- /** Icon to display on the input group. */
15
- icon: React.ReactNode;
16
- /** Text to display after the input group to give more information to the user. */
17
- helpText?: string;
18
- }
19
-
20
- function IconInputGroup(
21
- { icon, className, ...rest }: IconInputGroupProps,
22
- ref: LegacyRef<HTMLInputElement>
23
- ) {
24
- const { input } = rest;
25
-
26
- return (
27
- <>
28
- <InputGroupWithRef
29
- icon={icon}
30
- ref={ref}
31
- className={classNames(
32
- className,
33
- FormDefaults.cssClassPrefix + 'icon-input-group'
34
- )}
35
- value={input.value ?? ''}
36
- onChange={(e) => {
37
- if (!e.target.value) {
38
- input.onChange(undefined);
39
- } else {
40
- input.onChange(e.target.value);
41
- }
42
- }}
43
- {...rest}
44
- />
45
- </>
46
- );
47
- }
48
-
49
- /** Input group with an icon. */
50
- const IconInputGroupWithRef = React.forwardRef(
51
- IconInputGroup
52
- ) as React.ComponentType<IconInputGroupProps>;
53
-
54
- export default IconInputGroupWithRef;
@@ -1,72 +0,0 @@
1
- import React, { ChangeEventHandler, LegacyRef } from 'react';
2
- import classNames from 'classnames';
3
- import { InjectedFieldProps } from '../Field/InjectedFieldProps';
4
- import { FormDefaults } from '../FormDefaults';
5
- import Group, { GroupProps } from '../Group';
6
-
7
- export interface InputGroupProps<TValue>
8
- extends InjectedFieldProps<TValue>,
9
- Omit<
10
- React.HTMLProps<HTMLInputElement>,
11
- | keyof InjectedFieldProps<any>
12
- | 'children'
13
- | 'className'
14
- | 'label'
15
- | 'value'
16
- >,
17
- Omit<GroupProps, keyof InjectedFieldProps<any> | 'children'> {
18
- onChange: ChangeEventHandler<HTMLInputElement>;
19
- value: string | number | null | undefined;
20
- icon?: React.ReactNode;
21
- }
22
-
23
- function InputGroup<TValue>(
24
- {
25
- input,
26
- meta,
27
- label,
28
- helpText,
29
- className,
30
- required,
31
- disabled,
32
- onChange,
33
- value,
34
- icon,
35
- ...rest
36
- }: InputGroupProps<TValue>,
37
- ref: LegacyRef<HTMLInputElement>
38
- ) {
39
- return (
40
- <Group
41
- input={input}
42
- meta={meta}
43
- required={required}
44
- disabled={disabled}
45
- label={label}
46
- helpText={helpText}
47
- className={classNames(
48
- className,
49
- FormDefaults.cssClassPrefix + 'input-group'
50
- )}>
51
- {icon}
52
- <input
53
- {...input}
54
- {...rest}
55
- aria-invalid={!!meta.error}
56
- aria-errormessage={!!meta.error ? `${input.name}-error` : undefined}
57
- value={value ?? ''}
58
- onChange={onChange}
59
- ref={ref}
60
- className={classNames(
61
- className,
62
- FormDefaults.cssClassPrefix + 'input-group'
63
- )}
64
- />
65
- </Group>
66
- );
67
- }
68
-
69
- /** Generic controlled `<input/>` wrapped by a `<Group/>` */
70
- const InputGroupWithRef = React.forwardRef(InputGroup) as typeof InputGroup;
71
-
72
- export default InputGroupWithRef;
@@ -1,50 +0,0 @@
1
- import React, { LegacyRef } from 'react';
2
- import classNames from 'classnames';
3
- import InputGroup, { InputGroupProps } from './InputGroup';
4
- import { FormDefaults } from '../FormDefaults';
5
-
6
- export interface MoneyInputGroupProps
7
- extends Omit<
8
- InputGroupProps<number | undefined | null>,
9
- 'onChange' | 'type' | 'value'
10
- > {
11
- /** Custom parsing function when the value changes. */
12
- parseFunc?: typeof parseInt | typeof parseFloat;
13
- }
14
-
15
- function MoneyInputGroup(
16
- { parseFunc, className, ...rest }: MoneyInputGroupProps,
17
- ref: LegacyRef<HTMLInputElement>
18
- ) {
19
- const effectiveParse = parseFunc ?? parseFloat;
20
- const { input } = rest;
21
-
22
- return (
23
- <InputGroup
24
- ref={ref}
25
- step={0.01}
26
- min={0}
27
- {...rest}
28
- type="number"
29
- className={classNames(
30
- className,
31
- FormDefaults.cssClassPrefix + 'money-group'
32
- )}
33
- value={input.value || ''}
34
- onChange={(e) => {
35
- if (!e.target.value) {
36
- input.onChange(undefined);
37
- } else {
38
- input.onChange(effectiveParse(e.target.value));
39
- }
40
- }}
41
- />
42
- );
43
- }
44
-
45
- /** Input group for inputting money. */
46
- const MoneyInputGroupWithRef = React.forwardRef(
47
- MoneyInputGroup
48
- ) as React.FunctionComponent<MoneyInputGroupProps>;
49
-
50
- export default MoneyInputGroupWithRef;
@@ -1,48 +0,0 @@
1
- import React, { LegacyRef } from 'react';
2
- import classNames from 'classnames';
3
- import InputGroup, { InputGroupProps } from './InputGroup';
4
- import { FormDefaults } from '../FormDefaults';
5
-
6
- export interface NumberInputGroupProps
7
- extends Omit<
8
- InputGroupProps<number | undefined | null>,
9
- 'onChange' | 'type' | 'value'
10
- > {
11
- /** Custom parsing function when the value changes. */
12
- parseFunc?: typeof parseInt | typeof parseFloat;
13
- }
14
-
15
- function NumberInputGroup(
16
- { parseFunc, className, ...rest }: NumberInputGroupProps,
17
- ref: LegacyRef<HTMLInputElement>
18
- ) {
19
- const effectiveParse = parseFunc ?? parseFloat;
20
- const { input } = rest;
21
-
22
- return (
23
- <InputGroup
24
- ref={ref}
25
- {...rest}
26
- type="number"
27
- className={classNames(
28
- className,
29
- FormDefaults.cssClassPrefix + 'number-group'
30
- )}
31
- value={input.value || ''}
32
- onChange={(e) => {
33
- if (!e.target.value) {
34
- input.onChange(undefined);
35
- } else {
36
- input.onChange(effectiveParse(e.target.value));
37
- }
38
- }}
39
- />
40
- );
41
- }
42
-
43
- /** Standard number input group. By default allows for float values. */
44
- const NumberInputGroupWithRef = React.forwardRef(
45
- NumberInputGroup
46
- ) as React.ComponentType<NumberInputGroupProps>;
47
-
48
- export default NumberInputGroupWithRef;
@@ -1,45 +0,0 @@
1
- import React, { LegacyRef } from 'react';
2
- import classNames from 'classnames';
3
- import InputGroup, { InputGroupProps } from './InputGroup';
4
- import { FormDefaults } from '../FormDefaults';
5
- import { phoneNumber } from '../Normalization/normalizers';
6
-
7
- export interface PhoneNumberInputGroupProps
8
- extends Omit<
9
- InputGroupProps<string | undefined | null>,
10
- 'onChange' | 'type' | 'value'
11
- > {}
12
- function PhoneNumberInputGroup(
13
- { className, ...rest }: PhoneNumberInputGroupProps,
14
- ref: LegacyRef<HTMLInputElement>
15
- ) {
16
- const { input } = rest;
17
- return (
18
- <InputGroup
19
- ref={ref}
20
- autoComplete="tel-national"
21
- {...rest}
22
- type="text"
23
- className={classNames(
24
- className,
25
- FormDefaults.cssClassPrefix + 'phone-number-group'
26
- )}
27
- value={input.value ?? ''}
28
- onChange={(e) => {
29
- if (!e.target.value) {
30
- input.onChange(undefined);
31
- } else {
32
- input.onChange(phoneNumber(e.target.value));
33
- }
34
- }}
35
- />
36
- );
37
- }
38
- /**A standard phone number input. Will display to the user in `+XXX XXX-XXX-XXXX` format as the number is being inputted.
39
- * The data will get sent in the same format as displayed. Uses `normalizers.phoneNumber`.
40
- * @default autoComplete="tel-national"
41
- */
42
- const PhoneNumberInputGroupWithRef = React.forwardRef(
43
- PhoneNumberInputGroup
44
- ) as React.ComponentType<PhoneNumberInputGroupProps>;
45
- export default PhoneNumberInputGroupWithRef;
@@ -1,53 +0,0 @@
1
- import React, { LegacyRef } from 'react';
2
- import classNames from 'classnames';
3
- import InputGroup, { InputGroupProps } from './InputGroup';
4
- import { FormDefaults } from '../FormDefaults';
5
-
6
- export interface StringInputGroupProps
7
- extends Omit<
8
- InputGroupProps<string | undefined | null>,
9
- 'onChange' | 'type' | 'value'
10
- > {
11
- type?:
12
- | 'color'
13
- | 'email'
14
- | 'search'
15
- | 'tel'
16
- | 'text'
17
- | 'url'
18
- | 'password'
19
- | 'textarea';
20
- }
21
-
22
- function StringInputGroup(
23
- { className, ...rest }: StringInputGroupProps,
24
- ref: LegacyRef<HTMLInputElement>
25
- ) {
26
- const { input } = rest;
27
-
28
- return (
29
- <InputGroup
30
- ref={ref}
31
- {...rest}
32
- className={classNames(
33
- className,
34
- FormDefaults.cssClassPrefix + 'string-group'
35
- )}
36
- value={input.value ?? ''}
37
- onChange={(e) => {
38
- if (!e.target.value) {
39
- input.onChange(undefined);
40
- } else {
41
- input.onChange(e.target.value);
42
- }
43
- }}
44
- />
45
- );
46
- }
47
-
48
- /** Standard string input group. */
49
- const StringInputGroupWithRef = React.forwardRef(
50
- StringInputGroup
51
- ) as React.ComponentType<StringInputGroupProps>;
52
-
53
- export default StringInputGroupWithRef;
@@ -1,35 +0,0 @@
1
- import React from 'react';
2
- import { render } from '@testing-library/react';
3
- import FormTestBase from '../../__Tests__/FormTestBase';
4
- import IconInputGroup from '../IconInputGroup';
5
-
6
- describe('IconInputGroup', () => {
7
- it('renders without crashing', () => {
8
- render(
9
- <FormTestBase>
10
- {({ Field }) => (
11
- <Field
12
- name="nameWithIcon"
13
- Component={IconInputGroup}
14
- icon={<span>Pretend this is an icon</span>}
15
- />
16
- )}
17
- </FormTestBase>
18
- );
19
- });
20
-
21
- it('has matching snapshot', () => {
22
- const renderResult = render(
23
- <FormTestBase>
24
- {({ Field }) => (
25
- <Field
26
- name="nameWithIcon"
27
- Component={IconInputGroup}
28
- icon={<span>Pretend this is an icon</span>}
29
- />
30
- )}
31
- </FormTestBase>
32
- );
33
- expect(renderResult.asFragment()).toMatchSnapshot();
34
- });
35
- });
@@ -1,37 +0,0 @@
1
- import React from 'react';
2
- import { render } from '@testing-library/react';
3
- import FormTestBase from '../../__Tests__/FormTestBase';
4
- import MoneyInputGroup from '../MoneyInputGroup';
5
-
6
- describe('MoneyInputGroup', () => {
7
- it('renders without crashing', () => {
8
- render(
9
- <FormTestBase>
10
- {({ Field }) => (
11
- <Field
12
- name="yearlySalaryUSD"
13
- Component={MoneyInputGroup}
14
- label="Salary"
15
- className="something-here"
16
- />
17
- )}
18
- </FormTestBase>
19
- );
20
- });
21
-
22
- it('has matching snapshot', () => {
23
- const renderResult = render(
24
- <FormTestBase>
25
- {({ Field }) => (
26
- <Field
27
- name="yearlySalaryUSD"
28
- Component={MoneyInputGroup}
29
- label="Salary"
30
- className="something-here"
31
- />
32
- )}
33
- </FormTestBase>
34
- );
35
- expect(renderResult.asFragment()).toMatchSnapshot();
36
- });
37
- });
@@ -1,35 +0,0 @@
1
- import React from 'react';
2
- import { render } from '@testing-library/react';
3
- import FormTestBase from '../../__Tests__/FormTestBase';
4
- import NumberInputGroup from '../NumberInputGroup';
5
-
6
- describe('NumberInputGroup', () => {
7
- it('renders without crashing', () => {
8
- render(
9
- <FormTestBase>
10
- {({ Field }) => (
11
- <Field
12
- name="numberOfArms"
13
- Component={NumberInputGroup}
14
- label="Arm Count"
15
- />
16
- )}
17
- </FormTestBase>
18
- );
19
- });
20
-
21
- it('has matching snapshot', () => {
22
- const renderResult = render(
23
- <FormTestBase>
24
- {({ Field }) => (
25
- <Field
26
- name="numberOfArms"
27
- Component={NumberInputGroup}
28
- label="Arm Count"
29
- />
30
- )}
31
- </FormTestBase>
32
- );
33
- expect(renderResult.asFragment()).toMatchSnapshot();
34
- });
35
- });
@@ -1,36 +0,0 @@
1
- import React from 'react';
2
- import { render } from '@testing-library/react';
3
- import FormTestBase from '../../__Tests__/FormTestBase';
4
- import PhoneNumberInputGroup from '../PhoneNumberInputGroup';
5
-
6
- describe('PhoneNumberInputGroup', () => {
7
- it('renders without crashing', () => {
8
- render(
9
- <FormTestBase>
10
- {({ Field }) => (
11
- <Field
12
- name="phoneNumber"
13
- Component={PhoneNumberInputGroup}
14
- label="Phone Number"
15
- className="something-here"
16
- />
17
- )}
18
- </FormTestBase>
19
- );
20
- });
21
- it('has matching snapshot', () => {
22
- const renderResult = render(
23
- <FormTestBase>
24
- {({ Field }) => (
25
- <Field
26
- name="phoneNumber"
27
- Component={PhoneNumberInputGroup}
28
- label="Phone Number"
29
- className="something-here"
30
- />
31
- )}
32
- </FormTestBase>
33
- );
34
- expect(renderResult.asFragment()).toMatchSnapshot();
35
- });
36
- });
@@ -1,27 +0,0 @@
1
- import React from 'react';
2
- import { render } from '@testing-library/react';
3
- import FormTestBase from '../../__Tests__/FormTestBase';
4
- import StringInputGroup from '../StringInputGroup';
5
-
6
- describe('StringInputGroup', () => {
7
- it('renders without crashing', () => {
8
- render(
9
- <FormTestBase>
10
- {({ Field }) => (
11
- <Field name="name" Component={StringInputGroup} label="Name" />
12
- )}
13
- </FormTestBase>
14
- );
15
- });
16
-
17
- it('has matching snapshot', () => {
18
- const renderResult = render(
19
- <FormTestBase>
20
- {({ Field }) => (
21
- <Field name="name" Component={StringInputGroup} label="Name" />
22
- )}
23
- </FormTestBase>
24
- );
25
- expect(renderResult.asFragment()).toMatchSnapshot();
26
- });
27
- });
@@ -1,32 +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-icon-input-group envoc-form-input-group envoc-form-group"
11
- >
12
- <div
13
- id="namewithicon-error-scroll-target"
14
- style="display: none;"
15
- />
16
- <label
17
- for="nameWithIcon"
18
- />
19
- <span>
20
- Pretend this is an icon
21
- </span>
22
- <input
23
- aria-invalid="false"
24
- class="envoc-form-icon-input-group envoc-form-input-group"
25
- id="nameWithIcon"
26
- name="nameWithIcon"
27
- value=""
28
- />
29
- </div>
30
- </form>
31
- </DocumentFragment>
32
- `;
@@ -1,34 +0,0 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`MoneyInputGroup has matching snapshot 1`] = `
4
- <DocumentFragment>
5
- <form
6
- action="#"
7
- class="envoc-form-form"
8
- >
9
- <div
10
- class="something-here envoc-form-money-group envoc-form-input-group envoc-form-group"
11
- >
12
- <div
13
- id="yearlysalaryusd-error-scroll-target"
14
- style="display: none;"
15
- />
16
- <label
17
- for="yearlySalaryUSD"
18
- >
19
- Salary
20
- </label>
21
- <input
22
- aria-invalid="false"
23
- class="something-here envoc-form-money-group envoc-form-input-group"
24
- id="yearlySalaryUSD"
25
- min="0"
26
- name="yearlySalaryUSD"
27
- step="0.01"
28
- type="number"
29
- value=""
30
- />
31
- </div>
32
- </form>
33
- </DocumentFragment>
34
- `;
@@ -1,32 +0,0 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`NumberInputGroup has matching snapshot 1`] = `
4
- <DocumentFragment>
5
- <form
6
- action="#"
7
- class="envoc-form-form"
8
- >
9
- <div
10
- class="envoc-form-number-group envoc-form-input-group envoc-form-group"
11
- >
12
- <div
13
- id="numberofarms-error-scroll-target"
14
- style="display: none;"
15
- />
16
- <label
17
- for="numberOfArms"
18
- >
19
- Arm Count
20
- </label>
21
- <input
22
- aria-invalid="false"
23
- class="envoc-form-number-group envoc-form-input-group"
24
- id="numberOfArms"
25
- name="numberOfArms"
26
- type="number"
27
- value=""
28
- />
29
- </div>
30
- </form>
31
- </DocumentFragment>
32
- `;
@@ -1,33 +0,0 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`PhoneNumberInputGroup has matching snapshot 1`] = `
4
- <DocumentFragment>
5
- <form
6
- action="#"
7
- class="envoc-form-form"
8
- >
9
- <div
10
- class="something-here envoc-form-phone-number-group envoc-form-input-group envoc-form-group"
11
- >
12
- <div
13
- id="phonenumber-error-scroll-target"
14
- style="display: none;"
15
- />
16
- <label
17
- for="phoneNumber"
18
- >
19
- Phone Number
20
- </label>
21
- <input
22
- aria-invalid="false"
23
- autocomplete="tel-national"
24
- class="something-here envoc-form-phone-number-group envoc-form-input-group"
25
- id="phoneNumber"
26
- name="phoneNumber"
27
- type="text"
28
- value=""
29
- />
30
- </div>
31
- </form>
32
- </DocumentFragment>
33
- `;
@@ -1,31 +0,0 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`StringInputGroup has matching snapshot 1`] = `
4
- <DocumentFragment>
5
- <form
6
- action="#"
7
- class="envoc-form-form"
8
- >
9
- <div
10
- class="envoc-form-string-group envoc-form-input-group envoc-form-group"
11
- >
12
- <div
13
- id="name-error-scroll-target"
14
- style="display: none;"
15
- />
16
- <label
17
- for="name"
18
- >
19
- Name
20
- </label>
21
- <input
22
- aria-invalid="false"
23
- class="envoc-form-string-group envoc-form-input-group"
24
- id="name"
25
- name="name"
26
- value=""
27
- />
28
- </div>
29
- </form>
30
- </DocumentFragment>
31
- `;
@@ -1,4 +0,0 @@
1
- /** Normalization of values */
2
- export interface NormalizationFunction<TValue> {
3
- (value: TValue): TValue;
4
- }