diff options
Diffstat (limited to 'examples/demos/src/main/scala/scrollmenu/Controller.scala')
-rw-r--r-- | examples/demos/src/main/scala/scrollmenu/Controller.scala | 49 |
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 - } + } |