diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5a764c376d1a..3f8ed107a1c2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -76,6 +76,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
- [BUG] Add platform "darwin-arm64" to unit test ([#5290](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5290))
- [BUG][Dev Tool] Add dev tool documentation link to dev tool's help menu [#5166](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5166)
- Fix navigation issue across dashboards ([#5435](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5435))
+- [BUG] Fix Discover table panel size auto adjust in both Discover and Dashboard ([#5441](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5441))
### 🚞 Infrastructure
diff --git a/src/plugins/data_explorer/public/components/app_container.tsx b/src/plugins/data_explorer/public/components/app_container.tsx
index 8f37e9c1230f..84adde8d6b87 100644
--- a/src/plugins/data_explorer/public/components/app_container.tsx
+++ b/src/plugins/data_explorer/public/components/app_container.tsx
@@ -20,19 +20,23 @@ export const AppContainer = ({ view, params }: { view?: View; params: AppMountPa
const { Canvas, Panel, Context } = view;
+ const MemorizedCanvas = React.memo(Canvas);
+ const MemorizedPanel = React.memo(Panel);
+ const MemorizedContext = React.memo(Context);
+
// Render the application DOM.
return (
{/* TODO: improve fallback state */}
Loading...}>
-
+
-
+
-
+
-
+
);
diff --git a/src/plugins/discover/public/application/components/data_grid/data_grid_table.tsx b/src/plugins/discover/public/application/components/data_grid/data_grid_table.tsx
index fcb786b23e86..655eb087e842 100644
--- a/src/plugins/discover/public/application/components/data_grid/data_grid_table.tsx
+++ b/src/plugins/discover/public/application/components/data_grid/data_grid_table.tsx
@@ -13,7 +13,6 @@ import { DataGridFlyout } from './data_grid_table_flyout';
import { DiscoverGridContextProvider } from './data_grid_table_context';
import { toolbarVisibility } from './constants';
import { DocViewFilterFn, OpenSearchSearchHit } from '../../doc_views/doc_views_types';
-import { DiscoverServices } from '../../../build_services';
import { usePagination } from '../utils/use_pagination';
import { SortOrder } from '../../../saved_searches/types';
import { buildColumns } from '../../utils/columns';
diff --git a/src/plugins/discover/public/application/view_components/utils/use_search.ts b/src/plugins/discover/public/application/view_components/utils/use_search.ts
index 7e284ef6f443..14455989063f 100644
--- a/src/plugins/discover/public/application/view_components/utils/use_search.ts
+++ b/src/plugins/discover/public/application/view_components/utils/use_search.ts
@@ -269,9 +269,12 @@ export const useSearch = (services: DiscoverViewServices) => {
setSavedSearch(savedSearchInstance);
// sync initial app filters from savedObject to filterManager
- const filters = cloneDeep(savedSearchInstance.searchSource.getOwnField('filter'));
+ const filters =
+ cloneDeep(savedSearchInstance.searchSource.getOwnField('filter')) ||
+ data.query.filterManager.getFilters();
const query =
savedSearchInstance.searchSource.getField('query') ||
+ data.query.queryString.getQuery() ||
data.query.queryString.getDefaultQuery();
const actualFilters = [];
diff --git a/src/plugins/discover/public/embeddable/search_embeddable.scss b/src/plugins/discover/public/embeddable/search_embeddable.scss
new file mode 100644
index 000000000000..ece620cebc3c
--- /dev/null
+++ b/src/plugins/discover/public/embeddable/search_embeddable.scss
@@ -0,0 +1,20 @@
+/**
+ * 1. We want the osdDocTable__container to scroll only when embedded in an embeddable panel
+ * 2. Force a better looking scrollbar
+ */
+.embPanel {
+ .osdDocTable__container {
+ @include euiScrollBar; /* 2 */
+
+ flex: 1 1 0; /* 1 */
+ overflow: auto; /* 1 */
+
+ .dscDiscoverGrid {
+ flex-direction: column;
+ flex: 1 1 0;
+ overflow: auto;
+
+ @include euiScrollBar;
+ }
+ }
+}
diff --git a/src/plugins/discover/public/embeddable/search_embeddable.tsx b/src/plugins/discover/public/embeddable/search_embeddable.tsx
index 8b8db9079ba6..a37a001ad798 100644
--- a/src/plugins/discover/public/embeddable/search_embeddable.tsx
+++ b/src/plugins/discover/public/embeddable/search_embeddable.tsx
@@ -374,7 +374,9 @@ export class SearchEmbeddable
const props = {
searchProps,
};
- ReactDOM.render(, node);
+
+ const MemorizedSearchEmbeddableComponent = React.memo(SearchEmbeddableComponent);
+ ReactDOM.render(, node);
}
private async pushContainerStateParamsToProps(searchProps: SearchProps, force: boolean = false) {
diff --git a/src/plugins/discover/public/embeddable/search_embeddable_component.tsx b/src/plugins/discover/public/embeddable/search_embeddable_component.tsx
index c8ae54a16429..e306254a51e2 100644
--- a/src/plugins/discover/public/embeddable/search_embeddable_component.tsx
+++ b/src/plugins/discover/public/embeddable/search_embeddable_component.tsx
@@ -12,6 +12,7 @@ import {
DataGridTableProps,
} from '../application/components/data_grid/data_grid_table';
import { VisualizationNoResults } from '../../../visualizations/public';
+import './search_embeddable.scss';
interface SearchEmbeddableProps {
searchProps: SearchProps;
@@ -51,8 +52,10 @@ export function SearchEmbeddableComponent({ searchProps }: SearchEmbeddableProps
data-test-subj="embeddedSavedSearchDocTable"
>
{discoverEmbeddableProps.totalHitCount !== 0 ? (
-
-
+
+
+
+
) : (