A frontend Framework for building B2B applications running in the browser on top of REST/GraphQL APIs, using ES6, React and Material Design

Overview

react-admin Build Status FOSSA Status Gitpod ready-to-code

A frontend Framework for building data-driven applications running in the browser on top of REST/GraphQL APIs, using ES6, React and Material Design. Previously named admin-on-rest. Open sourced and maintained by marmelab.

Home page - Documentation - Demo - Blog - Releases - Support

react-admin-demo

Features

  • Adapts to any backend (REST, GraphQL, SOAP, etc.)
  • Powered by material-ui, redux, react-final-form, react-router and a few more
  • Super-fast UI thanks to optimistic rendering (renders before the server returns)
  • Undo updates and deletes for a few seconds
  • Relationships (many to one, one to many)
  • Data Validation
  • Internationalization (i18n)
  • Themeable, Highly customizable interface
  • Supports any authentication provider (REST API, OAuth, Basic Auth, ...)
  • Full-featured datagrid (sort, pagination, filters)
  • Large library of components for various data types: boolean, number, rich text, etc.
  • Conditional formatting
  • Filter-as-you-type
  • Supports any form layout (simple, tabbed, etc.)
  • Custom actions
  • WYSIWYG editor
  • Customize dashboard, menu, layout
  • Super easy to extend and override (it's just React components)
  • Can be included in another React app

Installation

React-admin is available from npm. You can install it (and its required dependencies) using:

npm install react-admin
#or
yarn add react-admin

Documentation

Read the Tutorial for a 30 minutes introduction. After that, head to the Documentation, or checkout the source code of the demo for an example usage.

At a Glance

// in app.js
import * as React from "react";
import { render } from 'react-dom';
import { Admin, Resource } from 'react-admin';
import restProvider from 'ra-data-simple-rest';

import { PostList, PostEdit, PostCreate, PostIcon } from './posts';

render(
    <Admin dataProvider={restProvider('http://localhost:3000')}>
        <Resource name="posts" list={PostList} edit={PostEdit} create={PostCreate} icon={PostIcon} />
    </Admin>,
    document.getElementById('root')
);

The <Resource> component is a configuration component that allows to define sub components for each of the admin view: list, edit, and create. These components use Material UI and custom components from react-admin:

// in posts.js
import * as React from "react";
import { List, Datagrid, Edit, Create, SimpleForm, DateField, TextField, EditButton, TextInput, DateInput } from 'react-admin';
import BookIcon from '@material-ui/core/svg-icons/action/book';
export const PostIcon = BookIcon;

export const PostList = (props) => (
    <List {...props}>
        <Datagrid>
            <TextField source="id" />
            <TextField source="title" />
            <DateField source="published_at" />
            <TextField source="average_note" />
            <TextField source="views" />
            <EditButton basePath="/posts" />
        </Datagrid>
    </List>
);

const PostTitle = ({ record }) => {
    return <span>Post {record ? `"${record.title}"` : ''}</span>;
};

export const PostEdit = (props) => (
    <Edit title={<PostTitle />} {...props}>
        <SimpleForm>
            <TextInput disabled source="id" />
            <TextInput source="title" />
            <TextInput source="teaser" options={{ multiLine: true }} />
            <TextInput multiline source="body" />
            <DateInput label="Publication date" source="published_at" />
            <TextInput source="average_note" />
            <TextInput disabled label="Nb views" source="views" />
        </SimpleForm>
    </Edit>
);

export const PostCreate = (props) => (
    <Create title="Create a Post" {...props}>
        <SimpleForm>
            <TextInput source="title" />
            <TextInput source="teaser" options={{ multiLine: true }} />
            <TextInput multiline source="body" />
            <TextInput label="Publication date" source="published_at" />
            <TextInput source="average_note" />
        </SimpleForm>
    </Create>
);

Does It Work With My API?

Yes.

React-admin uses an adapter approach, with a concept called Data Providers. Existing providers can be used as a blueprint to design your API, or you can write your own Data Provider to query an existing API. Writing a custom Data Provider is a matter of hours.

Data Provider architecture

See the Data Providers documentation for details.

Batteries Included But Removable

React-admin is designed as a library of loosely coupled React components built on top of material-ui, in addition to custom react hooks exposing reusable controller logic. It is very easy to replace one part of react-admin with your own, e.g. to use a custom datagrid, GraphQL instead of REST, or Bootstrap instead of Material Design.

Examples

There are several examples inside the examples folder:

  • simple (CodeSandbox): a simple application with posts, comments and users that we use for our e2e tests.
  • tutorial (CodeSandbox): the application built while following the tutorial.
  • demo: (Live) A fictional poster shop admin, serving as the official react-admin demo.

You can run those example applications by calling:

# At the react-admin project root
make install
# or
yarn install

# Run the simple application
make run-simple

# Run the tutorial application
make build
make run-tutorial

# Run the demo application
make build
make run-demo

And then browse to the URL displayed in your console.

Support

You can get professional support from Marmelab via React-Admin Enterprise Edition, or community support via StackOverflow.

Versions In This Repository

  • master - commits that will be included in the next patch release

  • next - commits that will be included in the next major or minor release

Bugfix PRs that don't break BC should be made against master. All other PRs (new features, bugfix with BC break) should be made against next.

Contributing

If you want to give a hand: Thank you! There are many things you can do to help making react-admin better.

The easiest task is bug triaging. Check that new issues on GitHub follow the issue template and give a way to reproduce the issue. If not, comment on the issue to ask precisions. Then, try and reproduce the issue following the description. If you managed to reproduce the issue, add a comment to say it. Otherwise, add a comment to say that something is missing.

The second way to contribute is to answer support questions on StackOverflow. There are many beginner questions there, so even if you're not super experienced with react-admin, there is someone you can help there.

Pull requests for bug fixes are welcome on the GitHub repository. There is always a bunch of issues labeled "Good First Issue" in the bug tracker - start with these.

If you want to add a feature, you can open a Pull request on the next branch. We don't accept all features - we try to keep the react-admin code small and manageable. Try and see if your feature can't be built as an additional npm package. If you're in doubt, open a "Feature Request" issue to see if the core team would accept your feature before developing it.

For all Pull requests, you must follow the coding style of the existing files (based on prettier), and include unit tests and documentation. Be prepared for a thorough code review, and be patient for the merge - this is an open-source initiative.

Tip: Most of the commands used by the react-admin developers are automated in the makefile. Feel free to type make without argument to see a list of the available commands.

Setup

Clone this repository and run make install to grab the dependencies, then make build to compile the sources from TypeScript to JS.

Online one-click Setup

You can use Gitpod(An Online Open Source VS Code like IDE which is free for Open Source) for working on issues and making PRs. With a single click it will launch a workspace and automatically clone the repo, run make install and make start so that you can start straight away.

Open in Gitpod

Testing Your Changes In The Example Apps

When developing, most of the time we use the simple example to do visual check. It's the same application that we use in CodeSandbox to reproduce errors (see https://codesandbox.io/s/github/marmelab/react-admin/tree/master/examples/simple). The source is located under examples/simple/. Call make run to launch that example on port 8080 (http://localhost:8080). This command includes a watch on the react-admin source, so any of the changes you make to the react-admin packages triggers a live update of the simple example in your browser.

However, the simple example is sometimes too limited. You can use the demo example (the source for https://marmelab.com/react-admin-demo/), which is more complete. The source is located under examples/demo/. Call make run-demo to launch the demo example with a REST dataProvider, or make run-graphql-demo to run it with a GraphQL dataProvider. Unfortunately, due to the fact that we use Create React App for this demo, these commands don't watch the changes made in the packages. You'll have to rebuild the react-admin packages after a change (using make build, or the more targeted make build-ra-core, make build-ra-ui-materialui, etc) to see the effect in the demo app.

Both of these examples work without server - the API is simulated on the client-side.

Testing Your Changes In Your App

Using yarn link, you can have your project use a local checkout of the react-admn package instead of npm. This allows you to test react-admin changes in your app:

# Register your local react-admin as a linkable package
$ cd /code/path/to/react-admin/packages/react-admin && yarn link

# Replace the npm-installed version with a symlink to your local version 
$ cd /code/path/to/myapp/ && yarn link react-admin

# If you run into issues with React red-screen, then you need to register your app's version of React as a linkable package 

$ cd /code/path/to/myapp/node_modules/react && yarn link
# And then replace the npm-installed version of React with a symlink to your app's node_modules version
$ cd /code/path/to/react-admin/ && yarn link react

# Rebuild the packages with the same version of React
$ cd /code/path/to/react-admin/ && make build

# Return to your app and ensure all dependencies have resolved 
$ cd /code/path/to/myapp/ && yarn install

# Start your app
$ yarn start

Automated Tests

Automated tests are also crucial in our development process. You can run all the tests (linting, unit and functional tests) by calling:

make test

Unit tests use jest, so you should be able to run a subset of tests, or run tests continuously on change, by passing options to

yarn jest

Besides, tests related to the modified files are ran automatically at commit using a git pre-commit hook. This means you won't be able to commit your changes if they break the tests.

When working on the end to end tests, you can leverage cypress runner by starting the simple example yourself (make run-simple or yarn run-simple) and starting cypress in another terminal (make test-e2e-local or yarn test-e2e-local).

Coding Standards

If you have coding standards problems, you can fix them automatically using prettier by calling

make prettier

However, these commands are ran automatically at each commit so you shouldn't have to worry about them.

Documentation

If you want to contribute to the documentation, install jekyll, then call

make doc

And then browse to http://localhost:4000/

License

React-admin is licensed under the MIT License, sponsored and supported by marmelab.

FOSSA Status

Donate

This library is free to use, even for commercial purpose. If you want to give back, please talk about it, help newcomers, or contribute code. But the best way to give back is to donate to a charity. We recommend Doctors Without Borders.

Issues
  • Roadmap to React-Admin 3.0

    Roadmap to React-Admin 3.0

    React-admin v2 is about one year old. We've kept backward compatibility for a year, but it means we can't yet use all the new shiny tools that our dependencies have shipped since then in major releases.

    The objectives of the next release, v3, are to:

    • [x] Upgrade dependencies to the latest major version
      • [x] Upgrade react and react-dom to 16.8 to use Hooks (#3170)
      • [x] Upgrade material-ui to 4.2.1 (instead of 1.5) to use... a lot of things, uncluding the useStyle hook (#3191)
      • [x] Upgrade react-redux to 7.1.0 (instead of 5.0) to use useDispatch and useSelector hooks instead of connect (#3170)
      • [x] Upgrade redux-saga to 1.0 (because we're on a non-supported version) (#3212)
      • [x] Switch from redux-form to react-final-form (#3455)
    • [x] Turn logic components into hooks
      • [x] Replace fetch, accumulate, undo and callback sagas by data hooks for fetching the dataProvider (useQuery, useMutation, useDataProvider) (#3181)
      • [x] Add CRUD hooks (#3253)
      • [x] Replace auth saga by auth hooks (useAuth, usePermissions) (#3368)
      • [x] Replace i18n saga by i18n hooks (useTranslate, useLocale, useSeltLocale) (#3188, #3672, #3685))
      • [x] Replace notification, redirect, and refresh sagas by hooks (useNotify, useRedirect, useRefresh) (#3425)
      • [x] Add controller hooks to replace our controller components (#3213, #3217, #3228, #3236, #3398, #3377, #3406, #3409)
      • [x] Add useMediaQuery hook to replace the Responsive component (#3329)
      • [x] Update the documentation to use hooks (#3688)
      • [x] Update the examples to use hooks
    • [x] Turn providers to objects instead of functions
      • [x] authProvider (#3614)
      • [x] i18nProvider (#3699)
      • [x] dataProvider (#3726)
    • [x] Fix breaking change issues
      • [x] Replace injected elements by injected components (#3262)
      • [x] Upgrade redux-saga to 1.0 (#3212)
      • [x] Redirection to login should be done in the authProvider (#3269)
      • [x] Decouple data actions from views
      • [x] Rename appLayout to layout in (#3055)
      • [x] Use theme to store sidebar width (#3323)
      • [x] Replace papaparse by something lighter (#3324)
      • [x] Deprecation of react-router-redux (#3170)
      • [x] rename isLoading to loading everywhere (#3644)
      • [x] Remove deprecated components (#3247, #3517)
    • [x] UI adjustments
      • [x] Move actions out of the main card (#3214)
      • [x] Replace Headroom by MUI native implementation of auto-hiding app bar (#3247)
      • [x] Use filled variant by default in forms (#3594)
    • [x] Make sure the core codebase doesn't need the crudXXX actions and the fetch saga
    • [x] Reimplement AutocompleteInput and AutocompleteArrayInput using downshift (#3031, #3667)
    • [x] Decide whether we should stick to connected-react-router or not (because it's not active)
    • [x] Move most dependencies into peerDependencies for internal packages (#3763)
    • [x] Overhaul HTTP error handling (#3757)

    This will lead to a deep transformation of the library. We hope to minimize the breaking changes, but developers will have to follow a migration guide to use this new version with existing code. We'll try to make that as painless as possible.

    We'll need help from volunteers to test the changes before releasing a stable version. We'll publish alpha and beta releases for that purpose.

    We expect the 3.0 to be released sometime in the Summer of 2019. Development has already started and is visible on the next branch. We tag related pull request with the 3.0 milestone so you can track our progress.

    Comments are welcome. Help migrating class components to functional components using hooks is also welcome (although we don't have the objective of migrating all the codebase to functional components for 3.0. This can happen later).

    documentation 
    opened by fzaninotto 79
  • [RFR] Feature embedded arrays

    [RFR] Feature embedded arrays

    Field Array Implementation based on RFC #695

    • [x] Main Behavior Development.
    • [x] Changing Button Colors to blue (primary buttons).
    • [x] Changing name to EmbeddedArrayInput
    • [x] Renaming elStyle to arrayElStyle.
    • [x] Adding FormField-like rendering features.
    • [x] Writing Tests.
    • [x] Translation framework compatibility.
    • [x] Implement EmbeddedArrayField.

    Notes:

    • Currently I've set the default behavior is to show element as lines. User can change that by providing an elStyle attribute like {display: 'inline-block'}
    • I've tried to re-use FormField but I think we cannot since it uses the same source provided by the input meanwhile we need to prefix it by something like array[index]. should i skip this? or edit the FormField to support prefixes ?
    • Proposed Alternative component names: EmbeddedArrayInput or just ArrayInput.
    • using elStyle to style each group might be confusing, should i use another name? any suggestions?

    Current Component Example

    <EmbeddedManyInput source="links"> <!-- Line by line -->
        <TextInput source="url" />
        <TextInput source="context"/>
    </EmbeddedManyInput>
    
    <EmbeddedManyInput source="links" elStyle={{display: 'inline-block'}}> <!-- inline blocks (grid-like) -->
        <TextInput source="url" />
        <TextInput source="context"/>
    </EmbeddedManyInput>
    
    opened by MhdSyrwan 68
  • [v3] improve peerDependency

    [v3] improve peerDependency

    singletons should be a peer; react-redux thus probably should be

    singletons (something that shares mutable state, and needs to have only one copy in the dependency graph)

    Also redux is a way to store state. it is definitely a singleton.

    If your lib has react-redux v3.0 as a dep, and someone else has v3.1, you'll have two copies in memory and things will break.

    react-redux should be a peer dep, so should react-router

    Also, it should be using ^ not ~ throughout, because ~ means "just patch" and ^ means "patch or minor"

    You want semver ranges to be as wide as possible to allow for as much deduping and upgrading as possible.

    breaking change 
    opened by kopax 50
  • Add Bulk Actions to Lists

    Add Bulk Actions to Lists

    We can make items in list selectable.. But there is no way to manipulate those selected items.. It would be great to have an ability to add bulk actions component as well as filter.

    Thank you for your awesome work!

    enhancement 
    opened by mstmustisnt 30
  • [RFR] Inline forms

    [RFR] Inline forms

    As mentioned in #735, this allows us to create referenced items directly from the parent's create page without having to navigate to another resource page.

    This feature is optional, so if the user needs to allow creating items for a particular ReferenceArrayInput, he needs to pass an inlineForm prop containing a form element (SimpleForm for example):

    const TagsInlineForm = () => (
        <SimpleForm>
            <TextInput source="name" />
        </SimpleForm>
    );
    
    // then render ReferenceArrayInput somwhere
    <ReferenceArrayInput
        reference="tags"
        source="tag_ids"
        inlineForm={TagsInlineForm()}
        allowEmpty
    >
         <SelectArrayInput optionText="name"  />
    </ReferenceArrayInput>
    

    If input components other than SelectArrayInput need to support creating items, they have to do the following:

    • Provide a UI element for the user to choose creating a new item.
    • Calling onCreateInline (received as a prop from ReferenceArrayInput) with the following arguments:
      • a partial record: containing any text typed by the user so far, used for giving the inline form fields initial values.
      • a callback function: it receives the created record (returned by the rest client) as its argument, this should be used to insert the record to the list of selected values (a chip in SelectArrayInput's case).

    Possible Issues

    ~~- Still haven't tried nesting (if the inline form itself contains ReferenceArrayInput which also allows for creating).~~

    opened by AmrN 29
  • Upgrade Material UI to Latest Stable

    Upgrade Material UI to Latest Stable

    I'm pretty new to material ui, but it looks like latest stable is at 3.2, but react-admin is still on ^1.4. When implementing customizations to the react-admin, it caused me to lose some time because I was trying to figure out why certain Material UI code wasn't working and then I found out react-admin just uses an older version.

    Is there anything stopping this project from being able to bump up to material ui 3.2 other than just the work to port it over?

    Thanks again for all the hard work into this library!

    opened by ragboyjr 29
  • Add Typescript types

    Add Typescript types

    Context

    We want to migrate react-admin to TypeScript and release types with the library.

    That doesn't mean that you won't be able to use react-admin if you're not using TypeScript. React-admin will still publish both JS files (as today) and .d.ts files (ignored by non-typescript users). So if you don't use TypeScript, that won't change anything for you.

    We've started a migration effort a year ago. As of writing, 70% of the codebase is in already TypeScript. We use these types internally during development. We've only released the types for ra-core publicly.

    We're working on migrating the rest of the codebase. It's a long and tedious job. It's not the core team priority. Your help is welcome.

    Risk

    We don't want to emit bad types, because it would break existing TS applications. Therefore, we need to test the types thoroughly.

    Roadmap

    Migrating the demo should be the priority, as it allows us to validate our types internally before publishing them.

    1. ✔️ Migrate all .js files to .ts files in the example demo (https://github.com/marmelab/react-admin/tree/master/examples/demo).
    2. ✔️ Migrate all ra-ui-materialui JS files to TypeScript. Publish the compiled types in the next ra-ui-material-ui release.
    3. ✔️ Convert the rest of react-admin dependencies (ra-language-english, etc) to typeScript, publish their types
    4. ✔️ Locally, emit the types from react-admin in development. This is when things will break. Test the demo, test on as many existing TS apps as possible. Once all the types are checked, and only then,
    5. ✔️ Release react-admin types officially
    6. ???
    7. Profit

    All these changes must be done on the next branch (master is only for bug fixes).

    How you can help

    If you know and understand the react-admin internals, and if you are an experienced TypeScript developer, please help us migate .js files to .ts in the order described above.

    This is not an easy task. If you don't have enough knowledge of the react-admin internals, then please leave it to people more knowledgeable. Otherwise, the core team will spent more time answering your questions than doing the migration themselves.

    What to do in the meantime

    Some community packages for react-admin types can be found here and there. They are outdated. Disable TypeScript checking on the react-admin modules.

    opened by fzaninotto 28
  • [RFR] Add a TabbedView (#515)

    [RFR] Add a TabbedView (#515)

    Refs #515 Working version (example added in posts.js) Please tell me what should I change

    opened by remi13131 27
  • translate doesn't work

    translate doesn't work

    I am using admin on rest 1.3.1 and I am reading at this documentation :

    https://marmelab.com/admin-on-rest/Translation.html#translation-messages

    It says that you can import a translate method like so:

    // in src/MyHelloButton.js
    import React, { Component } from 'react';
    import PropTypes from 'prop-types';
    
    class MyHelloButton {
        render() {
            const { translate } = this.context;
            return <button>{translate('myroot.hello.world')}</button>;
        }
    }
    MyHelloButton.contextTypes = {
        translate: PropTypes.func,
    };
    

    I have a <IntlProvider /> wrapping my react app and messages are fully loaded but:

    • Using translate throw error :

    Warning: Failed context type: The context translate is marked as required in getContext(MyHelloButton), but its value is undefined. in getContext(MyHelloButton) (created by HomePage)

    I have read at the react-intl documentation here https://github.com/yahoo/react-intl/wiki/API#injectintl and they provide a HoC injectIntl that can be used to retrieve messages.

    This is how I fixed translate.js with injectIntl:

    import React from 'react';
    import { compose } from 'redux';
    import { connect } from 'react-redux';
    import { injectIntl } from 'react-intl';
    
    export default (Component) => {
      function TranslateComponent(props) {
        const { intl, ...rest } = props;
        return (
          <Component {...rest} translate={(id) => intl.formatMessage({ id })} />
        );
      }
    
      return compose(
        connect(),
        injectIntl,
      )(TranslateComponent)
    }
    

    I am using react-intl 2.4.0.

    • Why did AOR added such method ?
    • Which one I should use ?
    • It's a shame to only use translate if we can't access formatDate and other helpers so I think injectIntl should be use.

    Also if anybody know why I have this error, thanks:!

    opened by kopax 27
  • Stylesheet class names conflict with production build (issue with JSS minification)

    Stylesheet class names conflict with production build (issue with JSS minification)

    We noticed a severe issue when passing our project in production. Our app seems to be empty:

    image

    Seems, because everything is correctly set up in the DOM:

    image

    The issue seems related to JSS, which has some troubles generating class names. Each time it see a withStyles, it increments a counter. Yet, it seems that MaterialUI and react-admin uses two distinct counters. Hence, when the classes are minified (removing the component display name), classes are renamed such as:

    • MaterialUI: jss1, jss2, etc.
    • React Admin: jss1, jss2, etc.

    This duplication cause the issue mentioned above.

    We temporarily fixed it on our project side, using a custom class name generator, using the same counter for every classes.

    const escapeRegex = /([[\].#*$><+~=|^:(),"'`\s])/g;
    let classCounter = 0;
    
    // Heavily inspired of Material UI:
    // @see https://github.com/mui-org/material-ui/blob/9cf73828e523451de456ba3dbf2ab15f87cf8504/src/styles/createGenerateClassName.js
    // The issue with the MUI function is that is create a new index for each
    // new `withStyles`, so we handle have to write our own counter
    export const generateClassName = (rule, styleSheet) => {
        classCounter += 1;
    
        if (process.env.NODE_ENV === 'production') {
            return `c${classCounter}`;
        }
    
        if (styleSheet && styleSheet.options.classNamePrefix) {
            let prefix = styleSheet.options.classNamePrefix;
            // Sanitize the string as will be used to prefix the generated class name.
            prefix = prefix.replace(escapeRegex, '-');
    
            if (prefix.match(/^Mui/)) {
                return `${prefix}-${rule.key}`;
            }
    
            return `${prefix}-${rule.key}-${classCounter}`;
        }
    
        return `${rule.key}-${classCounter}`;
    };
    

    Then we wrapped our Admin component in:

    import JssProvider from 'react-jss/lib/JssProvider';
    
    export default () => (
        <JssProvider generateClassName={generateClassName}>
            <Admin />
        </JssProvider>
    );
    

    Should I open a PR with this hack-ish fix? It looks like a critical issue, as it prevents from deploying react-admin to production. Yet, I'm not convinced by this solution.

    opened by jpetitcolas 26
  • [BC Break] Use context to store notifications instead of Redux

    [BC Break] Use context to store notifications instead of Redux

    • [x] Store notifications in a context rather than Redux
    • [x] Include <Notification />in <AdminUI> so that users don't need to add it to their layout and login
    • [x] Remove notification reducer and actions
    • [x] Fix tests
    • [x] Write Upgrade guide
    RFR 
    opened by fzaninotto 0
  • [4.0.0-alpha.1]: Style overrides for ReactAdmin components

    [4.0.0-alpha.1]: Style overrides for ReactAdmin components

    What you were expecting:

    Should be able to overrides style for ReactAdmin components

    What happened instead:

    Nothing since to be happening when applying the overrides. I presume this is not implemented yet!

    Steps to reproduce:

    1. Create a new theme options object
    2. Add components override for RaSidebar by example
    3. Override background color of the sidebar

    Related code:

    import { PaletteMode, Components as MuiComponents } from '@mui/material'
    import { RaThemeOptions } from 'react-admin'
    
    interface Components extends MuiComponents {
      RaSidebar?: {
        styleOverrides?: any;
        drawerPaper?: any;
      };
      RaMenuItemLink?: {
        styleOverrides?: any;
      }
    }
    
    interface ThemeOptions extends RaThemeOptions {
      components: Components
    }
    
    export const themeOptions = (mode: PaletteMode): ThemeOptions => ({
      components: {
        RaSidebar: {
          styleOverrides: { root: { backgroundColor: 'red' } }
        },
        RaMenuItemLink: {
          styleOverrides: { root: { padding: 0 } }
        }
      }
    })
    

    Other information:

    Should be nice to have an updated version of the type RaThemeOptions including ReactAdmin components as well (like I did in the code bellow)!

    Environment

    • React-admin version: 4.0.0-alpha.1
    • Last version that did not exhibit the issue (if applicable):
    • React version: 17.0.2
    • Browser: Opera/Chrome
    • Stack trace (in case of a JS error):
    • Typescript version: 4.5.4
    opened by emulienfou 0
  • [BC Break] Rename Record type to RaRecord

    [BC Break] Rename Record type to RaRecord

    • [x] [BC Break] Rename type
    • [x] Make it build
    • [x] Add Upgrade instructions

    Closes #5074

    RFR 
    opened by fzaninotto 1
  • Migrate to Yarn 2

    Migrate to Yarn 2

    First part of the migration. Another PR will enable PnP if possible

    RFR 
    opened by djhi 0
  • DateTimeInput clear button sends filter value to null

    DateTimeInput clear button sends filter value to null

    What you were expecting: When clicking on "Clear" button the filter should not be sent to the data provider.

    What happened instead: When clicking on "Clear" button the filter is sent to the data provider with the null value.

    Steps to reproduce: https://codesandbox.io/s/datetimeinput-datetime-filters-nq648?file=/src/resources/posts/list.tsx

    • Select a date with the DateTimeInput component
    • Click on the "Clear" button
    • Notice that the filter is sent with the null value

    DateInput component works well.

    • Select a date with the DateInput component
    • Click on the "Clear button"
    • Notice that the filter is completly cleared

    Environment

    • React-admin version: 3.19.0 in my application and 3.19.6 in the CodeSandbox
    • Last version that did not exhibit the issue (if applicable): N/A
    • React version: 17.0.2
    • Browser: at least Chrome and Firefox
    • Stack trace (in case of a JS error): N/A
    bug 
    opened by campings-szanetti 1
  • [4.0.0-alpha.2]: MUI warning when using AutocompleteInput

    [4.0.0-alpha.2]: MUI warning when using AutocompleteInput

    What you were expecting: Use AutocompleteInput without warnings.

    What happened instead:

    Warning in the console

    MUI: The value provided to Autocomplete is invalid. None of the options match with `""`. You can use the `isOptionEqualToValue` prop to customize the equality test.
    

    Note the "", probably that's the offending part.

    Steps to reproduce: Seems to appear in pretty much any AutocompleteInput. Can be seen at posters galore demo, e.g. by going to Orders resource and adding a Customer filter.


    I bisected it down to this commit:

    7de027dce7c3dff1fa11ca1210dfc7f7083b8858 is the first bad commit
    commit 7de027dce7c3dff1fa11ca1210dfc7f7083b8858
    Author: Travis CI <[email protected]>
    Date:   Wed Dec 15 14:44:42 2021 +0100
    
        Merge both autocomplete
    

    I haven't managed to spot the cause of a problem by a quick look-through. @djhi, would you have time to have a look at this? :pray:

    bug 
    opened by wattroll 3
  • Add option to filter on submit when using FilterForm

    Add option to filter on submit when using FilterForm

    Refs #2729

    • [x] POC
    • [ ] Add translation
    • [ ] Add tests
    • [ ] Add doc

    https://user-images.githubusercontent.com/99944/148382510-d7f70040-0a88-4100-874a-5b102cd0d3bf.mov

    WIP 
    opened by fzaninotto 0
  • [Feature Request] Making previousData accessible from save and transform method.

    [Feature Request] Making previousData accessible from save and transform method.

    Is your feature request related to a problem? Please describe.

    It may be better to access previous data state(to be exact, before saved state) from save and transform method than it is only accessible from dataProvider. Now, as I know with reading code useEditController and react-admin document, DataProvider is only way (except for customizing default component) to access previousData, but as more resource depended logics are implemented though intrinsically they are loosely coupled, it is fat soon.

    If it can be accessed from transform and save methods, it's convenient for limiting scope narrower and modifying request parameter logic form layer can be completed, in the result, we will no longer implement conditional logic using previousData in dataProvider, then more agnostic feature against resource type.

    Describe the solution you'd like Add more the previousData argument and assign indirect record this line and pass record value second parameter this code.

    Describe alternatives you've considered

    I read this section of document. Edit props completely rewritable and provide alternative controller props to store state of previous data. So, if this features implements not desired for framework, we can make this feature.

    Additional context

    We use array input for many relation data from parent form. And, to sync data, we put delete flag to deleted record on Remove event, and request all records including deleted flagged records which disappears in browser window to complete request only once. This can be alternated by making custom array input and but it's noting worth to control before submitting event phase because we rewriting many logic of original ArrayInput compared to rewrite Edit transform of form save method.

    enhancement 
    opened by tkow 2
  • SelectArrayInput has no multiselection indication for screenreaders

    SelectArrayInput has no multiselection indication for screenreaders

    What you were expecting: When using a SelectArrayInput the screenreaders don't indicate that this field can have a multiselection as we have with a regular select element containing the multiple attribute.

    What happened instead: Screenreaders read the element as a regular list of items.

    Steps to reproduce: Use a screenreader application to inspect a SelectArrayInput component.

    Related code:

    <ReferenceArrayInput source="serviceTypesIds" reference="service-types" fullWidth>
        <SelectArrayInput optionText="name" />
    </ReferenceArrayInput>
    

    Other information:

    Environment

    • React-admin version: 3.15.2
    • Last version that did not exhibit the issue (if applicable):
    • React version: 17.0.2
    • Browser: 96.0.4664.110
    • Stack trace (in case of a JS error):
    opened by tiagoit 1
  • Allow prop

    Allow prop "disabled" passed from filter to menuItem

    This PR allows filters to accept the prop "disabled," which is passed to the MUI MenuItem component, which is already set up to accept "disabled" as a part of ButtonBase props.

    opened by ZachSelindh 0
Releases(v3.19.6)
  • v3.19.6(Jan 3, 2022)

    • Fix loading indicator keeps spinning on permissions error when logoutUser is false (#7044) (WiXSL)
    • Fix redirect=false after save doesn't clear the form (#7041) (WiXSL)
    • Fix <SelectArrayInput optionText> function not fully supported with create item (#7039) (WiXSL)
    • Fix <AutocompleteArrayInput optionText> function not supported with create item set (#7038) (WiXSL)
    • Fix <SelectInput optionText> for create (#7031) (WiXSL)
    • Fix <SelectArrayInput optionText> for create (#7030) (WiXSL)
    • [Demo] Fix typescript error (#7045) (WiXSL)
    • [Demo] Update Create-React-App to V5 (#7022) (fzaninotto)
    Source code(tar.gz)
    Source code(zip)
  • v4.0.0-alpha.1(Jan 3, 2022)

    🎉 🎉 🎉 Happy new year 🎉 🎉 🎉

    We're progressing fast on the 4.0 roadmap. This new alpha version uses material-ui v5, react-router v6 and react-query for data fetching instead of Redux. This last change should solve an entire category of bugs with minor BCs, and allow a lot more customization thanks to the awesome react-query features.

    Here are the big changes you can find in this prerelease:

    • ✅ Upgrade material-ui to v5 (#6650)
    • ✅ Remove redux-saga and saga-based side effects (#6684)
    • ✅ Remove declarative side effects support in dataProvider (#6687)
    • ✅ Remove connected-react-router (#6704)
    • ✅ Remove support for undoable prop now that we have mutationMode (#6711)
    • ✅ Upgrade react-router to V6 (#6873)
    • ✅ Remove permissions injection in main route controllers (#6921)
    • ✅ Switch WithPermissions wrapping to a useAuthenticated hook in main controllers (based on a boolean so that users can create an anonymous show view with <Show authenticated={false}>) (#6921)
    • ✅ Replace Redux-based query cache by react-query
    • ✅ Cleanup data reducers (#7001)
    • ✅ Use MUI autocomplete instead of our own (#6924, #6971)
    • ✅ Remove useGetMatching (use getList instead) (#6916)

    Check the 4.0.0-alpha.1 milestone for the list of PRs merged in this release.

    Check the 4.0 Roadmap for details about the changes left for the 4.0 stable release.

    Source code(tar.gz)
    Source code(zip)
  • v3.19.5(Dec 22, 2021)

  • v3.19.4(Dec 15, 2021)

    • Fix list <FilterButton> is not accessible (#6967) (WiXSL)
    • Fix incorrect exporter when switching resource (#6989) (WiXSL)
    • Fix <ArrayField> doesn't accept <SimpleList> as child (#6975) (Luwangel)
    • Fix unit tests require build first (#6983) (WiXSL)
    • [TypeScript] Fix <SimpleList toolbar> doesn't allow false value (#6969) (ZachSelindh)
    • [TypeScript] Fix ToolbarProps to be compatible with FormWithRedirectOwnProps definition (#6994) (WiXSL)
    • [TypeScript] Fix missing definition for <ReferenceFieldController label> prop (#6745) (kevinmamaqi)
    • [TypeScript] Fix <ArrayInput> proptype definition (#6617) (WiXSL)
    • [Doc] Fix typo in <Tab> jsDoc (#6959) (erakli)
    • [Demo] Fix <SelectInput label> is overridden in simple project (#6920) (WiXSL)
    Source code(tar.gz)
    Source code(zip)
  • v3.19.3(Dec 7, 2021)

    • Fix <ArrayInput> issue with initialValue (#6932) (djhi)
    • Fix <Datagrid> select all rows fails over multiple pages (#6950) (WiXSL)
    • Fix <Notification> component appears only once when saving several times (#6929) (wbojaume)
    • Fix useList isn't usable with asynchronously fetched data (#6899) (djhi)
    • Fix <FilterListItem> styles can't be overridden via theme (#6941) (kristelvdakker)
    • Fix <List bulkActionButtons> prop does not handle the value true (#6926) (WiXSL)
    • Fix <SidebarToggleButton> is not exported (#6911) (WiXSL)
    • Fix <Tab> children are missing the fullWidth prop when addLabel is set (#6915) (WiXSL)
    • Fix useReferenceArrayInputController sets loading prop incorrectly (#6914) (WiXSL)
    • Fix e2e tests fail on a clean install (#6938) (WiXSL)
    • Fix wrong imports in tests (#6931) (djhi)
    • Fix warn about unsaved changes when modifying <CheckGroupInput> or <ArrayInput> components (#6954) (WiXSL)
    • [TypeScript] Fix types in tests (#6949) (WiXSL)
    • [Doc] Add Blitzjs data provider (#6945) (Fidym)
    • [Doc] Fix authProvider example (#6933) (WiXSL)
    • [Doc] Fix code examples of <FormDataConsumer> (#6936) (WiXSL)
    • [Doc] Fix mention of deprecated createMuiTheme in theming docs (#6918) (AntoineCrb)
    • [Doc] Fix useNotify examples encourage a deprecated syntax (#6912) (WiXSL)
    • [Demo] Fix no-code-demo does not work in CodeSandbox (#6463) (smeng9)
    • [Demo] Update simple example dependencies (#6930) (djhi)
    • [Demo] Fix deprecation warnings in simple project (#6903) (WiXSL)
    Source code(tar.gz)
    Source code(zip)
  • v3.19.2(Nov 24, 2021)

    • Fix <SimpleForm> warns of unsaved changes when the form is submitting (#6895) (WiXSL)
    • Fix useMutation not considering returnPromise option (#6886) (WiXSL)
    • Fix package duplication in yarn.lock slows down react-admin CI (#6874) (fzaninotto)
    • [TypeScript] Fix include side effects in <DeleteButton> props type (#6877) (WiXSL)
    • [Demo] Fix authProvider.getIdentity() returns an object instead of a promise in simple demo (#6881) (WiXSL)
    • [Doc] Fix typo in README (#6875) (CoreyB26)
    • [Doc] Fix various typos (#6872) (WiXSL)
    • [Doc] Fix List actions examples (#6742) (erakli)
    Source code(tar.gz)
    Source code(zip)
  • v3.19.1(Nov 17, 2021)

    • Fix sidebar is displayed over the content (#6723) (djhi)
    • Fix warnWhenUnsavedChanges warns too often (#6719) (djhi)
    • Fix useNotify shows a warning if only one argument is passed (#6760) (WiXSL)
    • Fix runtime error when type is not supplied to useNotify (#6713) (danielhusar)
    • Fix notify function when no type is passed (#6768) (nidebo)
    • Fix <SimpleFormIterator> transition animations on add and remove items (#6871) (WiXSL)
    • Fix simple CodeSandbox (#6781) (djhi)
    • Fix <DateInput> breaks <SimpleFormIterator> (#6763) (djhi)
    • Fix <Login> page isn't customizable through MUI theme (#6762) (djhi)
    • Fix call time parameters don't take priority in useMutation (#6761) (djhi)
    • Bump minor dependencies
    • [TypeScript] Fix Graphql Providers Types (#6724) (djhi)
    • [TypeScript] Make previousData of DeleteParams optional (#6536) (m0rtalis)
    • [Doc] Add GeoServer data provider (#6778) (sergioedo)
    • [Doc] Add paragraph about carbon footprint in README (#6774) (fzaninotto)
    • [Doc] Add link to images in tutorial (#6771) (ocxers)
    • [Doc] Fix typo in Architecture chapter (#6740) (HobbitCodes)
    • [Doc] Fix typo in Theming chapter (#6714) (afilp)
    • Fix MUI's urls reference for version 4 (#6702) (WiXSL)
    • [Doc] Add getIdentity function to the authProvider reference (#6697) (WiXSL)
    • [Doc] Improve useRedirect description and examples (#6696) (WiXSL)
    Source code(tar.gz)
    Source code(zip)
  • v3.19.0(Oct 15, 2021)

    🚀 New Features

    • Allow lazy loading of choices in ReferenceInput (#6013) (@ValentinH)
    • Add support for custom url in SimpleList (#6594) (djhi)
    • Added support for customizing the styles of the Datagrid expand panels (#6596) (mjomble)
    • Blur input on suggestion create (#6646) (andrico1234)
    • Add support for multiline notifications (#6670) (WiXSL)
    • Introduce simpler signature for the notify function returned by useNotify (#6671) (WiXSL)
    • Returns error from controllers & add support for custom onFailure on useShowController and useEditController (#6680) (djhi)
    • Extract sidebar toggle button (#6603) (djhi)
    • [GraphQL] Upgrade graphql packages dependencies (Apollo v3) (#6614) (djhi)

    🐛 Bug Fixes

    • Fix MUI 4.12 deprecation warnings (#6587) (fzaninotto)
    • Refactor ArrayInput and SimpleFormIterator with context (#6612) (djhi)
    • Refactor graphql providers and migrate to the new dataProvider signature (#6628) (djhi)
    • [GraphQL]: Fix Simple Response Parser Modify all Objects (#6643) (djhi)
    • [GraphQL]: add basic network error handling (#6648) (djhi)
    • Fix remove unused import (#6676) (WiXSL)
    • Fix react import (#6677) (WiXSL)

    🟦 Types

    • Upgrade TypeScript version to 4.4 (#6588) (fzaninotto)
    • Support custom DataProvider type with useDataProvider (#6605) (djhi)
    • Fix simple project type errors (#6637) (WiXSL)
    • Fix export TranslationMessages StringMap type (#6638) (WiXSL)
    • Add missing types for TranslationMessages (#6640) (Aikain)

    📚 Docs

    Source code(tar.gz)
    Source code(zip)
  • v4.0.0-alpha.0(Oct 15, 2021)

    • [BC Break] Upgrade to MUI v5 (@djhi #6650)
    • [BC Break] Remove Redux-saga (@fzaninotto #6684)
    • Fix PaginationActions test warning (@WiXSL #6659)
    Source code(tar.gz)
    Source code(zip)
  • v3.18.3(Sep 30, 2021)

    • Fix custom menus do not shrink when sidebar is closed (#6635) (djhi)
    • Fix undoable bulk actions failure by refreshing the view (#6616) (WiXSL)
    • Fix datagrid usage inside reference array input (#6589) (djhi)
    • Fix tests console errors and warnings (#6578) (WiXSL)
    • [TypeScript] Fix DataProvider and RouteWithoutLayout some types (#6634) (djhi)
    • [TypeScript] Fix TranslatableInputs props interface (#6633) (djhi)
    • [Doc] Add DatagridHeader to reference section (#6631) (WiXSL)
    • [Doc] Fix typos in several examples (#6623) (WiXSL)
    • [Doc] Add SimpleForm component prop description and example (#6611) (WiXSL)
    • [Doc] Fix scrollable TabbedForm usage description (#6608) (WiXSL)
    • [Doc] Fixed naming of getMany ids params (#6604) (davidhenley)
    • [Doc] Updated README of ra-data-graphql-simple for function components (#6555) (Panzki)
    Source code(tar.gz)
    Source code(zip)
  • v3.18.2(Sep 21, 2021)

    • Fix displayName prop in Field components (6569) (WiXSL)
    • Fix submitErrorsMutators form mutator is not exported (6586) (djhi)
    • Fix linkToRecord syntax when pointing to the show page (6575) (ValentinnDimitroff)
    • Fix <UrlField> font size differs from other fields (6568) (WiXSL)
    • Fix <EmailField> font size differs from other fields (6567) (fzaninotto)
    • [Doc] Add mentions of supabase data & auth providers and Tip Tap rich text input (6590) (djhi)
    • [Doc] Fix examples of ra-test usage with fake dataProviders (6600) (DjebbZ)
    • [TypeScript] Remove FunctionComponent usage from RichTextInput (6577) (WiXSL)
    • [Doc] Fix <AutocompleteArrayInput> image link typo (6574) (WiXSL)
    • [Doc] Fix outdated link to Django REST Framework dataProvider (6571) (fzaninotto)
    • [TypeScript] Rename and export Mutation props (6576) (WiXSL)
    Source code(tar.gz)
    Source code(zip)
  • v3.18.1(Sep 8, 2021)

  • v3.18.0(Sep 7, 2021)

    🎨 UI Changes

    • <Sidebar>: Make it fixed when users scroll vertically (6534) (fzaninotto)
    • <TranslatableInputs>: Reduce language tabs margin to allow more languages to be used (6484) (fzaninotto)

    🚀 New Features

    • <SimpleFormIterator>: Add support for reordering items (6433) (djhi)
    • <SimpleList>: Add RecordContext to allow usage of Field components in primaryText, secondaryText, and tertiaryText (6552) (djhi)
    • <Datagrid>: Add header prop to override the header row (6496) (fzaninotto)
    • useRedirect: Add support for absolute URLs to facilitate third-party authentication providers (OAuth, OpenID Connect) (6469) (fzaninotto)

    🐛 Bug Fixes

    • Fix quick create suggestion label when using custom optionText (6551) (djhi)
    • Fix devDependencies of individual packages (6540) (quentingarcia)

    🟦 Types

    • Export many internal ra-core prop types for easier override (6543) (WiXSL)
    • Fix dataProvider.delete response type marks data as optional (6548) (WiXSL)
    • Remove FC usage from <SimpleFormIterator> and Docs (6546) (WiXSL)
    • Remove FC usage from <AdminContext> (6545) (WiXSL)
    • Remove FC usage from <Field> components (6538) (WiXSL)
    • Remove FC usage from examples (6519) (WiXSL)
    • Remove FC usage from ra-core components (6515) (WiXSL)

    📚 Docs

    ✨ Demos

    • Fix implicit any type prevents TypeScript compilation of e-commerce demo (6556) (fzaninotto)
    • Fix simple demo on IE11 (6544) (djhi)
    • Fix demo on IE11 (6542) (djhi)
    Source code(tar.gz)
    Source code(zip)
  • v3.17.3(Aug 27, 2021)

    • Fix <BooleanInput initialValue> overrides existing value from record (6533) (fzaninotto)
    • Fix <ArrayField> forbids empty component in child <Datagrid> (6524) (fzaninotto)
    • Fix useList pagination total (6500) (yksflip)
    • [Doc] Add link to auth tutorials for Auth0, AzureAD, and Loopback (6535) (fzaninotto)
    • [Doc] Fix typo in readme file (6527) (WiXSL)
    • [Doc] Fix emptyText prop description in Fields documentation (6525) (fzaninotto)
    • [RFR] Remove FC usage from ra-ui-materialui components (6514) (WiXSL)
    Source code(tar.gz)
    Source code(zip)
  • v3.17.2(Aug 13, 2021)

    Source code(tar.gz)
    Source code(zip)
  • v3.17.1(Aug 2, 2021)

    • Fix propType warning in <BulkExportButton> (6479) (fzaninotto)
    • Fix propType warning in delete buttons (6472) (djhi)
    • Fix props.options.labelWidth not being applied in <SelectArrayInput> (6465) (WiXSL)
    • Fix ignored inputRef in <AutocompleteInput> & <AutocompleteArrayInput> (6458) (djhi)
    • [TypeScript] Fix type of <SelectInput classes> prop (6456) (djhi)
    • [TypeScript] Fix missing translation message types (6426) (Aikain)
    • [Doc] Add ra-supabase to data providers list (6481) (djhi)
    • [Doc] Add usage for useList (6480) (djhi)
    • [Doc] Fix authentication examples (6467) (WiXSL)
    • [Doc] Improve Submission Validation example (6466) (WiXSL)
    • [Demo] Improve learning experience by keeping component names in React DevTools (6457) (fzaninotto)
    • [Doc] Fix minor syntax errors in code examples (6449) (WiXSL)
    • [Doc] Fix <BulkUpdateButton> example (6447) (WiXSL)
    • [Doc] Fix typos, anchors and code samples (6446) (WiXSL)
    • [Doc] Add link to ReactPage Integration in the third-party Inputs list (6444) (macrozone)
    • [Doc] added link to @bb-tech/ra-components in the third-party Inputs list (6443) (sivaavkd)
    Source code(tar.gz)
    Source code(zip)
  • v3.17.0(Jul 9, 2021)

    • Add ability to define filters as an array of Inputs (6368) (fzaninotto)
    • Add support for image path value in <SimpleList leftAvatar> (6418) (fzaninotto)
    • Add ability to hide Input labels with label={false} (6381) (VikrantShirvankar)
    • Add links to the <Error> page to help troubleshooting (6367) (fzaninotto)
    • Add ability to redirect to a custom page on logout (6326) (andrico1234)
    • Add useList, a way to reuse the list pagination/sorting/filtering client-side logic (6321) (6378) (djhi)
    • Add <SimpleFormIterator> label function (6305) (iamstiil)
    Source code(tar.gz)
    Source code(zip)
  • v3.16.6(Jul 7, 2021)

  • v3.16.5(Jul 6, 2021)

  • v3.16.4(Jun 28, 2021)

    • [Demo] Optimize data loading in e-commerce demo (6392) (djhi)
    • [Demo] Fix CRM demo points to bad source file (6389) (fzaninotto)
    • [Doc] Fix a typo in main Readme (6390) (aminetakha)
    • [Doc] Fix incomplete side effect hooks documentation (6388) (fzaninotto)
    • [Doc] Fix misleading explanation of <List syncWithLocation> prop (6385) (fzaninotto)
    • [Doc] Fix <ListBase> snippet doesn't explain how to override the title (6383) (fzaninotto)
    • [Doc] Fix wrong ending tags in Actions documentation (6382) (Cornul11)
    Source code(tar.gz)
    Source code(zip)
  • v3.16.3(Jun 21, 2021)

  • v3.16.2(Jun 15, 2021)

  • v3.16.1(Jun 14, 2021)

    Source code(tar.gz)
    Source code(zip)
  • v3.16.0(Jun 7, 2021)

    • Update window title on page change (6119) (andrico1234)
    • Expose refetch in hooks and components (6237) (fzaninotto)
    • Add ability to set location state via useRedirect (6293) (despatates)
    • Disable <SaveButton/> while Inputs are being validated asynchronously (6288) (WiXSL)
    • Thrown an error when using a Reference field without the associated Resource (6266) (fzaninotto)
    • Add <BulkUpdateButton> component (6072) (WiXSL)
    • Fix logout button appears in two different menus (6230) (fzaninotto)
    • Fix <AutocompleteInput> choice creation support (6328) (djhi)
    • Fix useGetMany loaded state (6319) (djhi)
    • Fix <DatagridRow> nb columns computation occurs too often (6307) (WiXSL)
    • Fix errors and warnings in tests (6299) (WiXSL)
    • [TypeScript] Add UserMenuProps type (6320) (fzaninotto)
    • [TypeScript] Fix TabbedShowLayoutProps's tabs should be optional (6310) (WiXSL)
    • [TypeScript] Add the ability to type <SimpleList> callbacks (6254) (fzaninotto)
    • [Doc] Fix wrong link in Fields documentation (6325) (Cornul11)
    • [Doc] Fix CHANGELOG glitches (6311) (WiXSL)
    • [Doc] Update Polish translation maintainer (6297) (Tymek)
    • [Doc] Fix mention of non-existent fullWith attribute in <SelectArrayInput> (6291) (WiXSL)
    • [Doc] Add data example for ra-simple-rest (6278) (karltaylor)
    • [Lab] ra-no-code - Introduce Resource Configuration (6217) (djhi)
    • [Lab] ra-no-code - Introduce ApplicationsDashboard (6221) (djhi)
    • [Lab] ra-no-code - Add support for simple references (6246) (djhi)
    Source code(tar.gz)
    Source code(zip)
  • v3.15.2(May 24, 2021)

    • Fix performance regression causing unnecessary redraws (6285) (fzaninotto)
    • Fix missing margin prop in several Labeled components (6282) (WiXSL)
    • Fix defaultValue and initialValue props don't work in Edit views (6272) (djhi)
    • Fix performance of <Layout> rerenders (6264) (WiXSL)
    • Fix useQueryWithStore outputs incorrect loaded field when enabled is false (6262) (fzaninotto)
    • [Doc] Fix wrong return value in custom validator example (6296) (WiXSL)
    • [Doc] Fix hook name in on-the-fly choice creation examples for <SelectInput> and <AutocompleteInput> (6286) (andrico1234)
    • [Doc] Fix bad readability of <ReferenceInput> examples (6281) (WiXSL)
    • [Doc] Fix <TestContext> JSDoc (6276) (WiXSL)
    • [Doc] Fix missing reference to success notification type in useNotify() hook documentation (6273) (WiXSL)
    Source code(tar.gz)
    Source code(zip)
  • v3.15.1(May 10, 2021)

    • Add CRM example (6242) (fzaninotto)
    • Fix <SkipNavigationButton> component isn't exported (6263) (WiXSL)
    • Fix useMutation internal test syntax (6261) (WiXSL)
    • Fix <AutocompleteArrayInput optionText> when used with a function value (6256) (djhi)
    • Fix useQueryWithStore returns loading=true when enabled is false (6249) (djhi)
    • [TypeScript] Fix <SelectField> doesn't accept <Typography> props (6253) (fzaninotto)
    • [TypeScript] Fix missing translation item create_item (6248) (Aikain)
    • [Doc] Fix typos in useDelete and useDeleteMany JsDocs examples (6260) (WiXSL)
    • [Doc] Fix useDelete and useUpdate JsDocs examples (6238) (WiXSL)
    • [Doc] Fix dataProvider hooks incorrectly document error state as loaded=true instead of false (6252) (fzaninotto)
    • [Doc] Fix minor typos in <FileInput> and <ImageInput> props description (6243) (olliebennett)
    Source code(tar.gz)
    Source code(zip)
  • v3.15.0(May 2, 2021)

    • Add support for quick choice creation in <SelectInput>, <AutocompleteInput>, <SelectArrayInput>, and <AutocompleteArrayInput> (6215) (djhi)
    • Add ability to call specialized dataProvider hooks with specialized parameters (6168) (fzaninotto)
    • Add ability to refetch a query in useQuery and useQueryWithStore (6130) (djhi)
    • Add <Datagrid empty> prop to display column headers even on empty lists (6164) (andrico1234)
    • Add <AppBar container> props to override the root App Bar element (6178) (WiXSL)
    • Add <RouteWithoutLayout> component to enable TS-compatible custom routes with noLayout (6158) (fzaninotto)
    • Add support for truthy/falsy values in <BooleanField> (6027) (WiXSL)
    • Add customReducers to <TestContext> (6067) (ValentinnDimitroff)
    • Fix custom mutators crash <SimpleForm> and <TabbedForm> (6209) (WiXSL)
    • Fix hideFilter called repeatedly only registers the last call (6226) (fzaninotto)
    • Fix warning in <UrlField> when value is nullish and emptyText is empty (6176) (OoDeLally)
    • Fix regression in undoable prop behavior (6153) (ThieryMichel)
    • [Doc] Fix typo in example of <SaveButton disabled> handling (6232) (SleepWalker)
    • [Doc] Fix custom <DatagridRow> example (6223) (WiXSL)
    • [TypeScript] Export PublicFieldProps and InjectedFieldProps types (so devs can use them to define their own field components) (6219) (jtomaszewski)
    • [TypeScript] Fix useMutation requires payload argument (6182) (jtomaszewski)
    • [Lab] Bootstrap ra-no-code package (6211) (djhi)
    Source code(tar.gz)
    Source code(zip)
  • v3.14.5(Apr 24, 2021)

    • Fix <DateInput> and <DateTimeInput> are broken on Safari (6199) (djhi)
    • Fix <Notification> undo button's color on success type (6193) (WiXSL)
    • [TypeScript] Publish data-generator typings (6204) (floo51)
    • [TypeScript] Fix ra-data-local-storage types (6203) (djhi)
    • [TypeScript] Fix view action component types aren't exported (6200) (djhi)
    • [TypeScript] Fix sidebar width type in application theme (6197) (jtomaszewski)
    • [Doc] Add OData data provider (6206) (jvert)
    • [Doc] Update tutorial images (6205) (fzaninotto)
    • [Doc] Fix custom fields documentation doesn't use useRecordContext (6201) (djhi)
    Source code(tar.gz)
    Source code(zip)
  • v3.14.4(Apr 19, 2021)

    • Fix useGetMany does not respect the enabled option (6188) (djhi)
    • Fix 'Cannot set property validating of undefined' error when conditionally rendering a form component (6186) (ThieryMichel)
    • Fix useWarnWhenUsavedChanges fails on nested fields (6185) (djhi)
    • Fix warning when using <BulkDeleteButton> without props (6165) (fzaninotto)
    • Fix Menu icon isn't aligned with the sidebar icons (6161) (JayKaku)
    • Fix missing query string after successful login (6129) (makbol)
    • [Doc] Add link to Google Sheet data provider (6187) (fzaninotto)
    • [Doc] Fix missing documentation about the ResourceContext (6183) (fzaninotto)
    • [Doc] Fix broken link to source in Testing Permissions documentation (6181) (YashJipkate)
    • [Doc] Fix typo in <FormDataConsumer> usage JSDoc (6169) (WiXSL)
    • [Doc] Fix typo in withDataProvider hook example (6160) (f-jost)
    • [Doc] Fix outdated link for Swedish translation (6156) (kolben)
    Source code(tar.gz)
    Source code(zip)
  • v3.14.3(Apr 12, 2021)

    • Fix <Field textAlign> prop doesn't accept value center (6152) (WiXSL)
    • Fix runtime warnings when <SimpleList> displays skeleton while loading (6146) (fzaninotto)
    • Fix logout notification may appear more than once (6144) (fzaninotto)
    • Fix submit errors cannot have translation arguments (6140) (djhi)
    • Fix <RadioButtonGroupInput> emits runtime warnings (6139) (djhi)
    • Fix <ArrayInput> validation (6136) (djhi)
    • Fix <Datagrid> logs a warning about invalid prop hasBulkActions of type array (6122) (RoBYCoNTe)
    • [TypeScript] Fix minor type errors in ra-ui-material-ui and validate (6147) (fzaninotto)
    • [Doc] Fix <Labeled> documentation is missing resource and source props usage (6138) (djhi)
    • [Doc] Add illustration for the <Aside> component (6132) (fzaninotto)
    • [Doc] Add link to ra-acl auth package (6123) (andrico1234)
    Source code(tar.gz)
    Source code(zip)
Fluent UI web represents a collection of utilities, React components, and web components for building web applications.

Fluent UI Web Fluent UI web represents a collection of utilities, React components, and web components for building web applications. This repo is hom

Microsoft 12.7k Jan 14, 2022
InvaUI is a simple, modular and accessible component library that gives you the building blocks you need to build your React applications.

Inva UI Sponsored by English • Table of Contents Quick start Install Install The easiest way to use Inva UI is to install it from npm $ npm install @i

Shaun Mak 4 Nov 8, 2021
An open-source UI component library for building high-quality, accessible design systems and web apps

An open-source UI component library for building high-quality, accessible design systems and web apps

Radix 2.8k Jan 14, 2022
React 17 & Bootstrap 5 & Material Design 2.0 UI KIT

React 17 & Bootstrap 5 & Material Design 2.0 UI KIT

MDBootstrap 1.2k Jan 14, 2022
⚡️ Simple, Modular & Accessible UI Components for your React Applications

Build Accessible React Apps with Speed ⚡️ Chakra UI provides a set of accessible, reusable, and composable React components that make it super easy to

Chakra UI 23.3k Jan 16, 2022
A React Component library for buliding modern applications easily & quickly.

A React Component library for building modern applications easily & quickly

Elementz 340 Jan 18, 2022
a react-based framework that provides accessibility, modularity, responsiveness, and theming in a tidy package

Grommet: focus on the essential experience Documentation Visit the Grommet website for more information. Support / Contributing Before opening an issu

grommet 7.7k Jan 14, 2022
Toolkit for building accessible rich web apps with React

Reakit Toolkit for building accessible rich web apps with React. Explore website » Sponsors By donating $100 or more you become a sponsor and help in

Reakit 5.4k Jan 16, 2022
Orbit-components is a React component library which provides developers with the easiest possible way of building Kiwi.com’s products.

Orbit-components is a React component library which provides developers with the easiest possible way of building Kiwi.com’s products.

Kiwi.com 1.1k Jan 21, 2022
React component for building split views like in VS Code

Splitter Splitter is a React component that allows you to split views into resizable panels. Similar to tabs in Visual Studio Code, for example. It's

Devbook 204 Jan 16, 2022
🌲 Evergreen React UI Framework by Segment

Works out of the box. Evergreen contains a set of polished React components that work out of the box. Flexible & composable. Evergreen components are

Segment 11.4k Jan 18, 2022
React components for Bulma framework

React-bulma-components React components for Bulma (v0.8.2) UI compatible with most used React Frameworks (Gatsby, CRA, Next.js) V4 Pool Please Check h

John 1.1k Jan 12, 2022
React.js components for Modern CSS framework based on Flexbox

React-Bulma React.js components for Modern CSS framework based on Flexbox Styleguide: https://kulakowka.github.io/react-bulma/ Official Repo: https://

Anton Kulakov 462 Jan 7, 2022
👟 rbx – The Comprehensive Bulma UI Framework for React

rbx – The Comprehensive Bulma UI Framework for React ?? Read the docs. ?? I'll wait, go check them out! Features up-to-date Bulma implementation (0.7.

Devin Fee 474 Jan 7, 2022
React utility component primitives & UI framework for use with Tailwind CSS

Tailwind React UI NB: As the 0.#.# version number suggests this is still very much work in progress, so semantic versioning will not be followed until

Ed Mortlock 244 Jan 12, 2022
🌈 A UI Design Language and React UI library

Ant Design An enterprise-class UI design language and React UI library. English | Português | 简体中文 ✨ Features ?? Enterprise-class UI designed for web

Ant Design Team 77k Jan 15, 2022
The UI design language and React library for Conversational UI

The UI design language and React library for Conversational UI Website:https://chatui.io English | 简体中文 Features ?? Best Practices: The best practice

Alibaba 1.3k Jan 13, 2022
⚛️A beautiful and modern React design system.

Shards React is a free, beautiful and modern React UI kit based on Shards. Documentation & Demo • Official Page Getting Started Getting started with S

DesignRevision 707 Jan 10, 2022
A modern, comprehensive, flexible design system and React UI library

A modern, comprehensive, flexible design system and UI library. Quickly build beautiful React apps.

null 5.1k Jan 16, 2022