# HG changeset patch # User Tomas Zeman # Date 1513261970 -3600 # Node ID ee8565f13df7c6dc51d3ad897bf5bad6b545d25a # Parent d1da6ba32afa38f909b0e284111f47004a5e8b86 Components: form, grid, inputs, table diff -r d1da6ba32afa -r ee8565f13df7 shared/src/main/scala/purecss/generic/Component.scala --- a/shared/src/main/scala/purecss/generic/Component.scala Thu Dec 14 14:48:43 2017 +0100 +++ b/shared/src/main/scala/purecss/generic/Component.scala Thu Dec 14 15:32:50 2017 +0100 @@ -28,4 +28,10 @@ implicit def cls2mod(v: C): Modifier = v() protected def pc(c: String): C = PureCls(c) + + trait Element { + def toCls: C + def & (next: C): C = toCls & next + def & (next: String): C = toCls & next + } } diff -r d1da6ba32afa -r ee8565f13df7 shared/src/main/scala/purecss/generic/PureButtons.scala --- a/shared/src/main/scala/purecss/generic/PureButtons.scala Thu Dec 14 14:48:43 2017 +0100 +++ b/shared/src/main/scala/purecss/generic/PureButtons.scala Thu Dec 14 15:32:50 2017 +0100 @@ -36,7 +36,7 @@ implicit def btn2mod(b: Button): Modifier = b.toCls.apply() case class Button(role: Option[C] = None, state: Option[C] = None, - level: Option[C] = None, size: Option[C] = None) { + level: Option[C] = None, size: Option[C] = None) extends Element { type B = Button def primary: B = copy(role = Some(pure_button_primary)) @@ -55,8 +55,6 @@ def toCls: C = pure_button.copy(chain = (role ++ state ++ level ++ size) toList) - def & (next: C): C = toCls & next - def & (next: String): C = toCls & next } } diff -r d1da6ba32afa -r ee8565f13df7 shared/src/main/scala/purecss/generic/PureCssGeneric.scala --- a/shared/src/main/scala/purecss/generic/PureCssGeneric.scala Thu Dec 14 14:48:43 2017 +0100 +++ b/shared/src/main/scala/purecss/generic/PureCssGeneric.scala Thu Dec 14 15:32:50 2017 +0100 @@ -20,126 +20,24 @@ class PureCssGeneric[Builder, Output <: FragT, FragT]( bun: Bundle[Builder, Output, FragT]) extends + PureGrid[Builder, Output, FragT] with + PureInputs[Builder, Output, FragT] with PureButtons[Builder, Output, FragT] with + PureTable[Builder, Output, FragT] with + PureForm[Builder, Output, FragT] with PureAlerts[Builder, Output, FragT] { implicit val bundle: Bundle[Builder, Output, FragT] = bun - // grid - val pure_g: C = pc("pure-g") - val pure_u_1: C = pc("pure-u-1") - - // 5ths-based - val pure_u_1_5: C = pc("pure-u-1-5") - val pure_u_2_5: C = pc("pure-u-2-5") - val pure_u_3_5: C = pc("pure-u-3-5") - val pure_u_4_5: C = pc("pure-u-4-5") - - // 24ths-based - val pure_u_1_24: C = pc("pure-u-1-24") - val pure_u_1_12: C = pc("pure-u-1-12") - val pure_u_2_24: C = pc("pure-u-2-24") - val pure_u_3_24: C = pc("pure-u-3-24") - val pure_u_1_8: C = pc("pure-u-1-8") - val pure_u_4_24: C = pc("pure-u-4-24") - val pure_u_1_6: C = pc("pure-u-1-6") - val pure_u_5_24: C = pc("pure-u-5-24") - val pure_u_1_4: C = pc("pure-u-1-4") - val pure_u_6_24: C = pc("pure-u-6-24") - val pure_u_7_24: C = pc("pure-u-7-24") - val pure_u_1_3: C = pc("pure-u-1-3") - val pure_u_8_24: C = pc("pure-u-8-24") - val pure_u_3_8: C = pc("pure-u-3-8") - val pure_u_9_24: C = pc("pure-u-9-24") - val pure_u_5_12: C = pc("pure-u-5-12") - val pure_u_10_24: C = pc("pure-u-10-24") - val pure_u_11_24: C = pc("pure-u-11-24") - val pure_u_1_2: C = pc("pure-u-1-2") - val pure_u_13_24: C = pc("pure-u-13-24") - val pure_u_7_12: C = pc("pure-u-7-12") - val pure_u_14_24: C = pc("pure-u-14-24") - val pure_u_5_8: C = pc("pure-u-5-8") - val pure_u_15_24: C = pc("pure-u-15-24") - val pure_u_2_3: C = pc("pure-u-2-3") - val pure_u_16_24: C = pc("pure-u-16-24") - val pure_u_17_24: C = pc("pure-u-17-24") - val pure_u_3_4: C = pc("pure-u-3-4") - val pure_u_18_24: C = pc("pure-u-18-24") - val pure_u_19_24: C = pc("pure-u-19-24") - val pure_u_5_6: C = pc("pure-u-5-6") - val pure_u_20_24: C = pc("pure-u-20-24") - val pure_u_7_8: C = pc("pure-u-7-8") - val pure_u_21_24: C = pc("pure-u-21-24") - val pure_u_11_12: C = pc("pure-u-11-12") - val pure_u_22_24: C = pc("pure-u-22-24") - val pure_u_23_24: C = pc("pure-u-23-24") + object pure extends PureGrid with PureInput { + val button = Button() + val table = Table() + val img: C = pc("pure-img") + val form = Form() + } // generic val pull_right: C = pc("pull-right") - val pure_img: C = pc("pure-img") - - // tables - val pure_table: C = pc("pure-table") - val pure_table_bordered: C = pc("pure-table-bordered") - val pure_table_horizontal: C = pc("pure-table-horizontal") - val pure_table_striped: C = pc("pure-table-striped") - - // alerts - - // forms - val pure_form: C = pc("pure-form") - val pure_form_stacked: C = pc("pure-form-stacked") - val pure_form_aligned: C = pc("pure-form-aligned") - val pure_group: C = pc("pure-group") - - // inputs - val pure_input_1: C = pc("pure-input-1") - val pure_input_1_5: C = pc("pure-input-1-5") - val pure_input_2_5: C = pc("pure-input-2-5") - val pure_input_3_5: C = pc("pure-input-3-5") - val pure_input_4_5: C = pc("pure-input-4-5") - val pure_input_1_24: C = pc("pure-input-1-24") - val pure_input_1_12: C = pc("pure-input-1-12") - val pure_input_2_24: C = pc("pure-input-2-24") - val pure_input_3_24: C = pc("pure-input-3-24") - val pure_input_1_8: C = pc("pure-input-1-8") - val pure_input_4_24: C = pc("pure-input-4-24") - val pure_input_1_6: C = pc("pure-input-1-6") - val pure_input_5_24: C = pc("pure-input-5-24") - val pure_input_1_4: C = pc("pure-input-1-4") - val pure_input_6_24: C = pc("pure-input-6-24") - val pure_input_7_24: C = pc("pure-input-7-24") - val pure_input_1_3: C = pc("pure-input-1-3") - val pure_input_8_24: C = pc("pure-input-8-24") - val pure_input_3_8: C = pc("pure-input-3-8") - val pure_input_9_24: C = pc("pure-input-9-24") - val pure_input_5_12: C = pc("pure-input-5-12") - val pure_input_10_24: C = pc("pure-input-10-24") - val pure_input_11_24: C = pc("pure-input-11-24") - val pure_input_1_2: C = pc("pure-input-1-2") - val pure_input_13_24: C = pc("pure-input-13-24") - val pure_input_7_12: C = pc("pure-input-7-12") - val pure_input_14_24: C = pc("pure-input-14-24") - val pure_input_5_8: C = pc("pure-input-5-8") - val pure_input_15_24: C = pc("pure-input-15-24") - val pure_input_2_3: C = pc("pure-input-2-3") - val pure_input_16_24: C = pc("pure-input-16-24") - val pure_input_17_24: C = pc("pure-input-17-24") - val pure_input_3_4: C = pc("pure-input-3-4") - val pure_input_18_24: C = pc("pure-input-18-24") - val pure_input_19_24: C = pc("pure-input-19-24") - val pure_input_5_6: C = pc("pure-input-5-6") - val pure_input_20_24: C = pc("pure-input-20-24") - val pure_input_7_8: C = pc("pure-input-7-8") - val pure_input_21_24: C = pc("pure-input-21-24") - val pure_input_11_12: C = pc("pure-input-11-12") - val pure_input_22_24: C = pc("pure-input-22-24") - val pure_input_23_24: C = pc("pure-input-23-24") - val pure_input_rounded: C = pc("pure-input-rounded") - val pure_checkbox: C = pc("pure-checkbox") - val pure_radio: C = pc("pure-radio") - - val pureButton: Button = Button() // menus val pure_menu: C = pc("pure-menu") diff -r d1da6ba32afa -r ee8565f13df7 shared/src/main/scala/purecss/generic/PureForm.scala --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/shared/src/main/scala/purecss/generic/PureForm.scala Thu Dec 14 15:32:50 2017 +0100 @@ -0,0 +1,40 @@ +/* + * Copyright 2017 Tomas Zeman + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package purecss.generic + +import scala.language.{implicitConversions, postfixOps} + +trait PureForm[B, O <: F, F] extends Component[B, O, F] { + + import bundle.all._ + + val pure_form: C = pc("pure-form") + val pure_form_stacked: C = pc("pure-form-stacked") + val pure_form_aligned: C = pc("pure-form-aligned") + val pure_group: C = pc("pure-group") + val pure_control_group: C = pc("pure-control-group") + val pure_form_message: C = pc("pure-form-message") + val pure_form_message_inline: C = pc("pure-form-message-inline") + + implicit def f2cls(f: Form): C = f.toCls + implicit def f2mod(f: Form): Modifier = f.toCls.apply() + + case class Form(opt: Option[C] = None) extends Element { + def stacked: Form = copy(opt = Some(pure_form_stacked)) + def aligned: Form = copy(opt = Some(pure_form_aligned)) + override def toCls: C = pure_form.copy(chain = opt toList) + } +} diff -r d1da6ba32afa -r ee8565f13df7 shared/src/main/scala/purecss/generic/PureGrid.scala --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/shared/src/main/scala/purecss/generic/PureGrid.scala Thu Dec 14 15:32:50 2017 +0100 @@ -0,0 +1,72 @@ +/* + * Copyright 2017 Tomas Zeman + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package purecss.generic + +trait PureGrid[B, O <: F, F] extends Component[B, O, F] { + + trait PureGrid { + + // grid + val g: C = pc("pure-g") + val u_1: C = pc("pure-u-1") + + // 5ths-based + val u_1_5: C = pc("pure-u-1-5") + val u_2_5: C = pc("pure-u-2-5") + val u_3_5: C = pc("pure-u-3-5") + val u_4_5: C = pc("pure-u-4-5") + + // 24ths-based + val u_1_24: C = pc("pure-u-1-24") + val u_1_12: C = pc("pure-u-1-12") + val u_2_24: C = pc("pure-u-2-24") + val u_3_24: C = pc("pure-u-3-24") + val u_1_8: C = pc("pure-u-1-8") + val u_4_24: C = pc("pure-u-4-24") + val u_1_6: C = pc("pure-u-1-6") + val u_5_24: C = pc("pure-u-5-24") + val u_1_4: C = pc("pure-u-1-4") + val u_6_24: C = pc("pure-u-6-24") + val u_7_24: C = pc("pure-u-7-24") + val u_1_3: C = pc("pure-u-1-3") + val u_8_24: C = pc("pure-u-8-24") + val u_3_8: C = pc("pure-u-3-8") + val u_9_24: C = pc("pure-u-9-24") + val u_5_12: C = pc("pure-u-5-12") + val u_10_24: C = pc("pure-u-10-24") + val u_11_24: C = pc("pure-u-11-24") + val u_1_2: C = pc("pure-u-1-2") + val u_13_24: C = pc("pure-u-13-24") + val u_7_12: C = pc("pure-u-7-12") + val u_14_24: C = pc("pure-u-14-24") + val u_5_8: C = pc("pure-u-5-8") + val u_15_24: C = pc("pure-u-15-24") + val u_2_3: C = pc("pure-u-2-3") + val u_16_24: C = pc("pure-u-16-24") + val u_17_24: C = pc("pure-u-17-24") + val u_3_4: C = pc("pure-u-3-4") + val u_18_24: C = pc("pure-u-18-24") + val u_19_24: C = pc("pure-u-19-24") + val u_5_6: C = pc("pure-u-5-6") + val u_20_24: C = pc("pure-u-20-24") + val u_7_8: C = pc("pure-u-7-8") + val u_21_24: C = pc("pure-u-21-24") + val u_11_12: C = pc("pure-u-11-12") + val u_22_24: C = pc("pure-u-22-24") + val u_23_24: C = pc("pure-u-23-24") + + } +} diff -r d1da6ba32afa -r ee8565f13df7 shared/src/main/scala/purecss/generic/PureInputs.scala --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/shared/src/main/scala/purecss/generic/PureInputs.scala Thu Dec 14 15:32:50 2017 +0100 @@ -0,0 +1,69 @@ +/* + * Copyright 2017 Tomas Zeman + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package purecss.generic + +trait PureInputs[B, O <: F, F] extends Component[B, O, F] { + + trait PureInput { + val input_rounded: C = pc("pure-input-rounded") + val input_checkbox: C = pc("pure-checkbox") + val input_radio: C = pc("pure-radio") + + val input_1: C = pc("pure-input-1") + val input_1_5: C = pc("pure-input-1-5") + val input_2_5: C = pc("pure-input-2-5") + val input_3_5: C = pc("pure-input-3-5") + val input_4_5: C = pc("pure-input-4-5") + val input_1_24: C = pc("pure-input-1-24") + val input_1_12: C = pc("pure-input-1-12") + val input_2_24: C = pc("pure-input-2-24") + val input_3_24: C = pc("pure-input-3-24") + val input_1_8: C = pc("pure-input-1-8") + val input_4_24: C = pc("pure-input-4-24") + val input_1_6: C = pc("pure-input-1-6") + val input_5_24: C = pc("pure-input-5-24") + val input_1_4: C = pc("pure-input-1-4") + val input_6_24: C = pc("pure-input-6-24") + val input_7_24: C = pc("pure-input-7-24") + val input_1_3: C = pc("pure-input-1-3") + val input_8_24: C = pc("pure-input-8-24") + val input_3_8: C = pc("pure-input-3-8") + val input_9_24: C = pc("pure-input-9-24") + val input_5_12: C = pc("pure-input-5-12") + val input_10_24: C = pc("pure-input-10-24") + val input_11_24: C = pc("pure-input-11-24") + val input_1_2: C = pc("pure-input-1-2") + val input_13_24: C = pc("pure-input-13-24") + val input_7_12: C = pc("pure-input-7-12") + val input_14_24: C = pc("pure-input-14-24") + val input_5_8: C = pc("pure-input-5-8") + val input_15_24: C = pc("pure-input-15-24") + val input_2_3: C = pc("pure-input-2-3") + val input_16_24: C = pc("pure-input-16-24") + val input_17_24: C = pc("pure-input-17-24") + val input_3_4: C = pc("pure-input-3-4") + val input_18_24: C = pc("pure-input-18-24") + val input_19_24: C = pc("pure-input-19-24") + val input_5_6: C = pc("pure-input-5-6") + val input_20_24: C = pc("pure-input-20-24") + val input_7_8: C = pc("pure-input-7-8") + val input_21_24: C = pc("pure-input-21-24") + val input_11_12: C = pc("pure-input-11-12") + val input_22_24: C = pc("pure-input-22-24") + val input_23_24: C = pc("pure-input-23-24") + } + +} diff -r d1da6ba32afa -r ee8565f13df7 shared/src/main/scala/purecss/generic/PureTable.scala --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/shared/src/main/scala/purecss/generic/PureTable.scala Thu Dec 14 15:32:50 2017 +0100 @@ -0,0 +1,39 @@ +/* + * Copyright 2017 Tomas Zeman + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package purecss.generic + +import scala.language.{implicitConversions, postfixOps} + +trait PureTable[B, O <: F, F] extends Component[B, O, F] { + + import bundle.all._ + + val pure_table: C = pc("pure-table") + val pure_table_bordered: C = pc("pure-table-bordered") + val pure_table_horizontal: C = pc("pure-table-horizontal") + val pure_table_striped: C = pc("pure-table-striped") + + implicit def tbl2cls(t: Table): C = t.toCls + implicit def tbl2mod(t: Table): Modifier = t.toCls.apply() + + case class Table(opt: Option[C] = None) extends Element { + def bordered: Table = copy(opt = Some(pure_table_bordered)) + def horizontal: Table = copy(opt = Some(pure_table_horizontal)) + def striped: Table = copy(opt = Some(pure_table_striped)) + + def toCls: C = pure_table.copy(chain = opt toList) + } +}