Skip to content

Instantly share code, notes, and snippets.

@sbeugen
Created May 5, 2019 09:49
Show Gist options
  • Select an option

  • Save sbeugen/9320c44afa6b2db9badcb79b65ebd53c to your computer and use it in GitHub Desktop.

Select an option

Save sbeugen/9320c44afa6b2db9badcb79b65ebd53c to your computer and use it in GitHub Desktop.
/* global $ */
import { useEffect, useRef, useCallback } from "react";
const useErrorPopover = errorMessage => {
const elementRef = useRef(null);
const showPopover = useCallback(
() => {
if (errorMessage) {
$(elementRef.current)
.popover({
content: errorMessage,
template:
'<div class="popover" role="tooltip"><div class="arrow"></div><div class="popover-body"></div></div>'
})
.popover("show");
}
},
[errorMessage]
);
const hidePopover = useCallback(() => {
$(elementRef.current).popover("hide");
}, []);
useEffect(
() => {
const element = elementRef.current;
if (element) {
element.onfocus = showPopover;
element.onblur = hidePopover;
}
if (!errorMessage) {
hidePopover();
}
},
[errorMessage, showPopover, hidePopover]
);
return elementRef;
};
export default useErrorPopover;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment