- {createElement(appBar, { title, open, logout })}
+
- {createElement(sidebar, {
- children: createElement(menu, {
- logout,
- hasDashboard: !!dashboard,
- }),
- })}
+
+
+
{hasError
- ? createElement(error, {
- error: errorMessage,
- errorInfo,
- title,
- })
+ ?
: children}
- {createElement(notification)}
+
);
@@ -149,11 +146,7 @@ Layout.propTypes = {
dashboard: ComponentPropType,
error: ComponentPropType,
history: PropTypes.object.isRequired,
- logout: PropTypes.oneOfType([
- PropTypes.node,
- PropTypes.func,
- PropTypes.string,
- ]),
+ logout: ComponentPropType,
menu: ComponentPropType,
notification: ComponentPropType,
open: PropTypes.bool,
@@ -162,11 +155,11 @@ Layout.propTypes = {
};
Layout.defaultProps = {
- appBar: AppBar,
- error: Error,
- menu: Menu,
- notification: Notification,
- sidebar: Sidebar,
+ appBar: DefaultAppBar,
+ error: DefaultError,
+ menu: DefaultMenu,
+ notification: DefaultNotification,
+ sidebar: DefaultSidebar,
};
const mapStateToProps = state => ({
diff --git a/packages/ra-ui-materialui/src/layout/Menu.js b/packages/ra-ui-materialui/src/layout/Menu.js
index bf1dab983ee..e101c3f5e51 100644
--- a/packages/ra-ui-materialui/src/layout/Menu.js
+++ b/packages/ra-ui-materialui/src/layout/Menu.js
@@ -5,7 +5,7 @@ import inflection from 'inflection';
import compose from 'recompose/compose';
import { withStyles, createStyles } from '@material-ui/core/styles';
import classnames from 'classnames';
-import { getResources, useTranslate } from 'ra-core';
+import { getResources, useTranslate, ComponentPropType } from 'ra-core';
import DefaultIcon from '@material-ui/icons/ViewList';
import DashboardMenuItem from './DashboardMenuItem';
@@ -41,7 +41,7 @@ const Menu = ({
open,
pathname,
resources,
- logout,
+ logout: Logout,
...rest
}) => {
const translate = useTranslate();
@@ -59,13 +59,13 @@ const Menu = ({
translate
)}
leftIcon={
- resource.icon ?