@ctbucha/bs-react-admin

0.0.8 • Public • Published

bs-react-admin

BuckleScript bindings for react-admin.

Status

🚧 This is a WIP, not everything is supported yet. 🚧

Feel free to create an issue or PR if you find anything missing.

Also, many of the types are overly permissive in an attempt to just get react-admin to work with ReasonML projects. Hopefully, these types will be much stricter in future releases.

Installation

npm install --save @ctbucha/bs-react-admin

Then add @ctbucha/bs-react-admin to bs-dependencies in your bsconfig.json:

{
  ...
  "bs-dependencies": ["@ctbucha/bs-react-admin"]
}

Usage

/* App.re */
let component = ReasonReact.statelessComponent("App");

let myHttpClient = (url, _params) => {
  let headersDict = Js.Dict.empty();
  Js.Dict.set(headersDict, "Accept", "application/json");

  let headers = 
    headersDict |> Fetch.HeadersInit.makeWithDict |> Fetch.Headers.makeWithInit;

  BsReactAdmin.FetchUtils.headersSet(params, headers);

  BsReactAdmin.FetchUtils.fetchJson(url, params);
};

let dataProvider = 
  BsRaDataJsonServer.getRaDataJsonServer(
    ~apiUrl="http://jsonplaceholder.typicode.com",
    ~httpClient=myHttpClient,
    (),
  );

let make = _children => { 
  ...component,
  render: _self => 
    BsReactAdmin.(
      <div>
        <Admin dataProvider>
          <Resource name="posts" list=PostList.toReactJs />
        </Admin>
      </div>
    ),  
    };
/* PostList.re */
let component = ReasonReact.statelessComponent("PostList");

let make = (props, _children) => { 
  ...component,
  render: _self => 
    BsReactAdmin.(
      <div>
        <List props>
          <Datagrid>
            <TextField source="id" />
            <TextField source="title" />
            <TextField source="body" />
          </Datagrid>
        </List>
      </div>
    ),
};

/* Need to pass this to Resource as a ReactJS component instead of a ReasonReact
 * component since react-admin handles this as a ReactJS component.
 */
let toReactJs = 
  ReasonReact.wrapReasonForJs(~component, jsProps => make(jsProps, [||]));

Package Sidebar

Install

npm i @ctbucha/bs-react-admin

Weekly Downloads

1

Version

0.0.8

License

MIT

Unpacked Size

64.1 kB

Total Files

57

Last publish

Collaborators

  • ctbucha