shared/src/main/scala/purecss/generic/PureButtons.scala
changeset 8 d1da6ba32afa
parent 7 bc895714797d
child 9 ee8565f13df7
equal deleted inserted replaced
7:bc895714797d 8:d1da6ba32afa
    15  */
    15  */
    16 package purecss.generic
    16 package purecss.generic
    17 
    17 
    18 import scala.language.{implicitConversions, postfixOps}
    18 import scala.language.{implicitConversions, postfixOps}
    19 
    19 
    20 abstract class PureButtons[Builder, Output <: FragT, FragT](
    20 trait PureButtons[B, O <: F, F] extends Component[B, O ,F] {
    21   val pureCss: PureCssGeneric[Builder, Output, FragT]) {
    21   import bundle.all._
    22 
    22 
    23   type B = Button
    23   val pure_button: C = pc("pure-button")
    24   type C = PureCls[Builder, Output, FragT]
    24   val pure_button_disabled: C = pc("pure-button-disabled")
       
    25   val pure_button_active: C = pc("pure-button-active")
       
    26   val pure_button_primary: C = pc("pure-button-primary")
       
    27   val pure_button_secondary: C = pc("pure-button-secondary")
       
    28   val pure_button_success: C = pc("pure-button-success")
       
    29   val pure_button_error: C = pc("pure-button-error")
       
    30   val pure_button_warning: C = pc("pure-button-warning")
       
    31   val pure_button_small: C = pc("pure-button-small")
       
    32   val pure_button_large: C = pc("pure-button-large")
       
    33   val pure_button_group: C = pc("pure-button-group")
    25 
    34 
    26   case class Button(
    35   implicit def btn2cls(b: Button): C = b.toCls
    27     role: Option[C] = None,
    36   implicit def btn2mod(b: Button): Modifier = b.toCls.apply()
    28     state: Option[C] = None,
       
    29     level: Option[C] = None,
       
    30     size: Option[C] = None
       
    31   ) {
       
    32     def primary: B = copy(role = Some(pureCss.pure_button_primary))
       
    33     def secondary: B = copy(role = Some(pureCss.pure_button_secondary))
       
    34 
    37 
    35     def active: B = copy(state = Some(pureCss.pure_button_active))
    38   case class Button(role: Option[C] = None, state: Option[C] = None,
    36     def disabled: B = copy(state = Some(pureCss.pure_button_disabled))
    39     level: Option[C] = None, size: Option[C] = None) {
       
    40     type B = Button
    37 
    41 
    38     def success: B = copy(level = Some(pureCss.pure_button_success))
    42     def primary: B = copy(role = Some(pure_button_primary))
    39     def warning: B = copy(level = Some(pureCss.pure_button_warning))
    43     def secondary: B = copy(role = Some(pure_button_secondary))
    40     def error: B = copy(level = Some(pureCss.pure_button_error))
       
    41 
    44 
    42     def small: B = copy(size = Some(pureCss.pure_button_small))
    45     def active: B = copy(state = Some(pure_button_active))
    43     def large: B = copy(size = Some(pureCss.pure_button_large))
    46     def disabled: B = copy(state = Some(pure_button_disabled))
       
    47 
       
    48     def success: B = copy(level = Some(pure_button_success))
       
    49     def warning: B = copy(level = Some(pure_button_warning))
       
    50     def error: B = copy(level = Some(pure_button_error))
       
    51 
       
    52     def small: B = copy(size = Some(pure_button_small))
       
    53     def large: B = copy(size = Some(pure_button_large))
    44 
    54 
    45     def toCls: C =
    55     def toCls: C =
    46       pureCss.pure_button.copy(chain = (role ++ state ++ level ++ size) toList)
    56       pure_button.copy(chain = (role ++ state ++ level ++ size) toList)
    47 
    57 
    48     def & (next: C): C = toCls & next
    58     def & (next: C): C = toCls & next
    49     def & (next: String): C = toCls & next
    59     def & (next: String): C = toCls & next
    50   }
    60   }
    51 
    61