diff --git a/UPCOMING.md b/UPCOMING.md index e69de29..675007d 100644 --- a/UPCOMING.md +++ b/UPCOMING.md @@ -0,0 +1,3 @@ +# Fix + +- Fixed `isMobileView()` so it no longer throws when the default `.mobileNavigation` element is missing. Falls back to a `715px` viewport-width check diff --git a/src/js/modules/mobile-view.js b/src/js/modules/mobile-view.js index 5c92104..591f933 100644 --- a/src/js/modules/mobile-view.js +++ b/src/js/modules/mobile-view.js @@ -1,5 +1,7 @@ import { debounce } from '../index'; +const DEFAULT_MOBILE_VIEW_MAX_WIDTH = 715; + /** * Check if is a mobile device based on Agent * @param {string} agent @@ -13,11 +15,16 @@ export function isMobileAgent(agent = navigator.userAgent) { /** * Check if is a mobile based on selector being visible frontend * @param {string} selector + * @param {number} fallbackWidth * @returns {boolean} * @example isMobileView() */ -export function isMobileView(selector = '.mobileNavigation') { - return document.querySelector(selector).offsetParent !== null; +export function isMobileView(selector = '.mobileNavigation', fallbackWidth = DEFAULT_MOBILE_VIEW_MAX_WIDTH) { + const element = document.querySelector(selector); + + return element ? + (element.offsetParent !== null) : + window.matchMedia(`(max-width: ${fallbackWidth}px)`).matches; } /**