Advertisement
Guest User

Untitled

a guest
Jun 25th, 2019
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.78 KB | None | 0 0
  1. /**
  2. * Register callback function for HTMLElement to be executed when user clicks outside of element.
  3. * @example
  4. ```
  5. <span
  6. ref={spanEl => registerClickOutside(spanEl, () => this.test())}>
  7. Hello, World!
  8. </span>;
  9. ```
  10. */
  11. export function registerClickOutside(
  12. component: ComponentInstance,
  13. element: HTMLClickOutsideElement,
  14. callback: () => void
  15. ): void {
  16. if (!element.clickOutsideRegistered) {
  17. window.addEventListener(
  18. "click",
  19. (e: Event) => {
  20. const target = e.target as HTMLElement;
  21. if (!element.contains(target)) {
  22. callback.call(component);
  23. }
  24. },
  25. false
  26. );
  27. element.clickOutsideRegistered = true;
  28. }
  29. }
  30.  
  31. export interface HTMLClickOutsideElement extends HTMLStencilElement {
  32. clickOutsideRegistered?: boolean;
  33. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement