diff --git a/src/routes/Player/SideDrawer/SideDrawer.less b/src/routes/Player/SideDrawer/SideDrawer.less index 2d2178c3e..3c2c12401 100644 --- a/src/routes/Player/SideDrawer/SideDrawer.less +++ b/src/routes/Player/SideDrawer/SideDrawer.less @@ -67,6 +67,24 @@ } } + .show-more-btn { + background: none; + border: none; + color: #fff; + cursor: pointer; + font: inherit; + padding: 0.1rem 1.5rem 0.2rem 1.5rem; + margin: 0.1rem auto 0.2rem auto; + display: block; + text-align: center; + transition: text-decoration 0.2s; + text-decoration: none; + + &:hover { + text-decoration: underline; + } + } + .series-content { flex: 2; display: flex; diff --git a/src/routes/Player/SideDrawer/SideDrawer.tsx b/src/routes/Player/SideDrawer/SideDrawer.tsx index cb94e24e5..5e404f402 100644 --- a/src/routes/Player/SideDrawer/SideDrawer.tsx +++ b/src/routes/Player/SideDrawer/SideDrawer.tsx @@ -19,6 +19,8 @@ type Props = { const SideDrawer = memo(forwardRef(({ seriesInfo, className, closeSideDrawer, ...props }: Props, ref) => { const { core } = useServices(); const [season, setSeason] = useState(seriesInfo?.season); + const [showFullDescription, setShowFullDescription] = useState(false); + const toggleDescription = () => setShowFullDescription((prev) => !prev); const metaItem = useMemo(() => { return seriesInfo ? { @@ -42,6 +44,13 @@ const SideDrawer = memo(forwardRef(({ seriesInfo, classNa }) .sort((a, b) => (a || Number.MAX_SAFE_INTEGER) - (b || Number.MAX_SAFE_INTEGER)); }, [props.metaItem.videos]); + const description = useMemo(() => { + if (!metaItem.description) return ''; + if (showFullDescription || metaItem.description.length <= 175) return metaItem.description; + const sliced = metaItem.description.slice(0, 175); + const lastSpace = sliced.lastIndexOf(' '); + return (lastSpace > 0 ? sliced.slice(0, lastSpace) : sliced) + '...'; + }, [metaItem.description, showFullDescription]) const seasonOnSelect = useCallback((event: { value: string }) => { setSeason(parseInt(event.value)); @@ -89,10 +98,18 @@ const SideDrawer = memo(forwardRef(({ seriesInfo, classNa runtime={metaItem.runtime} releaseInfo={metaItem.releaseInfo} released={metaItem.released} - description={metaItem.description} + description={description} links={metaItem.links} /> + {metaItem.description && metaItem.description.length > 175 && ( + + )} { seriesInfo ?