diff --git a/docs/React/DOM/Props.md b/docs/React/DOM/Props.md index ce21a8e..c1ab1c2 100644 --- a/docs/React/DOM/Props.md +++ b/docs/React/DOM/Props.md @@ -18,6 +18,12 @@ unsafeMkProps :: forall val. String -> val -> Props unsafeUnfoldProps :: forall vals. String -> { | vals } -> Props ``` +#### `unsafePrefixProps` + +``` purescript +unsafePrefixProps :: forall vals. String -> { | vals } -> Props +``` + #### `unsafeFromPropsArray` ``` purescript diff --git a/src/React/DOM/Props.js b/src/React/DOM/Props.js index 4edff94..f89e67f 100644 --- a/src/React/DOM/Props.js +++ b/src/React/DOM/Props.js @@ -22,7 +22,7 @@ function unsafeUnfoldProps(key) { for (var subprop in value) { if (value.hasOwnProperty(subprop)) { - result[subprop] = value[subprop]; + result[subprop] = value[subprop]; } } @@ -31,6 +31,21 @@ function unsafeUnfoldProps(key) { } exports.unsafeUnfoldProps = unsafeUnfoldProps; +function unsafePrefixProps(prefix) { + return function(value){ + var result = {}; + + for (var prop in value) { + if (value.hasOwnProperty(prop)) { + result[prefix + prop] = value[prop]; + } + } + + return result; + }; +} +exports.unsafePrefixProps = unsafePrefixProps; + function unsafeFromPropsArray(props) { var result = {}; diff --git a/src/React/DOM/Props.purs b/src/React/DOM/Props.purs index f3cac0f..96bb7cc 100644 --- a/src/React/DOM/Props.purs +++ b/src/React/DOM/Props.purs @@ -8,13 +8,15 @@ foreign import unsafeMkProps :: forall val. String -> val -> Props foreign import unsafeUnfoldProps :: forall vals. String -> { | vals } -> Props +foreign import unsafePrefixProps :: forall vals. String -> { | vals } -> Props + foreign import unsafeFromPropsArray :: forall props. Array Props -> props aria :: forall ariaAttrs. { | ariaAttrs } -> Props -aria = unsafeUnfoldProps "aria" +aria = unsafePrefixProps "aria-" _data :: forall dataAttrs. { | dataAttrs } -> Props -_data = unsafeUnfoldProps "data" +_data = unsafePrefixProps "data-" style :: forall style. { | style } -> Props style = unsafeUnfoldProps "style"