diff options
author | 2018-07-05 22:18:51 -0700 | |
---|---|---|
committer | 2018-07-05 22:18:51 -0700 | |
commit | 53deb0b8cd1899ec325eca93631b3e137bdd3ec3 (patch) | |
tree | 23894ed57040ea689e9f60243656e1889d39a275 /ui/static/js/dom_helper.js | |
parent | e1c56b2e53ba3c6f48d5e159d18ae59c180cc388 (diff) | |
download | v2-53deb0b8cd1899ec325eca93631b3e137bdd3ec3.tar.gz v2-53deb0b8cd1899ec325eca93631b3e137bdd3ec3.tar.zst v2-53deb0b8cd1899ec325eca93631b3e137bdd3ec3.zip |
Refactor assets bundler and split Javascript files
Diffstat (limited to 'ui/static/js/dom_helper.js')
-rw-r--r-- | ui/static/js/dom_helper.js | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/ui/static/js/dom_helper.js b/ui/static/js/dom_helper.js new file mode 100644 index 00000000..8a0644b1 --- /dev/null +++ b/ui/static/js/dom_helper.js @@ -0,0 +1,46 @@ +class DomHelper { + static isVisible(element) { + return element.offsetParent !== null; + } + + static openNewTab(url) { + let win = window.open(""); + win.opener = null; + win.location = url; + win.focus(); + } + + static scrollPageTo(element) { + let windowScrollPosition = window.pageYOffset; + let windowHeight = document.documentElement.clientHeight; + let viewportPosition = windowScrollPosition + windowHeight; + let itemBottomPosition = element.offsetTop + element.offsetHeight; + + if (viewportPosition - itemBottomPosition < 0 || viewportPosition - element.offsetTop > windowHeight) { + window.scrollTo(0, element.offsetTop - 10); + } + } + + static getVisibleElements(selector) { + let elements = document.querySelectorAll(selector); + let result = []; + + for (let i = 0; i < elements.length; i++) { + if (this.isVisible(elements[i])) { + result.push(elements[i]); + } + } + + return result; + } + + static findParent(element, selector) { + for (; element && element !== document; element = element.parentNode) { + if (element.classList.contains(selector)) { + return element; + } + } + + return null; + } +} |