From c5c86c6611ded007e055e39aad6736aefc42c3fa Mon Sep 17 00:00:00 2001 From: "Marvin A. Ruder" Date: Sat, 18 May 2024 16:33:52 +0200 Subject: [PATCH] Replace Stock Details dialog with link to Stock Details page (#1306) * Allow lazy loading for avatars in lists Signed-off-by: Marvin A. Ruder --- .../components/stock/layouts/StockPreview.tsx | 1 + .../src/components/stock/layouts/StockRow.tsx | 84 +++---------------- .../modules/UserManagement/UserRow.tsx | 1 + 3 files changed, 13 insertions(+), 73 deletions(-) diff --git a/packages/frontend/src/components/stock/layouts/StockPreview.tsx b/packages/frontend/src/components/stock/layouts/StockPreview.tsx index 27fd2e38a..ad02951dc 100644 --- a/packages/frontend/src/components/stock/layouts/StockPreview.tsx +++ b/packages/frontend/src/components/stock/layouts/StockPreview.tsx @@ -55,6 +55,7 @@ export const StockPreview = ({ stock, navLink, onDelete, ...props }: StockPrevie }` } alt={`Logo of “${stock.name}”`} + slotProps={{ img: { loading: "lazy" } }} /> diff --git a/packages/frontend/src/components/stock/layouts/StockRow.tsx b/packages/frontend/src/components/stock/layouts/StockRow.tsx index 4741676f6..d05333071 100644 --- a/packages/frontend/src/components/stock/layouts/StockRow.tsx +++ b/packages/frontend/src/components/stock/layouts/StockRow.tsx @@ -2,7 +2,6 @@ import AddShoppingCartIcon from "@mui/icons-material/AddShoppingCart"; import ArrowDropDownIcon from "@mui/icons-material/ArrowDropDown"; import BookmarkAddIcon from "@mui/icons-material/BookmarkAdd"; import BookmarkRemoveIcon from "@mui/icons-material/BookmarkRemove"; -import CloseIcon from "@mui/icons-material/Close"; import DeleteIcon from "@mui/icons-material/Delete"; import EditIcon from "@mui/icons-material/Edit"; import NaturePeopleIcon from "@mui/icons-material/NaturePeople"; @@ -15,7 +14,6 @@ import StarOutlineIcon from "@mui/icons-material/StarOutline"; import StarsIcon from "@mui/icons-material/Stars"; import ThermostatIcon from "@mui/icons-material/Thermostat"; import VerifiedIcon from "@mui/icons-material/Verified"; -import type { SlideProps } from "@mui/material"; import { Avatar, Badge, @@ -23,24 +21,19 @@ import { Chip, darken, Dialog, - DialogContent, - DialogTitle, - Divider, - Grid, IconButton, InputAdornment, + Link, ListItemIcon, ListItemText, Menu, MenuItem, Skeleton, - Slide, TableCell, TableRow, TextField, Tooltip, Typography, - useMediaQuery, useTheme, } from "@mui/material"; import type { @@ -107,8 +100,6 @@ import { SectorIcon } from "../properties/SectorIcon"; import { StarRating } from "../properties/StarRating"; import { StyleBox } from "../properties/StyleBox"; -import { StockDetails } from "./StockDetails"; - /** * This component displays information about a stock in a table row that is used in the stock list. * @param props The properties of the component. @@ -128,7 +119,6 @@ export const StockRow = (props: StockRowProps): JSX.Element => { const [optionsMenuOpen, setOptionsMenuOpen] = useState(false); const [optionsMenuPositionEvent, setOptionsMenuPositionEvent] = useState>(); - const [detailsDialogOpen, setDetailsDialogOpen] = useState(false); const [editDialogOpen, setEditDialogOpen] = useState(false); const [deleteDialogOpen, setDeleteDialogOpen] = useState(false); const [addToWatchlistDialogOpen, setAddToWatchlistDialogOpen] = useState(false); @@ -168,8 +158,6 @@ export const StockRow = (props: StockRowProps): JSX.Element => { .catch((e) => setErrorNotificationOrClearSession(e, "editing stock in portfolio")); }; - const fullScreenDialogs = !useMediaQuery("(min-width:664px)"); - const contextMenuPositionRef = useRef(null); const updateAmountButtonRef = useRef(null); const infiniteLoadingTriggerRef = useRef(null); @@ -221,8 +209,7 @@ export const StockRow = (props: StockRowProps): JSX.Element => { !addToPortfolioDialogOpen && !removeFromPortfolioDialogOpen && !editDialogOpen && - !deleteDialogOpen && - !detailsDialogOpen + !deleteDialogOpen ) { e.preventDefault(); if (optionsMenuOpen) { @@ -448,13 +435,13 @@ export const StockRow = (props: StockRowProps): JSX.Element => { )} {/* Name and Logo */} - setDetailsDialogOpen(true)} - sx={{ - display: "flex", - alignItems: "center", - cursor: "pointer", - }} + { theme.palette.mode === "dark" }`} alt={`Logo of “${props.stock.name}”`} + slotProps={{ img: { loading: "lazy" } }} /> @@ -484,7 +472,7 @@ export const StockRow = (props: StockRowProps): JSX.Element => { {props.stock.ticker} | {props.stock.isin} - + {/* Country and Region */} @@ -813,56 +801,6 @@ export const StockRow = (props: StockRowProps): JSX.Element => { {props.stock.marketCap !== null ? formatMarketCap(props.stock) : "–"} - {/* Details Dialog */} - setDetailsDialogOpen(false)} - maxWidth="md" - fullScreen={fullScreenDialogs} - TransitionComponent={fullScreenDialogs ? Slide : undefined} - TransitionProps={{ direction: "up" } as SlideProps} - > - - - - - - - {props.stock.name} - - - {props.stock.ticker} | {props.stock.isin} - - - - - setDetailsDialogOpen(false)} - sx={{ borderRadius: 20 }} - > - - - - - - - - - - {/* Edit Dialog */} setEditDialogOpen(false)} /> diff --git a/packages/frontend/src/content/modules/UserManagement/UserRow.tsx b/packages/frontend/src/content/modules/UserManagement/UserRow.tsx index cb4541ae3..f04a8a3fe 100644 --- a/packages/frontend/src/content/modules/UserManagement/UserRow.tsx +++ b/packages/frontend/src/content/modules/UserManagement/UserRow.tsx @@ -125,6 +125,7 @@ const UserRow = (props: UserRowProps): JSX.Element => { sx={{ width: 64, height: 64, m: "4px", background: "none" }} src={props.user.avatar} alt={props.user.name} + slotProps={{ img: { loading: "lazy" } }} />