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 |