All files / src/hooks/common useDatePicker.ts

0% Statements 0/21
0% Branches 0/3
0% Functions 0/6
0% Lines 0/20

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39                                                                             
import { useEffect, useRef } from "react";
import { useDropdownContext } from "../../contexts/DropdownContext.tsx";
import { findClosestPopup } from "../../utils/common/findClosestPopup.ts";
 
const useDatePicker = () => {
  const pickerRef = useRef(null);
  const { registerRef } = useDropdownContext();
 
  useEffect(() => {
    Iif (pickerRef.current) {
      registerRef(pickerRef);
    }
 
    const observer = new MutationObserver((mutations) => {
      mutations.forEach((mutation) => {
        Iif (mutation.type === "childList") {
          mutation.addedNodes.forEach((node) => {
            const popup = findClosestPopup(node);
            Iif (popup) {
              registerRef({ current: popup });
            }
          });
        }
      });
    });
 
    observer.observe(document.body, {
      childList: true,
      subtree: true,
    });
 
    return () => observer.disconnect();
  }, [pickerRef, registerRef]);
 
  return pickerRef;
};
 
export default useDatePicker;