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

Commit 0ead2ed

Browse files
committed
refactor
1 parent 80d58cb commit 0ead2ed

File tree

1 file changed

+19
-15
lines changed

1 file changed

+19
-15
lines changed

src/Component/App.purs

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@ import React.Basic.DOM.Events (preventDefault, targetValue)
1414
type Props =
1515
{}
1616

17+
type Form =
18+
{ item :: Item
19+
, items :: Items
20+
, name :: String
21+
}
1722
type Item = String
1823
type Items = Array Item
1924
type Name = String
@@ -22,11 +27,7 @@ data Select = Select Name Items
2227

2328
type State =
2429
{ built :: Maybe Select
25-
, form ::
26-
{ item :: Item
27-
, name :: String
28-
}
29-
, items :: Items
30+
, form :: Form
3031
}
3132

3233
data Action
@@ -42,18 +43,20 @@ component = createComponent "App"
4243
app :: JSX
4344
app = make component { initialState, render, update } {}
4445

46+
buildFromForm :: Form -> Select
47+
buildFromForm { name, items } = Select name items
48+
49+
initialForm :: Form
50+
initialForm = { item: "", items: [], name: "" }
51+
4552
initialState :: State
4653
initialState =
4754
{ built: Nothing
48-
, form:
49-
{ item: ""
50-
, name: ""
51-
}
52-
, items: []
55+
, form: initialForm
5356
}
5457

5558
render :: Self Props State Action -> JSX
56-
render self@{ state: { built, form, items } } =
59+
render self@{ state: { built, form } } =
5760
H.div
5861
{ className: "app"
5962
, children:
@@ -91,7 +94,6 @@ render self@{ state: { built, form, items } } =
9194
, value: form.item
9295
}
9396
]
94-
, H.br {}
9597
, H.button
9698
{ onClick:
9799
capture
@@ -104,7 +106,7 @@ render self@{ state: { built, form, items } } =
104106
, H.div_
105107
[ H.ul_
106108
(mapFlipped
107-
items
109+
form.items
108110
(\i ->
109111
H.li_
110112
[ H.text i
@@ -147,9 +149,11 @@ render self@{ state: { built, form, items } } =
147149
update :: Self Props State Action -> Action -> StateUpdate Props State Action
148150
update self Noop = NoUpdate
149151
update self@{ state } AddItem =
150-
Update state { form = state.form { item = "" }, items = Array.snoc state.items state.form.item }
152+
Update
153+
state
154+
{ form = state.form { item = "", items = Array.snoc state.form.items state.form.item } }
151155
update self@{ state } BuildForm =
152-
Update state { built = Just (Select state.form.name state.items), form = { item: "", name: "" } }
156+
Update state { built = Just (buildFromForm state.form), form = initialForm }
153157
update self@{ state } (EditItem v) =
154158
Update state { form = state.form { item = v } }
155159
update self@{ state } (EditName v) =

0 commit comments

Comments
 (0)