diff --git a/test/functional/apps/context/_size.js b/test/functional/apps/context/_size.js
index 5f3d1ebe409744..ea9b2c8cf18192 100644
--- a/test/functional/apps/context/_size.js
+++ b/test/functional/apps/context/_size.js
@@ -30,7 +30,8 @@ export default function({ getService, getPageObjects }) {
const docTable = getService('docTable');
const PageObjects = getPageObjects(['context']);
- describe('context size', function contextSize() {
+ // FLAKY: https://github.com/elastic/kibana/issues/53888
+ describe.skip('context size', function contextSize() {
before(async function() {
await kibanaServer.uiSettings.update({
'context:defaultSize': `${TEST_DEFAULT_CONTEXT_SIZE}`,
diff --git a/x-pack/legacy/plugins/siem/public/components/drag_and_drop/draggable_wrapper.test.tsx b/x-pack/legacy/plugins/siem/public/components/drag_and_drop/draggable_wrapper.test.tsx
index d34f4cce9fea41..92adc1a9adb7a2 100644
--- a/x-pack/legacy/plugins/siem/public/components/drag_and_drop/draggable_wrapper.test.tsx
+++ b/x-pack/legacy/plugins/siem/public/components/drag_and_drop/draggable_wrapper.test.tsx
@@ -12,7 +12,7 @@ import { mockBrowserFields, mocksSource } from '../../containers/source/mock';
import { TestProviders } from '../../mock';
import { mockDataProviders } from '../timeline/data_providers/mock/mock_data_providers';
import { DragDropContextWrapper } from './drag_drop_context_wrapper';
-import { DraggableWrapper, ConditionalPortal } from './draggable_wrapper';
+import { DraggableWrapper } from './draggable_wrapper';
import { useMountAppended } from '../../utils/use_mount_appended';
describe('DraggableWrapper', () => {
@@ -84,32 +84,3 @@ describe('DraggableWrapper', () => {
});
});
});
-
-describe('ConditionalPortal', () => {
- const mount = useMountAppended();
- const props = {
- usePortal: false,
- registerProvider: jest.fn(),
- isDragging: true,
- };
-
- it(`doesn't call registerProvider is NOT isDragging`, () => {
- mount(
-
-
-
- );
-
- expect(props.registerProvider.mock.calls.length).toEqual(0);
- });
-
- it('calls registerProvider when isDragging', () => {
- mount(
-
-
-
- );
-
- expect(props.registerProvider.mock.calls.length).toEqual(1);
- });
-});
diff --git a/x-pack/legacy/plugins/siem/public/components/drag_and_drop/draggable_wrapper.tsx b/x-pack/legacy/plugins/siem/public/components/drag_and_drop/draggable_wrapper.tsx
index 4b80b9fff2740e..7d84403b87f8d0 100644
--- a/x-pack/legacy/plugins/siem/public/components/drag_and_drop/draggable_wrapper.tsx
+++ b/x-pack/legacy/plugins/siem/public/components/drag_and_drop/draggable_wrapper.tsx
@@ -4,14 +4,14 @@
* you may not use this file except in compliance with the Elastic License.
*/
-import React, { createContext, useCallback, useContext, useEffect, useState } from 'react';
+import React, { createContext, useContext, useEffect } from 'react';
import {
Draggable,
DraggableProvided,
DraggableStateSnapshot,
Droppable,
} from 'react-beautiful-dnd';
-import { useDispatch } from 'react-redux';
+import { connect, ConnectedProps } from 'react-redux';
import styled from 'styled-components';
import deepEqual from 'fast-deep-equal';
@@ -47,50 +47,34 @@ const ProviderContentWrapper = styled.span`
}
`;
-type RenderFunctionProp = (
- props: DataProvider,
- provided: DraggableProvided,
- state: DraggableStateSnapshot
-) => React.ReactNode;
-
interface OwnProps {
dataProvider: DataProvider;
inline?: boolean;
- render: RenderFunctionProp;
+ render: (
+ props: DataProvider,
+ provided: DraggableProvided,
+ state: DraggableStateSnapshot
+ ) => React.ReactNode;
truncate?: boolean;
}
-type Props = OwnProps;
+type Props = OwnProps & PropsFromRedux;
/**
* Wraps a draggable component to handle registration / unregistration of the
* data provider associated with the item being dropped
*/
-export const DraggableWrapper = React.memo(
- ({ dataProvider, render, truncate }) => {
- const [providerRegistered, setProviderRegistered] = useState(false);
- const dispatch = useDispatch();
+const DraggableWrapperComponent = React.memo(
+ ({ dataProvider, registerProvider, render, truncate, unRegisterProvider }) => {
const usePortal = useDraggablePortalContext();
- const registerProvider = useCallback(() => {
- if (!providerRegistered) {
- dispatch(dragAndDropActions.registerProvider({ provider: dataProvider }));
- setProviderRegistered(true);
- }
- }, [dispatch, providerRegistered, dataProvider]);
-
- const unRegisterProvider = useCallback(
- () => dispatch(dragAndDropActions.unRegisterProvider({ id: dataProvider.id })),
- [dispatch, dataProvider]
- );
-
- useEffect(
- () => () => {
- unRegisterProvider();
- },
- []
- );
+ useEffect(() => {
+ registerProvider!({ provider: dataProvider });
+ return () => {
+ unRegisterProvider!({ id: dataProvider.id });
+ };
+ }, []);
return (
@@ -103,18 +87,13 @@ export const DraggableWrapper = React.memo(
key={getDraggableId(dataProvider.id)}
>
{(provided, snapshot) => (
-
+
(
);
},
- (prevProps, nextProps) =>
- deepEqual(prevProps.dataProvider, nextProps.dataProvider) &&
- prevProps.render !== nextProps.render &&
- prevProps.truncate === nextProps.truncate
+ (prevProps, nextProps) => {
+ return (
+ deepEqual(prevProps.dataProvider, nextProps.dataProvider) &&
+ prevProps.render !== nextProps.render &&
+ prevProps.truncate === nextProps.truncate
+ );
+ }
);
+DraggableWrapperComponent.displayName = 'DraggableWrapperComponent';
+
+const mapDispatchToProps = {
+ registerProvider: dragAndDropActions.registerProvider,
+ unRegisterProvider: dragAndDropActions.unRegisterProvider,
+};
+
+const connector = connect(null, mapDispatchToProps);
+
+type PropsFromRedux = ConnectedProps;
+
+export const DraggableWrapper = connector(DraggableWrapperComponent);
+
DraggableWrapper.displayName = 'DraggableWrapper';
/**
@@ -155,24 +150,8 @@ DraggableWrapper.displayName = 'DraggableWrapper';
*
* See: https://github.com/atlassian/react-beautiful-dnd/issues/499
*/
-
-interface ConditionalPortalProps {
- children: React.ReactNode;
- usePortal: boolean;
- isDragging: boolean;
- registerProvider: () => void;
-}
-
-export const ConditionalPortal = React.memo(
- ({ children, usePortal, registerProvider, isDragging }) => {
- useEffect(() => {
- if (isDragging) {
- registerProvider();
- }
- }, [isDragging, registerProvider]);
-
- return usePortal ? {children} : <>{children}>;
- }
+const ConditionalPortal = React.memo<{ children: React.ReactNode; usePortal: boolean }>(
+ ({ children, usePortal }) => (usePortal ? {children} : <>{children}>)
);
ConditionalPortal.displayName = 'ConditionalPortal';