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,26 +1,57 @@
import { Avatar } from "antd"; import { Avatar } from "antd";
import React from "react";
import { useMemo } from "react";
export default function LineIcon({ function LineIcon({
sourceImages, sourceImages,
grayscale = true, grayscale = true,
}: { }: {
sourceImages: string[]; sourceImages: string[];
grayscale: boolean; grayscale: boolean;
}) { }) {
const isMultiple = useMemo(() => {
if (sourceImages?.length > 1) return true;
return false;
}, [sourceImages]);
return ( return (
<Avatar.Group <>
maxCount={2} {isMultiple ? (
maxPopoverTrigger="click" <div
size="default" className={`relative ${
maxStyle={{ grayscale ? "grayscale" : ""
color: "#f56a00", } h-[32px] w-[32px]`}
backgroundColor: "#fde3cf",
cursor: "pointer",
borderRadius: "0",
}}
className="shadow-lg"
> >
{sourceImages?.map((avatarSrc, index) => ( {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 <Avatar
key={`lineIcon-${avatarSrc}-${index}`} key={`lineIcon-${avatarSrc}-${index}`}
src={avatarSrc} src={avatarSrc}
@@ -28,7 +59,10 @@ export default function LineIcon({
size={"default"} size={"default"}
className={`${grayscale && "grayscale"}`} className={`${grayscale && "grayscale"}`}
/> />
))} ))
</Avatar.Group> )}
</>
); );
} }
export default React.memo(LineIcon);
@@ -147,16 +147,12 @@ export default function LineRow({
{/* status dot */} {/* status dot */}
<div className="flex-shrink-0 h-4 w-4">{renderActivityIcon}</div> <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 && ( {profilePictures && (
<LineIcon <LineIcon grayscale={!isUserTunedIn} sourceImages={profilePictures} />
grayscale={!isUserTunedIn}
sourceImages={profilePictures}
/>
)} )}
<h2 <h2
className={`text-inherit text-md max-w-[220px] truncate ${ className={`text-inherit text-md max-w-[220px] truncate text-slate-800 ${
masterLineData.currentUserMember.lastVisitDate masterLineData.currentUserMember.lastVisitDate
? "font-semibold" ? "font-semibold"
: "" : ""
@@ -165,7 +161,6 @@ export default function LineRow({
{masterLineData.lineDetails.name || {masterLineData.lineDetails.name ||
masterLineData.otherUserObjects[0].givenName} masterLineData.otherUserObjects[0].givenName}
</h2> </h2>
</span>
<div className="ml-auto flex-shrink-0">{renderRightActivity}</div> <div className="ml-auto flex-shrink-0">{renderRightActivity}</div>
</div> </div>