From 4d3a2ccf3856636611213d4f97c2124238ae6e47 Mon Sep 17 00:00:00 2001 From: Gildas Garcia Date: Wed, 22 May 2019 10:46:36 +0200 Subject: [PATCH 01/21] Migrate Login to require components instead of element --- packages/ra-ui-materialui/src/auth/Login.tsx | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/packages/ra-ui-materialui/src/auth/Login.tsx b/packages/ra-ui-materialui/src/auth/Login.tsx index 1d6f684249e..83c0a77b3c5 100644 --- a/packages/ra-ui-materialui/src/auth/Login.tsx +++ b/packages/ra-ui-materialui/src/auth/Login.tsx @@ -1,6 +1,7 @@ import React, { + createElement, Component, - ReactElement, + ElementType, ComponentType, HtmlHTMLAttributes, } from 'react'; @@ -18,6 +19,7 @@ import { import { ThemeProvider } from '@material-ui/styles'; import LockIcon from '@material-ui/icons/Lock'; import { StaticContext } from 'react-router'; +import { ComponentPropType } from 'ra-core'; import defaultTheme from '../defaultTheme'; import Notification from '../layout/Notification'; @@ -25,7 +27,7 @@ import DefaultLoginForm from './LoginForm'; interface Props { backgroundImage?: string; - loginForm: ReactElement; + loginForm: ElementType; staticContext?: StaticContext; theme: object; } @@ -133,7 +135,7 @@ class Login extends Component< - {loginForm} + {createElement(loginForm)} @@ -146,7 +148,7 @@ const EnhancedLogin = withStyles(styles)(Login) as ComponentType; EnhancedLogin.propTypes = { backgroundImage: PropTypes.string, - loginForm: PropTypes.element, + loginForm: ComponentPropType, theme: PropTypes.object, staticContext: PropTypes.object, }; @@ -154,6 +156,6 @@ EnhancedLogin.propTypes = { EnhancedLogin.defaultProps = { backgroundImage: 'https://source.unsplash.com/random/1600x900/daily', theme: defaultTheme, - loginForm: , + loginForm: DefaultLoginForm, }; export default EnhancedLogin; From b91d4786d9115369f45889128649a3d34a73e020 Mon Sep 17 00:00:00 2001 From: Gildas Garcia Date: Wed, 22 May 2019 10:46:41 +0200 Subject: [PATCH 02/21] Migrate buttons to require components instead of element --- .../ra-ui-materialui/src/button/BulkDeleteButton.js | 4 ++-- .../src/button/BulkDeleteWithConfirmButton.js | 10 +++++----- .../src/button/BulkDeleteWithUndoButton.js | 10 +++++----- packages/ra-ui-materialui/src/button/CloneButton.js | 9 +++++---- .../ra-ui-materialui/src/button/CreateButton.js | 13 ++++++------- .../ra-ui-materialui/src/button/DeleteButton.js | 3 ++- .../src/button/DeleteWithConfirmButton.js | 10 +++++----- .../src/button/DeleteWithUndoButton.js | 10 +++++----- packages/ra-ui-materialui/src/button/EditButton.js | 10 +++++----- .../ra-ui-materialui/src/button/ExportButton.js | 10 +++++----- packages/ra-ui-materialui/src/button/ListButton.js | 13 +++++-------- .../ra-ui-materialui/src/button/RefreshButton.js | 10 +++++----- .../src/button/RefreshIconButton.js | 10 +++++----- packages/ra-ui-materialui/src/button/SaveButton.js | 10 +++++----- packages/ra-ui-materialui/src/button/ShowButton.js | 10 +++++----- 15 files changed, 70 insertions(+), 72 deletions(-) diff --git a/packages/ra-ui-materialui/src/button/BulkDeleteButton.js b/packages/ra-ui-materialui/src/button/BulkDeleteButton.js index 947194c0d53..6569de7f266 100644 --- a/packages/ra-ui-materialui/src/button/BulkDeleteButton.js +++ b/packages/ra-ui-materialui/src/button/BulkDeleteButton.js @@ -1,8 +1,8 @@ import React from 'react'; import PropTypes from 'prop-types'; +import { ComponentPropType } from 'ra-core'; import BulkDeleteWithConfirmButton from './BulkDeleteWithConfirmButton'; import BulkDeleteWithUndoButton from './BulkDeleteWithUndoButton'; -import Button from './Button'; const BulkDeleteButton = ({ undoable, ...props }) => undoable ? ( @@ -17,7 +17,7 @@ BulkDeleteButton.propTypes = { resource: PropTypes.string.isRequired, selectedIds: PropTypes.arrayOf(PropTypes.any).isRequired, undoable: PropTypes.bool, - icon: PropTypes.element, + icon: ComponentPropType, }; BulkDeleteButton.defaultProps = { diff --git a/packages/ra-ui-materialui/src/button/BulkDeleteWithConfirmButton.js b/packages/ra-ui-materialui/src/button/BulkDeleteWithConfirmButton.js index 263488cca8d..47f59a16b54 100644 --- a/packages/ra-ui-materialui/src/button/BulkDeleteWithConfirmButton.js +++ b/packages/ra-ui-materialui/src/button/BulkDeleteWithConfirmButton.js @@ -1,4 +1,4 @@ -import React, { Fragment, Component } from 'react'; +import React, { createElement, Fragment, Component } from 'react'; import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import compose from 'recompose/compose'; @@ -6,7 +6,7 @@ import ActionDelete from '@material-ui/icons/Delete'; import { withStyles, createStyles } from '@material-ui/core/styles'; import { fade } from '@material-ui/core/styles/colorManipulator'; import inflection from 'inflection'; -import { translate, crudDeleteMany } from 'ra-core'; +import { translate, crudDeleteMany, ComponentPropType } from 'ra-core'; import Confirm from '../layout/Confirm'; import Button from './Button'; @@ -44,12 +44,12 @@ class BulkDeleteWithConfirmButton extends Component { label: PropTypes.string, resource: PropTypes.string.isRequired, selectedIds: PropTypes.arrayOf(PropTypes.any).isRequired, - icon: PropTypes.element, + icon: ComponentPropType, }; static defaultProps = { label: 'ra.action.delete', - icon: , + icon: ActionDelete, }; state = { isOpen: false }; @@ -98,7 +98,7 @@ class BulkDeleteWithConfirmButton extends Component { className={classes.deleteButton} {...sanitizeRestProps(rest)} > - {icon} + {createElement(icon)} , + icon: ActionDelete, }; handleClick = () => { @@ -78,7 +78,7 @@ class BulkDeleteWithUndoButton extends Component { className={classes.deleteButton} {...sanitizeRestProps(rest)} > - {icon} + {createElement(icon)} ); } diff --git a/packages/ra-ui-materialui/src/button/CloneButton.js b/packages/ra-ui-materialui/src/button/CloneButton.js index 1890b29e904..a9c1e966efb 100644 --- a/packages/ra-ui-materialui/src/button/CloneButton.js +++ b/packages/ra-ui-materialui/src/button/CloneButton.js @@ -1,9 +1,10 @@ -import React from 'react'; +import React, { createElement } from 'react'; import PropTypes from 'prop-types'; import shouldUpdate from 'recompose/shouldUpdate'; import Queue from '@material-ui/icons/Queue'; import { Link } from 'react-router-dom'; import { stringify } from 'query-string' +import { ComponentPropType } from 'ra-core'; import Button from './Button'; @@ -27,7 +28,7 @@ export const CloneButton = ({ basePath = '', label = 'ra.action.clone', record = {}, - icon = , + icon = Queue, ...rest }) => ( ); @@ -50,7 +51,7 @@ CloneButton.propTypes = { classes: PropTypes.object, label: PropTypes.string, record: PropTypes.object, - icon: PropTypes.element, + icon: ComponentPropType, }; const enhance = shouldUpdate( diff --git a/packages/ra-ui-materialui/src/button/CreateButton.js b/packages/ra-ui-materialui/src/button/CreateButton.js index a5c0afb63a8..fd4b5699a5e 100644 --- a/packages/ra-ui-materialui/src/button/CreateButton.js +++ b/packages/ra-ui-materialui/src/button/CreateButton.js @@ -1,14 +1,13 @@ -import React from 'react'; +import React, { createElement } from 'react'; import PropTypes from 'prop-types'; import onlyUpdateForKeys from 'recompose/onlyUpdateForKeys'; -import MuiButton from '@material-ui/core/Button'; import Fab from '@material-ui/core/Fab'; import { withStyles, createStyles } from '@material-ui/core/styles'; import ContentAdd from '@material-ui/icons/Add'; import compose from 'recompose/compose'; import classnames from 'classnames'; import { Link } from 'react-router-dom'; -import { useTranslate } from 'ra-core'; +import { useTranslate, ComponentPropType } from 'ra-core'; import Button from './Button'; import Responsive from '../layout/Responsive'; @@ -35,7 +34,7 @@ const CreateButton = ({ className, classes = {}, label = 'ra.action.create', - icon = , + icon = ContentAdd, ...rest }) => { const translate = useTranslate(); @@ -50,7 +49,7 @@ const CreateButton = ({ aria-label={label && translate(label)} {...rest} > - {icon} + {createElement(icon)} } medium={ @@ -61,7 +60,7 @@ const CreateButton = ({ label={label} {...rest} > - {icon} + {createElement(icon)} } /> @@ -74,7 +73,7 @@ CreateButton.propTypes = { classes: PropTypes.object, label: PropTypes.string, size: PropTypes.string, - icon: PropTypes.element, + icon: ComponentPropType, }; const enhance = compose( diff --git a/packages/ra-ui-materialui/src/button/DeleteButton.js b/packages/ra-ui-materialui/src/button/DeleteButton.js index 7eb9340dda7..e16b140e1b3 100644 --- a/packages/ra-ui-materialui/src/button/DeleteButton.js +++ b/packages/ra-ui-materialui/src/button/DeleteButton.js @@ -1,5 +1,6 @@ import React from 'react'; import PropTypes from 'prop-types'; +import { ComponentPropType } from 'ra-core'; import DeleteWithUndoButton from './DeleteWithUndoButton'; import DeleteWithConfirmButton from './DeleteWithConfirmButton'; @@ -21,7 +22,7 @@ DeleteButton.propTypes = { ]), resource: PropTypes.string, undoable: PropTypes.bool, - icon: PropTypes.element, + icon: ComponentPropType, }; DeleteButton.defaultProps = { diff --git a/packages/ra-ui-materialui/src/button/DeleteWithConfirmButton.js b/packages/ra-ui-materialui/src/button/DeleteWithConfirmButton.js index bae35e03988..ce9251790d0 100644 --- a/packages/ra-ui-materialui/src/button/DeleteWithConfirmButton.js +++ b/packages/ra-ui-materialui/src/button/DeleteWithConfirmButton.js @@ -1,4 +1,4 @@ -import React, { Fragment, Component } from 'react'; +import React, { createElement, Fragment, Component } from 'react'; import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import compose from 'recompose/compose'; @@ -7,7 +7,7 @@ import { fade } from '@material-ui/core/styles/colorManipulator'; import ActionDelete from '@material-ui/icons/Delete'; import classnames from 'classnames'; import inflection from 'inflection'; -import { translate, crudDelete } from 'ra-core'; +import { translate, crudDelete, ComponentPropType } from 'ra-core'; import Confirm from '../layout/Confirm'; import Button from './Button'; @@ -86,7 +86,7 @@ class DeleteWithConfirmButton extends Component { key="button" {...sanitizeRestProps(rest)} > - {icon} + {createElement(icon)} , + icon: ActionDelete, }; export default compose( diff --git a/packages/ra-ui-materialui/src/button/DeleteWithUndoButton.js b/packages/ra-ui-materialui/src/button/DeleteWithUndoButton.js index c8cb8c8c96c..fbea1cf4c6a 100644 --- a/packages/ra-ui-materialui/src/button/DeleteWithUndoButton.js +++ b/packages/ra-ui-materialui/src/button/DeleteWithUndoButton.js @@ -1,4 +1,4 @@ -import React, { Component } from 'react'; +import React, { createElement, Component } from 'react'; import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import compose from 'recompose/compose'; @@ -6,7 +6,7 @@ import { withStyles, createStyles } from '@material-ui/core/styles'; import { fade } from '@material-ui/core/styles/colorManipulator'; import ActionDelete from '@material-ui/icons/Delete'; import classnames from 'classnames'; -import { translate, crudDelete, startUndoable } from 'ra-core'; +import { translate, crudDelete, startUndoable, ComponentPropType } from 'ra-core'; import Button from './Button'; @@ -87,7 +87,7 @@ class DeleteWithUndoButton extends Component { key="button" {...sanitizeRestProps(rest)} > - {icon} + {createElement(icon)} ); } @@ -107,13 +107,13 @@ DeleteWithUndoButton.propTypes = { resource: PropTypes.string.isRequired, startUndoable: PropTypes.func, translate: PropTypes.func, - icon: PropTypes.element, + icon: ComponentPropType, }; DeleteWithUndoButton.defaultProps = { redirect: 'list', undoable: true, - icon: , + icon: ActionDelete, }; export default compose( diff --git a/packages/ra-ui-materialui/src/button/EditButton.js b/packages/ra-ui-materialui/src/button/EditButton.js index ce4d3429118..e904f2f2ed3 100644 --- a/packages/ra-ui-materialui/src/button/EditButton.js +++ b/packages/ra-ui-materialui/src/button/EditButton.js @@ -1,9 +1,9 @@ -import React from 'react'; +import React, { createElement } from 'react'; import PropTypes from 'prop-types'; import shouldUpdate from 'recompose/shouldUpdate'; import ContentCreate from '@material-ui/icons/Create'; import { Link } from 'react-router-dom'; -import { linkToRecord } from 'ra-core'; +import { linkToRecord, ComponentPropType } from 'ra-core'; import Button from './Button'; @@ -14,7 +14,7 @@ const EditButton = ({ basePath = '', label = 'ra.action.edit', record = {}, - icon = , + icon = ContentCreate, ...rest }) => ( ); @@ -34,7 +34,7 @@ EditButton.propTypes = { classes: PropTypes.object, label: PropTypes.string, record: PropTypes.object, - icon: PropTypes.element, + icon: ComponentPropType, }; const enhance = shouldUpdate( diff --git a/packages/ra-ui-materialui/src/button/ExportButton.js b/packages/ra-ui-materialui/src/button/ExportButton.js index ac1826aacff..c25bbafef33 100644 --- a/packages/ra-ui-materialui/src/button/ExportButton.js +++ b/packages/ra-ui-materialui/src/button/ExportButton.js @@ -1,8 +1,8 @@ -import React, { Component } from 'react'; +import React, { createElement, Component } from 'react'; import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import GetApp from '@material-ui/icons/GetApp'; -import { crudGetAll, downloadCSV, CRUD_GET_MANY, GET_MANY } from 'ra-core'; +import { crudGetAll, downloadCSV, CRUD_GET_MANY, GET_MANY, ComponentPropType } from 'ra-core'; import { unparse as convertToCSV } from 'papaparse/papaparse.min'; import Button from './Button'; @@ -101,13 +101,13 @@ class ExportButton extends Component { maxResults: PropTypes.number.isRequired, resource: PropTypes.string.isRequired, sort: PropTypes.object, - icon: PropTypes.element, + icon: ComponentPropType, }; static defaultProps = { label: 'ra.action.export', maxResults: 1000, - icon: , + icon: GetApp, }; handleClick = () => { @@ -151,7 +151,7 @@ class ExportButton extends Component { label={label} {...sanitizeRestProps(rest)} > - {icon} + {createElement(icon)} ); } diff --git a/packages/ra-ui-materialui/src/button/ListButton.js b/packages/ra-ui-materialui/src/button/ListButton.js index 702e8c3cd87..163ac821758 100644 --- a/packages/ra-ui-materialui/src/button/ListButton.js +++ b/packages/ra-ui-materialui/src/button/ListButton.js @@ -1,29 +1,26 @@ -import React from 'react'; +import React, { createElement } from 'react'; import PropTypes from 'prop-types'; import ActionList from '@material-ui/icons/List'; import { Link } from 'react-router-dom'; +import { ComponentPropType } from 'ra-core'; import Button from './Button'; const ListButton = ({ basePath = '', label = 'ra.action.list', - icon, + icon = ActionList, ...rest }) => ( ); ListButton.propTypes = { basePath: PropTypes.string, label: PropTypes.string, - icon: PropTypes.element, -}; - -ListButton.defaultProps = { - icon: , + icon: ComponentPropType, }; export default ListButton; diff --git a/packages/ra-ui-materialui/src/button/RefreshButton.js b/packages/ra-ui-materialui/src/button/RefreshButton.js index a75ce9e39f8..92f54b1653f 100644 --- a/packages/ra-ui-materialui/src/button/RefreshButton.js +++ b/packages/ra-ui-materialui/src/button/RefreshButton.js @@ -1,8 +1,8 @@ -import React, { Component } from 'react'; +import React, { createElement, Component } from 'react'; import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import NavigationRefresh from '@material-ui/icons/Refresh'; -import { refreshView as refreshViewAction } from 'ra-core'; +import { refreshView as refreshViewAction, ComponentPropType } from 'ra-core'; import Button from './Button'; @@ -10,12 +10,12 @@ class RefreshButton extends Component { static propTypes = { label: PropTypes.string, refreshView: PropTypes.func.isRequired, - icon: PropTypes.element, + icon: ComponentPropType, }; static defaultProps = { label: 'ra.action.refresh', - icon: , + icon: NavigationRefresh, }; handleClick = event => { @@ -33,7 +33,7 @@ class RefreshButton extends Component { return ( ); } diff --git a/packages/ra-ui-materialui/src/button/RefreshIconButton.js b/packages/ra-ui-materialui/src/button/RefreshIconButton.js index c936bed37e8..f9461b388ff 100644 --- a/packages/ra-ui-materialui/src/button/RefreshIconButton.js +++ b/packages/ra-ui-materialui/src/button/RefreshIconButton.js @@ -1,11 +1,11 @@ -import React, { Component } from 'react'; +import React, { createElement, Component } from 'react'; import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import compose from 'recompose/compose'; import Tooltip from '@material-ui/core/Tooltip'; import IconButton from '@material-ui/core/IconButton'; import NavigationRefresh from '@material-ui/icons/Refresh'; -import { refreshView, translate } from 'ra-core'; +import { refreshView, translate, ComponentPropType } from 'ra-core'; class RefreshButton extends Component { static propTypes = { @@ -13,12 +13,12 @@ class RefreshButton extends Component { label: PropTypes.string, refreshView: PropTypes.func.isRequired, translate: PropTypes.func.isRequired, - icon: PropTypes.element, + icon: ComponentPropType, }; static defaultProps = { label: 'ra.action.refresh', - icon: , + icon: NavigationRefresh, }; handleClick = event => { @@ -50,7 +50,7 @@ class RefreshButton extends Component { onClick={this.handleClick} {...rest} > - {icon} + {createElement(icon)} ); diff --git a/packages/ra-ui-materialui/src/button/SaveButton.js b/packages/ra-ui-materialui/src/button/SaveButton.js index 4de6ae97174..656110370f0 100644 --- a/packages/ra-ui-materialui/src/button/SaveButton.js +++ b/packages/ra-ui-materialui/src/button/SaveButton.js @@ -1,4 +1,4 @@ -import React, { Component } from 'react'; +import React, { createElement, Component } from 'react'; import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import compose from 'recompose/compose'; @@ -7,7 +7,7 @@ import CircularProgress from '@material-ui/core/CircularProgress'; import { withStyles, createStyles } from '@material-ui/core/styles'; import ContentSave from '@material-ui/icons/Save'; import classnames from 'classnames'; -import { showNotification, translate } from 'ra-core'; +import { showNotification, translate, ComponentPropType } from 'ra-core'; const styles = createStyles({ button: { @@ -57,12 +57,12 @@ export class SaveButton extends Component { submitOnEnter: PropTypes.bool, translate: PropTypes.func.isRequired, variant: PropTypes.oneOf(['raised', 'flat', 'fab']), - icon: PropTypes.element, + icon: ComponentPropType, }; static defaultProps = { handleSubmitWithRedirect: () => () => {}, - icon: , + icon: ContentSave, }; handleClick = e => { @@ -128,7 +128,7 @@ export class SaveButton extends Component { className={classes.iconPaddingStyle} /> ) : ( - React.cloneElement(icon, { + createElement(icon, { className: classes.iconPaddingStyle, }) )} diff --git a/packages/ra-ui-materialui/src/button/ShowButton.js b/packages/ra-ui-materialui/src/button/ShowButton.js index dfe69d00f3e..bd98fea008b 100644 --- a/packages/ra-ui-materialui/src/button/ShowButton.js +++ b/packages/ra-ui-materialui/src/button/ShowButton.js @@ -1,9 +1,9 @@ -import React from 'react'; +import React, { createElement } from 'react'; import PropTypes from 'prop-types'; import shouldUpdate from 'recompose/shouldUpdate'; import ImageEye from '@material-ui/icons/RemoveRedEye'; import { Link } from 'react-router-dom'; -import { linkToRecord } from 'ra-core'; +import { linkToRecord, ComponentPropType } from 'ra-core'; import Button from './Button'; @@ -14,7 +14,7 @@ const ShowButton = ({ basePath = '', label = 'ra.action.show', record = {}, - icon = , + icon = ImageEye, ...rest }) => ( ); @@ -32,7 +32,7 @@ ShowButton.propTypes = { basePath: PropTypes.string, label: PropTypes.string, record: PropTypes.object, - icon: PropTypes.element, + icon: ComponentPropType, }; const enhance = shouldUpdate( From 3ef84e211e0421c7167416606633f69e435336f7 Mon Sep 17 00:00:00 2001 From: Gildas Garcia Date: Wed, 22 May 2019 11:38:02 +0200 Subject: [PATCH 03/21] Migrate detail components to require components instead of elements --- examples/demo/src/categories/CategoryEdit.js | 2 +- examples/demo/src/orders/OrderEdit.js | 2 +- examples/demo/src/products/ProductEdit.js | 2 +- examples/demo/src/visitors/VisitorEdit.js | 2 +- examples/simple/src/posts/PostEdit.js | 2 +- examples/simple/src/users/UserCreate.js | 2 +- examples/simple/src/users/UserEdit.js | 2 +- examples/simple/src/users/UserShow.js | 2 +- examples/tutorial/src/posts.js | 2 +- .../ra-ui-materialui/src/detail/Create.js | 21 +++++++++-------- .../src/detail/Create.spec.js | 2 +- packages/ra-ui-materialui/src/detail/Edit.js | 23 ++++++++++--------- .../ra-ui-materialui/src/detail/Edit.spec.js | 2 +- packages/ra-ui-materialui/src/detail/Show.js | 23 ++++++++++--------- .../ra-ui-materialui/src/detail/Show.spec.js | 2 +- .../src/detail/TabbedShowLayout.js | 10 ++++---- packages/ra-ui-materialui/src/layout/Title.js | 14 ++++++----- .../src/layout/TitleForRecord.js | 4 ++-- packages/ra-ui-materialui/src/layout/index.js | 3 ++- 19 files changed, 64 insertions(+), 58 deletions(-) diff --git a/examples/demo/src/categories/CategoryEdit.js b/examples/demo/src/categories/CategoryEdit.js index 09f66d1e8cd..73cdcb915b1 100644 --- a/examples/demo/src/categories/CategoryEdit.js +++ b/examples/demo/src/categories/CategoryEdit.js @@ -24,7 +24,7 @@ const CategoryTitle = ({ record }) => { }; const CategoryEdit = props => ( - } {...props}> + ( - } aside={} {...props}> + diff --git a/examples/demo/src/products/ProductEdit.js b/examples/demo/src/products/ProductEdit.js index 3951dc263cd..06755c05140 100644 --- a/examples/demo/src/products/ProductEdit.js +++ b/examples/demo/src/products/ProductEdit.js @@ -35,7 +35,7 @@ const styles = { }; const ProductEdit = ({ classes, ...props }) => ( - }> + diff --git a/examples/demo/src/visitors/VisitorEdit.js b/examples/demo/src/visitors/VisitorEdit.js index ba7c4443bb4..99a32243718 100644 --- a/examples/demo/src/visitors/VisitorEdit.js +++ b/examples/demo/src/visitors/VisitorEdit.js @@ -27,7 +27,7 @@ const VisitorTitle = ({ record }) => record ? : null; const VisitorEdit = ({ classes, ...props }) => ( - } {...props}> + ( ); const PostEdit = props => ( - } actions={} {...props}> + diff --git a/examples/simple/src/users/UserCreate.js b/examples/simple/src/users/UserCreate.js index 460bef204ca..7c379efb196 100644 --- a/examples/simple/src/users/UserCreate.js +++ b/examples/simple/src/users/UserCreate.js @@ -32,7 +32,7 @@ const UserEditToolbar = ({ permissions, ...props }) => ( ); const UserCreate = ({ permissions, ...props }) => ( - }> + }> ( )); const UserEdit = ({ permissions, ...props }) => ( - } aside={