summaryrefslogtreecommitdiff
path: root/examples/demos/src/main/scala/scrollmenu/Controller.scala
diff options
context:
space:
mode:
Diffstat (limited to 'examples/demos/src/main/scala/scrollmenu/Controller.scala')
-rw-r--r--examples/demos/src/main/scala/scrollmenu/Controller.scala49
1 files changed, 3 insertions, 46 deletions
diff --git a/examples/demos/src/main/scala/scrollmenu/Controller.scala b/examples/demos/src/main/scala/scrollmenu/Controller.scala
index 1fcb68c..de120c6 100644
--- a/examples/demos/src/main/scala/scrollmenu/Controller.scala
+++ b/examples/demos/src/main/scala/scrollmenu/Controller.scala
@@ -20,28 +20,6 @@ object Controller{
def main(data: scala.scalajs.js.Any) = {
val structure = upickle.readJs[Tree[String]](upickle.json.readJs(data))
- var i = 0
- def recurse(t: Tree[String], depth: Int): Tree[MenuNode] = {
- val curr =
- li(
- a(
- t.value,
- href:="#"+munge(t.value),
- cls:="menu-item"
- )
- )
- val originalI = i
- i += 1
- val children = t.children.map(recurse(_, depth + 1))
- Tree(
- MenuNode(
- curr(ul(paddingLeft := "15px",children.map(_.value.frag))).render,
- originalI,
- if (children.length > 0) children.map(_.value.end).max else originalI + 1
- ),
- children
- )
- }
val Seq(main, menu, layout, menuLink) = Seq(
"main", "menu", "layout", "menuLink"
@@ -50,26 +28,8 @@ object Controller{
val snippets = dom.document.getElementsByClassName("highlight-me")
snippets.foreach(js.Dynamic.global.hljs.highlightBlock(_))
- def offset(el: dom.HTMLElement, parent: dom.HTMLElement): Double = {
- if (el == parent) 0
- else el.offsetTop + offset(el.offsetParent.asInstanceOf[dom.HTMLElement], parent)
- }
- val headers = {
-
- val menuItems = {
- def rec(current: Tree[String]): Seq[String] = {
- current.value +: current.children.flatMap(rec)
- }
- rec(structure).tail
- }
- menuItems.map(munge)
- .map(dom.document.getElementById)
- .map(offset(_, main))
- .toVector
- }
- val domTrees = structure.children.map(recurse(_, 0))
- val scrollSpy = new ScrollSpy(headers, domTrees)
+ val scrollSpy = new ScrollSpy(structure, main)
menu.appendChild(
div(cls:="pure-menu pure-menu-open")(
@@ -77,7 +37,7 @@ object Controller{
"Contents"
),
ul(cls:="menu-item-list")(
- domTrees.map(_.value.frag)
+ scrollSpy.domTrees.map(_.value.frag)
)
).render
)
@@ -92,8 +52,5 @@ object Controller{
scrollSpy(main.scrollTop + main.clientHeight)
}
}
- def isElementInViewport(el: dom.HTMLElement) = {
- val rect = el.getBoundingClientRect()
- rect.top >= 0 && rect.bottom <= dom.innerHeight
- }
+
}