Add O-counter (#334)

This commit is contained in:
Infinite
2020-02-08 16:54:20 +01:00
parent f23247d9c8
commit e6d9d385a7
11 changed files with 369 additions and 11 deletions

View File

@@ -7,6 +7,8 @@ interface IHoverPopover {
content: JSX.Element[] | JSX.Element | string;
className?: string;
placement?: OverlayProps["placement"];
onOpen?: () => void;
onClose?: () => void;
}
export const HoverPopover: React.FC<IHoverPopover> = ({
@@ -15,7 +17,9 @@ export const HoverPopover: React.FC<IHoverPopover> = ({
content,
children,
className,
placement = "top"
placement = "top",
onOpen,
onClose
}) => {
const [show, setShow] = useState(false);
const triggerRef = useRef<HTMLDivElement>(null);
@@ -24,13 +28,19 @@ export const HoverPopover: React.FC<IHoverPopover> = ({
const handleMouseEnter = useCallback(() => {
window.clearTimeout(leaveTimer.current);
enterTimer.current = window.setTimeout(() => setShow(true), enterDelay);
}, [enterDelay]);
enterTimer.current = window.setTimeout(() => {
setShow(true)
onOpen?.();
}, enterDelay);
}, [enterDelay, onOpen]);
const handleMouseLeave = useCallback(() => {
window.clearTimeout(enterTimer.current);
leaveTimer.current = window.setTimeout(() => setShow(false), leaveDelay);
}, [leaveDelay]);
leaveTimer.current = window.setTimeout(() => {
setShow(false)
onClose?.();
}, leaveDelay);
}, [leaveDelay, onClose]);
useEffect(
() => () => {