Files
planka/client/src/hooks/use-closable-form.js
Maksim Eltyshev 5ffef61fe7 Initial commit
2019-08-31 04:07:25 +05:00

30 lines
656 B
JavaScript

import { useCallback, useEffect, useRef } from 'react';
export default (isOpened, close) => {
const isClosable = useRef(null);
const handleFieldBlur = useCallback(() => {
if (isClosable.current) {
close();
}
}, [close]);
const handleControlMouseOver = useCallback(() => {
isClosable.current = false;
}, []);
const handleControlMouseOut = useCallback(() => {
isClosable.current = true;
}, []);
useEffect(() => {
if (isOpened) {
isClosable.current = true;
} else {
isClosable.current = null;
}
}, [isOpened]);
return [handleFieldBlur, handleControlMouseOver, handleControlMouseOut];
};