@ultraviolet/form 6.0.0-beta.9 → 6.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/README.md +5 -6
  2. package/dist/components/CheckboxField/index.d.ts +1 -1
  3. package/dist/components/CheckboxField/index.js +25 -21
  4. package/dist/components/CheckboxGroupField/index.d.ts +4 -4
  5. package/dist/components/CheckboxGroupField/index.js +50 -35
  6. package/dist/components/DateInputField/index.d.ts +1 -1
  7. package/dist/components/DateInputField/index.js +52 -41
  8. package/dist/components/Form/index.d.ts +1 -1
  9. package/dist/components/Form/index.js +15 -11
  10. package/dist/components/KeyValueField/index.d.ts +1 -1
  11. package/dist/components/KeyValueField/index.js +75 -27
  12. package/dist/components/NumberInputField/index.d.ts +1 -1
  13. package/dist/components/NumberInputField/index.js +29 -19
  14. package/dist/components/RadioField/index.d.ts +1 -1
  15. package/dist/components/RadioField/index.js +25 -20
  16. package/dist/components/RadioGroupField/index.d.ts +4 -3
  17. package/dist/components/RadioGroupField/index.js +21 -13
  18. package/dist/components/SelectInputField/index.d.ts +1 -1
  19. package/dist/components/SelectInputField/index.js +28 -17
  20. package/dist/components/SelectableCardField/index.d.ts +1 -1
  21. package/dist/components/SelectableCardField/index.js +40 -29
  22. package/dist/components/SelectableCardGroupField/index.d.ts +1 -1
  23. package/dist/components/SelectableCardGroupField/index.js +34 -21
  24. package/dist/components/SelectableCardOptionGroupField/index.d.ts +2 -2
  25. package/dist/components/SelectableCardOptionGroupField/index.js +26 -22
  26. package/dist/components/SliderField/index.d.ts +1 -1
  27. package/dist/components/SliderField/index.js +38 -24
  28. package/dist/components/Submit/index.d.ts +1 -1
  29. package/dist/components/Submit/index.js +18 -6
  30. package/dist/components/SubmitErrorAlert/index.d.ts +1 -1
  31. package/dist/components/SubmitErrorAlert/index.js +3 -7
  32. package/dist/components/SwitchButtonField/index.d.ts +4 -3
  33. package/dist/components/SwitchButtonField/index.js +24 -11
  34. package/dist/components/TagInputField/index.d.ts +1 -1
  35. package/dist/components/TagInputField/index.js +21 -14
  36. package/dist/components/TextAreaField/index.d.ts +1 -1
  37. package/dist/components/TextAreaField/index.js +35 -27
  38. package/dist/components/TextInputField/index.d.ts +1 -1
  39. package/dist/components/TextInputField/index.js +36 -20
  40. package/dist/components/TimeInputField/index.d.ts +1 -1
  41. package/dist/components/TimeInputField/index.js +27 -17
  42. package/dist/components/ToggleField/index.d.ts +1 -1
  43. package/dist/components/ToggleField/index.js +27 -16
  44. package/dist/components/ToggleGroupField/index.d.ts +4 -4
  45. package/dist/components/ToggleGroupField/index.js +61 -0
  46. package/dist/components/UnitInputField/index.d.ts +1 -1
  47. package/dist/components/UnitInputField/index.js +27 -23
  48. package/dist/components/VerificationCodeField/index.d.ts +1 -1
  49. package/dist/components/VerificationCodeField/index.js +18 -13
  50. package/dist/components/index.d.ts +1 -0
  51. package/dist/hooks/useOnFieldChange.js +4 -5
  52. package/dist/index.js +2 -0
  53. package/dist/providers/ErrorContext/index.d.ts +1 -1
  54. package/dist/providers/ErrorContext/index.js +21 -18
  55. package/dist/utils/validateRegex.js +3 -1
  56. package/package.json +10 -15
  57. package/dist/components/CheckboxField/index.cjs +0 -55
  58. package/dist/components/CheckboxGroupField/index.cjs +0 -80
  59. package/dist/components/DateInputField/index.cjs +0 -85
  60. package/dist/components/Form/defaultErrors.cjs +0 -22
  61. package/dist/components/Form/index.cjs +0 -35
  62. package/dist/components/KeyValueField/index.cjs +0 -60
  63. package/dist/components/NumberInputField/index.cjs +0 -59
  64. package/dist/components/RadioField/index.cjs +0 -64
  65. package/dist/components/RadioGroupField/index.cjs +0 -45
  66. package/dist/components/SelectInputField/index.cjs +0 -50
  67. package/dist/components/SelectableCardField/index.cjs +0 -66
  68. package/dist/components/SelectableCardGroupField/index.cjs +0 -55
  69. package/dist/components/SelectableCardOptionGroupField/index.cjs +0 -59
  70. package/dist/components/SliderField/index.cjs +0 -76
  71. package/dist/components/Submit/index.cjs +0 -25
  72. package/dist/components/SubmitErrorAlert/index.cjs +0 -15
  73. package/dist/components/SwitchButtonField/index.cjs +0 -35
  74. package/dist/components/TagInputField/index.cjs +0 -51
  75. package/dist/components/TextAreaField/index.cjs +0 -84
  76. package/dist/components/TextInputField/index.cjs +0 -62
  77. package/dist/components/TimeInputField/index.cjs +0 -46
  78. package/dist/components/ToggleField/index.cjs +0 -55
  79. package/dist/components/UnitInputField/index.cjs +0 -58
  80. package/dist/components/VerificationCodeField/index.cjs +0 -48
  81. package/dist/hooks/useOnFieldChange.cjs +0 -21
  82. package/dist/index.cjs +0 -78
  83. package/dist/providers/ErrorContext/index.cjs +0 -34
  84. package/dist/utils/validateRegex.cjs +0 -4
  85. package/dist/validators/isInteger.cjs +0 -12
  86. package/dist/validators/maxDate.cjs +0 -4
  87. package/dist/validators/minDate.cjs +0 -4
