Skip to content
This repository was archived by the owner on Feb 10, 2023. It is now read-only.

Commit 86fdd1a

Browse files
authored
Merge pull request #70 from cquiroz/sui-update
SUI update and added Rail component
2 parents 94b6965 + b7fde30 commit 86fdd1a

File tree

8 files changed

+185
-2
lines changed

8 files changed

+185
-2
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
# Changes
22

3+
## 0.2.1
4+
5+
* Upgrade to react-semantic-ui 0.87.3
6+
* Added Rail component
7+
38
## 0.2.0
49

510
* Change the API to use simpler constructs

build.sbt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
val reactJS = "16.7.0"
22
val scalaJsReact = "1.4.2"
33
val SUI = "2.4.1"
4-
val reactSUI = "0.87.2"
4+
val reactSUI = "0.87.3"
55

66
parallelExecution in (ThisBuild, Test) := false
77

facade/src/main/scala/react/semanticui/elements/label/Label.scala

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ final case class Label(
3737
onClick: js.UndefOr[Callback] = js.undefined,
3838
onRemove: js.UndefOr[Label.OnClick] = js.undefined,
3939
pointing: js.UndefOr[LabelPointing] = js.undefined,
40+
prompt: js.UndefOr[Boolean] = js.undefined,
4041
removeIcon: js.UndefOr[Icon] = js.undefined,
4142
ribbon: js.UndefOr[LabelRibbon] = js.undefined,
4243
size: js.UndefOr[SemanticSize] = js.undefined,
@@ -86,6 +87,9 @@ object Label {
8687
var onRemove: js.UndefOr[js.Function2[ReactMouseEvent, LabelProps, Unit]] =
8788
js.native
8889
var pointing: js.UndefOr[Boolean | String] = js.native
90+
91+
/** A label can prompt for an error in your forms. */
92+
var prompt: js.UndefOr[Boolean]
8993
var removeIcon: js.UndefOr[suiraw.SemanticShorthandItem[Icon.IconProps]] =
9094
js.native
9195
var ribbon: js.UndefOr[Boolean | String] = js.native
@@ -116,6 +120,7 @@ object Label {
116120
p.onClick = (q.onClickE, q.onClick).toJs
117121
p.onRemove = q.onRemove.toJs
118122
p.pointing = q.pointing.toJs
123+
p.prompt = q.prompt
119124
p.removeIcon = q.removeIcon.map(_.props)
120125
p.ribbon = q.ribbon.toJs
121126
p.size = q.size.toJs
Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
package react.semanticui.elements.rail
2+
3+
import scala.scalajs.js
4+
import scala.scalajs.js.|
5+
import js.annotation._
6+
import japgolly.scalajs.react._
7+
import japgolly.scalajs.react.raw.React
8+
import japgolly.scalajs.react.vdom.VdomNode
9+
import react.common.syntax._
10+
import react.common.style._
11+
import react.common._
12+
import react.semanticui.{ raw => suiraw }
13+
import react.semanticui._
14+
import react.semanticui.sizes._
15+
import react.semanticui.floats._
16+
17+
final case class Rail(
18+
as: js.UndefOr[AsC] = js.undefined,
19+
attached: js.UndefOr[Boolean] = js.undefined,
20+
child: js.UndefOr[VdomNode] = js.undefined,
21+
className: js.UndefOr[String] = js.undefined,
22+
clazz: js.UndefOr[Css] = js.undefined,
23+
close: js.UndefOr[RailClose] = js.undefined,
24+
content: js.UndefOr[VdomNode] = js.undefined,
25+
dividing: js.UndefOr[Boolean] = js.undefined,
26+
internal: js.UndefOr[Boolean] = js.undefined,
27+
position: js.UndefOr[SemanticFloats],
28+
size: js.UndefOr[SemanticSize] = js.undefined,
29+
override val children: CtorType.ChildrenArgs = Seq.empty
30+
) extends GenericFnComponentPC[Rail.RailProps] {
31+
override def withChildren(children: CtorType.ChildrenArgs) =
32+
copy(children = children)
33+
@inline def renderWith =
34+
Rail.component(Rail.props(this))
35+
}
36+
37+
object Rail {
38+
@js.native
39+
@JSImport("semantic-ui-react", "Rail")
40+
object RawComponent extends js.Function1[js.Any, js.Any] {
41+
def apply(i: js.Any): js.Any = js.native
42+
}
43+
44+
@js.native
45+
trait RailProps extends js.Object {
46+
@JSBracketAccess
47+
def apply(key: String): js.Any = js.native
48+
49+
@JSBracketAccess
50+
def update(key: String, v: js.Any): Unit = js.native
51+
52+
/** An element type to render as (string or function). */
53+
var as: js.UndefOr[AsT] = js.native
54+
55+
/** A rail can appear attached to the main viewport. */
56+
var attached: js.UndefOr[Boolean] = js.native
57+
58+
/** Primary content. */
59+
var children: js.UndefOr[React.Node] = js.native
60+
61+
/** Additional classes. */
62+
var className: js.UndefOr[String] = js.native
63+
64+
/** A rail can appear closer to the main viewport. */
65+
var close: js.UndefOr[Boolean | String] = js.native
66+
67+
/** Shorthand for primary content. */
68+
var content: js.UndefOr[suiraw.SemanticShorthandContent] = js.native
69+
70+
/** A rail can create a division between itself and a container. */
71+
var dividing: js.UndefOr[Boolean] = js.native
72+
73+
/** A rail can attach itself to the inside of a container. */
74+
var internal: js.UndefOr[Boolean] = js.native
75+
76+
/** A rail can be presented on the left or right side of a container. */
77+
var position: js.UndefOr[suiraw.SemanticFLOATS] = js.native
78+
79+
/** A rail can have different sizes. */
80+
var size: js.UndefOr[suiraw.SemanticSIZES] = js.native
81+
}
82+
83+
def props(
84+
q: Rail
85+
): RailProps =
86+
rawprops(
87+
q.as,
88+
q.attached,
89+
q.child,
90+
q.className,
91+
q.clazz,
92+
q.close,
93+
q.content,
94+
q.dividing,
95+
q.internal,
96+
q.position,
97+
q.size
98+
)
99+
100+
def rawprops(
101+
as: js.UndefOr[AsC] = js.undefined,
102+
attached: js.UndefOr[Boolean] = js.undefined,
103+
child: js.UndefOr[VdomNode] = js.undefined,
104+
className: js.UndefOr[String] = js.undefined,
105+
clazz: js.UndefOr[Css] = js.undefined,
106+
close: js.UndefOr[RailClose] = js.undefined,
107+
content: js.UndefOr[VdomNode] = js.undefined,
108+
dividing: js.UndefOr[Boolean] = js.undefined,
109+
internal: js.UndefOr[Boolean] = js.undefined,
110+
position: js.UndefOr[SemanticFloats] = js.undefined,
111+
size: js.UndefOr[SemanticSize] = js.undefined
112+
): RailProps = {
113+
val p = as.toJsObject[RailProps]
114+
p.attached = attached
115+
p.children = child.toJs
116+
p.className = (className, clazz).toJs
117+
p.close = close.toJs
118+
p.content = content.toJs
119+
p.dividing = dividing
120+
p.internal = internal
121+
p.position = position.toJs
122+
p.size = size.toJs
123+
p
124+
}
125+
126+
private val component =
127+
JsFnComponent[RailProps, Children.Varargs](RawComponent)
128+
129+
def apply(position: SemanticFloats, content: VdomNode*): Rail =
130+
new Rail(position = position, children = content)
131+
132+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package react.semanticui.elements
2+
3+
import react.common.EnumValueB
4+
5+
package rail {
6+
sealed trait RailClose extends Product with Serializable
7+
object RailClose {
8+
implicit val enum: EnumValueB[RailClose] = EnumValueB.toLowerCaseStringT(Close)
9+
10+
case object Close extends RailClose
11+
case object Very extends RailClose
12+
}
13+
14+
}
15+
16+
package object rail {}

facade/src/main/scala/react/semanticui/modules/popup/Popup.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ object Popup {
9494
/** Header displayed above the content in bold. */
9595
var header: js.UndefOr[suiraw.SemanticShorthandItem[PopupHeader.PopupHeaderProps]] = js.native
9696

97-
/** The node where the popup should mount. */
97+
/** Hide the Popup when scrolling the window. */
9898
var hideOnScroll: js.UndefOr[Boolean] = js.native
9999

100100
/** Whether the popup should not close on hover. */

facade/src/test/scala/react/semanticui/elements/label/LabelTests.scala

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,13 @@ object LabelTests extends TestSuite {
4343
assert(m.innerHTML == """<div class="ui left corner label"></div>""")
4444
}
4545
}
46+
'prompt - {
47+
val label = Label(prompt = true)
48+
ReactTestUtils.withNewBodyElement { m =>
49+
label.renderIntoDOM(m)
50+
assert(m.innerHTML == """<div class="ui prompt label"></div>""")
51+
}
52+
}
4653
'detailVdom - {
4754
val labelDetail = LabelDetail("Detail")
4855
val label = Label(detail = labelDetail)
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package react.semanticui.elements.rail
2+
3+
import utest._
4+
import japgolly.scalajs.react.test._
5+
import japgolly.scalajs.react.vdom.html_<^._
6+
import react.semanticui.floats._
7+
8+
object RailTests extends TestSuite {
9+
val tests = Tests {
10+
'render - {
11+
val rail = Rail(position = Left)("abc")
12+
ReactTestUtils.withNewBodyElement { mountNode =>
13+
rail.renderIntoDOM(mountNode)
14+
assert(mountNode.innerHTML == """<div class="ui left rail">abc</div>""")
15+
}
16+
}
17+
}
18+
}

0 commit comments

Comments
 (0)