@heymarco/next-auth
Version:
A complete authentication solution for web applications.
39 lines (38 loc) • 1.02 kB
JavaScript
'use client';
// react:
import {
// hooks:
useState, useMemo, } from 'react';
// reusable-ui core:
import {
// react helper hooks:
useEvent, } from '@reusable-ui/core'; // a set of reusable-ui packages which are responsible for building any component
export const useFieldState = (options) => {
// states:
const [field, setField] = useState('');
const [isFocus, setIsFocus] = useState(false);
// handlers:
const handleFieldChange = useEvent((event) => {
setField(event.target.value);
options?.onChange?.(event);
});
const handleFocus = useEvent((event) => {
setIsFocus(true);
options?.onFocus?.(event);
});
const handleBlur = useEvent((event) => {
setIsFocus(false);
options?.onBlur?.(event);
});
// api:
return [
field,
setField,
isFocus,
useMemo(() => ({
onChange: handleFieldChange,
onFocus: handleFocus,
onBlur: handleBlur,
}), []),
];
};