Skip to content

Commit f9322d2

Browse files
committed
feat: checkMediaQuries
- queryElements() selectors support @xs etc.
1 parent 4519b7c commit f9322d2

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

src/index.js

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,12 @@
306306

307307
let selectors = Selector.split(',');
308308
for (let j = 0; j < selectors.length; j++) {
309+
if (selectors[j].includes('@')) {
310+
selectors[j] = checkMediaQueries(selectors[j])
311+
if (selectors[j] === false)
312+
continue
313+
}
314+
309315
let queriedElement = element
310316
let specialSelectors = selectors[j].split(';')
311317
for (let k = 0; k < specialSelectors.length; k++) {
@@ -383,6 +389,41 @@
383389
return elements
384390
}
385391

392+
const mediaRanges = {
393+
xs: [0, 575],
394+
sm: [576, 768],
395+
md: [769, 992],
396+
lg: [993, 1200],
397+
xl: [1201, 0],
398+
};
399+
400+
function checkMediaQueries(selector) {
401+
if (selector && selector.includes('@')) {
402+
let screenSizes = selector.split('@')
403+
selector = screenSizes.shift();
404+
for (let screenSize of screenSizes) {
405+
const viewportWidth = window.innerWidth;
406+
let mediaViewport = false;
407+
408+
// Check if screenSize is a valid range in the 'ranges' object
409+
if (mediaRanges.hasOwnProperty(screenSize)) {
410+
const [minWidth, maxWidth] = mediaRanges[screenSize];
411+
if (viewportWidth >= minWidth && viewportWidth <= maxWidth) {
412+
mediaViewport = true;
413+
break;
414+
}
415+
}
416+
417+
if (!mediaViewport)
418+
return false
419+
420+
}
421+
}
422+
423+
return selector
424+
}
425+
426+
386427
function queryData(data, query) {
387428
if (!data)
388429
return false;
@@ -668,6 +709,7 @@
668709
escapeHtml,
669710
cssPath,
670711
queryElements,
712+
checkMediaQueries,
671713
queryData,
672714
searchData,
673715
sortData,

0 commit comments

Comments
 (0)