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

Commit 2790601

Browse files
authored
Merge pull request #168 from cquiroz/updates
Library updates and add ModalDimmer
2 parents dad4827 + f2f9fb1 commit 2790601

File tree

6 files changed

+143
-15
lines changed

6 files changed

+143
-15
lines changed

build.sbt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
val reactJS = "16.13.1"
2-
val scalaJsReact = "1.7.4"
2+
val scalaJsReact = "1.7.5"
33
val FUILess = "2.8.6"
4-
val reactSUI = "1.1.1"
4+
val reactSUI = "1.2.0"
55
val Toasts = "0.6.5"
66

77
parallelExecution in (ThisBuild, Test) := false
@@ -142,7 +142,7 @@ lazy val facade =
142142
"com.github.japgolly.scalajs-react" %%% "core" % scalaJsReact,
143143
"com.github.japgolly.scalajs-react" %%% "extra" % scalaJsReact,
144144
"com.github.japgolly.scalajs-react" %%% "test" % scalaJsReact % Test,
145-
"io.github.cquiroz.react" %%% "common" % "0.9.6",
145+
"io.github.cquiroz.react" %%% "common" % "0.9.7",
146146
"com.lihaoyi" %%% "utest" % "0.7.4" % Test,
147147
"org.typelevel" %%% "cats-core" % "2.1.1" % Test
148148
),