@@ -1,13 +1,9 @@
1
1
  "use client";
2
- import { jsx } from "@emotion/react/jsx-runtime";
2
+ import { jsx } from "react/jsx-runtime";
3
3
  import { Alert } from "@ultraviolet/ui";
4
4
  import { useFormState } from "react-hook-form";
5
- const SubmitErrorAlert = ({
6
- className
7
- }) => {
8
- const {
9
- errors
10
- } = useFormState();
5
+ const SubmitErrorAlert = ({ className }) => {
6
+ const { errors } = useFormState();
11
7
  return errors?.root?.["submit"]?.message ? /* @__PURE__ */ jsx(Alert, { className, sentiment: "danger", children: errors.root["submit"].message }) : null;
12
8
  };
13
9
  export {
@@ -6,13 +6,14 @@ type SwitchButtonFieldProps<TFieldValues extends FieldValues, TFieldName extends
6
6
  name: FieldPath<TFieldValues>;
7
7
  };
8
8
  declare const SwitchButtonField: {
9
- <TFieldValues extends FieldValues, TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ name, size, control, shouldUnregister, onBlur, onChange, onFocus, tooltip, className, ...props }: SwitchButtonFieldProps<TFieldValues, TFieldName>): import("@emotion/react/jsx-runtime").JSX.Element;
10
- Option: ({ value, children, "data-testid": dataTestId, disabled, tooltip, }: {
9
+ <TFieldValues extends FieldValues, TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ name, size, control, shouldUnregister, onBlur, onChange, onFocus, tooltip, className, ...props }: SwitchButtonFieldProps<TFieldValues, TFieldName>): import("react/jsx-runtime").JSX.Element;
10
+ Option: ({ value, children, "data-testid": dataTestId, disabled, tooltip, style, }: {
11
11
  value: string;
12
12
  children: import("react").ReactNode;
13
13
  "data-testid"?: string;
14
14
  disabled?: boolean;
15
15
  tooltip?: string;
16
- }) => import("@emotion/react/jsx-runtime").JSX.Element;
16
+ style?: import("react").CSSProperties;
17
+ }) => import("react/jsx-runtime").JSX.Element;
17
18
  };
18
19
  export { SwitchButtonField };
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { jsx } from "@emotion/react/jsx-runtime";
2
+ import { jsx } from "react/jsx-runtime";
3
3
  import { SwitchButton } from "@ultraviolet/ui";
4
4
  import { useController } from "react-hook-form";
