Browse Source

showMore: delay dom size check - it was f**ing slow!

master
parent
commit
2f540a022b
  1. 32
      src/showMore.js

32
src/showMore.js

@ -1,5 +1,24 @@
require('./showMore.css')
function delayedUpdate (dom, p) {
if (!p.timer) {
p.timer = global.setTimeout(
() => {
delete p.timer
if (dom.scrollHeight > dom.offsetHeight && dom.classList.contains('collapsed')) {
p.classList.add('active')
}
if (dom.scrollHeight <= dom.offsetHeight && dom.classList.contains('collapsed')) {
p.classList.remove('active')
}
},
1
)
}
}
function showMore (category, dom) {
dom.classList.add('collapsed')
@ -17,19 +36,12 @@ function showMore (category, dom) {
}
p.appendChild(a)
category.on('add', () => {
if (dom.scrollHeight > dom.offsetHeight && dom.classList.contains('collapsed')) {
p.classList.add('active')
}
})
category.on('remove', () => {
if (dom.scrollHeight <= dom.offsetHeight && dom.classList.contains('collapsed')) {
p.classList.remove('active')
}
})
category.on('add', delayedUpdate.bind(this, dom, p))
category.on('remove', delayedUpdate.bind(this, dom, p))
category.on('open', () => {
p.classList.remove('active')
dom.classList.add('collapsed')
delayedUpdate(dom, p)
})
}

Loading…
Cancel
Save