@ultraviolet/form 2.14.6 → 3.0.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 (86) hide show
  1. package/dist/components/CheckboxField/index.cjs +5 -3
  2. package/dist/components/CheckboxField/index.d.ts +2 -2
  3. package/dist/components/CheckboxField/index.js +5 -3
  4. package/dist/components/CheckboxGroupField/index.cjs +12 -8
  5. package/dist/components/CheckboxGroupField/index.d.ts +2 -2
  6. package/dist/components/CheckboxGroupField/index.js +8 -4
  7. package/dist/components/DateField/index.cjs +7 -6
  8. package/dist/components/DateField/index.d.ts +2 -2
  9. package/dist/components/DateField/index.js +7 -6
  10. package/dist/components/Form/index.cjs +7 -47
  11. package/dist/components/Form/index.d.ts +8 -64
  12. package/dist/components/Form/index.js +9 -47
  13. package/dist/components/NumberInputField/index.cjs +5 -3
  14. package/dist/components/NumberInputField/index.d.ts +2 -2
  15. package/dist/components/NumberInputField/index.js +5 -3
  16. package/dist/components/NumberInputFieldV2/index.cjs +5 -3
  17. package/dist/components/NumberInputFieldV2/index.d.ts +2 -4
  18. package/dist/components/NumberInputFieldV2/index.js +5 -3
  19. package/dist/components/RadioField/index.cjs +5 -3
  20. package/dist/components/RadioField/index.d.ts +2 -2
  21. package/dist/components/RadioField/index.js +5 -3
  22. package/dist/components/RadioGroupField/index.cjs +5 -3
  23. package/dist/components/RadioGroupField/index.d.ts +2 -2
  24. package/dist/components/RadioGroupField/index.js +5 -3
  25. package/dist/components/SelectInputField/index.cjs +7 -7
  26. package/dist/components/SelectInputField/index.d.ts +2 -2
  27. package/dist/components/SelectInputField/index.js +3 -3
  28. package/dist/components/SelectInputFieldV2/index.cjs +7 -5
  29. package/dist/components/SelectInputFieldV2/index.d.ts +2 -2
  30. package/dist/components/SelectInputFieldV2/index.js +5 -3
  31. package/dist/components/SelectableCardField/index.cjs +4 -2
  32. package/dist/components/SelectableCardField/index.d.ts +2 -2
  33. package/dist/components/SelectableCardField/index.js +4 -2
  34. package/dist/components/SelectableCardGroupField/index.cjs +5 -3
  35. package/dist/components/SelectableCardGroupField/index.d.ts +2 -2
  36. package/dist/components/SelectableCardGroupField/index.js +5 -3
  37. package/dist/components/TagInputField/index.cjs +5 -3
  38. package/dist/components/TagInputField/index.d.ts +2 -2
  39. package/dist/components/TagInputField/index.js +5 -3
  40. package/dist/components/TextAreaField/index.cjs +6 -3
  41. package/dist/components/TextAreaField/index.d.ts +2 -2
  42. package/dist/components/TextAreaField/index.js +6 -3
  43. package/dist/components/TextInputField/index.cjs +15 -14
  44. package/dist/components/TextInputField/index.d.ts +2 -2
  45. package/dist/components/TextInputField/index.js +15 -14
  46. package/dist/components/TextInputFieldV2/index.cjs +6 -3
  47. package/dist/components/TextInputFieldV2/index.d.ts +2 -2
  48. package/dist/components/TextInputFieldV2/index.js +6 -3
  49. package/dist/components/TimeField/index.cjs +5 -3
  50. package/dist/components/TimeField/index.d.ts +2 -4
  51. package/dist/components/TimeField/index.js +5 -3
  52. package/dist/components/ToggleField/index.cjs +5 -3
  53. package/dist/components/ToggleField/index.d.ts +2 -2
  54. package/dist/components/ToggleField/index.js +5 -3
  55. package/dist/components/ToggleGroupField/index.d.ts +2 -2
  56. package/dist/components/UnitInputField/index.cjs +4 -4
  57. package/dist/components/UnitInputField/index.d.ts +2 -2
  58. package/dist/components/UnitInputField/index.js +4 -4
  59. package/dist/components/index.d.ts +0 -1
  60. package/dist/hooks/index.d.ts +0 -4
  61. package/dist/hooks/useOnFieldChange.cjs +3 -3
  62. package/dist/hooks/useOnFieldChange.d.ts +3 -0
  63. package/dist/index.cjs +8 -18
  64. package/dist/index.d.ts +3 -3
  65. package/dist/index.js +1 -11
  66. package/dist/providers/ErrorContext/index.cjs +5 -5
  67. package/dist/types.d.ts +7 -10
  68. package/dist/utils/validateRegex.cjs +4 -0
  69. package/dist/utils/validateRegex.d.ts +2 -0
  70. package/dist/utils/validateRegex.js +4 -0
  71. package/package.json +3 -3
  72. package/dist/constants.cjs +0 -4
  73. package/dist/constants.d.ts +0 -1
  74. package/dist/constants.js +0 -4
  75. package/dist/hooks/useField.cjs +0 -30
  76. package/dist/hooks/useField.d.ts +0 -34
  77. package/dist/hooks/useField.js +0 -30
  78. package/dist/hooks/useFieldArray.cjs +0 -32
  79. package/dist/hooks/useFieldArray.d.ts +0 -21
  80. package/dist/hooks/useFieldArray.js +0 -32
  81. package/dist/hooks/useForm.cjs +0 -24
  82. package/dist/hooks/useForm.d.ts +0 -22
  83. package/dist/hooks/useForm.js +0 -24
  84. package/dist/hooks/useFormState.cjs +0 -22
  85. package/dist/hooks/useFormState.d.ts +0 -39
  86. package/dist/hooks/useFormState.js +0 -22
