@ultraviolet/form 2.13.3 → 2.13.5

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 (60) hide show
  1. package/dist/components/CheckboxField/index.cjs +53 -0
  2. package/dist/components/CheckboxField/index.js +15 -32
  3. package/dist/components/CheckboxGroupField/index.cjs +75 -0
  4. package/dist/components/CheckboxGroupField/index.js +31 -48
  5. package/dist/components/DateField/index.cjs +74 -0
  6. package/dist/components/DateField/index.js +27 -42
  7. package/dist/components/Form/defaultErrors.cjs +22 -0
  8. package/dist/components/Form/index.cjs +72 -0
  9. package/dist/components/Form/index.js +25 -33
  10. package/dist/components/KeyValueField/index.cjs +51 -0
  11. package/dist/components/KeyValueField/index.js +14 -48
  12. package/dist/components/NumberInputField/index.cjs +56 -0
  13. package/dist/components/NumberInputField/index.js +17 -32
  14. package/dist/components/NumberInputFieldV2/index.cjs +63 -0
  15. package/dist/components/NumberInputFieldV2/index.js +17 -37
  16. package/dist/components/RadioField/index.cjs +49 -0
  17. package/dist/components/RadioField/index.js +15 -27
  18. package/dist/components/RadioGroupField/index.cjs +45 -0
  19. package/dist/components/RadioGroupField/index.js +12 -22
  20. package/dist/components/SelectInputField/index.cjs +102 -0
  21. package/dist/components/SelectInputField/index.js +41 -78
  22. package/dist/components/SelectInputFieldV2/index.cjs +70 -0
  23. package/dist/components/SelectInputFieldV2/index.js +16 -50
  24. package/dist/components/SelectableCardField/index.cjs +58 -0
  25. package/dist/components/SelectableCardField/index.js +20 -42
  26. package/dist/components/SelectableCardGroupField/index.cjs +56 -0
  27. package/dist/components/SelectableCardGroupField/index.js +20 -34
  28. package/dist/components/Submit/index.cjs +26 -0
  29. package/dist/components/Submit/index.js +5 -19
  30. package/dist/components/SubmitErrorAlert/index.cjs +14 -0
  31. package/dist/components/SubmitErrorAlert/index.js +6 -2
  32. package/dist/components/TagInputField/index.cjs +50 -0
  33. package/dist/components/TagInputField/index.js +12 -27
  34. package/dist/components/TextAreaField/index.cjs +70 -0
  35. package/dist/components/TextAreaField/index.js +22 -50
  36. package/dist/components/TextInputField/index.cjs +114 -0
  37. package/dist/components/TextInputField/index.js +31 -71
  38. package/dist/components/TextInputFieldV2/index.cjs +79 -0
  39. package/dist/components/TextInputFieldV2/index.js +22 -59
  40. package/dist/components/TimeField/index.cjs +66 -0
  41. package/dist/components/TimeField/index.js +17 -42
  42. package/dist/components/ToggleField/index.cjs +47 -0
  43. package/dist/components/ToggleField/index.js +10 -24
  44. package/dist/constants.cjs +4 -0
  45. package/dist/hooks/useField.cjs +30 -0
  46. package/dist/hooks/useField.js +10 -3
  47. package/dist/hooks/useFieldArray.cjs +32 -0
  48. package/dist/hooks/useFieldArray.js +13 -3
  49. package/dist/hooks/useForm.cjs +24 -0
  50. package/dist/hooks/useForm.js +6 -1
  51. package/dist/hooks/useFormState.cjs +22 -0
  52. package/dist/hooks/useFormState.js +3 -1
  53. package/dist/hooks/useOnFieldChange.cjs +21 -0
  54. package/dist/hooks/useOnFieldChange.js +5 -4
  55. package/dist/index.cjs +84 -0
  56. package/dist/providers/ErrorContext/index.cjs +33 -0
  57. package/dist/providers/ErrorContext/index.js +17 -20
  58. package/dist/validators/maxDate.cjs +4 -0
  59. package/dist/validators/minDate.cjs +4 -0
  60. package/package.json +20 -4
