From 760eb6479e1f87f97b253dbfc6183eecfac72ee8 Mon Sep 17 00:00:00 2001 From: Marcin Szamotulski Date: Sat, 30 Sep 2017 19:12:58 +0200 Subject: [PATCH] createClassStateless - add displayName argument --- src/React.js | 6 ++++++ src/React.purs | 16 ++++++++++------ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/React.js b/src/React.js index 8ce9422..5d3ecdd 100644 --- a/src/React.js +++ b/src/React.js @@ -84,6 +84,12 @@ function transformState(this_){ } exports.transformState = transformState; +function createClassStatelessImpl(dn, fn) { + fn.displayName = dn; + return fn; +} +exports.createClassStatelessImpl = createClassStatelessImpl; + function createClass(spec) { var result = { displayName: spec.displayName, diff --git a/src/React.purs b/src/React.purs index b547c36..1bbc1c0 100644 --- a/src/React.purs +++ b/src/React.purs @@ -74,6 +74,7 @@ import Prelude import Control.Monad.Eff (kind Effect, Eff) import Control.Monad.Eff.Uncurried (EffFn2, runEffFn2) +import Data.Function.Uncurried (Fn2, runFn2) import Unsafe.Coerce (unsafeCoerce) -- | Name of a tag. @@ -331,16 +332,19 @@ foreign import transformState :: forall props state eff. foreign import createClass :: forall props state eff. ReactSpec props state eff -> ReactClass props --- | Create a stateless React class. +foreign import createClassStatelessImpl :: forall props. Fn2 String (props -> ReactElement) (ReactClass props) + +-- | Create a stateless React class. The first argument will set +-- | `displayName` of the component. createClassStateless :: forall props. - (props -> ReactElement) -> ReactClass props -createClassStateless = unsafeCoerce + String -> (props -> ReactElement) -> ReactClass props +createClassStateless dn fn = runFn2 createClassStatelessImpl dn fn -- | Create a stateless React class with children access. createClassStateless' :: forall props. - (props -> Array ReactElement -> ReactElement) -> ReactClass props -createClassStateless' k = - createClassStateless \props -> + String -> (props -> Array ReactElement -> ReactElement) -> ReactClass props +createClassStateless' dn k = + createClassStateless dn \props -> k props (childrenToArray (unsafeCoerce props).children) -- | Force render of a react component.