Skip to content

Commit 4e7071d

Browse files
authored
Merge pull request #26 from lumihq/michael/split-non-dom-event-stuff
Move shared Events stuff out of React.Basic.DOM
2 parents ee7bb67 + 2f0b68e commit 4e7071d

File tree

6 files changed

+226
-201
lines changed

6 files changed

+226
-201
lines changed

examples/controlled-input/src/ControlledInput.purs

+5-5
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ module ControlledInput where
22

33
import Prelude
44

5-
import Data.Maybe (Maybe(..), fromMaybe)
5+
import Data.Maybe (Maybe(..), fromMaybe, maybe)
66
import React.Basic (ReactComponent, react)
77
import React.Basic.DOM as R
8-
import React.Basic.DOM.Events (targetValue, timeStamp)
9-
import React.Basic.DOM.Events as Events
8+
import React.Basic.DOM.Events (preventDefault, targetValue, timeStamp)
9+
import React.Basic.Events as Events
1010

1111
component :: ReactComponent {}
1212
component = react
@@ -15,7 +15,7 @@ component = react
1515
, receiveProps: \_ _ _ -> pure unit
1616
, render: \_ state setState ->
1717
R.div_
18-
[ R.p_ [ R.input { onChange: Events.handler (Events.preventDefault >>> Events.merge { targetValue, timeStamp })
18+
[ R.p_ [ R.input { onChange: Events.handler (preventDefault >>> Events.merge { targetValue, timeStamp })
1919
\{ timeStamp, targetValue } -> setState \_ ->
2020
{ value: fromMaybe "" targetValue
2121
, timeStamp: Just timeStamp
@@ -24,6 +24,6 @@ component = react
2424
}
2525
]
2626
, R.p_ [ R.text ("Current value = " <> show state.value) ]
27-
, R.p_ [ R.text ("Changed at = " <> fromMaybe "never" (show <$> state.timeStamp)) ]
27+
, R.p_ [ R.text ("Changed at = " <> maybe "never" show state.timeStamp) ]
2828
]
2929
}

generated-docs/React/Basic/DOM/Events.md

+3-89
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,6 @@
11
## Module React.Basic.DOM.Events
22

3-
This module defines safe event function and property accessors.
4-
5-
#### `EventHandler`
6-
7-
``` purescript
8-
type EventHandler = EffFn1 (react :: ReactFX) SyntheticEvent Unit
9-
```
10-
11-
An event handler, which receives a `SyntheticEvent` and performs some
12-
effects in return.
13-
14-
#### `SyntheticEvent`
15-
16-
``` purescript
17-
data SyntheticEvent :: Type
18-
```
19-
20-
Event data that we receive from React.
3+
This module defines safe DOM event function and property accessors.
214

225
#### `DOMNode`
236

@@ -35,62 +18,6 @@ data DOMEvent :: Type
3518

3619
The underlying browser Event.
3720

38-
#### `EventFn`
39-
40-
``` purescript
41-
newtype EventFn a b
42-
```
43-
44-
Encapsulates a safe event operation. `EventFn`s can be composed
45-
to perform multiple operations.
46-
47-
For example:
48-
49-
```purs
50-
input { onChange: handler (preventDefault >>> targetValue)
51-
\value -> setState \_ -> { value }
52-
}
53-
```
54-
55-
##### Instances
56-
``` purescript
57-
Semigroupoid EventFn
58-
Category EventFn
59-
(IsSymbol l, RowCons l (EventFn a b) fns_rest fns, RowCons l b r_rest r, RowLacks l fns_rest, RowLacks l r_rest, Merge rest fns_rest a r_rest) => Merge (Cons l (EventFn a b) rest) fns a r
60-
```
61-
62-
#### `handler`
63-
64-
``` purescript
65-
handler :: forall a. EventFn SyntheticEvent a -> (a -> Eff (react :: ReactFX) Unit) -> EventHandler
66-
```
67-
68-
Create an `EventHandler`, given an `EventFn` and a callback.
69-
70-
For example:
71-
72-
```purs
73-
input { onChange: handler targetValue
74-
\value -> setState \_ -> { value }
75-
}
76-
```
77-
78-
#### `merge`
79-
80-
``` purescript
81-
merge :: forall a fns fns_list r. RowToList fns fns_list => Merge fns_list fns a r => { | fns } -> EventFn a ({ | r })
82-
```
83-
84-
Merge multiple `EventFn` operations and collect their results.
85-
86-
For example:
87-
88-
```purs
89-
input { onChange: handler (merge { targetValue, timeStamp })
90-
\{ targetValue, timeStamp } -> setState \_ -> { ... }
91-
}
92-
```
93-
9421
#### `bubbles`
9522

9623
``` purescript
@@ -184,13 +111,13 @@ target :: EventFn SyntheticEvent DOMNode
184111
#### `targetChecked`
185112

186113
``` purescript
187-
targetChecked :: EventFn SyntheticEvent (Nullable Boolean)
114+
targetChecked :: EventFn SyntheticEvent (Maybe Boolean)
188115
```
189116

190117
#### `targetValue`
191118

192119
``` purescript
193-
targetValue :: EventFn SyntheticEvent (Nullable String)
120+
targetValue :: EventFn SyntheticEvent (Maybe String)
194121
```
195122

196123
#### `timeStamp`
@@ -205,17 +132,4 @@ timeStamp :: EventFn SyntheticEvent Number
205132
type_ :: EventFn SyntheticEvent String
206133
```
207134

208-
#### `Merge`
209-
210-
``` purescript
211-
class Merge (rl :: RowList) fns a r | rl -> fns, rl a -> r where
212-
mergeImpl :: RLProxy rl -> { | fns } -> EventFn a ({ | r })
213-
```
214-
215-
##### Instances
216-
``` purescript
217-
Merge Nil () a ()
218-
(IsSymbol l, RowCons l (EventFn a b) fns_rest fns, RowCons l b r_rest r, RowLacks l fns_rest, RowLacks l r_rest, Merge rest fns_rest a r_rest) => Merge (Cons l (EventFn a b) rest) fns a r
219-
```
220-
221135

generated-docs/React/Basic/Events.md

+98
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
## Module React.Basic.Events
2+
3+
#### `EventHandler`
4+
5+
``` purescript
6+
type EventHandler = EffFn1 (react :: ReactFX) SyntheticEvent Unit
7+
```
8+
9+
An event handler, which receives a `SyntheticEvent` and performs some
10+
effects in return.
11+
12+
#### `SyntheticEvent`
13+
14+
``` purescript
15+
data SyntheticEvent :: Type
16+
```
17+
18+
Event data that we receive from React.
19+
20+
#### `EventFn`
21+
22+
``` purescript
23+
newtype EventFn a b
24+
```
25+
26+
Encapsulates a safe event operation. `EventFn`s can be composed
27+
to perform multiple operations.
28+
29+
For example:
30+
31+
```purs
32+
input { onChange: handler (preventDefault >>> targetValue)
33+
\value -> setState \_ -> { value }
34+
}
35+
```
36+
37+
##### Instances
38+
``` purescript
39+
Semigroupoid EventFn
40+
Category EventFn
41+
(IsSymbol l, RowCons l (EventFn a b) fns_rest fns, RowCons l b r_rest r, RowLacks l fns_rest, RowLacks l r_rest, Merge rest fns_rest a r_rest) => Merge (Cons l (EventFn a b) rest) fns a r
42+
```
43+
44+
#### `unsafeEventFn`
45+
46+
``` purescript
47+
unsafeEventFn :: forall a b. (a -> b) -> EventFn a b
48+
```
49+
50+
Unsafely create an `EventFn`. This function should be avoided.
51+
Use the helper functions specific to your platform (such as `React.Basic.DOM.Events`).
52+
53+
#### `handler`
54+
55+
``` purescript
56+
handler :: forall a. EventFn SyntheticEvent a -> (a -> Eff (react :: ReactFX) Unit) -> EventHandler
57+
```
58+
59+
Create an `EventHandler`, given an `EventFn` and a callback.
60+
61+
For example:
62+
63+
```purs
64+
input { onChange: handler targetValue
65+
\value -> setState \_ -> { value }
66+
}
67+
```
68+
69+
#### `merge`
70+
71+
``` purescript
72+
merge :: forall a fns fns_list r. RowToList fns fns_list => Merge fns_list fns a r => { | fns } -> EventFn a ({ | r })
73+
```
74+
75+
Merge multiple `EventFn` operations and collect their results.
76+
77+
For example:
78+
79+
```purs
80+
input { onChange: handler (merge { targetValue, timeStamp })
81+
\{ targetValue, timeStamp } -> setState \_ -> { ... }
82+
}
83+
```
84+
85+
#### `Merge`
86+
87+
``` purescript
88+
class Merge (rl :: RowList) fns a r | rl -> fns, rl a -> r where
89+
mergeImpl :: RLProxy rl -> { | fns } -> EventFn a ({ | r })
90+
```
91+
92+
##### Instances
93+
``` purescript
94+
Merge Nil () a ()
95+
(IsSymbol l, RowCons l (EventFn a b) fns_rest fns, RowCons l b r_rest r, RowLacks l fns_rest, RowLacks l r_rest, Merge rest fns_rest a r_rest) => Merge (Cons l (EventFn a b) rest) fns a r
96+
```
97+
98+

src/React/Basic/DOM.purs

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
module React.Basic.DOM where
99

1010
import React.Basic (JSX, ReactComponent, createElement)
11-
import React.Basic.DOM.Events (EventHandler)
11+
import React.Basic.Events (EventHandler)
1212
import Unsafe.Coerce (unsafeCoerce)
1313

1414
-- | Create a text node.

0 commit comments

Comments
 (0)