diff --git a/frontend/src/Components/CircularProgressBar.tsx b/frontend/src/Components/CircularProgressBar.tsx index 38ebb606cb..39f0e3656e 100644 --- a/frontend/src/Components/CircularProgressBar.tsx +++ b/frontend/src/Components/CircularProgressBar.tsx @@ -1,4 +1,4 @@ -import React, { useCallback, useEffect, useState } from 'react'; +import React, { useCallback, useEffect, useMemo, useState } from 'react'; import styles from './CircularProgressBar.css'; interface CircularProgressBarProps { @@ -59,15 +59,24 @@ function CircularProgressBar({ [] ); + const containerStyle = useMemo(() => { + return { + width: sizeInPixels, + height: sizeInPixels, + lineHeight: sizeInPixels, + }; + }, [sizeInPixels]); + + const circleStyle = useMemo(() => { + return { + stroke: strokeColor, + strokeWidth, + strokeDashoffset, + }; + }, [strokeColor, strokeWidth, strokeDashoffset]); + return ( -
+
diff --git a/frontend/src/Movie/Index/Overview/MovieIndexOverview.tsx b/frontend/src/Movie/Index/Overview/MovieIndexOverview.tsx index 4330b13e46..9be0a9f5b5 100644 --- a/frontend/src/Movie/Index/Overview/MovieIndexOverview.tsx +++ b/frontend/src/Movie/Index/Overview/MovieIndexOverview.tsx @@ -124,10 +124,12 @@ function MovieIndexOverview(props: Readonly) { const link = `/movie/${tmdbId}`; - const elementStyle = { - width: `${posterWidth}px`, - height: `${posterHeight}px`, - }; + const elementStyle = useMemo(() => { + return { + width: `${posterWidth}px`, + height: `${posterHeight}px`, + }; + }, [posterWidth, posterHeight]); const contentHeight = useMemo(() => { const padding = isSmallScreen ? columnPaddingSmallScreen : columnPadding; @@ -135,6 +137,10 @@ function MovieIndexOverview(props: Readonly) { return rowHeight - padding; }, [rowHeight, isSmallScreen]); + const infoStyle = useMemo(() => { + return { maxHeight: contentHeight }; + }, [contentHeight]); + const overviewHeight = contentHeight - titleRowHeight; return ( @@ -175,7 +181,7 @@ function MovieIndexOverview(props: Readonly) { />
-
+
{title} diff --git a/frontend/src/Movie/Index/Overview/MovieIndexOverviews.tsx b/frontend/src/Movie/Index/Overview/MovieIndexOverviews.tsx index 63deff7b28..fb621e2001 100644 --- a/frontend/src/Movie/Index/Overview/MovieIndexOverviews.tsx +++ b/frontend/src/Movie/Index/Overview/MovieIndexOverviews.tsx @@ -23,6 +23,12 @@ const bodyPaddingSmallScreen = Number.parseInt( dimensions.pageContentBodyPaddingSmallScreen ); +const listStyle = { + width: '100%', + height: '100%', + overflow: 'none', +} as const; + interface RowItemData { items: Movie[]; sortKey: string; @@ -179,28 +185,36 @@ function MovieIndexOverviews(props: Readonly) { } }, [jumpToCharacter, rowHeight, items, scrollerRef, listRef]); + const itemData = useMemo(() => { + return { + items, + sortKey, + posterWidth, + posterHeight, + rowHeight, + isSelectMode, + isSmallScreen, + }; + }, [ + items, + sortKey, + posterWidth, + posterHeight, + rowHeight, + isSelectMode, + isSmallScreen, + ]); + return (
ref={listRef} - style={{ - width: '100%', - height: '100%', - overflow: 'none', - }} + style={listStyle} width={size.width} height={size.height} itemCount={items.length} itemSize={rowHeight} - itemData={{ - items, - sortKey, - posterWidth, - posterHeight, - rowHeight, - isSelectMode, - isSmallScreen, - }} + itemData={itemData} > {Row} diff --git a/frontend/src/Movie/Index/Table/MovieIndexTable.css b/frontend/src/Movie/Index/Table/MovieIndexTable.css index 0bfc5fec4f..4773a5828c 100644 --- a/frontend/src/Movie/Index/Table/MovieIndexTable.css +++ b/frontend/src/Movie/Index/Table/MovieIndexTable.css @@ -3,6 +3,8 @@ } .row { + display: flex; + justify-content: space-between; transition: background-color 500ms; &:hover { diff --git a/frontend/src/Movie/Index/Table/MovieIndexTable.tsx b/frontend/src/Movie/Index/Table/MovieIndexTable.tsx index 6c49b789ec..cbfba03a3c 100644 --- a/frontend/src/Movie/Index/Table/MovieIndexTable.tsx +++ b/frontend/src/Movie/Index/Table/MovieIndexTable.tsx @@ -20,6 +20,12 @@ const bodyPaddingSmallScreen = Number.parseInt( dimensions.pageContentBodyPaddingSmallScreen ); +const listStyle = { + width: '100%', + height: '100%', + overflow: 'none', +} as const; + interface RowItemData { items: Movie[]; sortKey: string; @@ -53,14 +59,7 @@ function Row({ index, style, data }: ListChildComponentProps) { const movie = items[index]; return ( -
+
) { } }, [jumpToCharacter, rowHeight, items, scrollerRef, listRef]); + const itemData = useMemo(() => { + return { + items, + sortKey, + columns, + isSelectMode, + }; + }, [items, sortKey, columns, isSelectMode]); + return (
@@ -178,21 +186,12 @@ function MovieIndexTable(props: Readonly) { /> ref={listRef} - style={{ - width: '100%', - height: '100%', - overflow: 'none', - }} + style={listStyle} width={size.width} height={size.height} itemCount={items.length} itemSize={rowHeight} - itemData={{ - items, - sortKey, - columns, - isSelectMode, - }} + itemData={itemData} > {Row}