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

Commit e6178d8

Browse files
authored
Merge pull request #155 from cquiroz/checkbox-boolean
Make checkbox onChange callbacks include the state
2 parents 7a88f91 + a54927b commit e6178d8

File tree

3 files changed

+36
-7
lines changed

3 files changed

+36
-7
lines changed

facade/src/main/scala/react/semanticui/collections/form/FormCheckbox.scala

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ final case class FormCheckbox(
3131
inline: js.UndefOr[Boolean] = js.undefined,
3232
label: js.UndefOr[ShorthandS[Label]] = js.undefined,
3333
name: js.UndefOr[String] = js.undefined,
34-
onChange: js.UndefOr[Callback] = js.undefined,
34+
onChange: js.UndefOr[Boolean => Callback] = js.undefined,
3535
onChangeE: js.UndefOr[Checkbox.Event] = js.undefined,
3636
onClick: js.UndefOr[Callback] = js.undefined,
3737
onClickE: js.UndefOr[Checkbox.Event] = js.undefined,
@@ -239,7 +239,7 @@ object FormCheckbox {
239239
inline: js.UndefOr[Boolean] = js.undefined,
240240
label: js.UndefOr[ShorthandS[Label]] = js.undefined,
241241
name: js.UndefOr[String] = js.undefined,
242-
onChange: js.UndefOr[Callback] = js.undefined,
242+
onChange: js.UndefOr[Boolean => Callback] = js.undefined,
243243
onChangeE: js.UndefOr[Checkbox.Event] = js.undefined,
244244
onClick: js.UndefOr[Callback] = js.undefined,
245245
onClickE: js.UndefOr[Checkbox.Event] = js.undefined,
@@ -259,7 +259,18 @@ object FormCheckbox {
259259
): FormCheckboxProps = {
260260
val p = as.toJsObject[FormCheckboxProps]
261261
(className, clazz).toJs.foreach(v => p.className = v)
262-
(onChangeE, onChange).toJs.foreach(v => p.onChange = v)
262+
onChangeE.toJs
263+
.map(v => p.onChange = v)
264+
.orElse(
265+
onChange.toJs.foreach(v =>
266+
p.onChange = (
267+
(
268+
_: ReactMouseEvent,
269+
cp: Checkbox.CheckboxProps
270+
) => cp.checked.foreach(v(_))
271+
): Checkbox.RawEvent
272+
)
273+
)
263274
(onClickE, onClick).toJs.foreach(v => p.onClick = v)
264275
(onMouseDownE, onMouseDown).toJs.foreach(v => p.onMouseDown = v)
265276
(onMouseUpE, onMouseUp).toJs.foreach(v => p.onMouseUp = v)

facade/src/main/scala/react/semanticui/modules/checkbox/Checkbox.scala

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ final case class Checkbox(
2525
label: js.UndefOr[ShorthandS[Label]] = js.undefined,
2626
name: js.UndefOr[String] = js.undefined,
2727
onChangeE: js.UndefOr[Checkbox.Event] = js.undefined,
28-
onChange: js.UndefOr[Callback] = js.undefined,
28+
onChange: js.UndefOr[Boolean => Callback] = js.undefined,
2929
onClickE: js.UndefOr[Checkbox.Event] = js.undefined,
3030
onClick: js.UndefOr[Callback] = js.undefined,
3131
onMouseDownE: js.UndefOr[Checkbox.Event] = js.undefined,
@@ -196,7 +196,7 @@ object Checkbox {
196196
label: js.UndefOr[ShorthandS[Label]] = js.undefined,
197197
name: js.UndefOr[String] = js.undefined,
198198
onChangeE: js.UndefOr[Event] = js.undefined,
199-
onChange: js.UndefOr[Callback] = js.undefined,
199+
onChange: js.UndefOr[Boolean => Callback] = js.undefined,
200200
onClickE: js.UndefOr[Event] = js.undefined,
201201
onClick: js.UndefOr[Callback] = js.undefined,
202202
onMouseDownE: js.UndefOr[Event] = js.undefined,
@@ -223,7 +223,14 @@ object Checkbox {
223223
indeterminate.foreach(v => p.indeterminate = v)
224224
label.toJs.foreach(v => p.label = v)
225225
name.foreach(v => p.name = v)
226-
(onChangeE, onChange).toJs.foreach(v => p.onChange = v)
226+
onChangeE.toJs
227+
.map(v => p.onChange = v)
228+
.orElse(
229+
onChange.toJs.foreach(v =>
230+
p.onChange =
231+
((_: ReactMouseEvent, cp: CheckboxProps) => cp.checked.foreach(v(_))): RawEvent
232+
)
233+
)
227234
(onClickE, onClick).toJs.foreach(v => p.onClick = v)
228235
(onMouseDownE, onMouseDown).toJs.foreach(v => p.onMouseDown = v)
229236
(onMouseUpE, onMouseUp).toJs.foreach(v => p.onMouseUp = v)

facade/src/test/scala/react/semanticui/modules/checkbox/CheckboxTests.scala

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@ package react.semanticui.modules.checkbox
22

33
import utest._
44
import japgolly.scalajs.react.test._
5+
import japgolly.scalajs.react.Callback
56

67
object CheckboxTests extends TestSuite {
78
val tests = Tests {
8-
test("pusher") {
9+
test("render") {
910
val check = Checkbox()
1011
ReactTestUtils.withNewBodyElement { mountNode =>
1112
check.renderIntoDOM(mountNode)
@@ -14,5 +15,15 @@ object CheckboxTests extends TestSuite {
1415
)
1516
}
1617
}
18+
test("boolean callback") {
19+
val cb = (b: Boolean) => Callback.log(b)
20+
val check = Checkbox(onChange = cb)
21+
ReactTestUtils.withNewBodyElement { mountNode =>
22+
check.renderIntoDOM(mountNode)
23+
assert(
24+
mountNode.innerHTML == """<div class="ui fitted checkbox"><input class="hidden" readonly="" tabindex="0" type="checkbox" value=""><label></label></div>"""
25+
)
26+
}
27+
}
1728
}
1829
}

0 commit comments

Comments
 (0)