envoc-form 4.0.1-0 → 4.0.1-3

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 (63) hide show
  1. package/es/DatePicker/DateOnlyDatePickerGroup.d.ts +10 -0
  2. package/es/DatePicker/DateOnlyDatePickerGroup.js +23 -0
  3. package/es/DatePicker/DatePickerGroup.d.ts +9 -0
  4. package/es/{DatePickerInput/DatePickerInput.js → DatePicker/DatePickerGroup.js} +21 -18
  5. package/es/DatePicker/DatePickerHelper.d.ts +3 -0
  6. package/es/DatePicker/DatePickerHelper.js +1 -0
  7. package/es/DatePicker/StringDatePickerGroup.d.ts +5 -0
  8. package/es/DatePicker/StringDatePickerGroup.js +19 -0
  9. package/es/Field/Field.d.ts +2 -2
  10. package/es/Field/Field.js +1 -1
  11. package/es/Field/StandAloneInput.d.ts +9 -0
  12. package/es/Field/StandAloneInput.js +49 -0
  13. package/es/Group.d.ts +1 -1
  14. package/es/Input/StringInputGroup.d.ts +1 -1
  15. package/es/TextArea/TextAreaGroup.d.ts +8 -0
  16. package/es/TextArea/TextAreaGroup.js +33 -0
  17. package/es/Validation/validators.d.ts +1 -1
  18. package/es/Validation/validators.js +1 -1
  19. package/es/index.d.ts +20 -5
  20. package/es/index.js +8 -1
  21. package/lib/DatePicker/DateOnlyDatePickerGroup.d.ts +10 -0
  22. package/lib/DatePicker/DateOnlyDatePickerGroup.js +29 -0
  23. package/lib/DatePicker/DatePickerGroup.d.ts +9 -0
  24. package/lib/{DatePickerInput/DatePickerInput.js → DatePicker/DatePickerGroup.js} +24 -19
  25. package/lib/DatePicker/DatePickerHelper.d.ts +3 -0
  26. package/lib/DatePicker/DatePickerHelper.js +2 -0
  27. package/lib/DatePicker/StringDatePickerGroup.d.ts +5 -0
  28. package/lib/DatePicker/StringDatePickerGroup.js +25 -0
  29. package/lib/Field/Field.d.ts +2 -2
  30. package/lib/Field/Field.js +1 -1
  31. package/lib/Field/StandAloneInput.d.ts +9 -0
  32. package/lib/Field/StandAloneInput.js +75 -0
  33. package/lib/Group.d.ts +1 -1
  34. package/lib/Input/StringInputGroup.d.ts +1 -1
  35. package/lib/TextArea/TextAreaGroup.d.ts +8 -0
  36. package/lib/TextArea/TextAreaGroup.js +38 -0
  37. package/lib/Validation/validators.d.ts +1 -1
  38. package/lib/Validation/validators.js +1 -1
  39. package/lib/index.d.ts +20 -5
  40. package/lib/index.js +16 -3
  41. package/package.json +2 -2
  42. package/src/AddressInput/__snapshots__/AddressInput.test.tsx.snap +4 -0
  43. package/src/DatePicker/DateOnlyDatePickerGroup.tsx +24 -0
  44. package/src/{DatePickerInput/DatePickerInput.test.tsx → DatePicker/DatePicker.test.tsx} +3 -3
  45. package/src/DatePicker/DatePickerGroup.tsx +87 -0
  46. package/src/DatePicker/DatePickerHelper.ts +4 -0
  47. package/src/DatePicker/StringDatePickerGroup.tsx +14 -0
  48. package/src/{DatePickerInput/__snapshots__/DatePickerInput.test.tsx.snap → DatePicker/__snapshots__/DatePicker.test.tsx.snap} +0 -0
  49. package/src/Field/Field.tsx +8 -5
  50. package/src/Field/StandAloneInput.tsx +51 -0
  51. package/src/File/__snapshots__/FileGroup.test.tsx.snap +1 -0
  52. package/src/Group.tsx +1 -1
  53. package/src/Input/StringInputGroup.tsx +9 -1
  54. package/src/Input/__Tests__/__snapshots__/IconInputGroup.test.tsx.snap +1 -0
  55. package/src/Input/__Tests__/__snapshots__/MoneyInputGroup.test.tsx.snap +1 -0
  56. package/src/Input/__Tests__/__snapshots__/NumberInputGroup.test.tsx.snap +1 -0
  57. package/src/Input/__Tests__/__snapshots__/StringInputGroup.test.tsx.snap +1 -0
  58. package/src/TextArea/TextAreaGroup.tsx +55 -0
  59. package/src/Validation/validators.ts +2 -2
  60. package/src/index.ts +41 -5
  61. package/es/DatePickerInput/DatePickerInput.d.ts +0 -14
  62. package/lib/DatePickerInput/DatePickerInput.d.ts +0 -14
  63. package/src/DatePickerInput/DatePickerInput.tsx +0 -85
