webpack-bootstrap-ui-kit/src/js/main/css-screen-size.js

55 lines
1.2 KiB
JavaScript
Raw Normal View History

2021-08-09 18:04:09 +02:00
// browser tab visibility state detection
2022-05-03 20:50:57 +02:00
import Events from '../_events'
import Consts from '../_consts'
2021-08-09 18:04:09 +02:00
export default ((W) => {
2022-05-03 20:50:57 +02:00
const NAME = '_main.css-screen-size'
const D = document
const BODY = D.body
2021-08-09 18:04:09 +02:00
const detectCSSScreenSize = () => {
2022-05-03 20:50:57 +02:00
const el = D.createElement('div')
el.className = 'env-test'
BODY.appendChild(el)
2021-08-09 18:04:09 +02:00
2022-05-03 20:50:57 +02:00
const envs = [...Consts.ENVS].reverse()
let curEnv = envs.shift()
BODY.classList.remove(...envs)
2021-08-09 18:04:09 +02:00
for (let i = 0; i < envs.length; ++i) {
2022-05-03 20:50:57 +02:00
const env = envs[i]
el.classList.add(`d-${env}-none`)
2021-08-09 18:04:09 +02:00
2022-05-03 20:50:57 +02:00
if (W.getComputedStyle(el).display === 'none') {
curEnv = env
BODY.classList.add(`${curEnv}`)
break
2021-08-09 18:04:09 +02:00
}
}
2022-05-03 20:50:57 +02:00
let landscape = true
2021-08-09 18:04:09 +02:00
if (W.innerWidth > W.innerHeight) {
2022-05-03 20:50:57 +02:00
BODY.classList.add('landscape')
BODY.classList.remove('portrait')
2021-08-09 18:04:09 +02:00
} else {
2022-05-03 20:50:57 +02:00
landscape = false
2021-08-09 18:04:09 +02:00
2022-05-03 20:50:57 +02:00
BODY.classList.add('portrait')
BODY.classList.remove('landscape')
2021-08-09 18:04:09 +02:00
}
console.log(
2021-08-18 20:51:15 +02:00
`${NAME}: screen size detected ${curEnv} | landscape ${landscape}`
2022-05-03 20:50:57 +02:00
)
2021-08-09 18:04:09 +02:00
2022-05-03 20:50:57 +02:00
BODY.removeChild(el)
2021-08-09 18:04:09 +02:00
2022-05-03 20:50:57 +02:00
return curEnv
}
2021-08-09 18:04:09 +02:00
2022-05-03 20:50:57 +02:00
W.addEventListener(`${Events.LOADED}`, detectCSSScreenSize)
2021-08-09 18:04:09 +02:00
2022-05-03 20:50:57 +02:00
W.addEventListener(`${Events.RESIZE}`, detectCSSScreenSize)
})(window)