browser-utils.ts 653 B

123456789101112131415161718
  1. import { Breakpoint } from '../interfaces/breakpoints';
  2. export const addBreakpointListener = (
  3. breakpoint: Breakpoint,
  4. // eslint-disable-next-line @typescript-eslint/no-explicit-any
  5. listener: (this: MediaQueryList, ev: MediaQueryListEvent) => any,
  6. ): MediaQueryList => {
  7. // get the value of '--breakpoint-*'
  8. const breakpointPixel = parseInt(window.getComputedStyle(document.documentElement).getPropertyValue(`--breakpoint-${breakpoint}`), 10);
  9. const mediaQueryList = window.matchMedia(`(min-width: ${breakpointPixel}px)`);
  10. // add event listener
  11. mediaQueryList.addEventListener('change', listener);
  12. return mediaQueryList;
  13. };