@@ -22,8 +22,6 @@ import Effect (Effect)
22
22
import Lumi.Components.Form (FormBuilder )
23
23
import Lumi.Components.Form as F
24
24
import React.Basic (JSX )
25
- import Record.Unsafe.Union (unsafeUnion )
26
- import Unsafe.Coerce (unsafeCoerce )
27
25
28
26
-- | `Form` is the base functor for the `Wizard` language. It represents a
29
27
-- | form as a step of the wizard, taking a parametrized identifier for the
@@ -68,15 +66,16 @@ step s f =
68
66
Wizard $ liftF $ Form
69
67
{ step: s
70
68
, run:
71
- \props value ->
69
+ \formProps value ->
72
70
{ form: \{ forceTopLabels, inlineTable } onChange ->
73
- form $ unsafeUnion props
71
+ form
74
72
{ value
75
- , onChange: \_ -> onChange
73
+ , onChange
76
74
, forceTopLabels
77
75
, inlineTable
76
+ , formProps
78
77
}
79
- , result: F .revalidate f props value
78
+ , result: F .revalidate f formProps value
80
79
}
81
80
}
82
81
@@ -181,31 +180,20 @@ gotoStep s w props value = go (liftStep w)
181
180
-- | A component that renders a `WizardStep` (a suspended `Wizard`).
182
181
wizard
183
182
:: forall step props value a
184
- . { step :: WizardStep step { | props } value a
183
+ . { step :: WizardStep step props value a
185
184
, value :: value
186
185
, onChange :: (value -> value ) -> Effect Unit
187
186
, forceTopLabels :: Boolean
188
187
, inlineTable :: Boolean
189
- | props
188
+ , formProps :: props
190
189
}
191
190
-> JSX
192
- wizard props@{ value, onChange, forceTopLabels, inlineTable } =
191
+ wizard props@{ value, onChange, forceTopLabels, inlineTable, formProps } =
193
192
case (un WizardStep props.step).current of
194
193
Right a ->
195
194
mempty
196
195
Left (Form form') ->
197
196
let
198
- { form } = form'.run (contractProps props) value
197
+ { form } = form'.run formProps value
199
198
in
200
199
form { forceTopLabels, inlineTable } onChange
201
- where
202
- contractProps
203
- :: { step :: WizardStep step { | props } value a
204
- , value :: value
205
- , onChange :: (value -> value ) -> Effect Unit
206
- , forceTopLabels :: Boolean
207
- , inlineTable :: Boolean
208
- | props
209
- }
210
- -> { | props }
211
- contractProps = unsafeCoerce
0 commit comments