diff --git a/src/Pages/Home/components/HelpItem.tsx b/src/Pages/Home/components/HelpItem.tsx index 4d41ab1..ae207a8 100644 --- a/src/Pages/Home/components/HelpItem.tsx +++ b/src/Pages/Home/components/HelpItem.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useState, useRef, useEffect } from 'react'; interface HelpItemProps { stepNumber: number; @@ -9,6 +9,10 @@ interface HelpItemProps { } const HelpItem: React.FC = ({ stepNumber, title, description, content, id }) => { + const [showFullContent, setShowFullContent] = useState(false); + const [needsToggle, setNeedsToggle] = useState(false); + const contentRef = useRef(null); + const backgroundColors = [ 'bg-blue-400', 'bg-green-400', @@ -24,6 +28,44 @@ const HelpItem: React.FC = ({ stepNumber, title, description, con const randomColor = backgroundColors[stepNumber % backgroundColors.length]; + useEffect(() => { + const checkIfNeedsToggle = () => { + if (contentRef.current && content) { + const element = contentRef.current; + + // ایجاد یک المان مخفی برای محاسبه ارتفاع واقعی + const testElement = document.createElement('div'); + testElement.innerHTML = content; + testElement.style.position = 'absolute'; + testElement.style.visibility = 'hidden'; + testElement.style.width = element.offsetWidth + 'px'; + testElement.style.fontSize = window.getComputedStyle(element).fontSize; + testElement.style.lineHeight = window.getComputedStyle(element).lineHeight; + testElement.style.fontFamily = window.getComputedStyle(element).fontFamily; + + document.body.appendChild(testElement); + + const actualHeight = testElement.offsetHeight; + const lineHeight = parseInt(window.getComputedStyle(testElement).lineHeight) || 20; + const twoLineHeight = lineHeight * 2; + + document.body.removeChild(testElement); + + // اگر ارتفاع واقعی بیش از دو خط باشد، دکمه نمایش داده شود + setNeedsToggle(actualHeight > twoLineHeight + 5); // 5px tolerance + } + }; + + // کمی تاخیر برای اطمینان از رندر شدن کامل + const timer = setTimeout(checkIfNeedsToggle, 100); + + return () => clearTimeout(timer); + }, [content]); + + const toggleContent = () => { + setShowFullContent(!showFullContent); + }; + return (
@@ -37,7 +79,19 @@ const HelpItem: React.FC = ({ stepNumber, title, description, con

{content && (
-
+
+ {needsToggle && ( + + )}
)}
diff --git a/src/Pages/Home/components/Sidebar.tsx b/src/Pages/Home/components/Sidebar.tsx index 187c172..ab4e84c 100644 --- a/src/Pages/Home/components/Sidebar.tsx +++ b/src/Pages/Home/components/Sidebar.tsx @@ -95,12 +95,12 @@ const Sidebar: FC = ({ guides }) => { return ( <> {/* دسکتاپ Sidebar */} -
+
لیست محتوا
-
+
{guides.length > 0 ? ( guides.map((guide) => (
= ({ guides }) => {
{/* Content */} -
+
{guides.length > 0 ? ( guides.map((guide) => (