summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLi Haoyi <haoyi@dropbox.com>2014-11-14 16:05:31 -0800
committerLi Haoyi <haoyi@dropbox.com>2014-11-14 16:05:31 -0800
commit50595f9e1b05d33f47e540c24e33e50bd1625315 (patch)
treea3a982c44e6c24d8bd1278d4dc030d7b86f58b41
parent64b283eb61f2c20e39e4c55e8696522569420028 (diff)
downloadhands-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-xbook/src/main/resources/css/side-menu.css10
-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")
}