forked from platypush/platypush
Fabio Manganiello
b80a48ec80
Component lists are now displayed in a grid format, each accompained by an icon.
48 lines
1.4 KiB
JavaScript
48 lines
1.4 KiB
JavaScript
document.addEventListener("DOMContentLoaded", function() {
|
|
const processList = (list, level, addTitle) => {
|
|
const title = list.parentElement.querySelector('a')
|
|
list.classList.add('grid')
|
|
if (addTitle)
|
|
title.classList.add('grid-title')
|
|
|
|
list.querySelectorAll(`li.toctree-l${level}`).forEach((item) => {
|
|
const link = item.querySelector('a')
|
|
if (link) {
|
|
item.style.cursor = 'pointer'
|
|
item.addEventListener('click', () => link.click())
|
|
}
|
|
|
|
const name = item.querySelector('a').innerText
|
|
const img = document.createElement('img')
|
|
img.src = `https://static.platypush.tech/icons/${name.toLowerCase()}-64.png`
|
|
img.alt = ' '
|
|
item.prepend(img)
|
|
})
|
|
}
|
|
|
|
const tocWrappers = document.querySelectorAll('.toctree-wrapper.compound')
|
|
|
|
if (!tocWrappers.length) {
|
|
return
|
|
}
|
|
|
|
if (window.location.pathname.endsWith('/index.html')) {
|
|
if (tocWrappers.length < 2) {
|
|
return
|
|
}
|
|
|
|
const referenceLists = [
|
|
...tocWrappers[1].querySelectorAll('ul li.toctree-l1 ul')
|
|
].slice(0, 4)
|
|
|
|
referenceLists.forEach((list) => processList(list, 2, true))
|
|
} else if (window.location.pathname.endsWith('/plugins.html') || window.location.pathname.endsWith('/backends.html')) {
|
|
if (tocWrappers.length < 1) {
|
|
return
|
|
}
|
|
|
|
const list = tocWrappers[0].querySelector('ul')
|
|
if (list)
|
|
processList(list, 1, false)
|
|
}
|
|
})
|