Skip to content

Commit a14c62a

Browse files
Added ImageInput and replaced ImageField with it in the create and update forms (#31)
1 parent f95c926 commit a14c62a

File tree

5 files changed

+39
-10
lines changed

5 files changed

+39
-10
lines changed

spra-web/src/main/scala/net/wiringbits/spra/ui/web/components/CreateGuesser.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ object CreateGuesser {
2929
case ColumnType.Email =>
3030
TextInput(source = field.name, isRequired = isRequired, validate = required)
3131
case ColumnType.Image =>
32-
ImageField(source = field.name, isRequired = isRequired, validate = required)
32+
ImageInput(source = field.name, isRequired = isRequired, validate = required)(ImageField(source = "src"))
3333
case ColumnType.Number =>
3434
NumberInput(source = field.name, isRequired = isRequired, validate = required)
3535
case ColumnType.Reference(reference, source) =>

spra-web/src/main/scala/net/wiringbits/spra/ui/web/components/EditGuesser.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ object EditGuesser {
3333
case ColumnType.Date => DateTimeInput(source = field.name, disabled = field.disabled)
3434
case ColumnType.Text => TextInput(source = field.name, disabled = field.disabled)
3535
case ColumnType.Email => TextInput(source = field.name, disabled = field.disabled)
36-
case ColumnType.Image => ImageField(source = field.name)
36+
case ColumnType.Image => ImageInput(source = field.name)(ImageField(source = "src"))
3737
case ColumnType.Number => NumberInput(source = field.name, disabled = field.disabled)
3838
case ColumnType.Reference(reference, source) =>
3939
ReferenceInput(

spra-web/src/main/scala/net/wiringbits/spra/ui/web/facades/reactadmin/ImageField.scala

+7-7
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,20 @@ import scala.scalajs.js.|
88
object ImageField extends ExternalComponent {
99
case class Props(
1010
source: String,
11+
title: String,
12+
sortable: Boolean = false,
1113
disabled: Boolean = false,
12-
sx: js.Dynamic = js.Dynamic.literal(),
13-
isRequired: Boolean = false,
14-
validate: js.UndefOr[js.Any] = js.undefined
14+
sx: js.Dynamic = js.Dynamic.literal()
1515
)
1616

1717
def apply(
1818
source: String,
19+
title: String = "title",
20+
sortable: Boolean = false,
1921
disabled: Boolean = false,
20-
sx: js.Dynamic = js.Dynamic.literal(),
21-
isRequired: Boolean = false,
22-
validate: js.UndefOr[js.Any] = js.undefined
22+
sx: js.Dynamic = js.Dynamic.literal()
2323
): BuildingComponent[_, _] = {
24-
super.apply(Props(source, disabled, sx, isRequired, validate))
24+
super.apply(Props(source, title, sortable, disabled, sx))
2525
}
2626

2727
override val component: String | js.Object = ReactAdmin.ImageField
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package net.wiringbits.spra.ui.web.facades.reactadmin
2+
3+
import slinky.core.{BuildingComponent, ExternalComponent}
4+
import scala.scalajs.js
5+
import scala.scalajs.js.|
6+
7+
// https://marmelab.com/react-admin/ImageInput.html
8+
object ImageInput extends ExternalComponent {
9+
case class Props(
10+
source: String,
11+
disabled: Boolean = false,
12+
sx: js.Dynamic = js.Dynamic.literal(),
13+
isRequired: Boolean = false,
14+
validate: js.UndefOr[js.Any] = js.undefined
15+
)
16+
17+
def apply(
18+
source: String,
19+
disabled: Boolean = false,
20+
sx: js.Dynamic = js.Dynamic.literal(),
21+
isRequired: Boolean = false,
22+
validate: js.UndefOr[js.Any] = js.undefined,
23+
onDrop: js.UndefOr[js.Function2[js.Array[js.Any], js.Function1[js.Array[js.Object], Unit], Unit]] = js.undefined
24+
): BuildingComponent[_, _] = {
25+
super.apply(Props(source, disabled, sx, isRequired, validate))
26+
}
27+
28+
override val component: String | js.Object = ReactAdmin.ImageInput
29+
}

spra-web/src/main/scala/net/wiringbits/spra/ui/web/facades/reactadmin/package.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ package object reactadmin {
1414
val Admin, Resource, EditGuesser, ListGuesser, TextInput, ImageField, NumberInput, DateTimeInput, ReferenceInput,
1515
SelectInput, Button, DeleteButton, SaveButton, TopToolbar, Toolbar, Edit, SimpleForm, DateField, TextField,
1616
EmailField, NumberField, ReferenceField, DateInput, FilterButton, ExportButton, List, Datagrid, Create,
17-
CreateButton: js.Object =
17+
CreateButton, ImageInput: js.Object =
1818
js.native
1919
}
2020
}

0 commit comments

Comments
 (0)