5
5
  const SwitchButtonField = ({
@@ -14,20 +14,33 @@ const SwitchButtonField = ({
14
14
  className,
15
15
  ...props
16
16
  }) => {
17
- const {
18
- field
19
- } = useController({
17
+ const { field } = useController({
20
18
  control,
21
19
  name,
22
20
  shouldUnregister
23
21
  });
24
- return /* @__PURE__ */ jsx(SwitchButton, { ...props, className, name, onBlur: (event) => {
25
- field.onBlur();
26
- onBlur?.(event);
27
- }, onChange: (event) => {
28
- field.onChange(event);
29
- onChange?.(event.target);
30
- }, onFocus, size, tooltip, value: field.value });
22
+ return /* @__PURE__ */ jsx(
23
+ SwitchButton,
24
+ {
25
+ ...props,
26
+ className,
27
+ name,
28
+ onBlur: (event) => {
29
+ field.onBlur();
30
+ onBlur?.(event);
31
+ },
32
+ onChange: (event) => {
33
+ field.onChange(event);
34
+ onChange?.(
35
+ event.target
36
+ );
37
+ },
38
+ onFocus,
39
+ size,
40
+ tooltip,
41
+ value: field.value
42
+ }
43
+ );
31
44
  };
32
45
  SwitchButtonField.Option = SwitchButton.Option;
33
46
  export {
@@ -5,4 +5,4 @@ import type { BaseFieldProps } from '../../types';
5
5
  export type TagInputFieldProps<TFieldValues extends FieldValues, TFieldName extends FieldPath<TFieldValues>> = BaseFieldProps<TFieldValues, TFieldName> & Omit<ComponentProps<typeof TagInput>, 'name' | 'onChange' | 'value'> & {
6
6
  regex?: (RegExp | RegExp[])[];
7
7
  };
8
- export declare const TagInputField: <TFieldValues extends FieldValues, TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ regex: regexes, control, name, onChange, required, shouldUnregister, label, validate, "aria-label": ariaLabel, ...props }: TagInputFieldProps<TFieldValues, TFieldName>) => import("@emotion/react/jsx-runtime").JSX.Element;
8
+ export declare const TagInputField: <TFieldValues extends FieldValues, TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ regex: regexes, control, name, onChange, required, shouldUnregister, label, validate, "aria-label": ariaLabel, ...props }: TagInputFieldProps<TFieldValues, TFieldName>) => import("react/jsx-runtime").JSX.Element;
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { jsx } from "@emotion/react/jsx-runtime";
2
+ import { jsx } from "react/jsx-runtime";
3
3
  import { TagInput } from "@ultraviolet/ui";
4
4
  import { useController } from "react-hook-form";
5
5
  import { validateRegex } from "../../utils/validateRegex.js";
@@ -16,14 +16,10 @@ const TagInputField = ({
16
16
  "aria-label": ariaLabel,
17
17
  ...props
18
18
  }) => {
19
- const {
20
- getError
21
- } = useErrors();
19
+ const { getError } = useErrors();
22
20
  const {
23
21
  field,
24
- fieldState: {
25
- error
26
- }
22
+ fieldState: { error }
27
23
  } = useController({
28
24
  control,
29
25
  name,
@@ -38,13 +34,24 @@ const TagInputField = ({
38
34
  }
39
35
  }
40
36
  });
41
- return /* @__PURE__ */ jsx(TagInput, { ...props, "aria-label": ariaLabel, error: getError({
42
- label: label ?? ariaLabel ?? name,
43
- regex: regexes
44
- }, error), label, name: field.name, onChange: (newTags) => {
45
- field.onChange(newTags);
46
- onChange?.(newTags);
47
- }, value: field.value });
37
+ return /* @__PURE__ */ jsx(
38
+ TagInput,
39
+ {
40
+ ...props,
41
+ "aria-label": ariaLabel,
42
+ error: getError(
43
+ { label: label ?? ariaLabel ?? name, regex: regexes },
44
+ error
45
+ ),
46
+ label,
47
+ name: field.name,
48
+ onChange: (newTags) => {
49
+ field.onChange(newTags);
50
+ onChange?.(newTags);
51
+ },
52
+ value: field.value
53
+ }
54
+ );
48
55
  };
49
56
  export {
50
57
  TagInputField
@@ -9,4 +9,4 @@ export type TextAreaFieldProps<TFieldValues extends FieldValues, TFieldName exte
9
9
  /**
10
10
  * This component offers a form field based on Ultraviolet UI TextArea component
11
11
  */
12
- export declare const TextAreaField: <TFieldValues extends FieldValues, TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ control, label, onChange, minLength, maxLength, name, onBlur, onKeyDown, required, regex: regexes, submitOnEnter, validate, "aria-label": ariaLabel, ...props }: TextAreaFieldProps<TFieldValues, TFieldName>) => import("@emotion/react/jsx-runtime").JSX.Element;
12
+ export declare const TextAreaField: <TFieldValues extends FieldValues, TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ control, label, onChange, minLength, maxLength, name, onBlur, onKeyDown, required, regex: regexes, submitOnEnter, validate, "aria-label": ariaLabel, ...props }: TextAreaFieldProps<TFieldValues, TFieldName>) => import("react/jsx-runtime").JSX.Element;
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { jsx } from "@emotion/react/jsx-runtime";
2
+ import { jsx } from "react/jsx-runtime";
3
3
  import { TextArea } from "@ultraviolet/ui";