@@ -22,10 +22,14 @@ const TagInputField = ({
22
22
  readOnly,
23
23
  tooltip
24
24
  }) => {
25
- const { getError } = useErrors();
25
+ const {
26
+ getError
27
+ } = useErrors();
26
28
  const {
27
29
  field,
28
- fieldState: { error }
30
+ fieldState: {
31
+ error
32
+ }
29
33
  } = useController({
30
34
  name,
31
35
  rules: {
@@ -34,31 +38,12 @@ const TagInputField = ({
34
38
  ...rules
35
39
  }
36
40
  });
37
- return /* @__PURE__ */ jsx(
38
- TagInput,
39
- {
40
- name: field.name,
41
- className,
42
- disabled,
43
- id,
44
- onChange: (newTags) => {
45
- field.onChange(newTags);
46
- onChange?.(newTags);
47
- },
48
- placeholder,
49
- variant,
50
- value: field.value,
51
- "data-testid": dataTestId,
52
- clearable,
53
- label,
54
- labelDescription,
55
- size,
56
- success,
57
- error: getError({ label: label ?? "" }, error),
58
- readOnly,
59
- tooltip
60
- }
61
- );
41
+ return /* @__PURE__ */ jsx(TagInput, { name: field.name, className, disabled, id, onChange: (newTags) => {
42
+ field.onChange(newTags);
43
+ onChange?.(newTags);
44
+ }, placeholder, variant, value: field.value, "data-testid": dataTestId, clearable, label, labelDescription, size, success, error: getError({
45
+ label: label ?? ""
46
+ }, error), readOnly, tooltip });
62
47
  };
63
48
  export {
64
49
  TagInputField
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("@emotion/react/jsx-runtime");
4
+ const ui = require("@ultraviolet/ui");
5
+ const reactHookForm = require("react-hook-form");
6
+ const index = require("../../providers/ErrorContext/index.cjs");
7
+ const TextAreaField = ({
8
+ autoFocus,
9
+ clearable,
10
+ className,
11
+ tabIndex,
12
+ "data-testid": dataTestId,
13
+ disabled,
14
+ helper,
15
+ label,
16
+ labelDescription,
17
+ onChange,
18
+ minLength,
19
+ maxLength,
20
+ name,
21
+ onFocus,
22
+ onBlur,
23
+ placeholder,
24
+ readOnly,
25
+ required,
26
+ rows,
27
+ success,
28
+ tooltip,
29
+ validate,
30
+ regex: regexes
31
+ }) => {
32
+ const {
33
+ getError
34
+ } = index.useErrors();
35
+ const {
36
+ field,
37
+ fieldState: {
38
+ error
39
+ }
40
+ } = reactHookForm.useController({
41
+ name,
42
+ rules: {
43
+ required,
44
+ validate: {
45
+ ...regexes ? {
46
+ pattern: (value) => regexes.every((regex) => value === void 0 || value === "" || (Array.isArray(regex) ? regex.some((regexOr) => regexOr.test(value)) : regex.test(value)))
47
+ } : {},
48
+ ...validate
49
+ },
50
+ minLength,
51
+ maxLength
52
+ }
53
+ });
54
+ return /* @__PURE__ */ jsxRuntime.jsx(ui.TextArea, { autoFocus, className, clearable, "data-testid": dataTestId, disabled, error: getError({
55
+ regex: regexes,
56
+ minLength,
57
+ maxLength,
58
+ label,
59
+ value: field.value
60
+ }, error), helper, label, labelDescription, minLength, maxLength, name, onBlur: (event) => {
61
+ onBlur?.(event);
62
+ field.onBlur();
63
+ }, onChange: (event) => {
64
+ field.onChange(event);
65
+ onChange?.(event);
66
+ }, onFocus: (event) => {
67
+ onFocus?.(event);
68
+ }, placeholder, readOnly, required, rows, success, tabIndex, tooltip, value: field.value });
69
+ };
70
+ exports.TextAreaField = TextAreaField;
@@ -27,19 +27,21 @@ const TextAreaField = ({
27
27
  validate,
28
28
  regex: regexes
29
29
  }) => {
30
- const { getError } = useErrors();
30
+ const {
31
+ getError
32
+ } = useErrors();
31
33
  const {
32
34
  field,
33
- fieldState: { error }
35
+ fieldState: {
36
+ error
37
+ }
34
38
  } = useController({
35
39
  name,
36
40
  rules: {
37
41
  required,
38
42
  validate: {
39
43
  ...regexes ? {
40
- pattern: (value) => regexes.every(
41
- (regex) => value === void 0 || value === "" || (Array.isArray(regex) ? regex.some((regexOr) => regexOr.test(value)) : regex.test(value))
42
- )
44
+ pattern: (value) => regexes.every((regex) => value === void 0 || value === "" || (Array.isArray(regex) ? regex.some((regexOr) => regexOr.test(value)) : regex.test(value)))
43
45
  } : {},
44
46
  ...validate
45
47
  },
@@ -47,51 +49,21 @@ const TextAreaField = ({
47
49
  maxLength
48
50
  }
49
51
  });
50
- return /* @__PURE__ */ jsx(
51
- TextArea,
52
- {
53
- autoFocus,
54
- className,
55
- clearable,
56
- "data-testid": dataTestId,
57
- disabled,
58
- error: getError(
59
- {
60
- regex: regexes,
61
- minLength,
62
- maxLength,
63
- label,
64
- value: field.value
65
- },
66
- error
67
- ),
68
- helper,
69
- label,
70
- labelDescription,
71
- minLength,
72
- maxLength,
73
- name,
74
- onBlur: (event) => {
75
- onBlur?.(event);
76
- field.onBlur();
77
- },
78
- onChange: (event) => {
79
- field.onChange(event);
80
- onChange?.(event);
81
- },
82
- onFocus: (event) => {
83
- onFocus?.(event);
84
- },
85
- placeholder,
86
- readOnly,
87
- required,
88
- rows,
89
- success,
90
- tabIndex,
91
- tooltip,
92
- value: field.value
93
- }
94
- );
52
+ return /* @__PURE__ */ jsx(TextArea, { autoFocus, className, clearable, "data-testid": dataTestId, disabled, error: getError({
53
+ regex: regexes,
54
+ minLength,
55
+ maxLength,
56
+ label,
57
+ value: field.value
58
+ }, error), helper, label, labelDescription, minLength, maxLength, name, onBlur: (event) => {
59
+ onBlur?.(event);
60
+ field.onBlur();
61
+ }, onChange: (event) => {
62
+ field.onChange(event);
63
+ onChange?.(event);
64
+ }, onFocus: (event) => {
65
+ onFocus?.(event);
66
+ }, placeholder, readOnly, required, rows, success, tabIndex, tooltip, value: field.value });
95
67
  };
96
68
  export {
97
69
  TextAreaField
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("@emotion/react/jsx-runtime");
4
+ const ui = require("@ultraviolet/ui");
5
+ const reactHookForm = require("react-hook-form");
6
+ const index = require("../../providers/ErrorContext/index.cjs");
7
+ const TextInputField = ({
8
+ autoCapitalize,
9
+ autoComplete,
10
+ autoCorrect,
11
+ autoFocus,
12
+ autoSave,
13
+ className,
14
+ cols,
15
+ disabled,
16
+ fillAvailable,
17
+ generated,
18
+ id,
19
+ label = "",
20
+ multiline,
21
+ name,
22
+ noTopLabel,
23
+ notice,
24
+ onChange,
25
+ onFocus,
26
+ onKeyDown,
27
+ onKeyUp,
28
+ onBlur,
29
+ placeholder,
30
+ random,
31
+ readOnly,
32
+ required,
33
+ resizable,
34
+ rows,
35
+ type,
36
+ unit,
37
+ size,
38
+ rules,
39
+ valid,
40
+ parse,
41
+ format,
42
+ formatOnBlur = false,
43
+ regex: regexes,
44
+ min,
45
+ max,
46
+ minLength,
47
+ maxLength,
48
+ validate,
49
+ defaultValue,
50
+ customError,
51
+ innerRef,
52
+ shouldUnregister = false,
53
+ "data-testid": dataTestId
54
+ }) => {
55
+ const {
56
+ getError
57
+ } = index.useErrors();
58
+ const {
59
+ field,
60
+ fieldState: {
61
+ error
62
+ }
63
+ } = reactHookForm.useController({
64
+ name,
65
+ defaultValue,
66
+ shouldUnregister,
67
+ rules: {
68
+ required,
69
+ validate: {
70
+ ...regexes ? {
71
+ pattern: (value) => regexes.every((regex) => value === void 0 || value === "" || (Array.isArray(regex) ? regex.some((regexOr) => regexOr.test(value)) : regex.test(value)))
72
+ } : {},
73
+ ...validate
74
+ },
75
+ minLength,
76
+ maxLength,
77
+ max,
78
+ min,
79
+ ...rules
80
+ }
81
+ });
82
+ const transformedValue = () => {
83
+ if (format && !formatOnBlur) {
84
+ return format(field.value);
85
+ }
86
+ return field.value;
87
+ };
88
+ return /* @__PURE__ */ jsxRuntime.jsx(ui.TextInput, { name: field.name, autoCapitalize, autoComplete, autoCorrect, autoFocus, autoSave, className, cols, disabled, error: customError ?? getError({
89
+ regex: regexes,
90
+ minLength,
91
+ maxLength,
92
+ label,
93
+ min,
94
+ max,
95
+ value: field.value
96
+ }, error), fillAvailable, generated, id, label, multiline, notice, required, onBlur: (event) => {
97
+ field.onBlur();
98
+ onBlur?.(event);
99
+ if (formatOnBlur && format) {
100
+ field.onChange(format(field.value));
101
+ }
102
+ }, onChange: (event) => {
103
+ if (parse) {
104
+ field.onChange(parse(event));
105
+ onChange?.(parse(event));
106
+ } else {
107
+ field.onChange(event);
108
+ onChange?.(event);
109
+ }
110
+ }, onFocus: (event) => {
111
+ onFocus?.(event);
112
+ }, onKeyUp, onKeyDown, placeholder, random, readOnly, resizable, rows, type, noTopLabel, unit, valid, size, value: transformedValue(), ref: innerRef, "data-testid": dataTestId });
113
+ };
114
+ exports.TextInputField = TextInputField;
@@ -50,10 +50,14 @@ const TextInputField = ({
50
50
  shouldUnregister = false,
51
51
  "data-testid": dataTestId
52
52
  }) => {
53
- const { getError } = useErrors();
53
+ const {
54
+ getError
55
+ } = useErrors();
54
56
  const {
55
57
  field,
56
- fieldState: { error }
58
+ fieldState: {
59
+ error
60
+ }
57
61
  } = useController({
58
62
  name,
59
63
  defaultValue,
@@ -62,9 +66,7 @@ const TextInputField = ({
62
66
  required,
63
67
  validate: {
64
68
  ...regexes ? {
65
- pattern: (value) => regexes.every(
66
- (regex) => value === void 0 || value === "" || (Array.isArray(regex) ? regex.some((regexOr) => regexOr.test(value)) : regex.test(value))
67
- )
69
+ pattern: (value) => regexes.every((regex) => value === void 0 || value === "" || (Array.isArray(regex) ? regex.some((regexOr) => regexOr.test(value)) : regex.test(value)))
68
70
  } : {},
69
71
  ...validate
70
72
  },
@@ -81,73 +83,31 @@ const TextInputField = ({
81
83
  }
82
84
  return field.value;
83
85
  };
84
- return /* @__PURE__ */ jsx(
85
- TextInput,
86
- {
87
- name: field.name,
88
- autoCapitalize,
89
- autoComplete,
90
- autoCorrect,
91
- autoFocus,
92
- autoSave,
93
- className,
94
- cols,
95
- disabled,
96
- error: customError ?? getError(
97
- {
98
- regex: regexes,
99
- minLength,
100
- maxLength,
101
- label,
102
- min,
103
- max,
104
- value: field.value
105
- },
106
- error
107
- ),
108
- fillAvailable,
109
- generated,
110
- id,
111
- label,
112
- multiline,
113
- notice,
114
- required,
115
- onBlur: (event) => {
116
- field.onBlur();
117
- onBlur?.(event);
118
- if (formatOnBlur && format) {
119
- field.onChange(format(field.value));
120
- }
121
- },
122
- onChange: (event) => {
123
- if (parse) {
124
- field.onChange(parse(event));
125
- onChange?.(parse(event));
126
- } else {
127
- field.onChange(event);
128
- onChange?.(event);
129
- }
130
- },
131
- onFocus: (event) => {
132
- onFocus?.(event);
133
- },
134
- onKeyUp,
135
- onKeyDown,
136
- placeholder,
137
- random,
138
- readOnly,
139
- resizable,
140
- rows,
141
- type,
142
- noTopLabel,
143
- unit,
144
- valid,
145
- size,
146
- value: transformedValue(),
147
- ref: innerRef,
148
- "data-testid": dataTestId
86
+ return /* @__PURE__ */ jsx(TextInput, { name: field.name, autoCapitalize, autoComplete, autoCorrect, autoFocus, autoSave, className, cols, disabled, error: customError ?? getError({
87
+ regex: regexes,
88
+ minLength,
89
+ maxLength,
90
+ label,
91
+ min,
92
+ max,
93
+ value: field.value
94
+ }, error), fillAvailable, generated, id, label, multiline, notice, required, onBlur: (event) => {
95
+ field.onBlur();
96
+ onBlur?.(event);
97
+ if (formatOnBlur && format) {
98
+ field.onChange(format(field.value));
99
+ }
100
+ }, onChange: (event) => {
101
+ if (parse) {
102
+ field.onChange(parse(event));
103
+ onChange?.(parse(event));
104
+ } else {
105
+ field.onChange(event);
106
+ onChange?.(event);
149
107
  }
150
- );
108
+ }, onFocus: (event) => {
109
+ onFocus?.(event);
110
+ }, onKeyUp, onKeyDown, placeholder, random, readOnly, resizable, rows, type, noTopLabel, unit, valid, size, value: transformedValue(), ref: innerRef, "data-testid": dataTestId });
151
111
  };
152
112
  export {
153
113
  TextInputField
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("@emotion/react/jsx-runtime");
4
+ const ui = require("@ultraviolet/ui");
5
+ const reactHookForm = require("react-hook-form");
6
+ const index = require("../../providers/ErrorContext/index.cjs");
7
+ const TextInputField = ({
8
+ validate,
9
+ regex: regexes,
10
+ id,
11
+ className,
12
+ tabIndex,
13
+ onChange,
14
+ placeholder,
15
+ disabled = false,
16
+ readOnly = false,
17
+ success,
18
+ helper,
19
+ tooltip,
20
+ label,
21
+ autoFocus,
22
+ required = false,
23
+ "data-testid": dataTestId,
24
+ name,
25
+ onFocus,
26
+ onBlur,
27
+ clearable = false,
28
+ labelDescription,
29
+ type = "text",
30
+ prefix,
31
+ suffix,
32
+ size = "large",
33
+ loading,
34
+ onRandomize,
35
+ minLength,
36
+ maxLength,
37
+ "aria-labelledby": ariaLabelledBy,
38
+ "aria-label": ariaLabel,
39
+ autoComplete
40
+ }) => {
41
+ const {
42
+ getError
43
+ } = index.useErrors();
44
+ const {
45
+ field,
46
+ fieldState: {
47
+ error
48
+ }
49
+ } = reactHookForm.useController({
50
+ name,
51
+ rules: {
52
+ required,
53
+ validate: {
54
+ ...regexes ? {
55
+ pattern: (value) => regexes.every((regex) => value === void 0 || value === "" || (Array.isArray(regex) ? regex.some((regexOr) => regexOr.test(value)) : regex.test(value)))
56
+ } : {},
57
+ ...validate
58
+ },
59
+ minLength,
60
+ maxLength
61
+ }
62
+ });
63
+ return /* @__PURE__ */ jsxRuntime.jsx(ui.TextInputV2, { autoFocus, className, clearable, "data-testid": dataTestId, disabled, error: getError({
64
+ regex: regexes,
65
+ // minLength,
66
+ // maxLength,
67
+ label: label ?? "",
68
+ value: field.value
69
+ }, error), helper, label, loading, labelDescription, minLength, maxLength, name, onBlur: (event) => {
70
+ onBlur?.(event);
71
+ field.onBlur();
72
+ }, onChange: (event) => {
73
+ field.onChange(event);
74
+ onChange?.(event);
75
+ }, onFocus: (event) => {
76
+ onFocus?.(event);
77
+ }, placeholder, readOnly, required, success, tabIndex, tooltip, type, value: field.value, id, prefix, suffix, size, onRandomize, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, autoComplete });
78
+ };
79
+ exports.TextInputField = TextInputField;
@@ -36,19 +36,21 @@ const TextInputField = ({
36
36
  "aria-label": ariaLabel,
37
37
  autoComplete
38
38
  }) => {
39
- const { getError } = useErrors();
39
+ const {
40
+ getError
41
+ } = useErrors();
40
42
  const {
41
43
  field,
42
- fieldState: { error }
44
+ fieldState: {
45
+ error
46
+ }
43
47
  } = useController({
44
48
  name,
45
49
  rules: {
46
50
  required,
47
51
  validate: {
48
52
  ...regexes ? {
49
- pattern: (value) => regexes.every(
50
- (regex) => value === void 0 || value === "" || (Array.isArray(regex) ? regex.some((regexOr) => regexOr.test(value)) : regex.test(value))
51
- )
53
+ pattern: (value) => regexes.every((regex) => value === void 0 || value === "" || (Array.isArray(regex) ? regex.some((regexOr) => regexOr.test(value)) : regex.test(value)))
52
54
  } : {},
53
55
  ...validate
54
56
  },
@@ -56,60 +58,21 @@ const TextInputField = ({
56
58
  maxLength
57
59
  }
58
60
  });
59
- return /* @__PURE__ */ jsx(
60
- TextInputV2,
61
- {
62
- autoFocus,
63
- className,
64
- clearable,
65
- "data-testid": dataTestId,
66
- disabled,
67
- error: getError(
68
- {
69
- regex: regexes,
70
- // minLength,
71
- // maxLength,
72
- label: label ?? "",
73
- value: field.value
74
- },
75
- error
76
- ),
77
- helper,
78
- label,
79
- loading,
80
- labelDescription,
81
- minLength,
82
- maxLength,
83
- name,
84
- onBlur: (event) => {
85
- onBlur?.(event);
86
- field.onBlur();
87
- },
88
- onChange: (event) => {
89
- field.onChange(event);
90
- onChange?.(event);
91
- },
92
- onFocus: (event) => {
93
- onFocus?.(event);
94
- },
95
- placeholder,
96
- readOnly,
97
- required,
98
- success,
99
- tabIndex,
100
- tooltip,
101
- type,
102
- value: field.value,
103
- id,
104
- prefix,
105
- suffix,
106
- size,
107
- onRandomize,
108
- "aria-label": ariaLabel,
109
- "aria-labelledby": ariaLabelledBy,
110
- autoComplete
111
- }
112
- );
61
+ return /* @__PURE__ */ jsx(TextInputV2, { autoFocus, className, clearable, "data-testid": dataTestId, disabled, error: getError({
62
+ regex: regexes,
63
+ // minLength,
64
+ // maxLength,
65
+ label: label ?? "",
66
+ value: field.value
67
+ }, error), helper, label, loading, labelDescription, minLength, maxLength, name, onBlur: (event) => {
68
+ onBlur?.(event);
69
+ field.onBlur();
70
+ }, onChange: (event) => {
71
+ field.onChange(event);
72
+ onChange?.(event);
73
+ }, onFocus: (event) => {
74
+ onFocus?.(event);
75
+ }, placeholder, readOnly, required, success, tabIndex, tooltip, type, value: field.value, id, prefix, suffix, size, onRandomize, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, autoComplete });
113
76
  };
114
77
  export {
115
78
  TextInputField
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("@emotion/react/jsx-runtime");
4
+ const ui = require("@ultraviolet/ui");
5
+ const reactHookForm = require("react-hook-form");
6
+ const parseTime = (date) => {
7
+ const timeStr = date && typeof date !== "string" ? date.toLocaleTimeString().slice(0, -3) : "";
8
+ return {
9
+ label: timeStr,
10
+ value: timeStr
11
+ };
12
+ };
13
+ const TimeField = ({
14
+ required,
15
+ name,
16
+ schedule,
17
+ placeholder,
18
+ disabled,
19
+ readOnly,
20
+ onBlur,
21
+ onFocus,
22
+ onChange,
23
+ isLoading,
24
+ isClearable,
25
+ inputId,
26
+ id,
27
+ animation,
28
+ animationDuration,
29
+ animationOnChange,
30
+ className,
31
+ isSearchable,
32
+ rules,
33
+ options,
34
+ "data-testid": dataTestId,
35
+ shouldUnregister = false,
36
+ noTopLabel
37
+ }) => {
38
+ const {
39
+ field,
40
+ fieldState: {
41
+ error
42
+ }
43
+ } = reactHookForm.useController({
44
+ name,
45
+ shouldUnregister,
46
+ rules: {
47
+ required,
48
+ ...rules
49
+ }
50
+ });
51
+ return /* @__PURE__ */ jsxRuntime.jsx(ui.TimeInput, { name: field.name, placeholder, schedule, required, value: parseTime(field.value), onChange: (val) => {
52
+ if (!val)
53
+ return;
54
+ onChange?.(val);
55
+ const [hours, minutes] = val.value.split(":");
56
+ const date = field.value ? new Date(field.value) : /* @__PURE__ */ new Date();
57
+ date.setHours(Number(hours), Number(minutes), 0);
58
+ field.onChange(date);
59
+ }, onBlur: (event) => {
60
+ field.onBlur();
61
+ onBlur?.(event);
62
+ }, onFocus: (event) => {
63
+ onFocus?.(event);
64
+ }, error: error?.message, disabled, readOnly, animation, animationDuration, animationOnChange, className, isLoading, isClearable, isSearchable, inputId, id, options, "data-testid": dataTestId, noTopLabel });
65
+ };
66
+ exports.TimeField = TimeField;