facade/src/main/scala/react/semanticui/addons/confirm/Confirm.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ final case class Confirm(
2525
confirmButton: js.UndefOr[ShorthandS[Button]] = js.undefined,
2626
content: js.UndefOr[ShorthandS[ModalContent]] = js.undefined,
2727
defaultOpen: js.UndefOr[Boolean] = js.undefined,
28-
dimmer: js.UndefOr[ModalDimmer] = js.undefined,
28+
dimmer: js.UndefOr[Dimmer] = js.undefined,
2929
eventPool: js.UndefOr[String] = js.undefined,
3030
header: js.UndefOr[ShorthandS[ModalHeader]] = js.undefined,
3131
onActionClickE: js.UndefOr[Modal.OnActionClick] = js.undefined,
@@ -136,7 +136,7 @@ object Confirm {
136136
confirmButton: js.UndefOr[ShorthandS[Button]] = js.undefined,
137137
content: js.UndefOr[ShorthandS[ModalContent]] = js.undefined,
138138
defaultOpen: js.UndefOr[Boolean] = js.undefined,
139-
dimmer: js.UndefOr[ModalDimmer] = js.undefined,
139+
dimmer: js.UndefOr[Dimmer] = js.undefined,
140140
eventPool: js.UndefOr[String] = js.undefined,
141141
header: js.UndefOr[ShorthandS[ModalHeader]] = js.undefined,
142142
onActionClickE: js.UndefOr[Modal.OnActionClick] = js.undefined,

facade/src/main/scala/react/semanticui/modules/modal/Modal.scala

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ final case class Modal(
2626
closeOnDocumentClick: js.UndefOr[Boolean] = js.undefined,
2727
content: js.UndefOr[ShorthandS[ModalContent]] = js.undefined,
2828
defaultOpen: js.UndefOr[Boolean] = js.undefined,
29-
dimmer: js.UndefOr[ModalDimmer] = js.undefined,
29+
dimmer: js.UndefOr[Dimmer | ModalDimmer] = js.undefined,
3030
eventPool: js.UndefOr[String] = js.undefined,
3131
header: js.UndefOr[ShorthandS[ModalHeader]] = js.undefined,
3232
onActionClickE: js.UndefOr[Modal.OnActionClick] = js.undefined,
@@ -108,7 +108,9 @@ object Modal {
108108
var defaultOpen: js.UndefOr[Boolean] = js.native
109109

110110
/** A modal can appear in a dimmer. */
111-
var dimmer: js.UndefOr[Boolean | String] = js.native
111+
var dimmer
112+
: js.UndefOr[Boolean | String | suiraw.SemanticShorthandItemS[ModalDimmer.ModalDimmerProps]] =
113+
js.native
112114

113115
/** Event pool namespace that is used to handle component events */
114116
var eventPool: js.UndefOr[String] = js.native
@@ -215,7 +217,7 @@ object Modal {
215217
closeOnDocumentClick: js.UndefOr[Boolean] = js.undefined,
216218
content: js.UndefOr[ShorthandS[ModalContent]] = js.undefined,
217219
defaultOpen: js.UndefOr[Boolean] = js.undefined,
218-
dimmer: js.UndefOr[ModalDimmer] = js.undefined,
220+
dimmer: js.UndefOr[Dimmer | ModalDimmer] = js.undefined,
219221
eventPool: js.UndefOr[String] = js.undefined,
220222
header: js.UndefOr[ShorthandS[ModalHeader]] = js.undefined,
221223
onActionClickE: js.UndefOr[OnActionClick] = js.undefined,
@@ -242,7 +244,13 @@ object Modal {
242244
closeOnDocumentClick.foreach(v => p.closeOnDocumentClick = v)
243245
content.toJs.foreach(v => p.content = v)
244246
defaultOpen.foreach(v => p.defaultOpen = v)
245-
dimmer.toJs.foreach(v => p.dimmer = v)
247+
dimmer.foreach { v =>
248+
(v: Any) match {
249+
case x: Dimmer => x.toJs
250+
case x => x
251+
}
252+
}
253+
246254
eventPool.foreach(v => p.eventPool = v)
247255
header.toJs.foreach(v => p.header = v)
248256
(onActionClickE, onActionClick).toJs.foreach(v => p.onActionClick = v)
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
package react.semanticui.modules.modal
2+
3+
import scala.scalajs.js
4+
import js.annotation._
5+
import japgolly.scalajs.react._
6+
import japgolly.scalajs.react.vdom.VdomNode
7+
import japgolly.scalajs.react.raw.React
8+
import react.common._
9+
import react.semanticui._
10+
import react.semanticui.{ raw => suiraw }
11+
import japgolly.scalajs.react.vdom.TagMod
12+
13+
final case class ModalDimmer(
14+
as: js.UndefOr[AsC] = js.undefined,
15+
blurring: js.UndefOr[Boolean] = js.undefined,
16+
className: js.UndefOr[String] = js.undefined,
17+
clazz: js.UndefOr[Css] = js.undefined,
18+
centered: js.UndefOr[Boolean] = js.undefined,
19+
content: js.UndefOr[ShorthandS[VdomNode]] = js.undefined,
20+
inverted: js.UndefOr[Boolean] = js.undefined,
21+
scrolling: js.UndefOr[Boolean] = js.undefined,
22+
override val modifiers: Seq[TagMod] = Seq.empty
23+
) extends GenericFnComponentPAC[ModalDimmer.ModalDimmerProps, ModalDimmer] {
24+
override protected def cprops = ModalDimmer.props(this)
25+
override protected val component = ModalDimmer.component
26+
override def addModifiers(modifiers: Seq[TagMod]) = copy(modifiers = this.modifiers ++ modifiers)
27+
}
28+
29+
object ModalDimmer {
30+
@js.native
31+
@JSImport("semantic-ui-react", "ModalDimmer")
32+
object RawComponent extends js.Function1[js.Any, js.Any] {
33+
def apply(i: js.Any): js.Any = js.native
34+
}
35+
36+
@js.native
37+
trait ModalDimmerProps extends js.Object {
38+
@JSBracketAccess
39+
def apply(key: String): js.Any = js.native
40+
41+
@JSBracketAccess
42+
def update(key: String, v: js.Any): Unit = js.native
43+
44+
/** An element type to render as (string or function). */
45+
var as: js.UndefOr[AsT] = js.native
46+
47+
/** A dimmer can be blurred. */
48+
var blurring: js.UndefOr[Boolean] = js.native
49+
50+
/** Primary content. */
51+
var children: js.UndefOr[React.Node] = js.native
52+
53+
/** Additional classes. */
54+
var className: js.UndefOr[String] = js.native
55+
56+
/** A dimmer can center its contents in the viewport. */
57+
var centered: js.UndefOr[Boolean] = js.native
58+
59+
/** Shorthand for primary content. */
60+
var content: js.UndefOr[suiraw.SemanticShorthandContent] = js.native
61+
62+
/** A dimmer can be inverted. */
63+
var inverted: js.UndefOr[Boolean] = js.native
64+
65+
/** The node where the modal should mount. Defaults to document.body. */
66+
// mountNode?: any
67+
68+
/** A dimmer can make body scrollable. */
69+
var scrolling: js.UndefOr[Boolean] = js.native
70+
}
71+
72+
def props(q: ModalDimmer): ModalDimmerProps =
73+
rawprops(q.as, q.blurring, q.className, q.clazz, q.centered, q.content, q.inverted, q.scrolling)
74+
75+
def rawprops(
76+
as: js.UndefOr[AsC] = js.undefined,
77+
blurring: js.UndefOr[Boolean] = js.undefined,
78+
className: js.UndefOr[String] = js.undefined,
79+
clazz: js.UndefOr[Css] = js.undefined,
80+
centered: js.UndefOr[Boolean] = js.undefined,
81+
content: js.UndefOr[ShorthandS[VdomNode]] = js.undefined,
82+
inverted: js.UndefOr[Boolean] = js.undefined,
83+
scrolling: js.UndefOr[Boolean] = js.undefined
84+
): ModalDimmerProps = {
85+
val p = as.toJsObject[ModalDimmerProps]
86+
as.toJs.foreach(v => p.as = v)
87+
blurring.foreach(v => p.blurring = v)
88+
(className, clazz).toJs.foreach(v => p.className = v)
89+
centered.foreach(v => p.centered = v)
90+
content.toJs.foreach(v => p.content = v)
91+
inverted.foreach(v => p.inverted = v)
92+
scrolling.foreach(v => p.scrolling = v)
93+
p
94+
}
95+
96+
private val component =
97+
JsFnComponent[ModalDimmerProps, Children.Varargs](RawComponent)
98+
99+
def apply(modifiers: TagMod*): ModalDimmer =
100+
new ModalDimmer(modifiers = modifiers)
101+
}

facade/src/main/scala/react/semanticui/modules/modal/package.scala

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ import react.common.EnumValue
44
import react.common.EnumValueB
55

66
package modal {
7-
sealed trait ModalDimmer extends Product with Serializable
8-
object ModalDimmer {
9-
implicit val enum: EnumValueB[ModalDimmer] = EnumValueB.toLowerCaseStringT(Dimmer)
7+
sealed trait Dimmer extends Product with Serializable
8+
object Dimmer {
9+
implicit val enum: EnumValueB[Dimmer] = EnumValueB.toLowerCaseStringT(Dimmer)
1010

11-
case object Dimmer extends ModalDimmer
12-
case object Blurring extends ModalDimmer
13-
case object Inverted extends ModalDimmer
11+
case object Dimmer extends Dimmer
12+
case object Blurring extends Dimmer
13+
case object Inverted extends Dimmer
1414
}
1515

1616
sealed trait ModalSize extends Product with Serializable
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package react.semanticui.modules.modal
2+
3+
import utest._
4+
import japgolly.scalajs.react.test._
5+
import japgolly.scalajs.react.vdom.html_<^._
6+
7+
object ModalDimmerTests extends TestSuite {
8+
val tests = Tests {
9+
test("render") {
10+
val modal = ModalDimmer("Abc")
11+
ReactTestUtils.withNewBodyElement { mountNode =>
12+
modal.renderIntoDOM(mountNode)
13+
assert(
14+
mountNode.innerHTML == """<div class="ui top aligned page modals dimmer transition visible active">Abc</div>"""
15+
)
16+
}
17+
}
18+
}
19+
}

0 commit comments

Comments
 (0)