4
4
  import { useController } from "react-hook-form";
5
5
  import { validateRegex } from "../../utils/validateRegex.js";
@@ -20,14 +20,10 @@ const TextAreaField = ({
20
20
  "aria-label": ariaLabel,
21
21
  ...props
22
22
  }) => {
23
- const {
24
- getError
25
- } = useErrors();
23
+ const { getError } = useErrors();
26
24
  const {
27
25
  field,
28
- fieldState: {
29
- error
30
- }
26
+ fieldState: { error }
31
27
  } = useController({
32
28
  control,
33
29
  name,
@@ -47,9 +43,7 @@ const TextAreaField = ({
47
43
  if (submitOnEnter && event.key === "Enter" && !event.shiftKey) {
48
44
  event.preventDefault();
49
45
  event.stopPropagation();
50
- const {
51
- form
52
- } = event.currentTarget;
46
+ const { form } = event.currentTarget;
53
47
  if (form) {
54
48
  const submitEvent = new Event("submit", {
55
49
  bubbles: true,
@@ -61,23 +55,37 @@ const TextAreaField = ({
61
55
  onKeyDown?.(event);
62
56
  }
63
57
  };
64
- return /* @__PURE__ */ jsx(TextArea, { ...props, error: getError({
65
- label: label ?? ariaLabel ?? name,
66
- maxLength,
67
- minLength,
68
- regex: regexes,
69
- value: field.value
70
- }, error), maxLength, minLength, name, onBlur: (event) => {
71
- onBlur?.(event);
72
- field.onBlur();
73
- }, onChange: (event) => {
74
- field.onChange(event);
75
- onChange?.(event);
76
- }, onKeyDown: onKeyDownHandler, required, value: field.value, ...label ? {
77
- label
78
- } : {
79
- "aria-label": ariaLabel
80
- } });
58
+ return /* @__PURE__ */ jsx(
59
+ TextArea,
60
+ {
61
+ ...props,
62
+ error: getError(
63
+ {
64
+ label: label ?? ariaLabel ?? name,
65
+ maxLength,
66
+ minLength,
67
+ regex: regexes,
68
+ value: field.value
69
+ },
70
+ error
71
+ ),
72
+ maxLength,
73
+ minLength,
74
+ name,
75
+ onBlur: (event) => {
76
+ onBlur?.(event);
77
+ field.onBlur();
78
+ },
79
+ onChange: (event) => {
80
+ field.onChange(event);
81
+ onChange?.(event);
82
+ },
83
+ onKeyDown: onKeyDownHandler,
84
+ required,
85
+ value: field.value,
86
+ ...label ? { label } : { "aria-label": ariaLabel }
87
+ }
88
+ );
81
89
  };
82
90
  export {
83
91
  TextAreaField
@@ -8,5 +8,5 @@ type TextInputFieldProps<TFieldValues extends FieldValues, TFieldName extends Fi
8
8
  /**
9
9
  * This component offers a form field based on Ultraviolet UI TextInput component
10
10
  */
11
- export declare const TextInputField: <TFieldValues extends FieldValues, TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ regex: regexes, onChange, label, required, name, onBlur, minLength, maxLength, "aria-label": ariaLabel, shouldUnregister, validate, control, ...props }: TextInputFieldProps<TFieldValues, TFieldName>) => import("@emotion/react/jsx-runtime").JSX.Element;
11
+ export declare const TextInputField: <TFieldValues extends FieldValues, TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ regex: regexes, onChange, label, required, name, onBlur, minLength, maxLength, "aria-label": ariaLabel, shouldUnregister, validate, control, ...props }: TextInputFieldProps<TFieldValues, TFieldName>) => import("react/jsx-runtime").JSX.Element;
12
12
  export {};
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { jsx } from "@emotion/react/jsx-runtime";
2
+ import { jsx } from "react/jsx-runtime";
3
3
  import { TextInput } from "@ultraviolet/ui";
4
4
  import { useController } from "react-hook-form";
5
5
  import { validateRegex } from "../../utils/validateRegex.js";
@@ -19,14 +19,10 @@ const TextInputField = ({
19
19
  control,
20
20
  ...props
21
21
  }) => {
22
- const {
23
- getError
24
- } = useErrors();
22
+ const { getError } = useErrors();
25
23
  const {
26
24
  field,
27
- fieldState: {
28
- error
29
- }
25
+ fieldState: { error }
30
26
  } = useController({
31
27
  control,
32
28
  name,
@@ -43,19 +39,39 @@ const TextInputField = ({
43
39
  },
44
40
  shouldUnregister
45
41
  });
46
- return /* @__PURE__ */ jsx(TextInput, { ...props, "aria-label": ariaLabel, error: getError({
47
- label: label ?? ariaLabel ?? name,
48
- maxLength,
49
- minLength,
50
- regex: regexes,
51
- value: field.value
52
- }, error), label, maxLength, minLength, name, onBlur: (event) => {
53
- onBlur?.(event);
54
- field.onBlur();
55
- }, onChange: (event) => {
56
- field.onChange(event);
57
- onChange?.(event.target.value);
58
- }, required, value: field.value === void 0 ? "" : field.value });
42
+ return /* @__PURE__ */ jsx(
43
+ TextInput,
44
+ {
45
+ ...props,
46
+ "aria-label": ariaLabel,
47
+ error: getError(
48
+ {
49
+ label: label ?? ariaLabel ?? name,
50
+ maxLength,
51
+ minLength,
52
+ regex: regexes,
53
+ value: field.value
54
+ },
55
+ error
56
+ ),
57
+ label,
58
+ maxLength,
59
+ minLength,
60
+ name,
61
+ onBlur: (event) => {
62
+ onBlur?.(event);
63
+ field.onBlur();
64
+ },
65
+ onChange: (event) => {
66
+ field.onChange(event);
67
+ onChange?.(
68
+ event.target.value
69
+ );
70
+ },
71
+ required,
72
+ value: field.value === void 0 ? "" : field.value
73
+ }
74
+ );
59
75
  };
60
76
  export {
61
77
  TextInputField
@@ -7,5 +7,5 @@ type TimeInputFieldProps<TFieldValues extends FieldValues, TFieldName extends Fi
7
7
  * This component offers a form field based on Ultraviolet UI TimeInput component
8
8
  * @experimental This component is experimental and may be subject to breaking changes in the future.
9
9
  */
10
- export declare const TimeInputField: <TFieldValues extends FieldValues, TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ onChange, label, required, name, onBlur, "aria-label": ariaLabel, shouldUnregister, control, ...props }: TimeInputFieldProps<TFieldValues, TFieldName>) => import("@emotion/react/jsx-runtime").JSX.Element;
10
+ export declare const TimeInputField: <TFieldValues extends FieldValues, TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ onChange, label, required, name, onBlur, "aria-label": ariaLabel, shouldUnregister, control, ...props }: TimeInputFieldProps<TFieldValues, TFieldName>) => import("react/jsx-runtime").JSX.Element;
11
11
  export {};
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { jsx } from "@emotion/react/jsx-runtime";
2
+ import { jsx } from "react/jsx-runtime";
3
3
  import { TimeInput } from "@ultraviolet/ui";
4
4
  import { useController } from "react-hook-form";
5
5
  import { useErrors } from "../../providers/ErrorContext/index.js";
@@ -14,14 +14,10 @@ const TimeInputField = ({
14
14
  control,
15
15
  ...props
16
16
  }) => {
17
- const {
18
- getError
19
- } = useErrors();
17
+ const { getError } = useErrors();
20
18
  const {
21
19
  field,
22
- fieldState: {
23
- error
24
- }
20
+ fieldState: { error }
25
21
  } = useController({
26
22
  control,
27
23
  name,
@@ -30,16 +26,30 @@ const TimeInputField = ({
30
26
  },
31
27
  shouldUnregister
32
28
  });
33
- return /* @__PURE__ */ jsx(TimeInput, { ...props, error: getError({
34
- label: label ?? ariaLabel ?? name,
35
- value: field.value
36
- }, error), label, onBlur: (event) => {
37
- onBlur?.(event);
38
- field.onBlur();
39
- }, onChange: (value) => {
40
- field.onChange(value);
41
- onChange?.(value);
42
- }, required, value: field.value });
29
+ return /* @__PURE__ */ jsx(
30
+ TimeInput,
31
+ {
32
+ ...props,
33
+ error: getError(
34
+ {
35
+ label: label ?? ariaLabel ?? name,
36
+ value: field.value
37
+ },
38
+ error
39
+ ),
40
+ label,
41
+ onBlur: (event) => {
42
+ onBlur?.(event);
43
+ field.onBlur();
44
+ },
45
+ onChange: (value) => {
46
+ field.onChange(value);
47
+ onChange?.(value);
48
+ },
49
+ required,
50
+ value: field.value
51
+ }
52
+ );
43
53
  };
44
54
  export {
45
55
  TimeInputField
@@ -6,5 +6,5 @@ type ToggleFieldProps<TFieldValues extends FieldValues, TFieldName extends Field
6
6
  parse?: (value: boolean) => PathValue<TFieldValues, TFieldName>;
7
7
  format?: (value: PathValue<TFieldValues, TFieldName>) => boolean;
8
8
  };
9
- export declare const ToggleField: <TFieldValues extends FieldValues, TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ label, name, control, onChange, required, parse, format, shouldUnregister, validate, "aria-label": ariaLabel, ...props }: ToggleFieldProps<TFieldValues, TFieldName>) => import("@emotion/react/jsx-runtime").JSX.Element;
9
+ export declare const ToggleField: <TFieldValues extends FieldValues, TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ label, name, control, onChange, required, parse, format, shouldUnregister, validate, "aria-label": ariaLabel, ...props }: ToggleFieldProps<TFieldValues, TFieldName>) => import("react/jsx-runtime").JSX.Element;
10
10
  export {};
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { jsx } from "@emotion/react/jsx-runtime";
2
+ import { jsx } from "react/jsx-runtime";
3
3
  import { Toggle } from "@ultraviolet/ui";
