У меня есть компонент карточки, которая содержит в себе кнопку "показать больше", при нажатии на которую карточка будет увеличиваться по высоте. Задача анимировать высоту, с помощью Framer Motion, у меня получается анимировать только развертывание, но свертывание карточки никак не могу реализовать. Читал доку, ролики, статьи но ничего не помогает, пытался применить компонент AnimatePresence из Framer Motion, но он у меня не срабатывает или я не понял как он работает.
import { Typography, Image } from "@components/ui";
import { useTranslation } from "@hooks";
import { useState } from "react";
import { motion } from "framer-motion";
export const MentorCard = (props) => {
const { title, text, profit, imageSrc, alt, className } = props;
const t = useTranslation();
//show more
const [isExpanded, setIsExpanded] = useState(false);
const toggleExpansion = () => {
setIsExpanded(!isExpanded);
};
return (
<div className={className}>
<div className="team__card-info stack column">
<div className="team__card-image">
<Image src={imageSrc} width="186" height="227" alt={alt} />
</div>
<div className="team__card-profit stack column center">
<Typography tag="p" className="">
{t.common.profit}
</Typography>
<span>{profit}</span>
</div>
</div>
<motion.div
animate={{
height: isExpanded ? "auto" : 0,
}}
transition={{ duration: 0.3 }}
className="team__card-text stack column"
>
<Typography tag="h3" className="team__card-title">
{title}
</Typography>
<Typography tag="p" className="team__card-description p">
{isExpanded ? text : text.slice(0, 500)}
{text.length > 500 && (
<button className="team__card-expanded" onClick={toggleExpansion}>
{isExpanded ? "Свернуть" : "Читать все"}
</button>
)}
</Typography>
</motion.div>
</div>
);
};