@hoddy-ui/next 2.0.26 → 2.0.27

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.
package/dist/index.js CHANGED
@@ -2041,6 +2041,36 @@ var OTPInput = ({
2041
2041
  () => Array(length).fill(0).map((_) => import_react20.default.createRef()),
2042
2042
  [length]
2043
2043
  );
2044
+ console.log("v", value);
2045
+ const onChangeHandler = (val, index) => {
2046
+ if (value.length >= length && val.length > 0)
2047
+ return;
2048
+ if (val.length > 1) {
2049
+ console.log("reached", val);
2050
+ const digits = val.replace(/\D/g, "").slice(0, length);
2051
+ onChange(digits);
2052
+ if (digits.length === length) {
2053
+ inputRefs[length - 1].current?.focus();
2054
+ }
2055
+ return;
2056
+ }
2057
+ if (val.length === 0) {
2058
+ const newValue2 = value.slice(0, index) + value.slice(index + 1);
2059
+ onChange(newValue2);
2060
+ if (index > 0) {
2061
+ inputRefs[index - 1].current?.focus();
2062
+ }
2063
+ return;
2064
+ }
2065
+ const digit = val.replace(/\D/g, "").slice(0, 1);
2066
+ if (!digit)
2067
+ return;
2068
+ const newValue = value.slice(0, index) + digit + value.slice(index + 1);
2069
+ onChange(newValue);
2070
+ if (index < length - 1) {
2071
+ inputRefs[index + 1].current?.focus();
2072
+ }
2073
+ };
2044
2074
  const colors2 = useColors();
2045
2075
  const styles2 = import_react_native_size_matters19.ScaledSheet.create({
2046
2076
  root: {},
@@ -2063,27 +2093,7 @@ var OTPInput = ({
2063
2093
  import_react_native22.TextInput,
2064
2094
  {
2065
2095
  ref: inputRefs[index],
2066
- onChangeText: (val) => {
2067
- if (val.length === 1) {
2068
- if (index !== length - 1)
2069
- inputRefs[index + 1].current?.focus();
2070
- let text = value;
2071
- text = text.slice(0, index) + val + text.slice(index + 1);
2072
- onChange(text);
2073
- } else if (val.length === 0) {
2074
- if (index !== 0) {
2075
- inputRefs[index - 1].current?.focus();
2076
- let text = value;
2077
- text = text.slice(0, index);
2078
- onChange(text);
2079
- } else
2080
- onChange("");
2081
- } else {
2082
- let text = val.replace(/\D/g, "").slice(0, length);
2083
- onChange(text);
2084
- inputRefs[text.length < length - 1 ? text.length : length - 1]?.current?.focus();
2085
- }
2086
- },
2096
+ onChangeText: (val) => onChangeHandler(val, index),
2087
2097
  value: value[index] || "",
2088
2098
  blurOnSubmit: false,
2089
2099
  keyboardType: "number-pad",