@@ -0,0 +1,55 @@
1
+ import React, { LegacyRef } from 'react';
2
+ import classNames from 'classnames';
3
+ import { InjectedFieldProps } from '../Field/InjectedFieldProps';
4
+ import Group, { GroupProps } from '../Group';
5
+
6
+ export interface TextAreaGroupProps
7
+ extends InjectedFieldProps<string | undefined>,
8
+ Omit<
9
+ React.HTMLProps<HTMLTextAreaElement>,
10
+ keyof InjectedFieldProps<any> | 'children' | 'className' | 'label'
11
+ >,
12
+ Omit<GroupProps, keyof InjectedFieldProps<any> | 'children'> {
13
+ icon?: React.ReactNode;
14
+ }
15
+
16
+ /** generic controlled <textarea/> wrapped by a Group */
17
+ function TextAreaGroup(
18
+ {
19
+ input,
20
+ meta,
21
+ label,
22
+ helpText,
23
+ className,
24
+ disabled,
25
+ icon,
26
+ ...rest
27
+ }: TextAreaGroupProps,
28
+ ref: LegacyRef<HTMLTextAreaElement>
29
+ ) {
30
+ return (
31
+ <Group
32
+ input={input}
33
+ meta={meta}
34
+ disabled={disabled}
35
+ label={label}
36
+ helpText={helpText}
37
+ className={classNames(className, 'text-area-group')}>
38
+ {icon}
39
+ <textarea
40
+ {...input}
41
+ {...rest}
42
+ value={input.value}
43
+ onChange={(val) => input.onChange(val.target.value)}
44
+ ref={ref}
45
+ className={classNames(className, 'text-area-group')}
46
+ />
47
+ </Group>
48
+ );
49
+ }
50
+
51
+ const TextAreaGroupWithRef = React.forwardRef(
52
+ TextAreaGroup
53
+ ) as React.ComponentType<TextAreaGroupProps>;
54
+
55
+ export default TextAreaGroupWithRef;
@@ -15,11 +15,11 @@ export const length = (len: number) => (value: string | number | undefined) => {
15
15
  return !hasError ? undefined : `Length must be ${len}`;
16
16
  };
17
17
 
