sort of decent alignment going with multiple avatars and so everything in a row

This commit is contained in:
talksik
2022-05-10 08:16:24 -05:00
parent f79bea6516
commit bb9cd32170
2 changed files with 70 additions and 41 deletions
@@ -1,34 +1,68 @@
import { Avatar } from "antd";
import React from "react";
import { useMemo } from "react";
export default function LineIcon({
function LineIcon({
sourceImages,
grayscale = true,
}: {
sourceImages: string[];
grayscale: boolean;
}) {
const isMultiple = useMemo(() => {
if (sourceImages?.length > 1) return true;
return false;
}, [sourceImages]);
return (
<Avatar.Group
maxCount={2}
maxPopoverTrigger="click"
size="default"
maxStyle={{
color: "#f56a00",
backgroundColor: "#fde3cf",
cursor: "pointer",
borderRadius: "0",
}}
className="shadow-lg"
>
{sourceImages?.map((avatarSrc, index) => (
<Avatar
key={`lineIcon-${avatarSrc}-${index}`}
src={avatarSrc}
shape="square"
size={"default"}
className={`${grayscale && "grayscale"}`}
/>
))}
</Avatar.Group>
<>
{isMultiple ? (
<div
className={`relative ${
grayscale ? "grayscale" : ""
} h-[32px] w-[32px]`}
>
{sourceImages.map((avatarSrc, index) => {
if (index === 0) {
return (
<Avatar
key={`lineIcon-${avatarSrc}-${index}`}
src={avatarSrc}
shape="square"
size={"small"}
className={`absolute bottom-0 left-0`}
/>
);
} else if (index === 1) {
return (
<Avatar
key={`lineIcon-${avatarSrc}-${index}`}
src={avatarSrc}
shape="square"
size={"small"}
className={`absolute top-0 right-0`}
/>
);
}
// TODO: add third in the frame if we want later
return <></>;
})}
</div>
) : (
sourceImages?.map((avatarSrc, index) => (
<Avatar
key={`lineIcon-${avatarSrc}-${index}`}
src={avatarSrc}
shape="square"
size={"default"}
className={`${grayscale && "grayscale"}`}
/>
))
)}
</>
);
}
export default React.memo(LineIcon);
@@ -147,25 +147,20 @@ export default function LineRow({
{/* status dot */}
<div className="flex-shrink-0 h-4 w-4">{renderActivityIcon}</div>
<span className="flex flex-row gap-2 items-center justify-start text-slate-800">
{profilePictures && (
<LineIcon
grayscale={!isUserTunedIn}
sourceImages={profilePictures}
/>
)}
{profilePictures && (
<LineIcon grayscale={!isUserTunedIn} sourceImages={profilePictures} />
)}
<h2
className={`text-inherit text-md max-w-[220px] truncate ${
masterLineData.currentUserMember.lastVisitDate
? "font-semibold"
: ""
}`}
>
{masterLineData.lineDetails.name ||
masterLineData.otherUserObjects[0].givenName}
</h2>
</span>
<h2
className={`text-inherit text-md max-w-[220px] truncate text-slate-800 ${
masterLineData.currentUserMember.lastVisitDate
? "font-semibold"
: ""
}`}
>
{masterLineData.lineDetails.name ||
masterLineData.otherUserObjects[0].givenName}
</h2>
<div className="ml-auto flex-shrink-0">{renderRightActivity}</div>
</div>