mirror of
https://github.com/block/buzz.git
synced 2026-08-18 06:50:31 +02:00
fix(desktop): keep thread guides behind the reply composer (#1179)
Signed-off-by: Wes <wesbillman@users.noreply.github.com> Co-authored-by: Pinky <44b8e82baa6e0e254e0208d68f335c283c94e7b78dd1fa10d5a49d3f13dd0435@sprout-oss.stage.blox.sqprod.co>
This commit is contained in:
@@ -459,58 +459,56 @@ export const MessageRow = React.memo(
|
||||
const isHighlighted =
|
||||
Boolean(collapseAction?.active) ||
|
||||
Boolean(highlightThreadLineDepths?.includes(depth));
|
||||
const lineClassName = cn(
|
||||
"absolute bottom-0 left-1/2 top-0 border-l transition-[border-color]",
|
||||
isHighlighted
|
||||
? "border-primary"
|
||||
: "border-border group-hover/thread-guide:border-primary group-focus-visible/thread-guide:border-primary",
|
||||
);
|
||||
|
||||
if (collapseAction) {
|
||||
return (
|
||||
<button
|
||||
aria-label={collapseAction.label}
|
||||
className="group/thread-guide absolute bottom-0 top-0 z-20 w-5 -translate-x-1/2 cursor-pointer rounded-full focus-visible:outline-hidden"
|
||||
data-thread-head-id={collapseAction.message.id}
|
||||
data-testid="thread-collapse-guide"
|
||||
key={`${message.id}-depth-guide-${offset}`}
|
||||
onBlur={() =>
|
||||
handleCollapseDepthGuideHoverChange(
|
||||
collapseAction.message,
|
||||
false,
|
||||
)
|
||||
}
|
||||
onClick={(event) =>
|
||||
handleCollapseDepthGuide(event, collapseAction.message)
|
||||
}
|
||||
onFocus={() =>
|
||||
handleCollapseDepthGuideHoverChange(
|
||||
collapseAction.message,
|
||||
true,
|
||||
)
|
||||
}
|
||||
onMouseEnter={() =>
|
||||
handleCollapseDepthGuideHoverChange(
|
||||
collapseAction.message,
|
||||
true,
|
||||
)
|
||||
}
|
||||
onMouseLeave={() =>
|
||||
handleCollapseDepthGuideHoverChange(
|
||||
collapseAction.message,
|
||||
false,
|
||||
)
|
||||
}
|
||||
style={{ left: `${offset}px` }}
|
||||
type="button"
|
||||
>
|
||||
<span
|
||||
className={lineClassName}
|
||||
<React.Fragment key={`${message.id}-depth-guide-${offset}`}>
|
||||
<div
|
||||
aria-hidden
|
||||
className={cn(
|
||||
"pointer-events-none absolute bottom-0 top-0 border-l transition-[border-color]",
|
||||
isHighlighted ? "border-primary" : "border-border",
|
||||
)}
|
||||
style={{
|
||||
borderLeftWidth: `${THREAD_REPLY_LINE_WIDTH_PX}px`,
|
||||
left: `${offset}px`,
|
||||
}}
|
||||
/>
|
||||
</button>
|
||||
<button
|
||||
aria-label={collapseAction.label}
|
||||
className="absolute bottom-0 top-0 z-20 w-5 -translate-x-1/2 cursor-pointer rounded-full focus-visible:outline-hidden"
|
||||
data-thread-head-id={collapseAction.message.id}
|
||||
data-testid="thread-collapse-guide"
|
||||
onBlur={() =>
|
||||
handleCollapseDepthGuideHoverChange(
|
||||
collapseAction.message,
|
||||
false,
|
||||
)
|
||||
}
|
||||
onClick={(event) =>
|
||||
handleCollapseDepthGuide(event, collapseAction.message)
|
||||
}
|
||||
onFocus={() =>
|
||||
handleCollapseDepthGuideHoverChange(
|
||||
collapseAction.message,
|
||||
true,
|
||||
)
|
||||
}
|
||||
onMouseEnter={() =>
|
||||
handleCollapseDepthGuideHoverChange(
|
||||
collapseAction.message,
|
||||
true,
|
||||
)
|
||||
}
|
||||
onMouseLeave={() =>
|
||||
handleCollapseDepthGuideHoverChange(
|
||||
collapseAction.message,
|
||||
false,
|
||||
)
|
||||
}
|
||||
style={{ left: `${offset}px` }}
|
||||
type="button"
|
||||
/>
|
||||
</React.Fragment>
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
import * as React from "react";
|
||||
|
||||
import type {
|
||||
TimelineThreadSummary,
|
||||
TimelineThreadSummaryParticipant,
|
||||
@@ -114,60 +116,60 @@ export function MessageThreadSummaryRow({
|
||||
const isHighlighted =
|
||||
Boolean(collapseAction?.active) ||
|
||||
Boolean(highlightThreadLineDepths?.includes(guideDepth));
|
||||
const lineClassName = cn(
|
||||
"absolute bottom-0 left-1/2 top-0 border-l transition-[border-color]",
|
||||
isHighlighted
|
||||
? "border-primary"
|
||||
: "border-border group-hover/thread-guide:border-primary group-focus-visible/thread-guide:border-primary",
|
||||
);
|
||||
|
||||
if (collapseAction) {
|
||||
return (
|
||||
<button
|
||||
aria-label={collapseAction.label}
|
||||
className="group/thread-guide absolute bottom-0 top-0 z-20 w-5 -translate-x-1/2 cursor-pointer rounded-full focus-visible:outline-hidden"
|
||||
data-thread-head-id={collapseAction.message.id}
|
||||
data-testid="thread-collapse-guide"
|
||||
<React.Fragment
|
||||
key={`${message.id}-summary-depth-guide-${offset}`}
|
||||
onBlur={() =>
|
||||
onCollapseDepthGuideHoverChange?.(
|
||||
collapseAction.message,
|
||||
false,
|
||||
)
|
||||
}
|
||||
onClick={(event) => {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
onCollapseDepthGuide?.(collapseAction.message);
|
||||
}}
|
||||
onFocus={() =>
|
||||
onCollapseDepthGuideHoverChange?.(
|
||||
collapseAction.message,
|
||||
true,
|
||||
)
|
||||
}
|
||||
onMouseEnter={() =>
|
||||
onCollapseDepthGuideHoverChange?.(
|
||||
collapseAction.message,
|
||||
true,
|
||||
)
|
||||
}
|
||||
onMouseLeave={() =>
|
||||
onCollapseDepthGuideHoverChange?.(
|
||||
collapseAction.message,
|
||||
false,
|
||||
)
|
||||
}
|
||||
style={{ left: `${offset}px` }}
|
||||
type="button"
|
||||
>
|
||||
<span
|
||||
className={lineClassName}
|
||||
<div
|
||||
aria-hidden
|
||||
className={cn(
|
||||
"pointer-events-none absolute bottom-0 top-0 border-l transition-[border-color]",
|
||||
isHighlighted ? "border-primary" : "border-border",
|
||||
)}
|
||||
style={{
|
||||
borderLeftWidth: `${THREAD_REPLY_LINE_WIDTH_PX}px`,
|
||||
left: `${offset}px`,
|
||||
}}
|
||||
/>
|
||||
</button>
|
||||
<button
|
||||
aria-label={collapseAction.label}
|
||||
className="absolute bottom-0 top-0 z-20 w-5 -translate-x-1/2 cursor-pointer rounded-full focus-visible:outline-hidden"
|
||||
data-thread-head-id={collapseAction.message.id}
|
||||
data-testid="thread-collapse-guide"
|
||||
onBlur={() =>
|
||||
onCollapseDepthGuideHoverChange?.(
|
||||
collapseAction.message,
|
||||
false,
|
||||
)
|
||||
}
|
||||
onClick={(event) => {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
onCollapseDepthGuide?.(collapseAction.message);
|
||||
}}
|
||||
onFocus={() =>
|
||||
onCollapseDepthGuideHoverChange?.(
|
||||
collapseAction.message,
|
||||
true,
|
||||
)
|
||||
}
|
||||
onMouseEnter={() =>
|
||||
onCollapseDepthGuideHoverChange?.(
|
||||
collapseAction.message,
|
||||
true,
|
||||
)
|
||||
}
|
||||
onMouseLeave={() =>
|
||||
onCollapseDepthGuideHoverChange?.(
|
||||
collapseAction.message,
|
||||
false,
|
||||
)
|
||||
}
|
||||
style={{ left: `${offset}px` }}
|
||||
type="button"
|
||||
/>
|
||||
</React.Fragment>
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user