18
- export const integer = (val: string | undefined) => {
18
+ export const integer = (val: string | number | undefined) => {
19
19
  if (!val) {
20
20
  return undefined;
21
21
  }
22
- if (!Number.isInteger(parseFloat(val))) {
22
+ if (!Number.isInteger(typeof val === 'number' ? val : parseFloat(val))) {
23
23
  return 'Must be a whole number';
24
24
  }
25
25
  };
package/src/index.ts CHANGED
@@ -15,19 +15,38 @@ export { default as ConfirmDeleteForm } from './ConfirmDeleteForm/ConfirmDeleteF
15
15
  export type { ConfirmDeleteFormProps } from './ConfirmDeleteForm/ConfirmDeleteForm';
16
16
 
17
17
  // Date
18
- export { default as DatePickerInput } from './DatePickerInput/DatePickerInput';
19
- export type { DatePickerInputProps, DateOnly } from './DatePickerInput/DatePickerInput';
18
+ export { default as DatePickerGroup } from './DatePicker/DatePickerGroup';
19
+ export type { DatePickerGroupProps as DatePickerGroupProps } from './DatePicker/DatePickerGroup';
20
+ export { convertToTimeZoneInsensitiveISOString } from './DatePicker/DatePickerGroup';
21
+
22
+ export type { DatePickerHelper } from './DatePicker/DatePickerHelper';
23
+
24
+ export { default as DateOnlyDatePickerGroup } from './DatePicker/DateOnlyDatePickerGroup';
25
+ export type {
26
+ DateOnly,
27
+ DateOnlyDatePickerGroupProps,
28
+ } from './DatePicker/DateOnlyDatePickerGroup';
29
+
30
+ export { default as StringDatePickerGroup } from './DatePicker/StringDatePickerGroup';
31
+ export type { StringDatePickerGroupProps } from './DatePicker/StringDatePickerGroup';
20
32
 
21
33
  // Field
22
34
  export { default as Field } from './Field/Field';
23
35
  export type { FieldProps } from './Field/Field';
24
36
 
37
+ export type { RenderComponent } from './Field/Field';
38
+ export type { RenderComponentProps } from './Field/Field';
39
+
25
40
  export { default as FieldErrorScrollTarget } from './Field/FieldErrorScrollTarget';
26
41
 
27
42
  export { FieldNameContext } from './Field/FieldNameContext';
28
43
 
29
44
  export type { InjectedFieldProps } from './Field/InjectedFieldProps';
30
45
 
46
+ export { default as StandAloneInput } from './Field/StandAloneInput';
47
+
48
+ export type { StandAloneInputProps } from './Field/StandAloneInput';
49
+
31
50
  export { default as useStandardField } from './Field/useStandardField';
32
51
  export type { useStandardFieldProps } from './Field/useStandardField';
33
52
 
@@ -54,6 +73,9 @@ export type {
54
73
  export { default as FormActions } from './FormActions';
55
74
  export type { FormActionsProps as FormActionsProps } from './FormActions';
56
75
 
76
+ export { default as StandardFormActions } from './StandardFormActions';
77
+ export type { StandardFormActionsProps as StandardFormActionsProps } from './StandardFormActions';
78
+
57
79
  // Input
58
80
  export { default as Group } from './Group';
59
81
  export type { GroupProps as GroupProps } from './Group';
@@ -79,7 +101,7 @@ export * as normalizers from './Normalization/normalizers';
79
101
 
80
102
  // Select
81
103
  export { default as SelectGroup } from './Select/SelectGroup';
82
- export type { SelectGroupProps } from './Select/SelectGroup';
104
+ export type { SelectGroupProps, SelectOption } from './Select/SelectGroup';
83
105
 
84
106
  export { BooleanSelectGroup } from './Select/BooleanSelectGroup';
85
107
  export type { BooleanSelectGroupProps } from './Select/BooleanSelectGroup';
@@ -88,13 +110,27 @@ export {
88
110
  MultiNumberSelectGroup,
89
111
  SingleNumberSelectGroup,
90
112
  } from './Select/NumberSelectGroup';
91
- export type { MultiNumberSelectGroupProps, SingleNumberSelectGroupProps } from './Select/NumberSelectGroup';
113
+ export type {
114
+ MultiNumberSelectGroupProps,
115
+ SingleNumberSelectGroupProps,
116
+ } from './Select/NumberSelectGroup';
117
+
118
+ export type { SelectGroupPropsHelper } from './Select/SelectGroupPropsHelper';
92
119
 
93
120
  export {
94
121
  MultiStringSelectGroup,
95
122
  SingleStringSelectGroup,
96
123
  } from './Select/StringSelectGroup';
97
- export type { MultiStringSelectGroupProps, SingleStringSelectGroupProps } from './Select/StringSelectGroup';
124
+ export type {
125
+ MultiStringSelectGroupProps,
126
+ SingleStringSelectGroupProps,
127
+ } from './Select/StringSelectGroup';
128
+
129
+ // Text Area
130
+
131
+ export { default as TextAreaGroup } from './TextArea/TextAreaGroup';
132
+
133
+ export type { TextAreaGroupProps } from './TextArea/TextAreaGroup';
98
134
 
99
135
  // Utils
100
136
  export { default as objectContainsNonSerializableProperty } from './utils/objectContainsNonSerializableProperty';
@@ -1,14 +0,0 @@
1
- /// <reference types="react" />
2
- import { DatePickerProps } from 'react-date-picker';
3
- import { InjectedFieldProps } from '../Field/InjectedFieldProps';
4
- import { GroupProps } from '../Group';
5
- export interface DateOnly {
6
- year?: number;
7
- month?: number;
8
- day?: number;
9
- }
10
- declare type InjectedDate = InjectedFieldProps<DateOnly | undefined>;
11
- export interface DatePickerInputProps extends InjectedDate, Omit<DatePickerProps, keyof InjectedDate | 'name' | 'value' | 'className'>, Omit<GroupProps, keyof InjectedDate | 'children'> {
12
- }
13
- export default function DatePickerInput({ input, meta, label, helpText, className, disabled, ...rest }: DatePickerInputProps): JSX.Element;
14
- export {};
@@ -1,14 +0,0 @@
1
- /// <reference types="react" />
2
- import { DatePickerProps } from 'react-date-picker';
3
- import { InjectedFieldProps } from '../Field/InjectedFieldProps';
4
- import { GroupProps } from '../Group';
5
- export interface DateOnly {
6
- year?: number;
7
- month?: number;
8
- day?: number;
9
- }
10
- declare type InjectedDate = InjectedFieldProps<DateOnly | undefined>;
11
- export interface DatePickerInputProps extends InjectedDate, Omit<DatePickerProps, keyof InjectedDate | 'name' | 'value' | 'className'>, Omit<GroupProps, keyof InjectedDate | 'children'> {
12
- }
13
- export default function DatePickerInput({ input, meta, label, helpText, className, disabled, ...rest }: DatePickerInputProps): JSX.Element;
14
- export {};
@@ -1,85 +0,0 @@
1
- import { useState } from 'react';
2
- import DatePicker, { DatePickerProps } from 'react-date-picker';
3
- import classnames from 'classnames';
4
- import parseISO from 'date-fns/parseISO';
5
- import { InjectedFieldProps } from '../Field/InjectedFieldProps';
6
- import Group, { GroupProps } from '../Group';
7
-
8
- // Docs for react-date-picker https://www.npmjs.com/package/react-date-picker
9
-
10
- // TODO: pick better home for this
11
- export interface DateOnly {
12
- year?: number;
13
- month?: number;
14
- day?: number;
15
- }
16
-
17
- type InjectedDate = InjectedFieldProps<DateOnly | undefined>;
18
-
19
- export interface DatePickerInputProps
20
- extends InjectedDate,
21
- Omit<DatePickerProps, keyof InjectedDate | 'name' | 'value' | 'className'>,
22
- Omit<GroupProps, keyof InjectedDate | 'children'> {}
23
-
24
- export default function DatePickerInput({
25
- input,
26
- meta,
27
- label,
28
- helpText,
29
- className,
30
- disabled,
31
- ...rest
32
- }: DatePickerInputProps) {
33
- const [displayDate, setDisplayDate] = useState<Date | null>(null);
34
-
35
- function handleChange(e: DatePickerProps['value'] | undefined) {
36
- const { onChange } = input;
37
- if (onChange == null) {
38
- return;
39
- }
40
-
41
- if (!e) {
42
- onChange(undefined);
43
- setDisplayDate(null);
44
- return;
45
- }
46
-
47
- if (e instanceof Date) {
48
- const parsedValue = parseISO(e.toISOString().split('T')[0]);
49
-
50
- setDisplayDate(parsedValue);
51
- onChange({
52
- year: e.getFullYear(),
53
- month: e.getMonth() + 1,
54
- day: e.getDate(),
55
- });
56
- } else {
57
- // e is instanceof Date[]
58
- const parsedValue = parseISO(e[0].toISOString().split('T')[0]);
59
-
60
- setDisplayDate(parsedValue);
61
- onChange({
62
- year: e[0].getFullYear(),
63
- month: e[0].getMonth() + 1,
64
- day: e[0].getDate(),
65
- });
66
- }
67
- }
68
-
69
- return (
70
- <Group
71
- input={input}
72
- meta={meta}
73
- label={label}
74
- helpText={helpText}
75
- className={classnames(className, 'date-picker')}
76
- disabled={disabled}>
77
- <DatePicker
78
- {...rest}
79
- className={classnames('date-picker', className)}
80
- value={displayDate}
81
- onChange={handleChange}
82
- />
83
- </Group>
84
- );
85
- }