diff options
author | Li Haoyi <haoyi@dropbox.com> | 2014-11-14 16:05:31 -0800 |
---|---|---|
committer | Li Haoyi <haoyi@dropbox.com> | 2014-11-14 16:05:31 -0800 |
commit | 50595f9e1b05d33f47e540c24e33e50bd1625315 (patch) | |
tree | a3a982c44e6c24d8bd1278d4dc030d7b86f58b41 | |
parent | 64b283eb61f2c20e39e4c55e8696522569420028 (diff) | |
download | hands-on-scala-js-50595f9e1b05d33f47e540c24e33e50bd1625315.tar.gz hands-on-scala-js-50595f9e1b05d33f47e540c24e33e50bd1625315.tar.bz2 hands-on-scala-js-50595f9e1b05d33f47e540c24e33e50bd1625315.zip |
Moved some stuff around
-rwxr-xr-x | book/src/main/resources/css/side-menu.css | 10 | ||||
-rw-r--r-- | examples/demos/src/main/scala/scrollmenu/Controller.scala (renamed from examples/demos/Controller.scala) | 15 | ||||
-rw-r--r-- | examples/demos/src/main/scala/scrollmenu/ScrollMenu.scala (renamed from examples/demos/ScrollMenu.scala) | 13 |
3 files changed, 20 insertions, 18 deletions
diff --git a/book/src/main/resources/css/side-menu.css b/book/src/main/resources/css/side-menu.css index c2e9caa..00b351d 100755 --- a/book/src/main/resources/css/side-menu.css +++ b/book/src/main/resources/css/side-menu.css @@ -32,8 +32,7 @@ Add transition to containers so they can push in and out. -o-transition: all 0.2s ease-out; transition: all 0.2s ease-out; } -.hide, -.menu-item-list > li{ +.menu-item-list li > ul{ -webkit-transition: all 0.2s ease-out; -moz-transition: all 0.2s ease-out; -ms-transition: all 0.2s ease-out; @@ -311,11 +310,16 @@ code{ opacity: 0.05; } .menu-item-list li.hide > ul{ + opacity: 1; + overflow: hidden; height: 0px; +} +.menu-item-list li > ul{ + opacity: 1; overflow: hidden; - opacity: 0; } + #menu .menu-item-list li.selected > a{ border-left: 2px solid white; } diff --git a/examples/demos/Controller.scala b/examples/demos/src/main/scala/scrollmenu/Controller.scala index 6fd7ac7..1fcb68c 100644 --- a/examples/demos/Controller.scala +++ b/examples/demos/src/main/scala/scrollmenu/Controller.scala @@ -1,9 +1,10 @@ -import acyclic.file -import scala.scalajs.js -import scala.scalajs.js.annotation.JSExport +package scrollmenu + import org.scalajs.dom import org.scalajs.dom.extensions._ -import scala.collection.mutable + +import scala.scalajs.js +import scala.scalajs.js.annotation.JSExport import scalatags.JsDom.all._ @@ -66,12 +67,10 @@ object Controller{ .map(offset(_, main)) .toVector } - println(headers) - - val domTrees = structure.children.map(recurse(_, 0)) val scrollSpy = new ScrollSpy(headers, domTrees) + menu.appendChild( div(cls:="pure-menu pure-menu-open")( a(cls:="pure-menu-heading", href:="#")( @@ -82,13 +81,13 @@ object Controller{ ) ).render ) + menuLink.onclick = (e: dom.MouseEvent) => { layout.classList.toggle("active") menu.classList.toggle("active") menuLink.classList.toggle("active") } - main.onscroll = (e: dom.UIEvent) => { scrollSpy(main.scrollTop + main.clientHeight) } diff --git a/examples/demos/ScrollMenu.scala b/examples/demos/src/main/scala/scrollmenu/ScrollMenu.scala index ccab4e9..9c0fbd2 100644 --- a/examples/demos/ScrollMenu.scala +++ b/examples/demos/src/main/scala/scrollmenu/ScrollMenu.scala @@ -1,4 +1,5 @@ -import acyclic.file +package scrollmenu + import org.scalajs.dom case class Tree[T](value: T, children: Vector[Tree[T]]) @@ -6,11 +7,11 @@ case class Tree[T](value: T, children: Vector[Tree[T]]) case class MenuNode(frag: dom.HTMLElement, start: Int, end: Int) /** - * High performance scrollspy to + * High performance scrollspy to work keep the left menu bar in sync. + * Lots of sketchy imperative code in order to maximize performance. */ class ScrollSpy(headers: Vector[Double], domTrees: Seq[Tree[MenuNode]]){ var scrolling = false - var lastSelected: dom.HTMLElement = null def apply(threshold: Double) = if (!scrolling){ scrolling = true dom.requestAnimationFrame((d: Double) => start(threshold)) @@ -34,12 +35,10 @@ class ScrollSpy(headers: Vector[Double], domTrees: Seq[Tree[MenuNode]]){ } if (!winFound) { tree.children.foreach(_.value.frag.classList.remove("selected")) - if (lastSelected != null) - lastSelected.children(0).classList.remove("pure-menu-selected") - menuItem.children(0).classList.add("pure-menu-selected") - lastSelected = menuItem } + menuItem.children(0).classList.add("pure-menu-selected") }else{ + menuItem.children(0).classList.remove("pure-menu-selected") menuItem.classList.add("hide") menuItem.classList.remove("selected") } |