@redis-ui/components 41.4.1 → 41.11.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 (167) hide show
  1. package/README.md +330 -0
  2. package/dist/Button/TextButton/TextButton.cjs +2 -0
  3. package/dist/Button/TextButton/TextButton.js +2 -0
  4. package/dist/Button/TextButton/TextButton.style.cjs +9 -3
  5. package/dist/Button/TextButton/TextButton.style.d.ts +1 -1
  6. package/dist/Button/TextButton/TextButton.style.js +9 -3
  7. package/dist/Button/TextButton/TextButton.types.d.ts +2 -0
  8. package/dist/Button/ToggleButton/ToggleButton.style.cjs +1 -1
  9. package/dist/Button/ToggleButton/ToggleButton.style.js +1 -1
  10. package/dist/ChipList/Components/ExtraItem.cjs +8 -7
  11. package/dist/ChipList/Components/ExtraItem.js +8 -7
  12. package/dist/Filters/components/MultiSelectFilter/MultiSelectFilter.cjs +2 -2
  13. package/dist/Filters/components/MultiSelectFilter/MultiSelectFilter.js +2 -2
  14. package/dist/Filters/components/MultiTreeSelectFilter/MultiTreeSelectFilter.cjs +2 -2
  15. package/dist/Filters/components/MultiTreeSelectFilter/MultiTreeSelectFilter.js +2 -2
  16. package/dist/FormField/FormField.context.cjs +4 -0
  17. package/dist/FormField/FormField.context.d.ts +3 -0
  18. package/dist/FormField/FormField.context.js +4 -0
  19. package/dist/FormField/components/Nested/Nested.cjs +4 -2
  20. package/dist/FormField/components/Nested/Nested.js +5 -3
  21. package/dist/Helpers/css.utils.cjs +4 -0
  22. package/dist/Helpers/css.utils.js +4 -0
  23. package/dist/Inputs/TextArea/components/TextAreaTag/TextAreaTag.cjs +6 -2
  24. package/dist/Inputs/TextArea/components/TextAreaTag/TextAreaTag.js +7 -3
  25. package/dist/Inputs/components/Compose/CommonCompose.cjs +16 -14
  26. package/dist/Inputs/components/Compose/CommonCompose.js +17 -15
  27. package/dist/Inputs/components/Context/InputValue.context.cjs +13 -9
  28. package/dist/Inputs/components/Context/InputValue.context.d.ts +270 -4
  29. package/dist/Inputs/components/Context/InputValue.context.js +13 -9
  30. package/dist/Inputs/components/Context/InputValueProvider.cjs +7 -2
  31. package/dist/Inputs/components/Context/InputValueProvider.js +8 -3
  32. package/dist/Inputs/components/Context/NumericInputValueProvider.cjs +6 -1
  33. package/dist/Inputs/components/Context/NumericInputValueProvider.js +7 -2
  34. package/dist/Inputs/components/InputTag/InputTag.cjs +6 -3
  35. package/dist/Inputs/components/InputTag/InputTag.js +7 -4
  36. package/dist/Inputs/components/InputTag/InputTag.style.cjs +1 -1
  37. package/dist/Inputs/components/InputTag/InputTag.style.js +1 -1
  38. package/dist/Inputs/components/ResetButton/ResetButton.cjs +7 -4
  39. package/dist/Inputs/components/ResetButton/ResetButton.js +7 -4
  40. package/dist/Label/components/Required/Required.cjs +8 -8
  41. package/dist/Label/components/Required/Required.js +8 -8
  42. package/dist/Layouts/FlexDivider/FlexDivider.cjs +22 -0
  43. package/dist/Layouts/FlexDivider/FlexDivider.d.ts +2 -0
  44. package/dist/Layouts/FlexDivider/FlexDivider.js +22 -0
  45. package/dist/Layouts/FlexDivider/FlexDivider.style.cjs +46 -0
  46. package/dist/Layouts/FlexDivider/FlexDivider.style.d.ts +6 -0
  47. package/dist/Layouts/FlexDivider/FlexDivider.style.js +44 -0
  48. package/dist/Layouts/FlexDivider/FlexDivider.types.d.ts +15 -0
  49. package/dist/Layouts/FlexGroup/FlexGroup.cjs +20 -0
  50. package/dist/Layouts/FlexGroup/FlexGroup.d.ts +2 -0
  51. package/dist/Layouts/FlexGroup/FlexGroup.js +20 -0
  52. package/dist/Layouts/FlexGroup/FlexGroup.style.cjs +20 -0
  53. package/dist/Layouts/FlexGroup/FlexGroup.style.d.ts +9 -0
  54. package/dist/Layouts/FlexGroup/FlexGroup.style.js +18 -0
  55. package/dist/Layouts/FlexGroup/FlexGroup.types.d.ts +19 -0
  56. package/dist/Layouts/FlexItem/FlexItem.cjs +16 -0
  57. package/dist/Layouts/FlexItem/FlexItem.d.ts +2 -0
  58. package/dist/Layouts/FlexItem/FlexItem.js +16 -0
  59. package/dist/Layouts/FlexItem/FlexItem.style.cjs +14 -0
  60. package/dist/Layouts/FlexItem/FlexItem.style.d.ts +5 -0
  61. package/dist/Layouts/FlexItem/FlexItem.style.js +12 -0
  62. package/dist/Layouts/FlexItem/FlexItem.types.d.ts +14 -0
  63. package/dist/Layouts/FlexSplit/FlexSplit.cjs +10 -0
  64. package/dist/Layouts/FlexSplit/FlexSplit.d.ts +2 -0
  65. package/dist/Layouts/FlexSplit/FlexSplit.js +10 -0
  66. package/dist/Layouts/FlexSplit/FlexSplit.style.cjs +27 -0
  67. package/dist/Layouts/FlexSplit/FlexSplit.style.d.ts +8 -0
  68. package/dist/Layouts/FlexSplit/FlexSplit.style.js +25 -0
  69. package/dist/Layouts/FlexSplit/FlexSplit.types.d.ts +8 -0
  70. package/dist/Layouts/index.d.ts +8 -0
  71. package/dist/MidBar/MidBar.cjs +30 -0
  72. package/dist/MidBar/MidBar.d.ts +22 -0
  73. package/dist/MidBar/MidBar.js +30 -0
  74. package/dist/MidBar/MidBar.types.d.ts +6 -0
  75. package/dist/MidBar/components/Header/Header.cjs +32 -0
  76. package/dist/MidBar/components/Header/Header.d.ts +15 -0
  77. package/dist/MidBar/components/Header/Header.js +32 -0
  78. package/dist/MidBar/components/Header/Header.types.d.ts +13 -0
  79. package/dist/MidBar/components/Header/components/Compose/Compose.cjs +8 -0
  80. package/dist/MidBar/components/Header/components/Compose/Compose.d.ts +3 -0
  81. package/dist/MidBar/components/Header/components/Compose/Compose.js +8 -0
  82. package/dist/MidBar/components/Header/components/Compose/Compose.style.cjs +31 -0
  83. package/dist/MidBar/components/Header/components/Compose/Compose.style.d.ts +1 -0
  84. package/dist/MidBar/components/Header/components/Compose/Compose.style.js +29 -0
  85. package/dist/MidBar/components/Header/components/Compose/Compose.types.d.ts +2 -0
  86. package/dist/MidBar/components/Header/components/Group/Group.cjs +12 -0
  87. package/dist/MidBar/components/Header/components/Group/Group.d.ts +3 -0
  88. package/dist/MidBar/components/Header/components/Group/Group.js +12 -0
  89. package/dist/MidBar/components/Header/components/Group/Group.style.cjs +22 -0
  90. package/dist/MidBar/components/Header/components/Group/Group.style.d.ts +4 -0
  91. package/dist/MidBar/components/Header/components/Group/Group.style.js +20 -0
  92. package/dist/MidBar/components/Header/components/Group/Group.types.d.ts +5 -0
  93. package/dist/MidBar/index.d.ts +2 -0
  94. package/dist/MoreInfoIcon/MoreInfoIcon.style.cjs +1 -1
  95. package/dist/MoreInfoIcon/MoreInfoIcon.style.js +1 -1
  96. package/dist/SearchBar/components/SearchSection/components/Actions/components/ColumnSelector/ColumnSelector.cjs +5 -7
  97. package/dist/SearchBar/components/SearchSection/components/Actions/components/ColumnSelector/ColumnSelector.js +5 -7
  98. package/dist/SearchBar/components/SearchSection/components/Actions/components/FiltersToggle/FiltersToggle.cjs +11 -9
  99. package/dist/SearchBar/components/SearchSection/components/Actions/components/FiltersToggle/FiltersToggle.js +11 -9
  100. package/dist/Select/components/Context/Context.cjs +6 -4
  101. package/dist/Select/components/Context/Context.js +7 -5
  102. package/dist/Select/components/Trigger/components/Compose/Compose.cjs +5 -0
  103. package/dist/Select/components/Trigger/components/Compose/Compose.js +6 -1
  104. package/dist/Select/components/Trigger/components/Compose/Compose.style.cjs +5 -0
  105. package/dist/Select/components/Trigger/components/Compose/Compose.style.js +5 -0
  106. package/dist/Stepper/Stepper.context.cjs +5 -10
  107. package/dist/Stepper/Stepper.context.d.ts +1 -2
  108. package/dist/Stepper/Stepper.context.js +5 -10
  109. package/dist/Stepper/Stepper.d.ts +4 -4
  110. package/dist/Stepper/components/Compose/Compose.cjs +6 -1
  111. package/dist/Stepper/components/Compose/Compose.d.ts +2 -2
  112. package/dist/Stepper/components/Compose/Compose.js +7 -2
  113. package/dist/Stepper/components/Step/Step.context.cjs +5 -10
  114. package/dist/Stepper/components/Step/Step.context.d.ts +1 -2
  115. package/dist/Stepper/components/Step/Step.context.js +5 -10
  116. package/dist/Stepper/components/Step/Step.d.ts +2 -3
  117. package/dist/Stepper/components/Step/components/Compose/Compose.cjs +1 -3
  118. package/dist/Stepper/components/Step/components/Compose/Compose.d.ts +1 -1
  119. package/dist/Stepper/components/Step/components/Compose/Compose.js +2 -4
  120. package/dist/Stepper/components/Step/components/Compose/Compose.style.cjs +2 -5
  121. package/dist/Stepper/components/Step/components/Compose/Compose.style.js +4 -7
  122. package/dist/Stepper/hooks/useStepperFocusing.cjs +31 -0
  123. package/dist/Stepper/hooks/useStepperFocusing.d.ts +16 -0
  124. package/dist/Stepper/hooks/useStepperFocusing.js +31 -0
  125. package/dist/Stepper/hooks/useStepperInteractive.cjs +30 -37
  126. package/dist/Stepper/hooks/useStepperInteractive.d.ts +2 -3
  127. package/dist/Stepper/hooks/useStepperInteractive.js +30 -37
  128. package/dist/ThemeModeSwitch/ThemeModeSwitch.cjs +64 -0
  129. package/dist/ThemeModeSwitch/ThemeModeSwitch.d.ts +2 -0
  130. package/dist/ThemeModeSwitch/ThemeModeSwitch.js +64 -0
  131. package/dist/ThemeModeSwitch/ThemeModeSwitch.style.cjs +38 -0
  132. package/dist/ThemeModeSwitch/ThemeModeSwitch.style.d.ts +4 -0
  133. package/dist/ThemeModeSwitch/ThemeModeSwitch.style.js +36 -0
  134. package/dist/ThemeModeSwitch/ThemeModeSwitch.types.d.ts +7 -0
  135. package/dist/ThemeModeSwitch/index.d.ts +3 -0
  136. package/dist/ThemeModeSwitch/useThemeModeSwitch.cjs +37 -0
  137. package/dist/ThemeModeSwitch/useThemeModeSwitch.d.ts +8 -0
  138. package/dist/ThemeModeSwitch/useThemeModeSwitch.js +37 -0
  139. package/dist/Toast/Toaster.cjs +4 -6
  140. package/dist/Toast/Toaster.d.ts +2 -1
  141. package/dist/Toast/Toaster.js +4 -6
  142. package/dist/Toast/Toaster.style.cjs +2 -2
  143. package/dist/Toast/Toaster.style.d.ts +2 -2
  144. package/dist/Toast/Toaster.style.js +3 -3
  145. package/dist/Toast/core/core.d.ts +3 -3
  146. package/dist/Toast/core/mapping.helpers.cjs +18 -2
  147. package/dist/Toast/core/mapping.helpers.d.ts +4 -3
  148. package/dist/Toast/core/mapping.helpers.js +22 -6
  149. package/dist/Toast/core/mapping.types.d.ts +3 -2
  150. package/dist/index.cjs +1092 -1
  151. package/dist/index.d.ts +3 -0
  152. package/dist/index.js +1139 -48
  153. package/dist/node_modules/clsx/dist/clsx.cjs +17 -0
  154. package/dist/node_modules/clsx/dist/clsx.js +17 -0
  155. package/dist/packages/components/node_modules/react-toastify/dist/react-toastify.esm.cjs +320 -0
  156. package/dist/packages/components/node_modules/react-toastify/dist/react-toastify.esm.js +318 -0
  157. package/dist/packages/icons/dist/multicolor/LoaderLarge.cjs +2 -2
  158. package/dist/packages/icons/dist/multicolor/LoaderLarge.js +2 -2
  159. package/dist/packages/icons/dist/multicolor/dark/LoaderLarge.cjs +3 -8
  160. package/dist/packages/icons/dist/multicolor/dark/LoaderLarge.js +3 -8
  161. package/dist/packages/icons/dist/multicolor/light/LoaderLarge.cjs +3 -8
  162. package/dist/packages/icons/dist/multicolor/light/LoaderLarge.js +3 -8
  163. package/package.json +4 -4
  164. package/dist/node_modules/clsx/dist/clsx.m.cjs +0 -15
  165. package/dist/node_modules/clsx/dist/clsx.m.js +0 -15
  166. package/dist/node_modules/react-toastify/dist/react-toastify.esm.cjs +0 -300
  167. package/dist/node_modules/react-toastify/dist/react-toastify.esm.js +0 -298
