summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlihaoyi <haoyi.sg@gmail.com>2014-11-23 19:54:59 -0800
committerlihaoyi <haoyi.sg@gmail.com>2014-11-23 19:54:59 -0800
commit0f58d9da34162cdb85d8b3b6c6c9c38a991f02db (patch)
tree6e10fa9867336a78e80d59adcbe7d1b104052ee6
parent2efb486b08ef949f02529a6cc30b94d267862dfd (diff)
downloadhands-on-scala-js-0f58d9da34162cdb85d8b3b6c6c9c38a991f02db.tar.gz
hands-on-scala-js-0f58d9da34162cdb85d8b3b6c6c9c38a991f02db.tar.bz2
hands-on-scala-js-0f58d9da34162cdb85d8b3b6c6c9c38a991f02db.zip
Hash tracing
-rw-r--r--examples/demos/src/main/scala/scrollmenu/Controller.scala20
-rw-r--r--examples/demos/src/main/scala/scrollmenu/ScrollMenu.scala7
2 files changed, 8 insertions, 19 deletions
diff --git a/examples/demos/src/main/scala/scrollmenu/Controller.scala b/examples/demos/src/main/scala/scrollmenu/Controller.scala
index cb0fc63..80e20eb 100644
--- a/examples/demos/src/main/scala/scrollmenu/Controller.scala
+++ b/examples/demos/src/main/scala/scrollmenu/Controller.scala
@@ -43,6 +43,9 @@ object Controller{
marginLeft := "0px",
paddingLeft := "15px",
paddingRight := "15px",
+ position.absolute,
+ top := "0px",
+ right := "0px",
cls := "pure-menu-selected",
onclick := { (e: dom.Event) =>
expandIcon.classList.toggle("fa-caret-down")
@@ -55,24 +58,9 @@ object Controller{
menu.appendChild(
- div(
- zIndex := 10,
- position := "absolute",
- cls := "pure-menu pure-menu-open",
- ul(cls := "menu-item-list")(
- li(
- width := "43px",
- float := "right",
- expandLink
- )
- )
- ).render
- )
-
- menu.appendChild(
div(cls := "pure-menu pure-menu-open")(
a(cls := "pure-menu-heading")(
- "Contents"
+ "Contents", expandLink
),
list
).render
diff --git a/examples/demos/src/main/scala/scrollmenu/ScrollMenu.scala b/examples/demos/src/main/scala/scrollmenu/ScrollMenu.scala
index 5bd5259..7c4fb78 100644
--- a/examples/demos/src/main/scala/scrollmenu/ScrollMenu.scala
+++ b/examples/demos/src/main/scala/scrollmenu/ScrollMenu.scala
@@ -7,7 +7,7 @@ import scalatags.JsDom.all._
case class Tree[T](value: T, children: Vector[Tree[T]])
-case class MenuNode(frag: dom.HTMLElement, start: Int, end: Int)
+case class MenuNode(frag: dom.HTMLElement, id: String, start: Int, end: Int)
/**
* High performance scrollspy to work keep the left menu bar in sync.
@@ -33,6 +33,7 @@ class ScrollSpy(structure: Tree[String],
Tree(
MenuNode(
curr(ul(paddingLeft := "15px",children.map(_.value.frag))).render,
+ Controller.munge(t.value),
originalI,
if (children.length > 0) children.map(_.value.end).max else originalI + 1
),
@@ -75,7 +76,7 @@ class ScrollSpy(structure: Tree[String],
el.scrollIntoView(false)
}
def walkTree(tree: Tree[MenuNode]): Boolean = {
- val Tree(MenuNode(menuItem, start, end), children) = tree
+ val Tree(MenuNode(menuItem, itemId, start, end), children) = tree
val before = headers(start) < threshold
val after = (end >= headers.length) || headers(end) > threshold
@@ -95,7 +96,7 @@ class ScrollSpy(structure: Tree[String],
// This means it's the leaf element, because it won but there
// aren't any children which won, so it must be the actual leaf
tree.children.foreach(_.value.frag.classList.remove("selected"))
-
+ dom.location.hash = itemId
scroll(menuItem.children(0))
}