Inline log details: adjust height on resize (#110310)

This commit is contained in:
Matias Chomicki
2025-08-28 20:24:47 +02:00
committed by GitHub
parent c73b3ccf6e
commit 3a2483a73a
2 changed files with 27 additions and 2 deletions
@@ -156,6 +156,16 @@ const LogLineComponent = memo(
[log, onClick]
);
const handleLogDetailsResize = useCallback(() => {
if (!onOverflow || !logLineRef.current || !virtualization) {
return;
}
const actualHeight = hasUnderOrOverflow(virtualization, logLineRef.current, undefined, log.collapsed);
if (actualHeight) {
onOverflow(index, log.uid, actualHeight);
}
}, [index, log.collapsed, log.uid, onOverflow, virtualization]);
const detailsShown = detailsDisplayed(log);
return (
@@ -255,7 +265,13 @@ const LogLineComponent = memo(
</div>
)}
{detailsMode === 'inline' && detailsShown && (
<InlineLogLineDetails logs={logs} log={log} timeRange={timeRange} timeZone={timeZone} />
<InlineLogLineDetails
logs={logs}
log={log}
onResize={handleLogDetailsResize}
timeRange={timeRange}
timeZone={timeZone}
/>
)}
</>
);
@@ -141,11 +141,12 @@ LogLineDetailsTabs.displayName = 'LogLineDetailsTabs';
export interface InlineLogLineDetailsProps {
log: LogListModel;
logs: LogListModel[];
onResize(): void;
timeRange: TimeRange;
timeZone: string;
}
export const InlineLogLineDetails = memo(({ logs, log, timeRange, timeZone }: InlineLogLineDetailsProps) => {
export const InlineLogLineDetails = memo(({ logs, log, onResize, timeRange, timeZone }: InlineLogLineDetailsProps) => {
const { app, detailsWidth, noInteractions } = useLogListContext();
const styles = useStyles2(getStyles, 'inline');
const scrollRef = useRef<HTMLDivElement | null>(null);
@@ -159,6 +160,14 @@ export const InlineLogLineDetails = memo(({ logs, log, timeRange, timeZone }: In
}
}, [app, noInteractions]);
useEffect(() => {
function handleResize() {
onResize();
}
window.addEventListener('resize', handleResize);
return () => window.removeEventListener('resize', handleResize);
}, [onResize]);
const saveScroll = useCallback(() => {
saveDetailsScrollPosition(log, scrollRef.current?.scrollTop ?? 0);
}, [log]);