side_menu/templates/js/_alwaysDisplayed.js

87 lines
2.2 KiB
JavaScript
Raw Normal View History

const alwaysDisplayed = function() {
const elements = querySelectorAll('*')
const fixedElements = []
for (var element of elements) {
if (typeof element !== 'object') {
continue
}
2021-10-29 11:27:45 +02:00
const position = window.getComputedStyle(element, null).getPropertyValue('position')
if (position !== 'fixed') {
continue
}
const id = element.getAttribute('id')
if (id === 'header' || id === 'side-menu' || id === 'side-menu-loader') {
continue
}
if (element.classList.contains('oc-dialog')) {
continue
}
2021-10-28 15:47:03 +02:00
let elementIsInSideMenu = false
let parent = element.parentNode
while (parent && !elementIsInSideMenu) {
try {
if (parent.getAttribute('id') === 'side-menu') {
elementIsInSideMenu = true
}
} catch (e) {
}
parent = parent.parentNode
}
if (elementIsInSideMenu) {
continue
}
fixedElements.push(element)
}
for (var i in fixedElements) {
const element = fixedElements[i]
const computedStyle = window.getComputedStyle(element, null)
const left = computedStyle.getPropertyValue('left')
const right = computedStyle.getPropertyValue('right')
2020-10-21 18:05:36 +02:00
if (right !== '0px') {
const intValue = parseInt(left.replace('px', '')) + 50
element.style.setProperty('transform', 'translateX(' + intValue.toString() + 'px)')
2020-10-21 18:05:36 +02:00
}
}
}
const content = querySelector('#content')
2020-10-09 09:53:37 +02:00
if (content && content.classList.contains('app-settings')) {
let loaded = false
2020-10-21 18:05:36 +02:00
const config = {
attributes: false,
childList: true,
subtree: true
}
2020-10-09 09:53:37 +02:00
const observer = new MutationObserver(() => {
2020-10-11 16:15:51 +02:00
if (loaded) {
2021-10-28 15:47:03 +02:00
return
2020-10-11 16:15:51 +02:00
}
2020-10-21 18:05:36 +02:00
const element = content.querySelector('#app-category-your-apps') || content.querySelector('#app-navigation ul')
2020-10-11 16:15:51 +02:00
if (element) {
2020-10-09 09:53:37 +02:00
loaded = true
alwaysDisplayed()
}
})
observer.observe(content, config)
} else {
window.setTimeout(alwaysDisplayed, 200)
}