//
// Copyright (c) 2015, Brian Frank and Andy Frank
// Licensed under the Academic Free License version 3.0
//
// History:
// 4 Mar 2015 Andy Frank Creation
//
using dom
**
** FlipBox displays content on a 3D card, and allows transitiong
** between the front and back using a flipping animation.
**
@Js class FlipBox : Box
{
new make() : super()
{
this.style.addClass("domkit-FlipBox")
this.add(card = Elem { it.style.addClass("domkit-FlipBox-card") })
}
** Front card content.
Elem? front
{
get { card.children.getSafe(0) }
set { card.add(it); it.style.addClass("domkit-FlipBox-front") }
}
** Back card content.
Elem? back
{
get { card.children.getSafe(1) }
set { card.add(it); it.style.addClass("domkit-FlipBox-back") }
}
** Flip content, and invoke the specified callback
** when the flip animation has completed.
Void flip(|This|? onComplete := null)
{
card.style.toggleClass("flip")
if (onComplete != null) Win.cur.setTimeout(500ms) |->| { onComplete(this) }
}
** Is card showing front content.
Bool isFront() { !isBack }
** Is card showing back content.
Bool isBack() { card.style.hasClass("flip") }
** Show front card content if not already visible.
This toFront()
{
if (isBack) flip
return this
}
** Show back card content if not already visible.
This toBack()
{
if (isFront) flip
return this
}
private Elem card
}