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}