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 ? ( - - + +
+ +
) : (