4
4
  import { useController } from "react-hook-form";
5
5
  import { useErrors } from "../../providers/ErrorContext/index.js";
@@ -18,9 +18,7 @@ const ToggleField = ({
18
18
  }) => {
19
19
  const {
20
20
  field,
21
- fieldState: {
22
- error
23
- }
21
+ fieldState: { error }
24
22
  } = useController({
25
23
  control,
26
24
  name,
@@ -30,25 +28,38 @@ const ToggleField = ({
30
28
  },
31
29
  shouldUnregister
32
30
  });
33
- const {
34
- getError
35
- } = useErrors();
31
+ const { getError } = useErrors();
36
32
  const transformedValue = () => {
37
33
  if (format) {
38
34
  return format(field.value);
39
35
  }
40
36
  return field.value;
41
37
  };
42
- return /* @__PURE__ */ jsx(Toggle, { ...props, checked: transformedValue(), error: getError({
43
- label: typeof label === "string" ? label : ariaLabel ?? name
44
- }, error), label, name: field.name, onChange: (event) => {
45
- if (parse) {
46
- field.onChange(parse(event.target.checked));
47
- } else {
48
- field.onChange(event);
38
+ return /* @__PURE__ */ jsx(
39
+ Toggle,
40
+ {
41
+ ...props,
42
+ checked: transformedValue(),
43
+ error: getError(
44
+ { label: typeof label === "string" ? label : ariaLabel ?? name },
45
+ error
46
+ ),
47
+ label,
48
+ name: field.name,
49
+ onChange: (event) => {
50
+ if (parse) {
51
+ field.onChange(parse(event.target.checked));
52
+ } else {
53
+ field.onChange(event);
54
+ }
55
+ onChange?.(
56
+ event.target.checked
57
+ );
58
+ },
59
+ ref: field.ref,
60
+ required
49
61
  }
50
- onChange?.(event.target.checked);
51
- }, ref: field.ref, required });
62
+ );
52
63
  };
53
64
  export {
54
65
  ToggleField
@@ -4,8 +4,8 @@ import type { FieldPath, FieldValues } from 'react-hook-form';
4
4
  import type { BaseFieldProps } from '../../types';
5
5
  type ToggleGroupFieldProps<TFieldValues extends FieldValues, TFieldName extends FieldPath<TFieldValues>> = BaseFieldProps<TFieldValues, TFieldName> & Omit<ComponentProps<typeof ToggleGroup>, 'value' | 'onChange'>;
6
6
  export declare const ToggleGroupField: {
7
- <TFieldValues extends FieldValues, TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ legend, control, onChange, error: customError, name, required, shouldUnregister, validate, ...props }: ToggleGroupFieldProps<TFieldValues, TFieldName>): import("@emotion/react/jsx-runtime").JSX.Element;
8
- Toggle: ({ disabled, name, value, label, helper, error, className, "data-testid": dataTestId, }: Omit<{
7
+ <TFieldValues extends FieldValues, TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ legend, control, onChange, error: customError, name, required, shouldUnregister, validate, ...props }: ToggleGroupFieldProps<TFieldValues, TFieldName>): import("react/jsx-runtime").JSX.Element;
8
+ Toggle: ({ disabled, name, value, label, helper, error, className, "data-testid": dataTestId, style, }: Omit<{
9
9
  id?: string;
10
10
  checked?: boolean;
11
11
  name?: string;
@@ -21,8 +21,8 @@ export declare const ToggleGroupField: {
21
21
  required?: boolean;
22
22
  error?: boolean | string;
23
23
  'data-testid'?: string;
24
- } & Pick<import("react").InputHTMLAttributes<HTMLInputElement>, "value"> & import("react").RefAttributes<HTMLInputElement>, "required" | "onChange" | "checked"> & {
24
+ } & Pick<import("react").InputHTMLAttributes<HTMLInputElement>, "value" | "style"> & import("react").RefAttributes<HTMLInputElement>, "required" | "onChange" | "checked"> & {
25
25
  value: string;
26
- }) => import("@emotion/react/jsx-runtime").JSX.Element;
26
+ }) => import("react/jsx-runtime").JSX.Element;
27
27
  };
