- Update for PureScript 0.12 compatibility
- Upgrade to Aff 4.0
- Support for purescript-smolder 10 (fixes tail-recursive/stack issue with large num of elements) #139.
- Use create-react-class module to avoid deprecation warning #142.
- Fix crash when React event object is null #136.
- Add basic test suite #133.
- Support for purescript-smolder 9
- Fix rendering duplicate Preact events. Fixes #124
- Fix React interop example and add to test suite.
- Use React component class for memoized views. Significantly improves performance by avoiding unnecessary React VDOM subtree comparison. This brings performance characteristics in line with vanilla React and a single state atom and PureRenderMixin.
- Check for target.value. Fixes #119
- Send events returned by effects after the current execution context. Fixes issue with event ordering.
- Update for PureScript 0.11 #116
- Remove redundant arrays in rendered React VDOM
- Fixed type error in devtool state serialization #117
- Fix rendering of
style
element contents.
- Add
parseSegment
to Pux.Router #103
- Fix redundant initial render.
- Add
reactClassWithProps
for using arbitrary props with external React classes. - Add HMR support to pux-devtool.
- Use
ev.target
instead ofev.currentTarget
fortargetValue
function.
- Fix issue with normalizing attribute names when rendering a foreign react class.
- Use raw DOM event in React renderer. Fixes an issue with reading foreign event types.
- Improve React rendering performance.
- Cache previously rendered elements to improve rendering performance.
- Fix React attribute normalization.
- Fix referential transparency of
memoize
#113
This is a major upgrade and rewrite with breaking changes:
- Markup now uses purescript-smolder and
Html
has been replaced with a newHTML
type. - Event handlers now receive the raw DOM event from purescript-dom, and Pux no longer provides its own event types.
- Type signatures for
start
,Config
,App
have changed to include a new type parameter and different labels. - Effects in the EffModel now return
Maybe a
instead ofa
. - Rendering is no longer tied to React. Other virtual DOM renderers can be implemented.
- Added memoize function for views is provided to prevent unnecessary renders.
- Added constructor for style element and attribute which takes
CSS
from purescript-css. - Added full isomorphic routing and rendering setup to pux-starter-app.
- Actions are now referred to as events in source code and documentation.
- The "update" function is now referred to as the "foldp" function in source code and documentation.
See the updated guide for help upgrading to Pux 8.
- Remove unused
(<|>)
import - Use
CustomEvent
instead ofEvent
(fixes #76) - Fix #102
- Additional HTML element constructors. #74
- Remove bind/append functions in favor of operators. Fixes bug with
Html
andFunctor
instance. #72
- Fix typo with
withTextChild
andwithChildren
precendence. #70
- Tweak fixity of
Html
operators #64
- Allow EXCEPTION effect in updates #58
- Invoke React.createElement correctly when passing it children #51
- Various docs updated for purescript 0.9
- Correctly parse queries in
routeFromUrl
#49
- Implement attribute functor #47
- Add missing purescript-globals dependency #46
- Use <> instead of ++ and pure instead of return
- Update dependencies for PureScript 0.9 - no changes to the public API.
onlyEffects
function for returning aneffModel
with new effects but no state changes.
- Fix map FFI for
Html
text nodes. #38
- Fix map of actions attached to app's root element. See #4e68bc8
style
attribute changed to accept an array of tuples instead of a record. This is so styles can be composed. See #27- Change
toReact
to returnReactClass props
from purescript-react.
- Change
tabIndex
toInt -> Attribute a
. - Change
checked
toBoolean -> Attribute a
. - Do not call
.preventDefault()
on click, change, and other relevant handlers.
Pux.Html.Attributes.defaultValue
andPux.Html.Attributes.defaultChecked
.Pux.Html.Events.onKey
for sending an action when a specific key is pressed.Pux.Router.navigateTo
for changing the URL.
- Export app
Config
type.
- BREAKING: Change relevant attributes to
Boolean -> Attribute a
orInt -> Attribute a
.
- Implement functor instance for
Html
, so authors can usemap
instead offorwardTo
.
- Provide type alias for core set of effects
CoreEffects
. See #20. - Added
toReact
function that returns React class from Pux component. - Added
fromReact
function that returns Pux Html element from React component. - Added additional SVG attributes and elements from React v15.0.0
- Use record instead of string for style attribute value.
- All functions in
Pux.Html.Elements
now receive children. This enables consistent use of the!
operator. - Added
##
operator to combine array ofHtml
.
- The
VirtualDOM
monad has been replaced with#
operator and rebindabledo
, which enables the use of both array notation ordo
notation for composing views. VirtualDOM
is nowHtml a
and is parameterized by the component's action type.- One-to-one mapping between event types and React's synthetic events.
- The
Update
function no longer receives an inputSignal.Channel
. EffModel
type has changed to{ state: state, effects: Array (Aff eff action)
, and actions are automatically fed into the input channel.
- The
VirtualDOM
monad has been replaced by a simpler data structureHtml a
. Element attributes and children can now be specified using array literal notation.do
notation is optional and can be used viaPux.Html.bind
andPux.Html.#
. - All event handlers receive an event, and the use of
Prelude.const
is encouraged to ignore events when constructing actions. - The effect in the
Update
function type signature now appears last, andUpdate
no longer receives a channel as the third argument. - Applications are now created using
start
, and the resultingapp.html
signal passed torenderToDOM
orrenderToString
.
- Load React from CommonJS. Fixes #10.
- Fix onChange handler so it produces a value. Fixes #7.
- List all dependencies. Fixes #9.
- SVG elements and attributes. Fixes #6.
- Make foreign functions safe in runtimes without
window
.
- BREAKING:
View
type synonym removed.VDom
renamed toVirtualDOM
and exported viaPux
andPux.DOM
instead ofPux.View
.
- Initial release. Experimental API.