diff --git a/src/components/Collection/SeriesTopPanel.tsx b/src/components/Collection/SeriesTopPanel.tsx index 2d3b77c05..cae70559c 100644 --- a/src/components/Collection/SeriesTopPanel.tsx +++ b/src/components/Collection/SeriesTopPanel.tsx @@ -9,6 +9,7 @@ import BackgroundImagePlaceholderDiv from '@/components/BackgroundImagePlacehold import AnidbDescription from '@/components/Collection/AnidbDescription'; import SeriesInfo from '@/components/Collection/SeriesInfo'; import SeriesUserStats from '@/components/Collection/SeriesUserStats'; +import ShokoPanel from '@/components/Panels/ShokoPanel'; import { useSeriesImagesQuery, useSeriesTagsQuery } from '@/core/react-query/series/queries'; import { useSettingsQuery } from '@/core/react-query/settings/queries'; @@ -52,6 +53,7 @@ const SeriesTopPanel = React.memo(({ series }: SeriesSidePanelProps) => { setPoster(allPosters.find(art => art.Preferred) ?? allPosters[0]); }, [imagesQuery.data, imagesQuery.isSuccess, showRandomPoster]); + // TODO: try to make this a grid for better responsiveness... but we'll have v3 soon so maybe not right now. return (
{ )}
-
-
- Series Description -
-
- -
-
-
-
- Series Information -
+ + + + +
-
+
-
-
- Top 10 Tags -
-
- {tags.slice(0, 10) - .map(tag => )} -
-
-
-
- User Stats -
-
- -
-
+ + {tags.slice(0, 10) + .map(tag => )} + + + + +
); diff --git a/src/pages/collection/series/SeriesEpisodes.tsx b/src/pages/collection/series/SeriesEpisodes.tsx index 75e904b2b..505e37759 100644 --- a/src/pages/collection/series/SeriesEpisodes.tsx +++ b/src/pages/collection/series/SeriesEpisodes.tsx @@ -85,6 +85,7 @@ const SeriesEpisodes = () => { data, fetchNextPage, isFetchingNextPage, + isPending, isSuccess, } = seriesEpisodesQuery; const [episodes, episodeCount] = useFlattenListResult(data); @@ -116,8 +117,9 @@ const SeriesEpisodes = () => { const rowVirtualizer = useVirtualizer({ count: episodeCount, getScrollElement: () => scrollRef.current, - estimateSize: () => 345, // 332px is the minimum height of a loaded row + estimateSize: () => 370, // 370px is the minimum height of a loaded row overscan: 5, + gap: 16, }); const virtualItems = rowVirtualizer.getVirtualItems(); @@ -199,44 +201,49 @@ const SeriesEpisodes = () => {
-
-
- {virtualItems.map((virtualItem) => { - const page = Math.ceil((virtualItem.index + 1) / pageSize); - const episode = episodes[virtualItem.index]; - - if (!episode && !isFetchingNextPage) fetchNextPageDebounced(); - - return ( -
- {episode - ? ( - onSelectionChange(episode.IDs.ID)} - seriesId={toNumber(seriesId)} - anidbSeriesId={anidbSeriesId} - episode={episode} - page={page} - /> - ) - : ( -
- -
- )} -
- ); - })} -
-
+ {isPending + ? ( +
+ +
+ ) + : ( +
+ {virtualItems.map((virtualItem) => { + const page = Math.ceil((virtualItem.index + 1) / pageSize); + const episode = episodes[virtualItem.index]; + + if (!episode && !isFetchingNextPage) fetchNextPageDebounced(); + + return ( +
+ {episode + ? ( + onSelectionChange(episode.IDs.ID)} + seriesId={toNumber(seriesId)} + anidbSeriesId={anidbSeriesId} + episode={episode} + page={page} + /> + ) + : ( +
+ +
+ )} +
+ ); + })} +
+ )}