Rev 3287 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useEffect, useState } from "react";import { axios } from "../../../utils";import { Link } from "react-router-dom";import { styled } from "styled-components";import { useSelector } from "react-redux";import IconButton from "@mui/material/IconButton";import ExpandLessIcon from "@mui/icons-material/ExpandLess";import ExpandMoreIcon from "@mui/icons-material/ExpandMore";import EmptySection from "../../UI/EmptySection";import Avatar from "@components/common/Avatar";const GroupWidget = styled.div`display: flex;flex-direction: column;width: 100%;`;const WidgetHeader = styled.div`display: flex;align-items: center;justify-content: space-between;flex: 1;padding: 0 10px;p {font-size: 0.9rem;font-weight: 600;color: gray;}`;const WidgetList = styled.ul`display: flex;flex-direction: column;height: ${(props) => (props.$show ? "auto" : 0)};gap: 0.5rem;overflow: hidden;transition: all 0.2s ease-in-out;`;const ListItem = styled.li`align-items: center;display: flex;padding: 5px 10px;gap: 0.5rem;span {font-size: 0.9rem;font-weight: 600;color: gray;text-align: left;}&:hover {background-color: rgba(0, 0, 0, 0.08);}`;const GroupsInfo = ({url = "/helpers/my-groups",title = "Mis grupos",display = false,}) => {const [widgetData, setWidgetData] = useState([]);const [displayMenu, setDisplayMenu] = useState(display);const [lookMore, setLookMore] = useState(false);const labels = useSelector(({ intl }) => intl.labels);const getData = () => {axios.get(url).then((response) => {const { success, data } = response.data;if (success) {setWidgetData(data.sort((a, b) => a.priority - b.priority).reverse());}});};const dataSlice = () => {let infoFollows = [...widgetData];if (!lookMore) {infoFollows = infoFollows.slice(0, 3);}return infoFollows;};const toggleList = () => {setDisplayMenu(!displayMenu);};useEffect(() => {getData();}, []);return (<GroupWidget><WidgetHeader><p>{title}</p><IconButton onClick={toggleList}>{displayMenu ? <ExpandLessIcon /> : <ExpandMoreIcon />}</IconButton></WidgetHeader>{widgetData.length ? (<WidgetList show={displayMenu}>{dataSlice().map(({ id, name, profile, image }) => (<ListItem key={id}><Link to={profile}><Avatar imageUrl={image} size="md" name={name} /><span>{name}</span></Link></ListItem>))}</WidgetList>) : (<EmptySection message={labels.empty} />)}{widgetData.length >= 3 && (<ListItemas="button"className="justify-content-center cursor-pointer py-2"onClick={() => setLookMore(!lookMore)}><span>{lookMore ? labels.view_less : labels.view_more}</span></ListItem>)}</GroupWidget>);};export default GroupsInfo;