From 78b06397a61e6ae2ef9da62f6ce249a3821507dd Mon Sep 17 00:00:00 2001 From: Bruno Quaresma Date: Fri, 28 Jul 2023 09:59:49 -0300 Subject: [PATCH] fix(site): fix metadata value changing width all the time (#8780) --- .../components/Resources/AgentMetadata.tsx | 39 +++++++++++++++---- 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/site/src/components/Resources/AgentMetadata.tsx b/site/src/components/Resources/AgentMetadata.tsx index d8f35c3fae..53d6ad4fee 100644 --- a/site/src/components/Resources/AgentMetadata.tsx +++ b/site/src/components/Resources/AgentMetadata.tsx @@ -3,11 +3,19 @@ import { watchAgentMetadata } from "api/api" import { WorkspaceAgent, WorkspaceAgentMetadata } from "api/typesGenerated" import { Stack } from "components/Stack/Stack" import dayjs from "dayjs" -import { createContext, FC, useContext, useEffect, useState } from "react" +import { + createContext, + FC, + useContext, + useEffect, + useRef, + useState, +} from "react" import Skeleton from "@mui/material/Skeleton" import { MONOSPACE_FONT_FAMILY } from "theme/constants" import { combineClasses } from "utils/combineClasses" import Tooltip from "@mui/material/Tooltip" +import Box, { BoxProps } from "@mui/material/Box" type ItemStatus = "stale" | "valid" | "loading" @@ -55,27 +63,26 @@ const MetadataItem: FC<{ item: WorkspaceAgentMetadata }> = ({ item }) => { /> ) : status === "stale" ? ( -
{item.result.value} -
+
) : ( -
{item.result.value} -
+ ) return ( @@ -83,7 +90,7 @@ const MetadataItem: FC<{ item: WorkspaceAgentMetadata }> = ({ item }) => {
{item.description.display_name}
-
{value}
+ {value} ) } @@ -190,6 +197,24 @@ export const AgentMetadataSkeleton: FC = () => { ) } +const StaticWidth = (props: BoxProps) => { + const ref = useRef(null) + + useEffect(() => { + if (!ref.current) { + return + } + + const currentWidth = ref.current.getBoundingClientRect().width + ref.current.style.width = "auto" + const autoWidth = ref.current.getBoundingClientRect().width + ref.current.style.width = + autoWidth > currentWidth ? `${autoWidth}px` : `${currentWidth}px` + }, [props.children]) + + return +} + // These are more or less copied from // site/src/components/Resources/ResourceCard.tsx const useStyles = makeStyles((theme) => ({