@@ -184,19 +184,39 @@ defmodule Kaffy.ResourceForm do
184
184
185
185
select ( form , field , values , [ class: "custom-select" , value: value ] ++ opts )
186
186
187
- { :parameterized , Ecto.Enum , % { mappings: mappings } } ->
187
+ { :parameterized , Ecto.Enum , % { mappings: mappings , on_cast: on_cast } } ->
188
188
value = Map . get ( data , field , nil )
189
- select ( form , field , mappings , [ class: "custom-select" , value: value ] ++ opts )
189
+
190
+ # NOTE enum_options preserves the order of enum defined in the schema
191
+ enum_options =
192
+ Enum . map ( mappings , fn { k , _ } ->
193
+ k = to_string ( k )
194
+ v = Map . get ( on_cast , k )
195
+ k = String . capitalize ( k )
196
+ { k , v }
197
+ end )
198
+
199
+ select ( form , field , enum_options , [ class: "custom-select" , value: value ] ++ opts )
190
200
191
201
{ :array , { :parameterized , Ecto.Enum , % { values: values } } } ->
192
202
values = Enum . map ( values , & to_string / 1 )
193
203
value = Map . get ( data , field , nil )
194
204
195
205
multiple_select ( form , field , values , [ value: value ] ++ opts )
196
206
197
- { :array , { :parameterized , Ecto.Enum , % { mappings: mappings } } } ->
207
+ { :array , { :parameterized , Ecto.Enum , % { mappings: mappings , on_cast: on_cast } } } ->
198
208
value = Map . get ( data , field , nil )
199
- multiple_select ( form , field , mappings , [ value: value ] ++ opts )
209
+
210
+ # NOTE enum_options preserves the order of enum defined in the schema
211
+ enum_options =
212
+ Enum . map ( mappings , fn { k , _ } ->
213
+ k = to_string ( k )
214
+ v = Map . get ( on_cast , k )
215
+ k = String . capitalize ( k )
216
+ { k , v }
217
+ end )
218
+
219
+ multiple_select ( form , field , enum_options , [ value: value ] ++ opts )
200
220
201
221
{ :array , _ } ->
202
222
case ! is_nil ( options [ :values_fn ] ) && is_function ( options [ :values_fn ] , 2 ) do
0 commit comments