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 { 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", {sourceImages.map((avatarSrc, index) => {
borderRadius: "0", if (index === 0) {
}} return (
className="shadow-lg" <Avatar
> key={`lineIcon-${avatarSrc}-${index}`}
{sourceImages?.map((avatarSrc, index) => ( src={avatarSrc}
<Avatar shape="square"
key={`lineIcon-${avatarSrc}-${index}`} size={"small"}
src={avatarSrc} className={`absolute bottom-0 left-0`}
shape="square" />
size={"default"} );
className={`${grayscale && "grayscale"}`} } else if (index === 1) {
/> return (
))} <Avatar
</Avatar.Group> 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 */} {/* 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 grayscale={!isUserTunedIn} sourceImages={profilePictures} />
<LineIcon )}
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"
: "" : ""
}`} }`}
> >
{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>