@modern-kit/react
Version:
40 lines (36 loc) • 1.21 kB
JavaScript
;
var React = require('react');
var hooksUsePreservedCallback = require('../usePreservedCallback/index.cjs');
var utils = require('@modern-kit/utils');
function useInputState(initialValue = "", options = {}) {
const { validate } = options;
const [value, setValue] = React.useState(initialValue);
const [error, setError] = React.useState(null);
const preservedValidate = hooksUsePreservedCallback.usePreservedCallback(validate ?? utils.noop);
const onChange = React.useCallback(
(e) => {
const { value: value2 } = e.target;
const validationError = preservedValidate(value2);
if (validationError) {
setError(validationError);
} else {
setError(null);
}
setValue(value2);
},
[preservedValidate]
);
const resetError = React.useCallback(() => {
setError(null);
}, []);
const resetValue = React.useCallback(() => {
setValue(initialValue);
}, [initialValue]);
const reset = React.useCallback(() => {
resetValue();
resetError();
}, [resetValue, resetError]);
return { value, error, onChange, resetError, resetValue, reset };
}
exports.useInputState = useInputState;
//# sourceMappingURL=index.cjs.map