Reason PowerPlug is a set of reuseable components
and functors
for reason react.
This project is inspired by react-powerplug.
module StringList = ReList.Make(String);
<StringList initial=["d", "c", "a", "e", "b", "h", "g"]>
...{
({list, sort, reset}) =>
<div>
<button onClick={_ => sort(String.compare)}>
{ReasonReact.string("sort")}
</button>
<button onClick={_ => reset()}>
{ReasonReact.string("reset")}
</button>
<ul>
{
list
|> List.map(s => <li key=s> {ReasonReact.string(s)} </li>)
|> Array.of_list
|> ReasonReact.array
}
</ul>
</div>
}
</StringList>
yarn add reason-powerplug
or npm install reason-powerplug --save
then add reason-powerplug
to bs-dependencies
in bsconfig.json
.
All components and functors base on Value.Make
Functor.
Name | Type | Component Props | Render Props |
---|---|---|---|
STATE CONTAINERS |
|||
Toggle | Component | { initial, onChange } |
{ on, toggle, set, reset } |
Counter | Component | { initial, onChange } |
{ count, inc, dec, incBy, decBy, set, reset } |
Value | Functor Value.Make(M:S)
module type S = {type t;}; |
{ initial, onChange } |
{ value, set, reset } |
ReMap | Functor ReMap.Make(M:S)
module type S = {<br />type t;let compare: (t, t) => int;type value;}; |
{ initial, onChange } |
{ values, clear, get, has, remove, add, set, reset } |
ReSet | Functor ReSet.Make(M:S)
module type S = {<br />type t;let compare: (t, t) => int;}; |
{ initial, onChange } |
{ values, add, clear, remove, has, set, reset } |
ReList | Functor ReList.Make(M:S)
module type S = {type t;}; |
{ initial, onChange } |
{ list, first, last, push, pull, sort, set, reset } |
FEEDBACK CONTAINERS |
|||
Hover | Component | { onChange } |
{ hovered, onMouseEnter, onMouseLeave } |
Active | Component | { onChange } |
{ active, onMouseDown, onMouseUp } |
Focus | Component | { onChange } |
{ focused, onFocus, onBlur } |
Touch | Component | { onChange } |
{ touched, onTouchStart, onTouchEnd } |
FocusManager | Component | { onChange } |
{ focused, blur, tabIndex, onBlur, onFocus, onMouseDown, onMouseUp } |
FORM CONTAINERS |
|||
Input | Component | { initial, onChange } |
{value, onChange, set, reset, } |
OTHER |
|||
Interval | Component | { delay } |
{ stop, start, toggle } |
module Number =
Value.Make({
type t = int;
});
<Number initial=1>
...{
({value, set}) =>
<div onClick={_ => set(value => value + 1)}>
{value |> string_of_int |> ReasonReact.string}
</div>
}
</Number>
TODO