Skip to content

Commit 28321c5

Browse files
committed
Merge pull request #40 from ethul/topic/react-0.13-update
Updates for React 0.13
2 parents e1037c9 + 9738b8f commit 28321c5

17 files changed

+650
-835
lines changed

README.md

+25-6
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
purescript-react
22
================
33

4-
[![Maintainer: paf31](https://img.shields.io/badge/maintainer-paf31-lightgrey.svg)](http://github.com/paf31) ![React: 0.12.2](https://img.shields.io/badge/react-0.12.2-lightgrey.svg)
4+
[![Maintainer: paf31](https://img.shields.io/badge/maintainer-paf31-lightgrey.svg)](http://github.com/paf31) ![React: 0.13.3](https://img.shields.io/badge/react-0.13.3-lightgrey.svg)
55

66
Low-level React Bindings for PureScript.
77

@@ -28,6 +28,17 @@ import Prelude
2828
2929
import Control.Monad.Eff
3030
31+
import Data.Maybe.Unsafe (fromJust)
32+
import Data.Nullable (toMaybe)
33+
34+
import DOM (DOM())
35+
import DOM.HTML (window)
36+
import DOM.HTML.Document (body)
37+
import DOM.HTML.Types (htmlElementToElement)
38+
import DOM.HTML.Window (document)
39+
40+
import DOM.Node.Types (Element())
41+
3142
import React
3243
3344
import qualified React.DOM as D
@@ -37,16 +48,24 @@ incrementCounter ctx e = do
3748
val <- readState ctx
3849
writeState ctx (val + 1)
3950
40-
counter = mkUI $ spec 0 \ctx -> do
51+
counter = createClass $ spec 0 \ctx -> do
4152
val <- readState ctx
4253
return $ D.p [ P.className "Counter"
4354
, P.onClick (incrementCounter ctx)
44-
]
55+
]
4556
[ D.text (show val)
4657
, D.text " Click me to increment!"
4758
]
4859
49-
main = do
50-
let component = D.div [] [ counter {} ]
51-
renderToBody component
60+
main = container >>= render ui
61+
where
62+
ui :: ReactElement
63+
ui = D.div [] [ createFactory counter {} ]
64+
65+
container :: forall eff. Eff (dom :: DOM | eff) Element
66+
container = do
67+
win <- window
68+
doc <- document win
69+
elm <- fromJust <$> toMaybe <$> body doc
70+
return $ htmlElementToElement elm
5271
```

bower.json

+5-3
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,10 @@
1616
"tests"
1717
],
1818
"dependencies": {
19-
"purescript-console": "^0.1.0",
20-
"purescript-dom": "^0.1.1",
21-
"react": "~0.12.2"
19+
"purescript-dom": "~0.2.6"
20+
},
21+
"devDependencies": {
22+
"purescript-console": "~0.1.1",
23+
"react": "~0.13.3"
2224
}
2325
}

docs/React.md

+34-34
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,18 @@
22

33
This module defines foreign types and functions which wrap React's functionality.
44

5-
#### `UI`
5+
#### `ReactElement`
66

77
``` purescript
8-
data UI :: *
8+
data ReactElement :: *
99
```
1010

1111
A virtual DOM node, or component.
1212

13-
#### `UIRef`
13+
#### `ReactThis`
1414

1515
``` purescript
16-
data UIRef :: *
16+
data ReactThis :: *
1717
```
1818

1919
A reference to a component, essentially React's `this`.
@@ -147,90 +147,90 @@ A function which handles events.
147147
#### `Render`
148148

149149
``` purescript
150-
type Render props state eff = UIRef -> Eff (props :: ReactProps props, refs :: ReactRefs Disallowed, state :: ReactState ReadOnly state | eff) UI
150+
type Render props state eff = ReactThis -> Eff (props :: ReactProps props, refs :: ReactRefs Disallowed, state :: ReactState ReadOnly state | eff) ReactElement
151151
```
152152

153153
A rendering function.
154154

155-
#### `UISpec`
155+
#### `ReactSpec`
156156

157157
``` purescript
158-
type UISpec props state eff = { render :: Render props state eff, displayName :: String, getInitialState :: UIRef -> Eff (props :: ReactProps props, state :: ReactState Disallowed state, refs :: ReactRefs Disallowed | eff) state, componentWillMount :: UIRef -> Eff (props :: ReactProps props, state :: ReactState ReadWrite state, refs :: ReactRefs Disallowed | eff) Unit, componentDidMount :: UIRef -> Eff (props :: ReactProps props, state :: ReactState ReadWrite state, refs :: ReactRefs ReadOnly | eff) Unit, componentWillReceiveProps :: UIRef -> props -> Eff (props :: ReactProps props, state :: ReactState ReadWrite state, refs :: ReactRefs ReadOnly | eff) Unit, shouldComponentUpdate :: UIRef -> props -> state -> Eff (props :: ReactProps props, state :: ReactState ReadWrite state, refs :: ReactRefs ReadOnly | eff) Boolean, componentWillUpdate :: UIRef -> props -> state -> Eff (props :: ReactProps props, state :: ReactState ReadWrite state, refs :: ReactRefs ReadOnly | eff) Unit, componentDidUpdate :: UIRef -> props -> state -> Eff (props :: ReactProps props, state :: ReactState ReadOnly state, refs :: ReactRefs ReadOnly | eff) Unit, componentWillUnmount :: UIRef -> Eff (props :: ReactProps props, state :: ReactState ReadOnly state, refs :: ReactRefs ReadOnly | eff) Unit }
158+
type ReactSpec props state eff = { render :: Render props state eff, displayName :: String, getInitialState :: ReactThis -> Eff (props :: ReactProps props, state :: ReactState Disallowed state, refs :: ReactRefs Disallowed | eff) state, componentWillMount :: ReactThis -> Eff (props :: ReactProps props, state :: ReactState ReadWrite state, refs :: ReactRefs Disallowed | eff) Unit, componentDidMount :: ReactThis -> Eff (props :: ReactProps props, state :: ReactState ReadWrite state, refs :: ReactRefs ReadOnly | eff) Unit, componentWillReceiveProps :: ReactThis -> props -> Eff (props :: ReactProps props, state :: ReactState ReadWrite state, refs :: ReactRefs ReadOnly | eff) Unit, shouldComponentUpdate :: ReactThis -> props -> state -> Eff (props :: ReactProps props, state :: ReactState ReadWrite state, refs :: ReactRefs ReadOnly | eff) Boolean, componentWillUpdate :: ReactThis -> props -> state -> Eff (props :: ReactProps props, state :: ReactState ReadWrite state, refs :: ReactRefs ReadOnly | eff) Unit, componentDidUpdate :: ReactThis -> props -> state -> Eff (props :: ReactProps props, state :: ReactState ReadOnly state, refs :: ReactRefs ReadOnly | eff) Unit, componentWillUnmount :: ReactThis -> Eff (props :: ReactProps props, state :: ReactState ReadOnly state, refs :: ReactRefs ReadOnly | eff) Unit }
159159
```
160160

161161
A specification of a component.
162162

163-
#### `UIFactory`
163+
#### `spec`
164164

165165
``` purescript
166-
type UIFactory props = props -> UI
166+
spec :: forall props state eff. state -> Render props state eff -> ReactSpec props state eff
167167
```
168168

169-
Factory function for components.
169+
Create a component specification.
170170

171-
#### `spec`
171+
#### `ReactClass`
172172

173173
``` purescript
174-
spec :: forall props state eff. state -> Render props state eff -> UISpec props state eff
174+
data ReactClass :: * -> *
175175
```
176176

177-
Create a component specification.
177+
React class for components.
178178

179179
#### `getProps`
180180

181181
``` purescript
182-
getProps :: forall props eff. UIRef -> Eff (props :: ReactProps props | eff) props
182+
getProps :: forall props eff. ReactThis -> Eff (props :: ReactProps props | eff) props
183183
```
184184

185185
Read the component props.
186186

187187
#### `getRefs`
188188

189189
``` purescript
190-
getRefs :: forall write eff. UIRef -> Eff (refs :: ReactRefs (Read write) | eff) Refs
190+
getRefs :: forall write eff. ReactThis -> Eff (refs :: ReactRefs (Read write) | eff) Refs
191191
```
192192

193193
Read the component refs.
194194

195195
#### `getChildren`
196196

197197
``` purescript
198-
getChildren :: forall props eff. UIRef -> Eff (props :: ReactProps props | eff) (Array UI)
198+
getChildren :: forall props eff. ReactThis -> Eff (props :: ReactProps props | eff) (Array ReactElement)
199199
```
200200

201201
Read the component children property.
202202

203203
#### `writeState`
204204

205205
``` purescript
206-
writeState :: forall state eff. UIRef -> state -> Eff (state :: ReactState ReadWrite state | eff) state
206+
writeState :: forall state eff. ReactThis -> state -> Eff (state :: ReactState ReadWrite state | eff) state
207207
```
208208

209209
Write the component state.
210210

211211
#### `readState`
212212

213213
``` purescript
214-
readState :: forall state write eff. UIRef -> Eff (state :: ReactState (Read write) state | eff) state
214+
readState :: forall state write eff. ReactThis -> Eff (state :: ReactState (Read write) state | eff) state
215215
```
216216

217217
Read the component state.
218218

219219
#### `transformState`
220220

221221
``` purescript
222-
transformState :: forall state statePerms eff. UIRef -> (state -> state) -> Eff (state :: ReactState ReadWrite state | eff) state
222+
transformState :: forall state eff. ReactThis -> (state -> state) -> Eff (state :: ReactState ReadWrite state | eff) state
223223
```
224224

225225
Transform the component state by applying a function.
226226

227-
#### `mkUI`
227+
#### `createClass`
228228

229229
``` purescript
230-
mkUI :: forall props state eff. UISpec props state eff -> UIFactory props
230+
createClass :: forall props state eff. ReactSpec props state eff -> ReactClass props
231231
```
232232

233-
Create a component from a component spec.
233+
Create a React class from a specification.
234234

235235
#### `handle`
236236

@@ -240,36 +240,36 @@ handle :: forall eff ev props state result. (ev -> EventHandlerContext eff props
240240

241241
Create an event handler.
242242

243-
#### `renderToString`
243+
#### `createElement`
244244

245245
``` purescript
246-
renderToString :: UI -> String
246+
createElement :: forall props. ReactClass props -> props -> Array ReactElement -> ReactElement
247247
```
248248

249-
Render a component as a string.
249+
Create an element from a React class.
250250

251-
#### `renderToBody`
251+
#### `createFactory`
252252

253253
``` purescript
254-
renderToBody :: forall eff. UI -> Eff (dom :: DOM | eff) UI
254+
createFactory :: forall props. ReactClass props -> props -> ReactElement
255255
```
256256

257-
Render a component to the document body.
257+
Create a factory from a React class.
258258

259-
#### `renderToElementById`
259+
#### `render`
260260

261261
``` purescript
262-
renderToElementById :: forall eff. String -> UI -> Eff (dom :: DOM | eff) UI
262+
render :: forall eff. ReactElement -> Element -> Eff (dom :: DOM | eff) ReactElement
263263
```
264264

265-
Render a component to the element with the specified ID.
265+
Render a React element in a document element.
266266

267-
#### `createElement`
267+
#### `renderToString`
268268

269269
``` purescript
270-
createElement :: forall props. UIFactory props -> props -> Array UI -> UI
270+
renderToString :: ReactElement -> String
271271
```
272272

273-
Create an element from a component factory.
273+
Render a React element as a string.
274274

275275

0 commit comments

Comments
 (0)