From d3828eac7bb876698225c4efeb29a26afe4a1809 Mon Sep 17 00:00:00 2001 From: fzaninotto Date: Mon, 31 May 2021 22:51:06 +0200 Subject: [PATCH 1/3] [TypeScript] Add UserMenuProps Supersedes #6267 --- .../ra-ui-materialui/src/layout/AppBar.tsx | 12 +++++---- .../ra-ui-materialui/src/layout/UserMenu.tsx | 26 ++++++++++++++----- packages/ra-ui-materialui/src/layout/index.ts | 3 ++- 3 files changed, 29 insertions(+), 12 deletions(-) diff --git a/packages/ra-ui-materialui/src/layout/AppBar.tsx b/packages/ra-ui-materialui/src/layout/AppBar.tsx index 201b48c92e7..eb44541a1aa 100644 --- a/packages/ra-ui-materialui/src/layout/AppBar.tsx +++ b/packages/ra-ui-materialui/src/layout/AppBar.tsx @@ -156,11 +156,13 @@ const AppBar = (props: AppBarProps): JSX.Element => { children )} - {typeof userMenu === 'boolean' - ? userMenu === true - ? cloneElement(, { logout }) - : null - : cloneElement(userMenu, { logout })} + {typeof userMenu === 'boolean' ? ( + userMenu === true ? ( + + ) : null + ) : ( + cloneElement(userMenu, { logout }) + )} diff --git a/packages/ra-ui-materialui/src/layout/UserMenu.tsx b/packages/ra-ui-materialui/src/layout/UserMenu.tsx index bd607bcf78f..bc9009da46b 100644 --- a/packages/ra-ui-materialui/src/layout/UserMenu.tsx +++ b/packages/ra-ui-materialui/src/layout/UserMenu.tsx @@ -13,6 +13,10 @@ import { import { makeStyles } from '@material-ui/core/styles'; import AccountCircle from '@material-ui/icons/AccountCircle'; +import { ClassesOverride } from '../types'; + +const defaultIcon = ; + const useStyles = makeStyles( theme => ({ user: {}, @@ -37,13 +41,19 @@ const TransformOrigin: PopoverOrigin = { horizontal: 'right', }; -const UserMenu = props => { +const UserMenu = (props: UserMenuProps) => { const [anchorEl, setAnchorEl] = useState(null); const translate = useTranslate(); const { loaded, identity } = useGetIdentity(); const classes = useStyles(props); - const { children, label, icon, logout } = props; + const { + children, + label = 'ra.auth.user_menu', + icon = defaultIcon, + logout, + } = props; + if (!logout && !children) return null; const open = Boolean(anchorEl); @@ -115,11 +125,15 @@ UserMenu.propTypes = { label: PropTypes.string.isRequired, logout: PropTypes.element, icon: PropTypes.node, + classes: PropTypes.object, }; -UserMenu.defaultProps = { - label: 'ra.auth.user_menu', - icon: , -}; +export interface UserMenuProps { + children?: React.ReactNode; + classes?: ClassesOverride; + label?: string; + logout?: React.ReactNode; + icon?: React.ReactNode; +} export default UserMenu; diff --git a/packages/ra-ui-materialui/src/layout/index.ts b/packages/ra-ui-materialui/src/layout/index.ts index 7ca62dcf6e8..1f643a911ce 100644 --- a/packages/ra-ui-materialui/src/layout/index.ts +++ b/packages/ra-ui-materialui/src/layout/index.ts @@ -20,7 +20,7 @@ import Sidebar, { SidebarProps } from './Sidebar'; import Title, { TitleProps, TitlePropType } from './Title'; import TitleForRecord from './TitleForRecord'; import TopToolbar from './TopToolbar'; -import UserMenu from './UserMenu'; +import UserMenu, { UserMenuProps } from './UserMenu'; export { AppBar, @@ -63,4 +63,5 @@ export type { ResponsiveProps, SidebarProps, TitleProps, + UserMenuProps, }; From 46ec8c68dd5e66faee7d279a1b33294e393b562b Mon Sep 17 00:00:00 2001 From: fzaninotto Date: Mon, 31 May 2021 22:52:56 +0200 Subject: [PATCH 2/3] Fix propType warning --- packages/ra-ui-materialui/src/layout/UserMenu.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/ra-ui-materialui/src/layout/UserMenu.tsx b/packages/ra-ui-materialui/src/layout/UserMenu.tsx index bc9009da46b..6dc756dd42d 100644 --- a/packages/ra-ui-materialui/src/layout/UserMenu.tsx +++ b/packages/ra-ui-materialui/src/layout/UserMenu.tsx @@ -122,7 +122,7 @@ const UserMenu = (props: UserMenuProps) => { UserMenu.propTypes = { children: PropTypes.node, - label: PropTypes.string.isRequired, + label: PropTypes.string, logout: PropTypes.element, icon: PropTypes.node, classes: PropTypes.object, From 41dfe8de397268281b1880f8ed2547781a3fbecd Mon Sep 17 00:00:00 2001 From: fzaninotto Date: Mon, 31 May 2021 22:53:55 +0200 Subject: [PATCH 3/3] Fix PropType order --- packages/ra-ui-materialui/src/layout/UserMenu.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/ra-ui-materialui/src/layout/UserMenu.tsx b/packages/ra-ui-materialui/src/layout/UserMenu.tsx index 6dc756dd42d..9fe0d8743bc 100644 --- a/packages/ra-ui-materialui/src/layout/UserMenu.tsx +++ b/packages/ra-ui-materialui/src/layout/UserMenu.tsx @@ -122,10 +122,10 @@ const UserMenu = (props: UserMenuProps) => { UserMenu.propTypes = { children: PropTypes.node, + classes: PropTypes.object, label: PropTypes.string, logout: PropTypes.element, icon: PropTypes.node, - classes: PropTypes.object, }; export interface UserMenuProps {