28
28
  export {};
@@ -0,0 +1,61 @@
1
+ "use client";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import { ToggleGroup } from "@ultraviolet/ui";
4
+ import { useController } from "react-hook-form";
5
+ import { useErrors } from "../../providers/ErrorContext/index.js";
6
+ const ToggleGroupField = ({
7
+ legend = "",
8
+ control,
9
+ onChange,
10
+ error: customError,
11
+ name,
12
+ required = false,
13
+ shouldUnregister = false,
14
+ validate,
15
+ ...props
16
+ }) => {
17
+ const { getError } = useErrors();
18
+ const {
19
+ field,
20
+ fieldState: { error }
21
+ } = useController({
22
+ control,
23
+ name,
24
+ rules: {
25
+ validate: {
26
+ ...required ? { required: (value2) => value2.length > 0 } : void 0,
27
+ ...validate
28
+ }
29
+ },
30
+ shouldUnregister
31
+ });
32
+ const value = field.value;
33
+ return /* @__PURE__ */ jsx(
34
+ ToggleGroup,
35
+ {
36
+ ...props,
37
+ error: customError ?? getError({ label: legend }, error),
38
+ legend,
39
+ name: field.name,
40
+ onChange: (event) => {
41
+ if (value.includes(event.currentTarget.value)) {
42
+ const newValue = value.filter(
43
+ (currentValue) => currentValue !== event.currentTarget.value
44
+ );
45
+ field.onChange(newValue);
46
+ onChange?.(newValue);
47
+ } else {
48
+ const newValue = [...value, event.currentTarget.value];
49
+ field.onChange(newValue);
50
+ onChange?.(newValue);
51
+ }
52
+ },
53
+ required,
54
+ value
55
+ }
56
+ );
57
+ };
58
+ ToggleGroupField.Toggle = ToggleGroup.Toggle;
59
+ export {
60
+ ToggleGroupField
61
+ };
@@ -5,5 +5,5 @@ import type { BaseFieldProps } from '../../types';
5
5
  type UnitInputFieldProps<TFieldValues extends FieldValues, TFieldName extends FieldPath<TFieldValues>> = BaseFieldProps<TFieldValues, TFieldName> & Omit<ComponentProps<typeof UnitInput>, 'value' | 'onChange' | 'label'> & {
6
6
  optionName?: string;
7
7
  };
