blob: 8ff17d18ac7aa1d990dbefb5dc1b580ca313d5d7 [file] [log] [blame]
Adrien BĂ©raud88a52442021-04-26 12:11:41 -04001import React, { useMemo, forwardRef } from 'react';
2import PropTypes from 'prop-types';
3import ListItem from '@material-ui/core/ListItem';
4import ListItemIcon from '@material-ui/core/ListItemIcon';
5import ListItemText from '@material-ui/core/ListItemText';
6import { Link as RouterLink } from 'react-router-dom';
7
8function ListItemLink(props) {
9 const { icon, primary, secondary, to } = props
10
11 const renderLink = useMemo(
12 () => forwardRef((itemProps, ref) => <RouterLink to={to} ref={ref} {...itemProps} />),
13 [to])
14
15 return (
16 <ListItem button component={renderLink}>
17 {icon ? <ListItemIcon>{icon}</ListItemIcon> : null}
18 <ListItemText primary={primary} secondary={secondary} />
19 </ListItem>
20 )
21}
22
23ListItemLink.propTypes = {
24 icon: PropTypes.element,
25 primary: PropTypes.string.isRequired,
26 secondary: PropTypes.string,
27 to: PropTypes.string.isRequired,
28}
29
30export default ListItemLink