@@ -3,12 +3,14 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const jsxRuntime = require("@emotion/react/jsx-runtime");
4
4
  const ui = require("@ultraviolet/ui");
5
5
  const reactHookForm = require("react-hook-form");
6
+ const validateRegex = require("../../utils/validateRegex.cjs");
6
7
  const index = require("../../providers/ErrorContext/index.cjs");
7
8
  const TextAreaField = ({
8
9
  autoFocus,
9
10
  clearable,
10
11
  className,
11
12
  tabIndex,
13
+ control,
12
14
  "data-testid": dataTestId,
13
15
  disabled,
14
16
  helper,
@@ -26,8 +28,8 @@ const TextAreaField = ({
26
28
  rows,
27
29
  success,
28
30
  tooltip,
29
- validate,
30
- regex: regexes
31
+ regex: regexes,
32
+ validate
31
33
  }) => {
32
34
  const {
33
35
  getError
@@ -39,11 +41,12 @@ const TextAreaField = ({
39
41
  }
40
42
  } = reactHookForm.useController({
41
43
  name,
44
+ control,
42
45
  rules: {
43
46
  required,
44
47
  validate: {
45
48
  ...regexes ? {
46
- pattern: (value) => regexes.every((regex) => value === void 0 || value === "" || (Array.isArray(regex) ? regex.some((regexOr) => regexOr.test(value)) : regex.test(value)))
49
+ pattern: (value) => validateRegex.validateRegex(value, regexes)
47
50
  } : {},
48
51
  ...validate
49
52
  },
@@ -2,10 +2,10 @@ import { TextArea } from '@ultraviolet/ui';
2
2
  import type { ComponentProps } from 'react';
3
3
  import type { FieldPath, FieldValues } from 'react-hook-form';
4
4
  import type { BaseFieldProps } from '../../types';
5
- export type TextAreaFieldProps<TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues>> = BaseFieldProps<TFieldValues, TName> & Omit<ComponentProps<typeof TextArea>, 'value' | 'error' | 'name' | 'onChange'> & {
5
+ export type TextAreaFieldProps<TFieldValues extends FieldValues, TFieldName extends FieldPath<TFieldValues>> = BaseFieldProps<TFieldValues, TFieldName> & Omit<ComponentProps<typeof TextArea>, 'value' | 'error' | 'name' | 'onChange'> & {
6
6
  regex?: (RegExp | RegExp[])[];
7
7
  };
8
8
  /**
9
9
  * This component offers a form field based on Ultraviolet UI TextArea component
10
10
  */
11
- export declare const TextAreaField: <TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ autoFocus, clearable, className, tabIndex, "data-testid": dataTestId, disabled, helper, label, labelDescription, onChange, minLength, maxLength, name, onFocus, onBlur, placeholder, readOnly, required, rows, success, tooltip, validate, regex: regexes, }: TextAreaFieldProps<TFieldValues, TName>) => import("@emotion/react/jsx-runtime").JSX.Element;
11
+ export declare const TextAreaField: <TFieldValues extends FieldValues, TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ autoFocus, clearable, className, tabIndex, control, "data-testid": dataTestId, disabled, helper, label, labelDescription, onChange, minLength, maxLength, name, onFocus, onBlur, placeholder, readOnly, required, rows, success, tooltip, regex: regexes, validate, }: TextAreaFieldProps<TFieldValues, TFieldName>) => import("@emotion/react/jsx-runtime").JSX.Element;
@@ -1,12 +1,14 @@
1
1
  import { jsx } from "@emotion/react/jsx-runtime";
2
2
  import { TextArea } from "@ultraviolet/ui";
3
3
  import { useController } from "react-hook-form";
4
+ import { validateRegex } from "../../utils/validateRegex.js";
4
5
  import { useErrors } from "../../providers/ErrorContext/index.js";
5
6
  const TextAreaField = ({
6
7
  autoFocus,
7
8
  clearable,
8
9
  className,
9
10
  tabIndex,
11
+ control,
10
12
  "data-testid": dataTestId,
11
13
  disabled,
12
14
  helper,
@@ -24,8 +26,8 @@ const TextAreaField = ({
24
26
  rows,
25
27
  success,
26
28
  tooltip,
27
- validate,
28
- regex: regexes
29
+ regex: regexes,
30
+ validate
29
31
  }) => {
30
32
  const {
31
33
  getError
@@ -37,11 +39,12 @@ const TextAreaField = ({
37
39
  }
38
40
  } = useController({
39
41
  name,
42
+ control,
40
43
  rules: {
41
44
  required,
42
45
  validate: {
43
46
  ...regexes ? {
44
- pattern: (value) => regexes.every((regex) => value === void 0 || value === "" || (Array.isArray(regex) ? regex.some((regexOr) => regexOr.test(value)) : regex.test(value)))
47
+ pattern: (value) => validateRegex(value, regexes)
45
48
  } : {},
46
49
  ...validate
47
50
  },
@@ -3,6 +3,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const jsxRuntime = require("@emotion/react/jsx-runtime");
4
4
  const ui = require("@ultraviolet/ui");
5
5
  const reactHookForm = require("react-hook-form");
6
+ const validateRegex = require("../../utils/validateRegex.cjs");
6
7
  const index = require("../../providers/ErrorContext/index.cjs");
7
8
  const TextInputField = ({
8
9
  autoCapitalize,
@@ -35,22 +36,22 @@ const TextInputField = ({
35
36
  type,
36
37
  unit,
37
38
  size,
38
- rules,
39
39
  valid,
40
40
  parse,
41
41
  format,
42
42
  formatOnBlur = false,
43
43
  regex: regexes,
44
- min,
45
- max,
46
- minLength,
47
- maxLength,
48
- validate,
49
44
  defaultValue,
50
45
  customError,
51
46
  innerRef,
52
47
  shouldUnregister = false,
53
- "data-testid": dataTestId
48
+ "data-testid": dataTestId,
49
+ validate,
50
+ min,
51
+ max,
52
+ minLength,
53
+ maxLength,
54
+ control
54
55
  }) => {
55
56
  const {
56
57
  getError
@@ -64,19 +65,19 @@ const TextInputField = ({
64
65
  name,
65
66
  defaultValue,
66
67
  shouldUnregister,
68
+ control,
67
69
  rules: {
68
70
  required,
71
+ minLength,
72
+ maxLength,
73
+ min,
74
+ max,
69
75
  validate: {
70
76
  ...regexes ? {
71
- pattern: (value) => regexes.every((regex) => value === void 0 || value === "" || (Array.isArray(regex) ? regex.some((regexOr) => regexOr.test(value)) : regex.test(value)))
77
+ pattern: (value) => validateRegex.validateRegex(value, regexes)
72
78
  } : {},
73
79
  ...validate
74
- },
75
- minLength,
76
- maxLength,
77
- max,
78
- min,
79
- ...rules
80
+ }
80
81
  }
81
82
  });
82
83
  const transformedValue = () => {
@@ -2,7 +2,7 @@ import { TextInput } from '@ultraviolet/ui';
2
2
  import type { ComponentProps, Ref } from 'react';
3
3
  import type { FieldPath, FieldValues, Path, PathValue } from 'react-hook-form';
4
4
  import type { BaseFieldProps } from '../../types';
5
- type TextInputFieldProps<TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues>> = BaseFieldProps<TFieldValues, TName> & Partial<Pick<ComponentProps<typeof TextInput>, 'autoCapitalize' | 'autoComplete' | 'autoCorrect' | 'autoFocus' | 'autoSave' | 'cols' | 'disabled' | 'fillAvailable' | 'generated' | 'id' | 'multiline' | 'notice' | 'onBlur' | 'onFocus' | 'onKeyDown' | 'onKeyUp' | 'placeholder' | 'random' | 'readOnly' | 'resizable' | 'rows' | 'type' | 'noTopLabel' | 'unit' | 'valid' | 'size' | 'maxLength' | 'minLength' | 'min' | 'max' | 'data-testid'>> & {
5
+ type TextInputFieldProps<TFieldValues extends FieldValues, TFieldName extends FieldPath<TFieldValues>> = BaseFieldProps<TFieldValues, TFieldName> & Partial<Pick<ComponentProps<typeof TextInput>, 'autoCapitalize' | 'autoComplete' | 'autoCorrect' | 'autoFocus' | 'autoSave' | 'cols' | 'disabled' | 'fillAvailable' | 'generated' | 'id' | 'multiline' | 'notice' | 'onBlur' | 'onFocus' | 'onKeyDown' | 'onKeyUp' | 'placeholder' | 'random' | 'readOnly' | 'resizable' | 'rows' | 'type' | 'noTopLabel' | 'unit' | 'valid' | 'size' | 'maxLength' | 'minLength' | 'min' | 'max' | 'data-testid'>> & {
6
6
  className?: string;
7
7
  regex?: (RegExp | RegExp[])[];
8
8
  format?: (value: unknown) => PathValue<TFieldValues, Path<TFieldValues>>;
@@ -14,5 +14,5 @@ type TextInputFieldProps<TFieldValues extends FieldValues, TName extends FieldPa
14
14
  /**
15
15
  * @deprecated This component is deprecated, please use `TextInputFieldV2` instead
16
16
  */
17
- export declare const TextInputField: <TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ autoCapitalize, autoComplete, autoCorrect, autoFocus, autoSave, className, cols, disabled, fillAvailable, generated, id, label, multiline, name, noTopLabel, notice, onChange, onFocus, onKeyDown, onKeyUp, onBlur, placeholder, random, readOnly, required, resizable, rows, type, unit, size, rules, valid, parse, format, formatOnBlur, regex: regexes, min, max, minLength, maxLength, validate, defaultValue, customError, innerRef, shouldUnregister, "data-testid": dataTestId, }: TextInputFieldProps<TFieldValues, TName>) => import("@emotion/react/jsx-runtime").JSX.Element;
17
+ export declare const TextInputField: <TFieldValues extends FieldValues, TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ autoCapitalize, autoComplete, autoCorrect, autoFocus, autoSave, className, cols, disabled, fillAvailable, generated, id, label, multiline, name, noTopLabel, notice, onChange, onFocus, onKeyDown, onKeyUp, onBlur, placeholder, random, readOnly, required, resizable, rows, type, unit, size, valid, parse, format, formatOnBlur, regex: regexes, defaultValue, customError, innerRef, shouldUnregister, "data-testid": dataTestId, validate, min, max, minLength, maxLength, control, }: TextInputFieldProps<TFieldValues, TFieldName>) => import("@emotion/react/jsx-runtime").JSX.Element;
18
18
  export {};
@@ -1,6 +1,7 @@
1
1
  import { jsx } from "@emotion/react/jsx-runtime";
2
2
  import { TextInput } from "@ultraviolet/ui";
3
3
  import { useController } from "react-hook-form";
4
+ import { validateRegex } from "../../utils/validateRegex.js";
4
5
  import { useErrors } from "../../providers/ErrorContext/index.js";
5
6
  const TextInputField = ({
6
7
  autoCapitalize,
@@ -33,22 +34,22 @@ const TextInputField = ({
33
34
  type,
34
35
  unit,
35
36
  size,
36
- rules,
37
37
  valid,
38
38
  parse,
39
39
  format,
40
40
  formatOnBlur = false,
41
41
  regex: regexes,
42
- min,
43
- max,
44
- minLength,
45
- maxLength,
46
- validate,
47
42
  defaultValue,
48
43
  customError,
49
44
  innerRef,
50
45
  shouldUnregister = false,
51
- "data-testid": dataTestId
46
+ "data-testid": dataTestId,
47
+ validate,
48
+ min,
49
+ max,
50
+ minLength,
51
+ maxLength,
52
+ control
52
53
  }) => {
53
54
  const {
54
55
  getError
@@ -62,19 +63,19 @@ const TextInputField = ({
62
63
  name,
63
64
  defaultValue,
64
65
  shouldUnregister,
66
+ control,
65
67
  rules: {
66
68
  required,
69
+ minLength,
70
+ maxLength,
71
+ min,
72
+ max,
67
73
  validate: {
68
74
  ...regexes ? {
69
- pattern: (value) => regexes.every((regex) => value === void 0 || value === "" || (Array.isArray(regex) ? regex.some((regexOr) => regexOr.test(value)) : regex.test(value)))
75
+ pattern: (value) => validateRegex(value, regexes)
70
76
  } : {},
71
77
  ...validate
72
- },
73
- minLength,
74
- maxLength,
75
- max,
76
- min,
77
- ...rules
78
+ }
78
79
  }
79
80
  });
80
81
  const transformedValue = () => {
@@ -3,9 +3,9 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const jsxRuntime = require("@emotion/react/jsx-runtime");
4
4
  const ui = require("@ultraviolet/ui");
5
5
  const reactHookForm = require("react-hook-form");
6
+ const validateRegex = require("../../utils/validateRegex.cjs");
6
7
  const index = require("../../providers/ErrorContext/index.cjs");
7
8
  const TextInputField = ({
8
- validate,
9
9
  regex: regexes,
10
10
  id,
11
11
  className,
@@ -37,7 +37,9 @@ const TextInputField = ({
37
37
  "aria-labelledby": ariaLabelledBy,
38
38
  "aria-label": ariaLabel,
39
39
  autoComplete,
40
- shouldUnregister
40
+ shouldUnregister,
41
+ validate,
42
+ control
41
43
  }) => {
42
44
  const {
43
45
  getError
@@ -50,11 +52,12 @@ const TextInputField = ({
50
52
  } = reactHookForm.useController({
51
53
  name,
52
54
  shouldUnregister,
55
+ control,
53
56
  rules: {
54
57
  required,
55
58
  validate: {
56
59
  ...regexes ? {
57
- pattern: (value) => regexes.every((regex) => value === void 0 || value === "" || (Array.isArray(regex) ? regex.some((regexOr) => regexOr.test(value)) : regex.test(value)))
60
+ pattern: (value) => validateRegex.validateRegex(value, regexes)
58
61
  } : {},
59
62
  ...validate
60
63
  },
@@ -2,11 +2,11 @@ import { TextInputV2 } from '@ultraviolet/ui';
2
2
  import type { ComponentProps } from 'react';
3
3
  import type { FieldPath, FieldValues } from 'react-hook-form';
4
4
  import type { BaseFieldProps } from '../../types';
5
- type TextInputFieldProps<TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues>> = BaseFieldProps<TFieldValues, TName> & Omit<ComponentProps<typeof TextInputV2>, 'value' | 'error' | 'name' | 'onChange'> & {
5
+ type TextInputFieldProps<TFieldValues extends FieldValues, TFieldName extends FieldPath<TFieldValues>> = BaseFieldProps<TFieldValues, TFieldName> & Omit<ComponentProps<typeof TextInputV2>, 'value' | 'error' | 'name' | 'onChange'> & {
6
6
  regex?: (RegExp | RegExp[])[];
7
7
  };
8
8
  /**
9
9
  * This component offers a form field based on Ultraviolet UI TextInputV2 component
10
10
  */
11
- export declare const TextInputField: <TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ validate, regex: regexes, id, className, tabIndex, onChange, placeholder, disabled, readOnly, success, helper, tooltip, label, autoFocus, required, "data-testid": dataTestId, name, onFocus, onBlur, clearable, labelDescription, type, prefix, suffix, size, loading, onRandomize, minLength, maxLength, "aria-labelledby": ariaLabelledBy, "aria-label": ariaLabel, autoComplete, shouldUnregister, }: TextInputFieldProps<TFieldValues, TName>) => import("@emotion/react/jsx-runtime").JSX.Element;
11
+ export declare const TextInputField: <TFieldValues extends FieldValues, TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ regex: regexes, id, className, tabIndex, onChange, placeholder, disabled, readOnly, success, helper, tooltip, label, autoFocus, required, "data-testid": dataTestId, name, onFocus, onBlur, clearable, labelDescription, type, prefix, suffix, size, loading, onRandomize, minLength, maxLength, "aria-labelledby": ariaLabelledBy, "aria-label": ariaLabel, autoComplete, shouldUnregister, validate, control, }: TextInputFieldProps<TFieldValues, TFieldName>) => import("@emotion/react/jsx-runtime").JSX.Element;
12
12
  export {};
@@ -1,9 +1,9 @@
1
1
  import { jsx } from "@emotion/react/jsx-runtime";
2
2
  import { TextInputV2 } from "@ultraviolet/ui";
3
3
  import { useController } from "react-hook-form";
4
+ import { validateRegex } from "../../utils/validateRegex.js";
4
5
  import { useErrors } from "../../providers/ErrorContext/index.js";
5
6
  const TextInputField = ({
6
- validate,
7
7
  regex: regexes,
8
8
  id,
9
9
  className,
@@ -35,7 +35,9 @@ const TextInputField = ({
35
35
  "aria-labelledby": ariaLabelledBy,
36
36
  "aria-label": ariaLabel,
37
37
  autoComplete,
38
- shouldUnregister
38
+ shouldUnregister,
39
+ validate,
40
+ control
39
41
  }) => {
40
42
  const {
41
43
  getError
@@ -48,11 +50,12 @@ const TextInputField = ({
48
50
  } = useController({
49
51
  name,
50
52
  shouldUnregister,
53
+ control,
51
54
  rules: {
52
55
  required,
53
56
  validate: {
54
57
  ...regexes ? {
55
- pattern: (value) => regexes.every((regex) => value === void 0 || value === "" || (Array.isArray(regex) ? regex.some((regexOr) => regexOr.test(value)) : regex.test(value)))
58
+ pattern: (value) => validateRegex(value, regexes)
56
59
  } : {},
57
60
  ...validate
58
61
  },
@@ -13,6 +13,7 @@ const parseTime = (date) => {
13
13
  const TimeField = ({
14
14
  required,
15
15
  name,
16
+ control,
16
17
  schedule,
17
18
  placeholder,
18
19
  disabled,
@@ -29,11 +30,11 @@ const TimeField = ({
29
30
  animationOnChange,
30
31
  className,
31
32
  isSearchable,
32
- rules,
33
33
  options,
34
34
  "data-testid": dataTestId,
35
35
  shouldUnregister = false,
36
- noTopLabel
36
+ noTopLabel,
37
+ validate
37
38
  }) => {
38
39
  const {
39
40
  field,
@@ -42,10 +43,11 @@ const TimeField = ({
42
43
  }
43
44
  } = reactHookForm.useController({
44
45
  name,
46
+ control,
45
47
  shouldUnregister,
46
48
  rules: {
47
49
  required,
48
- ...rules
50
+ validate
49
51
  }
50
52
  });
51
53
  return /* @__PURE__ */ jsxRuntime.jsx(ui.TimeInput, { name: field.name, placeholder, schedule, required, value: parseTime(field.value), onChange: (val) => {
@@ -2,8 +2,6 @@ import { TimeInput } from '@ultraviolet/ui';
2
2
  import type { ComponentProps } from 'react';
3
3
  import type { FieldPath, FieldValues } from 'react-hook-form';
4
4
  import type { BaseFieldProps } from '../../types';
5
- type TimeFieldProps<TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues>> = BaseFieldProps<TFieldValues, TName> & Omit<ComponentProps<typeof TimeInput>, 'onChange'> & {
6
- name: string;
7
- };
8
- export declare const TimeField: <TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ required, name, schedule, placeholder, disabled, readOnly, onBlur, onFocus, onChange, isLoading, isClearable, inputId, id, animation, animationDuration, animationOnChange, className, isSearchable, rules, options, "data-testid": dataTestId, shouldUnregister, noTopLabel, }: TimeFieldProps<TFieldValues, TName>) => import("@emotion/react/jsx-runtime").JSX.Element;
5
+ type TimeFieldProps<TFieldValues extends FieldValues, TFieldName extends FieldPath<TFieldValues>> = BaseFieldProps<TFieldValues, TFieldName> & Omit<ComponentProps<typeof TimeInput>, 'onChange'>;
6
+ export declare const TimeField: <TFieldValues extends FieldValues, TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ required, name, control, schedule, placeholder, disabled, readOnly, onBlur, onFocus, onChange, isLoading, isClearable, inputId, id, animation, animationDuration, animationOnChange, className, isSearchable, options, "data-testid": dataTestId, shouldUnregister, noTopLabel, validate, }: TimeFieldProps<TFieldValues, TFieldName>) => import("@emotion/react/jsx-runtime").JSX.Element;
9
7
  export {};
@@ -11,6 +11,7 @@ const parseTime = (date) => {
11
11
  const TimeField = ({
12
12
  required,
13
13
  name,
14
+ control,
14
15
  schedule,
15
16
  placeholder,
16
17
  disabled,
@@ -27,11 +28,11 @@ const TimeField = ({
27
28
  animationOnChange,
28
29
  className,
29
30
  isSearchable,
30
- rules,
31
31
  options,
32
32
  "data-testid": dataTestId,
33
33
  shouldUnregister = false,
34
- noTopLabel
34
+ noTopLabel,
35
+ validate
35
36
  }) => {
36
37
  const {
37
38
  field,
@@ -40,10 +41,11 @@ const TimeField = ({
40
41
  }
41
42
  } = useController({
42
43
  name,
44
+ control,
43
45
  shouldUnregister,
44
46
  rules: {
45
47
  required,
46
- ...rules
48
+ validate
47
49
  }
48
50
  });
49
51
  return /* @__PURE__ */ jsx(TimeInput, { name: field.name, placeholder, schedule, required, value: parseTime(field.value), onChange: (val) => {
@@ -9,16 +9,17 @@ const ToggleField = ({
9
9
  disabled,
10
10
  label,
11
11
  name,
12
+ control,
12
13
  onChange,
13
14
  required,
14
15
  size,
15
16
  tooltip,
16
- rules,
17
17
  labelPosition,
18
18
  parse,
19
19
  format,
20
20
  "data-testid": dataTestId,
21
- shouldUnregister = false
21
+ shouldUnregister = false,
22
+ validate
22
23
  }) => {
23
24
  const {
24
25
  field,
@@ -27,10 +28,11 @@ const ToggleField = ({
27
28
  }
28
29
  } = reactHookForm.useController({
29
30
  name,
31
+ control,
30
32
  shouldUnregister,
31
33
  rules: {
32
34
  required,
33
- ...rules
35
+ validate
34
36
  }
35
37
  });
36
38
  const {
@@ -2,9 +2,9 @@ import { Toggle } from '@ultraviolet/ui';
2
2
  import type { ComponentProps } from 'react';
3
3
  import type { FieldPath, FieldValues } from 'react-hook-form';
4
4
  import type { BaseFieldProps } from '../../types';
5
- type ToggleFieldProps<TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues>> = Omit<BaseFieldProps<TFieldValues, TName>, 'label'> & Pick<ComponentProps<typeof Toggle>, 'disabled' | 'label' | 'onChange' | 'size' | 'tooltip' | 'labelPosition' | 'className' | 'data-testid'> & {
5
+ type ToggleFieldProps<TFieldValues extends FieldValues, TFieldName extends FieldPath<TFieldValues>> = Omit<BaseFieldProps<TFieldValues, TFieldName>, 'label'> & Pick<ComponentProps<typeof Toggle>, 'disabled' | 'label' | 'onChange' | 'size' | 'tooltip' | 'labelPosition' | 'className' | 'data-testid'> & {
6
6
  parse?: (value: boolean) => any;
7
7
  format?: (value: any) => boolean;
8
8
  };
9
- export declare const ToggleField: <TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ className, disabled, label, name, onChange, required, size, tooltip, rules, labelPosition, parse, format, "data-testid": dataTestId, shouldUnregister, }: ToggleFieldProps<TFieldValues, TName>) => import("@emotion/react/jsx-runtime").JSX.Element;
9
+ export declare const ToggleField: <TFieldValues extends FieldValues, TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ className, disabled, label, name, control, onChange, required, size, tooltip, labelPosition, parse, format, "data-testid": dataTestId, shouldUnregister, validate, }: ToggleFieldProps<TFieldValues, TFieldName>) => import("@emotion/react/jsx-runtime").JSX.Element;
10
10
  export {};
@@ -7,16 +7,17 @@ const ToggleField = ({
7
7
  disabled,
8
8
  label,
9
9
  name,
10
+ control,
10
11
  onChange,
11
12
  required,
12
13
  size,
13
14
  tooltip,
14
- rules,
15
15
  labelPosition,
16
16
  parse,
17
17
  format,
18
18
  "data-testid": dataTestId,
19
- shouldUnregister = false
19
+ shouldUnregister = false,
20
+ validate
20
21
  }) => {
21
22
  const {
22
23
  field,
@@ -25,10 +26,11 @@ const ToggleField = ({
25
26
  }
26
27
  } = useController({
27
28
  name,
29
+ control,
28
30
  shouldUnregister,
29
31
  rules: {
30
32
  required,
31
- ...rules
33
+ validate
32
34
  }
33
35
  });
34
36
  const {
@@ -2,9 +2,9 @@ import { ToggleGroup } from '@ultraviolet/ui';
2
2
  import type { ComponentProps } from 'react';
3
3
  import type { FieldPath, FieldValues } from 'react-hook-form';
4
4
  import type { BaseFieldProps } from '../../types';
5
- type ToggleGroupFieldProps<TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues>> = BaseFieldProps<TFieldValues, TName> & Partial<Pick<ComponentProps<typeof ToggleGroup>, 'className' | 'helper' | 'direction' | 'children' | 'error' | 'legend'>> & Required<Pick<ComponentProps<typeof ToggleGroup>, 'legend' | 'name'>>;
5
+ type ToggleGroupFieldProps<TFieldValues extends FieldValues, TFieldName extends FieldPath<TFieldValues>> = BaseFieldProps<TFieldValues, TFieldName> & Partial<Pick<ComponentProps<typeof ToggleGroup>, 'className' | 'helper' | 'direction' | 'children' | 'error' | 'legend'>> & Required<Pick<ComponentProps<typeof ToggleGroup>, 'legend'>>;
6
6
  export declare const ToggleGroupField: {
7
- <TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ legend, className, helper, direction, children, onChange, label, error: customError, name, required, shouldUnregister, }: ToggleGroupFieldProps<TFieldValues, TName>): import("@emotion/react/jsx-runtime").JSX.Element;
7
+ <TFieldValues extends FieldValues, TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ legend, control, className, helper, direction, children, onChange, label, error: customError, name, required, shouldUnregister, validate, }: ToggleGroupFieldProps<TFieldValues, TFieldName>): import("@emotion/react/jsx-runtime").JSX.Element;
8
8
  Toggle: ({ disabled, name, value, label, helper, error, className, "data-testid": dataTestId, }: Omit<{
9
9
  id?: string;
10
10
  checked?: boolean;
@@ -22,9 +22,9 @@ const UnitInputField = ({
22
22
  width,
23
23
  selectInputWidth,
24
24
  helper,
25
- rules,
26
25
  shouldUnregister = false,
27
- validate
26
+ validate,
27
+ control
28
28
  }) => {
29
29
  const {
30
30
  getError
@@ -44,12 +44,12 @@ const UnitInputField = ({
44
44
  } = reactHookForm.useController({
45
45
  name,
46
46
  shouldUnregister,
47
+ control,
47
48
  rules: {
48
49
  required,
49
50
  min,
50
51
  max,
51
- ...rules,
52
- ...validate
52
+ validate
53
53
  }
54
54
  });
55
55
  return /* @__PURE__ */ jsxRuntime.jsx(ui.UnitInput, { id, name, required, max, min, error: getError({
@@ -2,10 +2,10 @@ import { UnitInput } from '@ultraviolet/ui';
2
2
  import type { ComponentProps } from 'react';
3
3
  import type { FieldPath, FieldValues } from 'react-hook-form';
4
4
  import type { BaseFieldProps } from '../../types';
5
- type UnitInputFieldProps<TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues>> = BaseFieldProps<TFieldValues, TName> & Pick<ComponentProps<typeof UnitInput>, 'id' | 'name' | 'className' | 'data-testid' | 'disabled' | 'value' | 'max' | 'min' | 'options' | 'placeholder' | 'placeholderUnit' | 'size' | 'unitValue' | 'required' | 'width' | 'helper' | 'selectInputWidth'> & {
5
+ type UnitInputFieldProps<TFieldValues extends FieldValues, TFieldName extends FieldPath<TFieldValues>> = BaseFieldProps<TFieldValues, TFieldName> & Pick<ComponentProps<typeof UnitInput>, 'id' | 'name' | 'className' | 'data-testid' | 'disabled' | 'value' | 'max' | 'min' | 'options' | 'placeholder' | 'placeholderUnit' | 'size' | 'unitValue' | 'required' | 'width' | 'helper' | 'selectInputWidth'> & {
6
6
  onChange?: ComponentProps<typeof UnitInput>['onChange'];
7
7
  onChangeUnitValue?: ComponentProps<typeof UnitInput>['onChangeUnitValue'];
8
8
  label: string;
9
9
  };
10
- export declare const UnitInputField: <TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ id, name, max, min, size, placeholder, placeholderUnit, onChange, onChangeUnitValue, disabled, options, className, label, required, width, selectInputWidth, helper, rules, shouldUnregister, validate, }: UnitInputFieldProps<TFieldValues, TName>) => import("@emotion/react/jsx-runtime").JSX.Element;
10
+ export declare const UnitInputField: <TFieldValues extends FieldValues, TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ id, name, max, min, size, placeholder, placeholderUnit, onChange, onChangeUnitValue, disabled, options, className, label, required, width, selectInputWidth, helper, shouldUnregister, validate, control, }: UnitInputFieldProps<TFieldValues, TFieldName>) => import("@emotion/react/jsx-runtime").JSX.Element;
11
11
  export {};
@@ -20,9 +20,9 @@ const UnitInputField = ({
20
20
  width,
21
21
  selectInputWidth,
22
22
  helper,
23
- rules,
24
23
  shouldUnregister = false,
25
- validate
24
+ validate,
25
+ control
26
26
  }) => {
27
27
  const {
28
28
  getError
@@ -42,12 +42,12 @@ const UnitInputField = ({
42
42
  } = useController({
43
43
  name,
44
44
  shouldUnregister,
45
+ control,
45
46
  rules: {
46
47
  required,
47
48
  min,
48
49
  max,
49
- ...rules,
50
- ...validate
50
+ validate
51
51
  }
52
52
  });
53
53
  return /* @__PURE__ */ jsx(UnitInput, { id, name, required, max, min, error: getError({
@@ -1,7 +1,6 @@
1
1
  export { CheckboxField } from './CheckboxField';
2
2
  export { CheckboxGroupField } from './CheckboxGroupField';
3
3
  export { DateField } from './DateField';
4
- export type { FormProps } from './Form';
5
4
  export { Form } from './Form';
6
5
  export { RadioField } from './RadioField';
7
6
  export { SelectInputField } from './SelectInputField';
@@ -1,5 +1 @@
1
1
  export { useOnFieldChange } from './useOnFieldChange';
2
- export { useFormStateDeprecated } from './useFormState';
3
- export { useFieldDeprecated } from './useField';
4
- export { useFormDeprecated } from './useForm';
5
- export { useFieldArrayDeprecated } from './useFieldArray';
@@ -1,14 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const React = require("react");
3
+ const react = require("react");
4
4
  const reactHookForm = require("react-hook-form");
5
5
  const useOnFieldChange = (fieldName, callback, enabled = true) => {
6
6
  const {
7
7
  watch,
8
8
  getValues
9
9
  } = reactHookForm.useFormContext();
10
- const previousValues = React.useRef(getValues(fieldName));
11
- React.useEffect(() => {
10
+ const previousValues = react.useRef(getValues(fieldName));
11
+ react.useEffect(() => {
12
12
  const subscription = watch((value) => {
13
13
  if (previousValues.current !== value[fieldName] && enabled) {
14
14
  previousValues.current = value[fieldName];
@@ -1,3 +1,6 @@
1
1
  import type { DeepPartial, FieldPath, FieldPathValue, FieldValues } from 'react-hook-form';
2
2
  export type CallbackFn<TFieldValues extends FieldValues, TFieldName extends FieldPath<TFieldValues>> = (value: FieldPathValue<TFieldValues, TFieldName>, values: DeepPartial<TFieldValues>) => void | Promise<void>;
3
+ /**
4
+ * @deprecated
5
+ */
3
6
  export declare const useOnFieldChange: <TFieldValues extends FieldValues, TFieldName extends FieldPath<TFieldValues>>(fieldName: TFieldName, callback: CallbackFn<TFieldValues, TFieldName>, enabled?: boolean) => void;