Rev 2614 | Rev 3026 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useMemo, useState } from 'react'import { Link } from 'react-router-dom'import { useSelector } from 'react-redux'import { useFetch } from '@hooks'import Widget from '@components/UI/Widget'import EmptySection from '@app/components/UI/EmptySection'import {Avatar,Button,List,ListItem,ListItemAvatar,ListItemButton,ListItemText} from '@mui/material'import Spinner from '@components/UI/Spinner'const SuggestWidget = ({ title, url }) => {const { data, isLoading } = useFetch(url, [])const [lookMore, setLookMore] = useState(false)const labels = useSelector(({ intl }) => intl.labels)const items = useMemo(() => (lookMore ? data : [...data].slice(0, 3)),[lookMore, data])return (<Widget><Widget.Headertitle={title}renderAction={() => {if (data.length <= 3) return nullreturn (<Button onClick={() => setLookMore(!lookMore)}>{lookMore ? labels.view_less : labels.view_more}</Button>)}}/><Widget.Body>{isLoading && <Spinner />}{!isLoading && data.length === 0 ? (<EmptySection message={labels?.datatable_empty} />) : (<List>{items.map(({ name, profile, image, id }) => (<ListItem key={id}><ListItemButton LinkComponent={Link} to={profile} disableRipple><ListItemAvatar><Avatar src={image} alt={`${name} profile avatar`} /></ListItemAvatar><ListItemText primary={name} /></ListItemButton></ListItem>))}</List>)}</Widget.Body></Widget>)}export default SuggestWidget