@@ -81,6 +81,10 @@ const tokenMaps = {
81
81
  cssProp: "line-height",
82
82
  token: "lineHeight"
83
83
  },
84
+ gap: {
85
+ cssProp: "gap",
86
+ token: "gap"
87
+ },
84
88
  fontSize: {
85
89
  cssProp: "font-size",
86
90
  token: "fontSize"
@@ -79,6 +79,10 @@ const tokenMaps = {
79
79
  cssProp: "line-height",
80
80
  token: "lineHeight"
81
81
  },
82
+ gap: {
83
+ cssProp: "gap",
84
+ token: "gap"
85
+ },
82
86
  fontSize: {
83
87
  cssProp: "font-size",
84
88
  token: "fontSize"
@@ -17,14 +17,18 @@ const TextAreaTag = React.forwardRef(({
17
17
  }, ref) => {
18
18
  const fieldDisabled = Field_context.useFieldDisabled(disabled);
19
19
  const sharedId = SharedId_context.useSharedId(id);
20
- const inputValueProps = InputValue_context.useInputValueProps(restProps);
20
+ const inputValueProps = InputValue_context.useInputValueProps(restProps, ref);
21
21
  const status = FormField_context.useFieldStatus();
22
+ const required = FormField_context.useFieldRequired();
22
23
  const errorContent = Field_context.useErrorContent();
23
24
  const errorId = index.useId();
24
25
  const statusProps = status === "error" ? {
25
26
  "aria-invalid": true,
26
27
  "aria-describedby": `${errorId} ${restProps["aria-describedby"] || ""}`
27
28
  } : null;
29
+ const requiredProps = required ? {
30
+ "aria-required": true
31
+ } : null;
28
32
  const errorAlert = status === "error" ? jsxRuntime.jsxRuntimeExports.jsx(index$1.VisuallyHidden, {
29
33
  id: errorId,
30
34
  role: "alert",
@@ -32,11 +36,11 @@ const TextAreaTag = React.forwardRef(({
32
36
  }) : null;
33
37
  return jsxRuntime.jsxRuntimeExports.jsxs(jsxRuntime.jsxRuntimeExports.Fragment, {
34
38
  children: [jsxRuntime.jsxRuntimeExports.jsx(TextAreaTag_style.TextAreaTag, {
35
- ref,
36
39
  id: sharedId,
37
40
  disabled: fieldDisabled,
38
41
  autoComplete,
39
42
  ...statusProps,
43
+ ...requiredProps,
40
44
  ...restProps,
41
45
  ...inputValueProps
42
46
  }), errorAlert]
@@ -6,7 +6,7 @@ import { useFieldDisabled, useErrorContent } from "../../../components/Context/F
6
6
  import { useInputValueProps } from "../../../components/Context/InputValue.context.js";
7
7
  import { TextAreaTag as TextAreaTag$1 } from "./TextAreaTag.style.js";
8
8
  import { useSharedId } from "../../../../Helpers/contexts/SharedId.context.js";
9
- import { useFieldStatus } from "../../../../FormField/FormField.context.js";
9
+ import { useFieldStatus, useFieldRequired } from "../../../../FormField/FormField.context.js";
10
10
  const TextAreaTag = forwardRef(({
11
11
  id,
12
12
  autoComplete = "off",
@@ -15,14 +15,18 @@ const TextAreaTag = forwardRef(({
15
15
  }, ref) => {
16
16
  const fieldDisabled = useFieldDisabled(disabled);
17
17
  const sharedId = useSharedId(id);
18
- const inputValueProps = useInputValueProps(restProps);
18
+ const inputValueProps = useInputValueProps(restProps, ref);
19
19
  const status = useFieldStatus();
20
+ const required = useFieldRequired();
20
21
  const errorContent = useErrorContent();
21
22
  const errorId = useId();
22
23
  const statusProps = status === "error" ? {
23
24
  "aria-invalid": true,
24
25
  "aria-describedby": `${errorId} ${restProps["aria-describedby"] || ""}`
25
26
  } : null;
27
+ const requiredProps = required ? {
28
+ "aria-required": true
29
+ } : null;
26
30
  const errorAlert = status === "error" ? jsxRuntimeExports.jsx(VisuallyHidden, {
27
31
  id: errorId,
28
32
  role: "alert",
@@ -30,11 +34,11 @@ const TextAreaTag = forwardRef(({
30
34
  }) : null;
31
35
  return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, {
32
36
  children: [jsxRuntimeExports.jsx(TextAreaTag$1, {
33
- ref,
34
37
  id: sharedId,
35
38
  disabled: fieldDisabled,
36
39
  autoComplete,
37
40
  ...statusProps,
41
+ ...requiredProps,
38
42
  ...restProps,
39
43
  ...inputValueProps
40
44
  }), errorAlert]
@@ -42,20 +42,22 @@ const CommonInputCompose = ({
42
42
  ) : jsxRuntime.jsxRuntimeExports.jsx(Field_context.FieldDisabledTransProvider, {
43
43
  children: jsxRuntime.jsxRuntimeExports.jsx(FormField_context.FieldStatusTransProvider, {
44
44
  value: error && "error" || valid && "success" || "none",
45
- children: jsxRuntime.jsxRuntimeExports.jsx(Field_context.ErrorContentProvider, {
46
- value: error ?? "",
47
- children: jsxRuntime.jsxRuntimeExports.jsx(Compose_style.CommonInputCompose, {
48
- "$variant": variant,
49
- ...restProps,
50
- "data-editable": "",
51
- onPointerUp: react_utils.combineHandlers((e) => {
52
- var _a;
53
- const target = e.target;
54
- if (target.tagName !== "INPUT" && target.tagName !== "TEXTAREA") {
55
- (_a = e.currentTarget.querySelector(`input${InputTag_style.InputTag}`) ?? e.currentTarget.querySelector("textarea")) == null ? void 0 : _a.focus();
56
- }
57
- }, onPointerUp),
58
- children
45
+ children: jsxRuntime.jsxRuntimeExports.jsx(FormField_context.FieldRequiredTransProvider, {
46
+ children: jsxRuntime.jsxRuntimeExports.jsx(Field_context.ErrorContentProvider, {
47
+ value: error ?? "",
48
+ children: jsxRuntime.jsxRuntimeExports.jsx(Compose_style.CommonInputCompose, {
49
+ "$variant": variant,
50
+ ...restProps,
51
+ "data-editable": "",
52
+ onPointerUp: react_utils.combineHandlers((e) => {
53
+ var _a;
54
+ const target = e.target;
55
+ if (target.tagName !== "INPUT" && target.tagName !== "TEXTAREA") {
56
+ (_a = e.currentTarget.querySelector(`input${InputTag_style.InputTag}`) ?? e.currentTarget.querySelector("textarea")) == null ? void 0 : _a.focus();
57
+ }
58
+ }, onPointerUp),
59
+ children
60
+ })
59
61
  })
60
62
  })
61
63
  })
@@ -4,7 +4,7 @@ import { ReadonlyRenderWrapper } from "../ReadonlyRender/ReadonlyRenderWrapper.j
4
4
  import { InputTag } from "../InputTag/InputTag.style.js";
5
5
  import { CommonInputCompose as CommonInputCompose$1, ReadonlyValue } from "./Compose.style.js";
6
6
  import { SharedIdTransProvider } from "../../../Helpers/contexts/SharedId.context.js";
7
- import { useFieldReadonly, FieldStatusTransProvider } from "../../../FormField/FormField.context.js";
7
+ import { useFieldReadonly, FieldStatusTransProvider, FieldRequiredTransProvider } from "../../../FormField/FormField.context.js";
8
8
  import { combineHandlers } from "../../../Helpers/react.utils.js";
9
9
  const DefaultReadonlyRender = ({
10
10
  value,
@@ -40,20 +40,22 @@ const CommonInputCompose = ({
40
40
  ) : jsxRuntimeExports.jsx(FieldDisabledTransProvider, {
41
41
  children: jsxRuntimeExports.jsx(FieldStatusTransProvider, {
42
42
  value: error && "error" || valid && "success" || "none",
43
- children: jsxRuntimeExports.jsx(ErrorContentProvider, {
44
- value: error ?? "",
45
- children: jsxRuntimeExports.jsx(CommonInputCompose$1, {
46
- "$variant": variant,
47
- ...restProps,
48
- "data-editable": "",
49
- onPointerUp: combineHandlers((e) => {
50
- var _a;
51
- const target = e.target;
52
- if (target.tagName !== "INPUT" && target.tagName !== "TEXTAREA") {
53
- (_a = e.currentTarget.querySelector(`input${InputTag}`) ?? e.currentTarget.querySelector("textarea")) == null ? void 0 : _a.focus();
54
- }
55
- }, onPointerUp),
56
- children
43
+ children: jsxRuntimeExports.jsx(FieldRequiredTransProvider, {
44
+ children: jsxRuntimeExports.jsx(ErrorContentProvider, {
45
+ value: error ?? "",
46
+ children: jsxRuntimeExports.jsx(CommonInputCompose$1, {
47
+ "$variant": variant,
48
+ ...restProps,
49
+ "data-editable": "",
50
+ onPointerUp: combineHandlers((e) => {
51
+ var _a;
52
+ const target = e.target;
53
+ if (target.tagName !== "INPUT" && target.tagName !== "TEXTAREA") {
54
+ (_a = e.currentTarget.querySelector(`input${InputTag}`) ?? e.currentTarget.querySelector("textarea")) == null ? void 0 : _a.focus();
55
+ }
56
+ }, onPointerUp),
57
+ children
58
+ })
57
59
  })
58
60
  })
59
61
  })
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const React = require("react");
4
+ const index = require("../../../node_modules/@radix-ui/react-compose-refs/dist/index.cjs");
4
5
  const react_utils = require("../../../Helpers/react.utils.cjs");
5
6
  const Context = React.createContext(null);
6
7
  const ContextProvider = Context.Provider;
@@ -11,20 +12,23 @@ const useInputValue = () => {
11
12
  }
12
13
  return context;
13
14
  };
14
- const useInputValueProps = (customProps) => {
15
+ const useInputValueProps = (customProps, inputRef) => {
15
16
  const {
16
17
  props
17
18
  } = useInputValue();
18
- if (!customProps) return props;
19
+ const ref = index.useComposedRefs(inputRef, props.ref);
19
20
  const mergedProps = {
20
- ...props
21
+ ...props,
22
+ ref
21
23
  };
22
- const keys = Object.keys(props);
23
- keys.forEach((key) => {
24
- if (typeof props[key] === "function" && key in customProps) {
25
- mergedProps[key] = react_utils.combineHandlers(props[key], customProps[key]);
26
- }
27
- });
24
+ if (customProps) {
25
+ const keys = Object.keys(props);
26
+ keys.forEach((key) => {
27
+ if (key !== "ref" && typeof props[key] === "function" && key in customProps) {
28
+ mergedProps[key] = react_utils.combineHandlers(props[key], customProps[key]);
29
+ }
30
+ });
31
+ }
28
32
  return mergedProps;
29
33
  };
30
34
  const useInputValueApi = () => useInputValue().api;
@@ -1,8 +1,9 @@
1
- import { ChangeEventHandler, HTMLAttributes } from 'react';
2
- import { ChildFree } from '../../../Helpers/common.types';
1
+ import { ChangeEventHandler, ForwardedRef, HTMLAttributes, Ref, RefObject } from 'react';
2
+ import { ChildFree } from '../../../Helpers';
3
3
  export type InputValueApi = {
4
4
  value: string | undefined;
5
5
  resetValue: () => void;
6
+ inputRef: RefObject<HTMLElement>;
6
7
  } & Record<string, unknown>;
7
8
  export type NumericValueApi = InputValueApi & {
8
9
  canIncrement: boolean;
@@ -15,11 +16,276 @@ export type InputValueContext = {
15
16
  props: Partial<ChildFree<HTMLAttributes<HTMLElement>>> & {
16
17
  value?: string | undefined;
17
18
  onChange?: ChangeEventHandler<HTMLElement> | undefined;
19
+ ref: Ref<HTMLElement>;
18
20
  };
19
21
  };
20
22
  export declare const ContextProvider: import("react").Provider<InputValueContext | null>;
21
- export declare const useInputValueProps: (customProps?: Partial<ChildFree<HTMLAttributes<HTMLElement>>>) => Partial<ChildFree<HTMLAttributes<HTMLElement>>> & {
23
+ export declare const useInputValueProps: <T extends HTMLElement>(customProps?: Partial<ChildFree<HTMLAttributes<HTMLElement>>>, inputRef?: ForwardedRef<T> | undefined) => {
24
+ ref: (node: T) => void;
25
+ slot?: string | undefined;
26
+ style?: import("react").CSSProperties | undefined;
27
+ title?: string | undefined;
28
+ defaultChecked?: boolean | undefined;
29
+ defaultValue?: string | number | readonly string[] | undefined;
30
+ suppressContentEditableWarning?: boolean | undefined;
31
+ suppressHydrationWarning?: boolean | undefined;
32
+ accessKey?: string | undefined;
33
+ autoFocus?: boolean | undefined;
34
+ className?: string | undefined;
35
+ contentEditable?: "inherit" | (boolean | "true" | "false") | "plaintext-only" | undefined;
36
+ contextMenu?: string | undefined;
37
+ dir?: string | undefined;
38
+ draggable?: (boolean | "true" | "false") | undefined;
39
+ hidden?: boolean | undefined;
40
+ id?: string | undefined;
41
+ lang?: string | undefined;
42
+ nonce?: string | undefined;
43
+ spellCheck?: (boolean | "true" | "false") | undefined;
44
+ tabIndex?: number | undefined;
45
+ translate?: "no" | "yes" | undefined;
46
+ radioGroup?: string | undefined;
47
+ role?: import("react").AriaRole | undefined;
48
+ about?: string | undefined;
49
+ content?: string | undefined;
50
+ datatype?: string | undefined;
51
+ inlist?: any;
52
+ prefix?: string | undefined;
53
+ property?: string | undefined;
54
+ rel?: string | undefined;
55
+ resource?: string | undefined;
56
+ rev?: string | undefined;
57
+ typeof?: string | undefined;
58
+ vocab?: string | undefined;
59
+ autoCapitalize?: string | undefined;
60
+ autoCorrect?: string | undefined;
61
+ autoSave?: string | undefined;
62
+ color?: string | undefined;
63
+ itemProp?: string | undefined;
64
+ itemScope?: boolean | undefined;
65
+ itemType?: string | undefined;
66
+ itemID?: string | undefined;
67
+ itemRef?: string | undefined;
68
+ results?: number | undefined;
69
+ security?: string | undefined;
70
+ unselectable?: "on" | "off" | undefined;
71
+ inputMode?: "search" | "text" | "email" | "tel" | "url" | "none" | "numeric" | "decimal" | undefined;
72
+ is?: string | undefined;
73
+ "aria-activedescendant"?: string | undefined;
74
+ "aria-atomic"?: (boolean | "true" | "false") | undefined;
75
+ "aria-autocomplete"?: "list" | "none" | "inline" | "both" | undefined;
76
+ "aria-braillelabel"?: string | undefined;
77
+ "aria-brailleroledescription"?: string | undefined;
78
+ "aria-busy"?: (boolean | "true" | "false") | undefined;
79
+ "aria-checked"?: boolean | "true" | "false" | "mixed" | undefined;
80
+ "aria-colcount"?: number | undefined;
81
+ "aria-colindex"?: number | undefined;
82
+ "aria-colindextext"?: string | undefined;
83
+ "aria-colspan"?: number | undefined;
84
+ "aria-controls"?: string | undefined;
85
+ "aria-current"?: boolean | "time" | "step" | "date" | "true" | "false" | "page" | "location" | undefined;
86
+ "aria-describedby"?: string | undefined;
87
+ "aria-description"?: string | undefined;
88
+ "aria-details"?: string | undefined;
89
+ "aria-disabled"?: (boolean | "true" | "false") | undefined;
90
+ "aria-dropeffect"?: "link" | "none" | "copy" | "execute" | "move" | "popup" | undefined;
91
+ "aria-errormessage"?: string | undefined;
92
+ "aria-expanded"?: (boolean | "true" | "false") | undefined;
93
+ "aria-flowto"?: string | undefined;
94
+ "aria-grabbed"?: (boolean | "true" | "false") | undefined;
95
+ "aria-haspopup"?: boolean | "dialog" | "menu" | "grid" | "listbox" | "tree" | "true" | "false" | undefined;
96
+ "aria-hidden"?: (boolean | "true" | "false") | undefined;
97
+ "aria-invalid"?: boolean | "true" | "false" | "grammar" | "spelling" | undefined;
98
+ "aria-keyshortcuts"?: string | undefined;
99
+ "aria-label"?: string | undefined;
100
+ "aria-labelledby"?: string | undefined;
101
+ "aria-level"?: number | undefined;
102
+ "aria-live"?: "off" | "assertive" | "polite" | undefined;
103
+ "aria-modal"?: (boolean | "true" | "false") | undefined;
104
+ "aria-multiline"?: (boolean | "true" | "false") | undefined;
105
+ "aria-multiselectable"?: (boolean | "true" | "false") | undefined;
106
+ "aria-orientation"?: "horizontal" | "vertical" | undefined;
107
+ "aria-owns"?: string | undefined;
108
+ "aria-placeholder"?: string | undefined;
109
+ "aria-posinset"?: number | undefined;
110
+ "aria-pressed"?: boolean | "true" | "false" | "mixed" | undefined;
111
+ "aria-readonly"?: (boolean | "true" | "false") | undefined;
112
+ "aria-relevant"?: "text" | "additions" | "additions removals" | "additions text" | "all" | "removals" | "removals additions" | "removals text" | "text additions" | "text removals" | undefined;
113
+ "aria-required"?: (boolean | "true" | "false") | undefined;
114
+ "aria-roledescription"?: string | undefined;
115
+ "aria-rowcount"?: number | undefined;
116
+ "aria-rowindex"?: number | undefined;
117
+ "aria-rowindextext"?: string | undefined;
118
+ "aria-rowspan"?: number | undefined;
119
+ "aria-selected"?: (boolean | "true" | "false") | undefined;
120
+ "aria-setsize"?: number | undefined;
121
+ "aria-sort"?: "none" | "ascending" | "descending" | "other" | undefined;
122
+ "aria-valuemax"?: number | undefined;
123
+ "aria-valuemin"?: number | undefined;
124
+ "aria-valuenow"?: number | undefined;
125
+ "aria-valuetext"?: string | undefined;
126
+ dangerouslySetInnerHTML?: {
127
+ __html: string | TrustedHTML;
128
+ } | undefined;
129
+ onCopy?: import("react").ClipboardEventHandler<HTMLElement> | undefined;
130
+ onCopyCapture?: import("react").ClipboardEventHandler<HTMLElement> | undefined;
131
+ onCut?: import("react").ClipboardEventHandler<HTMLElement> | undefined;
132
+ onCutCapture?: import("react").ClipboardEventHandler<HTMLElement> | undefined;
133
+ onPaste?: import("react").ClipboardEventHandler<HTMLElement> | undefined;
134
+ onPasteCapture?: import("react").ClipboardEventHandler<HTMLElement> | undefined;
135
+ onCompositionEnd?: import("react").CompositionEventHandler<HTMLElement> | undefined;
136
+ onCompositionEndCapture?: import("react").CompositionEventHandler<HTMLElement> | undefined;
137
+ onCompositionStart?: import("react").CompositionEventHandler<HTMLElement> | undefined;
138
+ onCompositionStartCapture?: import("react").CompositionEventHandler<HTMLElement> | undefined;
139
+ onCompositionUpdate?: import("react").CompositionEventHandler<HTMLElement> | undefined;
140
+ onCompositionUpdateCapture?: import("react").CompositionEventHandler<HTMLElement> | undefined;
141
+ onFocus?: import("react").FocusEventHandler<HTMLElement> | undefined;
142
+ onFocusCapture?: import("react").FocusEventHandler<HTMLElement> | undefined;
143
+ onBlur?: import("react").FocusEventHandler<HTMLElement> | undefined;
144
+ onBlurCapture?: import("react").FocusEventHandler<HTMLElement> | undefined;
145
+ onChange?: (import("react").FormEventHandler<HTMLElement> & ChangeEventHandler<HTMLElement>) | undefined;
146
+ onChangeCapture?: import("react").FormEventHandler<HTMLElement> | undefined;
147
+ onBeforeInput?: import("react").FormEventHandler<HTMLElement> | undefined;
148
+ onBeforeInputCapture?: import("react").FormEventHandler<HTMLElement> | undefined;
149
+ onInput?: import("react").FormEventHandler<HTMLElement> | undefined;
150
+ onInputCapture?: import("react").FormEventHandler<HTMLElement> | undefined;
151
+ onReset?: import("react").FormEventHandler<HTMLElement> | undefined;
152
+ onResetCapture?: import("react").FormEventHandler<HTMLElement> | undefined;
153
+ onSubmit?: import("react").FormEventHandler<HTMLElement> | undefined;
154
+ onSubmitCapture?: import("react").FormEventHandler<HTMLElement> | undefined;
155
+ onInvalid?: import("react").FormEventHandler<HTMLElement> | undefined;
156
+ onInvalidCapture?: import("react").FormEventHandler<HTMLElement> | undefined;
157
+ onLoad?: import("react").ReactEventHandler<HTMLElement> | undefined;
158
+ onLoadCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
159
+ onError?: import("react").ReactEventHandler<HTMLElement> | undefined;
160
+ onErrorCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
161
+ onKeyDown?: import("react").KeyboardEventHandler<HTMLElement> | undefined;
162
+ onKeyDownCapture?: import("react").KeyboardEventHandler<HTMLElement> | undefined;
163
+ onKeyPress?: import("react").KeyboardEventHandler<HTMLElement> | undefined;
164
+ onKeyPressCapture?: import("react").KeyboardEventHandler<HTMLElement> | undefined;
165
+ onKeyUp?: import("react").KeyboardEventHandler<HTMLElement> | undefined;
166
+ onKeyUpCapture?: import("react").KeyboardEventHandler<HTMLElement> | undefined;
167
+ onAbort?: import("react").ReactEventHandler<HTMLElement> | undefined;
168
+ onAbortCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
169
+ onCanPlay?: import("react").ReactEventHandler<HTMLElement> | undefined;
170
+ onCanPlayCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
171
+ onCanPlayThrough?: import("react").ReactEventHandler<HTMLElement> | undefined;
172
+ onCanPlayThroughCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
173
+ onDurationChange?: import("react").ReactEventHandler<HTMLElement> | undefined;
174
+ onDurationChangeCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
175
+ onEmptied?: import("react").ReactEventHandler<HTMLElement> | undefined;
176
+ onEmptiedCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
177
+ onEncrypted?: import("react").ReactEventHandler<HTMLElement> | undefined;
178
+ onEncryptedCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
179
+ onEnded?: import("react").ReactEventHandler<HTMLElement> | undefined;
180
+ onEndedCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
181
+ onLoadedData?: import("react").ReactEventHandler<HTMLElement> | undefined;
182
+ onLoadedDataCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
183
+ onLoadedMetadata?: import("react").ReactEventHandler<HTMLElement> | undefined;
184
+ onLoadedMetadataCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
185
+ onLoadStart?: import("react").ReactEventHandler<HTMLElement> | undefined;
186
+ onLoadStartCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
187
+ onPause?: import("react").ReactEventHandler<HTMLElement> | undefined;
188
+ onPauseCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
189
+ onPlay?: import("react").ReactEventHandler<HTMLElement> | undefined;
190
+ onPlayCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
191
+ onPlaying?: import("react").ReactEventHandler<HTMLElement> | undefined;
192
+ onPlayingCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
193
+ onProgress?: import("react").ReactEventHandler<HTMLElement> | undefined;
194
+ onProgressCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
195
+ onRateChange?: import("react").ReactEventHandler<HTMLElement> | undefined;
196
+ onRateChangeCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
197
+ onResize?: import("react").ReactEventHandler<HTMLElement> | undefined;
198
+ onResizeCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
199
+ onSeeked?: import("react").ReactEventHandler<HTMLElement> | undefined;
200
+ onSeekedCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
201
+ onSeeking?: import("react").ReactEventHandler<HTMLElement> | undefined;
202
+ onSeekingCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
203
+ onStalled?: import("react").ReactEventHandler<HTMLElement> | undefined;
204
+ onStalledCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
205
+ onSuspend?: import("react").ReactEventHandler<HTMLElement> | undefined;
206
+ onSuspendCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
207
+ onTimeUpdate?: import("react").ReactEventHandler<HTMLElement> | undefined;
208
+ onTimeUpdateCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
209
+ onVolumeChange?: import("react").ReactEventHandler<HTMLElement> | undefined;
210
+ onVolumeChangeCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
211
+ onWaiting?: import("react").ReactEventHandler<HTMLElement> | undefined;
212
+ onWaitingCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
213
+ onAuxClick?: import("react").MouseEventHandler<HTMLElement> | undefined;
214
+ onAuxClickCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
215
+ onClick?: import("react").MouseEventHandler<HTMLElement> | undefined;
216
+ onClickCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
217
+ onContextMenu?: import("react").MouseEventHandler<HTMLElement> | undefined;
218
+ onContextMenuCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
219
+ onDoubleClick?: import("react").MouseEventHandler<HTMLElement> | undefined;
220
+ onDoubleClickCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
221
+ onDrag?: import("react").DragEventHandler<HTMLElement> | undefined;
222
+ onDragCapture?: import("react").DragEventHandler<HTMLElement> | undefined;
223
+ onDragEnd?: import("react").DragEventHandler<HTMLElement> | undefined;
224
+ onDragEndCapture?: import("react").DragEventHandler<HTMLElement> | undefined;
225
+ onDragEnter?: import("react").DragEventHandler<HTMLElement> | undefined;
226
+ onDragEnterCapture?: import("react").DragEventHandler<HTMLElement> | undefined;
227
+ onDragExit?: import("react").DragEventHandler<HTMLElement> | undefined;
228
+ onDragExitCapture?: import("react").DragEventHandler<HTMLElement> | undefined;
229
+ onDragLeave?: import("react").DragEventHandler<HTMLElement> | undefined;
230
+ onDragLeaveCapture?: import("react").DragEventHandler<HTMLElement> | undefined;
231
+ onDragOver?: import("react").DragEventHandler<HTMLElement> | undefined;
232
+ onDragOverCapture?: import("react").DragEventHandler<HTMLElement> | undefined;
233
+ onDragStart?: import("react").DragEventHandler<HTMLElement> | undefined;
234
+ onDragStartCapture?: import("react").DragEventHandler<HTMLElement> | undefined;
235
+ onDrop?: import("react").DragEventHandler<HTMLElement> | undefined;
236
+ onDropCapture?: import("react").DragEventHandler<HTMLElement> | undefined;
237
+ onMouseDown?: import("react").MouseEventHandler<HTMLElement> | undefined;
238
+ onMouseDownCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
239
+ onMouseEnter?: import("react").MouseEventHandler<HTMLElement> | undefined;
240
+ onMouseLeave?: import("react").MouseEventHandler<HTMLElement> | undefined;
241
+ onMouseMove?: import("react").MouseEventHandler<HTMLElement> | undefined;
242
+ onMouseMoveCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
243
+ onMouseOut?: import("react").MouseEventHandler<HTMLElement> | undefined;
244
+ onMouseOutCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
245
+ onMouseOver?: import("react").MouseEventHandler<HTMLElement> | undefined;
246
+ onMouseOverCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
247
+ onMouseUp?: import("react").MouseEventHandler<HTMLElement> | undefined;
248
+ onMouseUpCapture?: import("react").MouseEventHandler<HTMLElement> | undefined;
249
+ onSelect?: import("react").ReactEventHandler<HTMLElement> | undefined;
250
+ onSelectCapture?: import("react").ReactEventHandler<HTMLElement> | undefined;
251
+ onTouchCancel?: import("react").TouchEventHandler<HTMLElement> | undefined;
252
+ onTouchCancelCapture?: import("react").TouchEventHandler<HTMLElement> | undefined;
253
+ onTouchEnd?: import("react").TouchEventHandler<HTMLElement> | undefined;
254
+ onTouchEndCapture?: import("react").TouchEventHandler<HTMLElement> | undefined;
255
+ onTouchMove?: import("react").TouchEventHandler<HTMLElement> | undefined;
256
+ onTouchMoveCapture?: import("react").TouchEventHandler<HTMLElement> | undefined;
257
+ onTouchStart?: import("react").TouchEventHandler<HTMLElement> | undefined;
258
+ onTouchStartCapture?: import("react").TouchEventHandler<HTMLElement> | undefined;
259
+ onPointerDown?: import("react").PointerEventHandler<HTMLElement> | undefined;
260
+ onPointerDownCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
261
+ onPointerMove?: import("react").PointerEventHandler<HTMLElement> | undefined;
262
+ onPointerMoveCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
263
+ onPointerUp?: import("react").PointerEventHandler<HTMLElement> | undefined;
264
+ onPointerUpCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
265
+ onPointerCancel?: import("react").PointerEventHandler<HTMLElement> | undefined;
266
+ onPointerCancelCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
267
+ onPointerEnter?: import("react").PointerEventHandler<HTMLElement> | undefined;
268
+ onPointerLeave?: import("react").PointerEventHandler<HTMLElement> | undefined;
269
+ onPointerOver?: import("react").PointerEventHandler<HTMLElement> | undefined;
270
+ onPointerOverCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
271
+ onPointerOut?: import("react").PointerEventHandler<HTMLElement> | undefined;
272
+ onPointerOutCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
273
+ onGotPointerCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
274
+ onGotPointerCaptureCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
275
+ onLostPointerCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
276
+ onLostPointerCaptureCapture?: import("react").PointerEventHandler<HTMLElement> | undefined;
277
+ onScroll?: import("react").UIEventHandler<HTMLElement> | undefined;
278
+ onScrollCapture?: import("react").UIEventHandler<HTMLElement> | undefined;
279
+ onWheel?: import("react").WheelEventHandler<HTMLElement> | undefined;
280
+ onWheelCapture?: import("react").WheelEventHandler<HTMLElement> | undefined;
281
+ onAnimationStart?: import("react").AnimationEventHandler<HTMLElement> | undefined;
282
+ onAnimationStartCapture?: import("react").AnimationEventHandler<HTMLElement> | undefined;
283
+ onAnimationEnd?: import("react").AnimationEventHandler<HTMLElement> | undefined;
284
+ onAnimationEndCapture?: import("react").AnimationEventHandler<HTMLElement> | undefined;
285
+ onAnimationIteration?: import("react").AnimationEventHandler<HTMLElement> | undefined;
286
+ onAnimationIterationCapture?: import("react").AnimationEventHandler<HTMLElement> | undefined;
287
+ onTransitionEnd?: import("react").TransitionEventHandler<HTMLElement> | undefined;
288
+ onTransitionEndCapture?: import("react").TransitionEventHandler<HTMLElement> | undefined;
22
289
  value?: string | undefined;
23
- onChange?: ChangeEventHandler<HTMLElement> | undefined;
24
290
  };
25
291
  export declare const useInputValueApi: <T extends InputValueApi = InputValueApi>() => T;
@@ -1,4 +1,5 @@
1
1
  import { createContext, useContext } from "react";
2
+ import { useComposedRefs } from "../../../node_modules/@radix-ui/react-compose-refs/dist/index.js";
2
3
  import { combineHandlers } from "../../../Helpers/react.utils.js";
3
4
  const Context = createContext(null);
4
5
  const ContextProvider = Context.Provider;
@@ -9,20 +10,23 @@ const useInputValue = () => {
9
10
  }
10
11
  return context;
11
12
  };
12
- const useInputValueProps = (customProps) => {
13
+ const useInputValueProps = (customProps, inputRef) => {
13
14
  const {
14
15
  props
15
16
  } = useInputValue();
16
- if (!customProps) return props;
17
+ const ref = useComposedRefs(inputRef, props.ref);
17
18
  const mergedProps = {
18
- ...props
19
+ ...props,
20
+ ref
19
21
  };
20
- const keys = Object.keys(props);
21
- keys.forEach((key) => {
22
- if (typeof props[key] === "function" && key in customProps) {
23
- mergedProps[key] = combineHandlers(props[key], customProps[key]);
24
- }
25
- });
22
+ if (customProps) {
23
+ const keys = Object.keys(props);
24
+ keys.forEach((key) => {
25
+ if (key !== "ref" && typeof props[key] === "function" && key in customProps) {
26
+ mergedProps[key] = combineHandlers(props[key], customProps[key]);
27
+ }
28
+ });
29
+ }
26
30
  return mergedProps;
27
31
  };
28
32
  const useInputValueApi = () => useInputValue().api;
@@ -25,12 +25,17 @@ const InputValueProvider = ({
25
25
  onChange: setInputValue,
26
26
  ...restProps
27
27
  });
28
+ const inputRef = React.useRef(null);
28
29
  const context = React.useMemo(() => ({
29
30
  api: {
30
31
  value: inputProps.value,
31
- resetValue: () => forceChange("")
32
+ resetValue: () => forceChange(""),
33
+ inputRef
32
34
  },
33
- props: inputProps
35
+ props: {
36
+ ...inputProps,
37
+ ref: inputRef
38
+ }
34
39
  }), [forceChange, inputProps]);
35
40
  return jsxRuntime.jsxRuntimeExports.jsx(InputValue_context.ContextProvider, {
36
41
  value: context,
@@ -1,5 +1,5 @@
1
1
  import { j as jsxRuntimeExports } from "../../../node_modules/react/jsx-runtime.js";
2
- import { useMemo } from "react";
2
+ import { useRef, useMemo } from "react";
3
3
  import { useControllableState } from "../../../node_modules/@radix-ui/react-use-controllable-state/dist/index.js";
4
4
  import { ContextProvider } from "./InputValue.context.js";
5
5
  import { useFormatInput } from "../../hooks/formatInput/useFormatInput.js";
@@ -23,12 +23,17 @@ const InputValueProvider = ({
23
23
  onChange: setInputValue,
24
24
  ...restProps
25
25
  });
26
+ const inputRef = useRef(null);
26
27
  const context = useMemo(() => ({
27
28
  api: {
28
29
  value: inputProps.value,
29
- resetValue: () => forceChange("")
30
+ resetValue: () => forceChange(""),
31
+ inputRef
30
32
  },
31
- props: inputProps
33
+ props: {
34
+ ...inputProps,
35
+ ref: inputRef
36
+ }
32
37
  }), [forceChange, inputProps]);
33
38
  return jsxRuntimeExports.jsx(ContextProvider, {
34
39
  value: context,
@@ -29,8 +29,10 @@ const NumericInputValueProvider = ({
29
29
  onChange: setInputValue,
30
30
  ...restProps
31
31
  });
32
+ const inputRef = React.useRef(null);
32
33
  const context = React.useMemo(() => ({
33
34
  api: {
35
+ inputRef,
34
36
  value: inputProps.value,
35
37
  resetValue: () => forceChange(""),
36
38
  canIncrement,
@@ -38,7 +40,10 @@ const NumericInputValueProvider = ({
38
40
  increment,
39
41
  decrement
40
42
  },
41
- props: inputProps
43
+ props: {
44
+ ...inputProps,
45
+ ref: inputRef
46
+ }
42
47
  }), [inputProps, canIncrement, canDecrement, increment, decrement, forceChange]);
43
48
  return jsxRuntime.jsxRuntimeExports.jsx(InputValue_context.ContextProvider, {
44
49
  value: context,