diff --git a/x-pack/legacy/plugins/siem/public/components/timeline/body/events/index.tsx b/x-pack/legacy/plugins/siem/public/components/timeline/body/events/index.tsx index 9361a46dddff45..6b2e105ad05664 100644 --- a/x-pack/legacy/plugins/siem/public/components/timeline/body/events/index.tsx +++ b/x-pack/legacy/plugins/siem/public/components/timeline/body/events/index.tsx @@ -31,6 +31,7 @@ interface Props { browserFields: BrowserFields; columnHeaders: ColumnHeader[]; columnRenderers: ColumnRenderer[]; + containerElementRef: HTMLDivElement; data: TimelineItem[]; eventIdToNoteIds: Readonly>; getNotesByIds: (noteIds: string[]) => Note[]; @@ -53,61 +54,62 @@ interface Props { // Passing the styles directly to the component because the width is // being calculated and is recommended by Styled Components for performance // https://github.com/styled-components/styled-components/issues/134#issuecomment-312415291 -export const Events = React.memo( - ({ - actionsColumnWidth, - addNoteToEvent, - browserFields, - columnHeaders, - columnRenderers, - data, - eventIdToNoteIds, - getNotesByIds, - id, - isEventViewer = false, - loadingEventIds, - onColumnResized, - onPinEvent, - onRowSelected, - onUpdateColumns, - onUnPinEvent, - pinnedEventIds, - rowRenderers, - selectedEventIds, - showCheckboxes, - toggleColumn, - updateNote, - }) => ( - - {data.map((event, i) => ( - - ))} - - ) +const EventsComponent: React.FC = ({ + actionsColumnWidth, + addNoteToEvent, + browserFields, + columnHeaders, + columnRenderers, + containerElementRef, + data, + eventIdToNoteIds, + getNotesByIds, + id, + isEventViewer = false, + loadingEventIds, + onColumnResized, + onPinEvent, + onRowSelected, + onUpdateColumns, + onUnPinEvent, + pinnedEventIds, + rowRenderers, + selectedEventIds, + showCheckboxes, + toggleColumn, + updateNote, +}) => ( + + {data.map((event, i) => ( + + ))} + ); -Events.displayName = 'Events'; + +export const Events = React.memo(EventsComponent); diff --git a/x-pack/legacy/plugins/siem/public/components/timeline/body/events/stateful_event.tsx b/x-pack/legacy/plugins/siem/public/components/timeline/body/events/stateful_event.tsx index 6c43d9a63029c2..5704b6030e7d19 100644 --- a/x-pack/legacy/plugins/siem/public/components/timeline/body/events/stateful_event.tsx +++ b/x-pack/legacy/plugins/siem/public/components/timeline/body/events/stateful_event.tsx @@ -35,6 +35,7 @@ import { StatefulEventChild } from './stateful_event_child'; interface Props { actionsColumnWidth: number; + containerElementRef: HTMLDivElement; addNoteToEvent: AddNoteToEvent; browserFields: BrowserFields; columnHeaders: ColumnHeader[]; @@ -115,6 +116,7 @@ const StatefulEventComponent: React.FC = ({ actionsColumnWidth, addNoteToEvent, browserFields, + containerElementRef, columnHeaders, columnRenderers, event, @@ -201,6 +203,7 @@ const StatefulEventComponent: React.FC = ({ {({ isVisible }) => { @@ -279,7 +282,7 @@ const StatefulEventComponent: React.FC = ({ } else { // Height place holder for visibility detection as well as re-rendering sections. const height = - divElement.current != null + divElement.current != null && divElement.current.clientHeight ? `${divElement.current.clientHeight}px` : DEFAULT_ROW_HEIGHT; diff --git a/x-pack/legacy/plugins/siem/public/components/timeline/body/index.tsx b/x-pack/legacy/plugins/siem/public/components/timeline/body/index.tsx index c4ad532f76fc42..f00da482669278 100644 --- a/x-pack/legacy/plugins/siem/public/components/timeline/body/index.tsx +++ b/x-pack/legacy/plugins/siem/public/components/timeline/body/index.tsx @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import React, { useMemo } from 'react'; +import React, { useMemo, useRef } from 'react'; import { BrowserFields } from '../../../containers/source'; import { TimelineItem, TimelineNonEcsData } from '../../../graphql/types'; @@ -95,6 +95,7 @@ export const Body = React.memo( toggleColumn, updateNote, }) => { + const containerElementRef = useRef(null); const timelineTypeContext = useTimelineTypeContext(); const additionalActionWidth = timelineTypeContext.timelineActions?.reduce((acc, v) => acc + v.width, 0) ?? 0; @@ -112,7 +113,7 @@ export const Body = React.memo( return ( <> - + ( />