2019-08-31 04:07:25 +05:00
|
|
|
import { useCallback, useEffect, useRef } from 'react';
|
|
|
|
|
2020-05-16 04:09:46 +05:00
|
|
|
export default (close, isOpened = true) => {
|
2019-08-31 04:07:25 +05:00
|
|
|
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];
|
|
|
|
};
|