8
- export declare const UnitInputField: <TFieldValues extends FieldValues, TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ name, max, min, onChange, onChangeUnitValue, label, required, shouldUnregister, validate, control, optionName, ...props }: UnitInputFieldProps<TFieldValues, TFieldName>) => import("@emotion/react/jsx-runtime").JSX.Element;
8
+ export declare const UnitInputField: <TFieldValues extends FieldValues, TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ name, max, min, onChange, onChangeUnitValue, label, required, shouldUnregister, validate, control, optionName, ...props }: UnitInputFieldProps<TFieldValues, TFieldName>) => import("react/jsx-runtime").JSX.Element;
9
9
  export {};
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { jsx } from "@emotion/react/jsx-runtime";
2
+ import { jsx } from "react/jsx-runtime";
3
3
  import { UnitInput } from "@ultraviolet/ui";
4
4
  import { useController } from "react-hook-form";
5
5
  import { useErrors } from "../../providers/ErrorContext/index.js";
@@ -17,22 +17,13 @@ const UnitInputField = ({
17
17
  optionName,
18
18
  ...props
19
19
  }) => {
20
- const {
21
- getError
22
- } = useErrors();
23
- const {
24
- field: unitField
25
- } = useController({
20
+ const { getError } = useErrors();
21
+ const { field: unitField } = useController({
26
22
  name: optionName ?? `${name}-unit`,
27
- rules: {
28
- required
29
- },
23
+ rules: { required },
30
24
  shouldUnregister
31
25
  });
32
- const {
33
- field: valueField,
34
- fieldState: valueFieldState
35
- } = useController({
26
+ const { field: valueField, fieldState: valueFieldState } = useController({
36
27
  control,
37
28
  name,
38
29
  rules: {
@@ -43,15 +34,28 @@ const UnitInputField = ({
43
34
  },
44
35
  shouldUnregister
45
36
  });
46
- return /* @__PURE__ */ jsx(UnitInput, { ...props, error: getError({
47
- label
48
- }, valueFieldState.error), label, max, min, name, onChange: (event) => {
49
- valueField.onChange(event);
50
- onChange?.(event);
51
- }, onChangeUnitValue: (event) => {
52
- unitField.onChange(event);
53
- onChangeUnitValue?.(event);
54
- }, required, unitValue: unitField.value, value: valueField.value });
37
+ return /* @__PURE__ */ jsx(
38
+ UnitInput,
39
+ {
40
+ ...props,
41
+ error: getError({ label }, valueFieldState.error),
42
+ label,
43
+ max,
44
+ min,
45
+ name,
46
+ onChange: (event) => {
47
+ valueField.onChange(event);
48
+ onChange?.(event);
49
+ },
50
+ onChangeUnitValue: (event) => {
51
+ unitField.onChange(event);
52
+ onChangeUnitValue?.(event);
53
+ },
54
+ required,
55
+ unitValue: unitField.value,
56
+ value: valueField.value
57
+ }
58
+ );
55
59
  };
56
60
  export {
57
61
  UnitInputField
@@ -3,5 +3,5 @@ import type { ComponentProps } from 'react';
3
3
  import type { FieldPath, FieldValues } from 'react-hook-form';
4
4
  import type { BaseFieldProps } from '../../types';
5
5
  type VerificationCodeFieldProps<TFieldValues extends FieldValues, TFieldName extends FieldPath<TFieldValues>> = BaseFieldProps<TFieldValues, TFieldName> & Omit<ComponentProps<typeof VerificationCode>, 'value'>;
6
- export declare const VerificationCodeField: <TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ fields, inputId, label, name, onChange, required, validate, ...props }: VerificationCodeFieldProps<TFieldValues, TName>) => import("@emotion/react/jsx-runtime").JSX.Element;
6
+ export declare const VerificationCodeField: <TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ fields, inputId, label, name, onChange, required, validate, ...props }: VerificationCodeFieldProps<TFieldValues, TName>) => import("react/jsx-runtime").JSX.Element;
7
7
  export {};