UNPKG

test-crud

Version:

es una prueba acerca de como publicar un package name

86 lines (75 loc) 2.12 kB
import React, { useEffect, useRef, useState } from 'react' import { useFormikContext } from 'formik' import NumericInput from '../inputs/textField/NumericInput' function AppNumericInput({ name, label, prefix = '', defaultValue = '', onBlur = null, customButton = null || <></>, predefinido = '', ...rest }) { const [value, setValue] = useState(defaultValue) const { setFieldValue, setFieldTouched, errors, touched, values, initialValues, } = useFormikContext() const [currentCaretPos, setCurrentCaretPos] = useState() const inputRef = useRef() useEffect(() => { setValue(values[name]) setFieldValue(name, values[name]) if (defaultValue) { setValue(defaultValue) setFieldValue(name, defaultValue) if (defaultValue == '0') { setValue('') setFieldValue(name, '') } } }, [initialValues, defaultValue]) useEffect(() => { if (predefinido && predefinido != '') { setValue(predefinido) setFieldValue(name, predefinido) } }, [predefinido]) useEffect(() => { inputRef.current.selectionStart = currentCaretPos inputRef.current.selectionEnd = currentCaretPos }, [currentCaretPos]) return ( <div> <NumericInput value={value} label={label} onBlur={() => { setFieldTouched(name) if (onBlur) onBlur(value) }} onChange={(event) => { setValue(event.target.value) setFieldValue(name, event.target.value) let newCaretPos = inputRef.current.selectionStart setCurrentCaretPos(newCaretPos) }} touched={touched[name]} error={touched[name] && errors[name] ? true : false} helperText={touched[name] && errors[name] ? errors[name] : ''} rightIcon={touched[name] && !errors[name] && 'fa-solid fa-circle-check'} color={touched[name] && !errors[name] ? 'success' : ''} inputRef={inputRef} customButton={customButton} prefix={prefix} {...rest} /> </div> ) } export default AppNumericInput