import { InputHTMLAttributes, useEffect, useRef } from 'react'; import Inputmask from 'inputmask'; import { classNames } from '@/shared/lib/classNames/classNames'; import cls from './Input.module.scss'; type HTMLInputProps = Omit, 'value' | 'onChange'>; interface InputProps extends HTMLInputProps { className?: string; value?: string; onChange?: (value: string) => void; inputRef?: (ref: any) => void; mask?: string; maskOptions?: any; } export const Input = (props: InputProps) => { const { className, value, onChange, inputRef, mask, maskOptions, ...otherProps } = props; const inputRefValue = useRef(null); if (inputRefValue.current && (mask || maskOptions)) new Inputmask(mask, maskOptions).mask(inputRefValue.current); useEffect(() => { if (inputRef) inputRef(inputRefValue.current); }, [inputRefValue.current]); return ( onChange?.(e.target.value)} {...otherProps} /> ); };