diff --git a/src/platform/plugins/shared/discover/public/application/main/components/top_nav/discover_topnav.tsx b/src/platform/plugins/shared/discover/public/application/main/components/top_nav/discover_topnav.tsx index d7d1d607e24c8..5af10ae70f9c0 100644 --- a/src/platform/plugins/shared/discover/public/application/main/components/top_nav/discover_topnav.tsx +++ b/src/platform/plugins/shared/discover/public/application/main/components/top_nav/discover_topnav.tsx @@ -7,12 +7,13 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import React, { useCallback, useEffect, useMemo, useRef } from 'react'; +import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { DataViewType } from '@kbn/data-views-plugin/public'; import type { DataViewPickerProps } from '@kbn/unified-search-plugin/public'; import { ENABLE_ESQL } from '@kbn/esql-utils'; import { TextBasedLanguages } from '@kbn/esql-utils'; import { DiscoverFlyouts, dismissAllFlyoutsExceptFor } from '@kbn/discover-utils'; +import { AggregateQuery, Query, TimeRange } from '@kbn/es-query'; import { useSavedSearchInitial } from '../../state_management/discover_state_provider'; import { ESQL_TRANSITION_MODAL_KEY } from '../../../../../common/constants'; import { @@ -52,6 +53,10 @@ export const DiscoverTopNav = ({ const { dataViewEditor, navigation, dataViewFieldEditor, data, uiSettings, setHeaderActionMenu } = services; const query = useAppStateSelector((state) => state.query); + const [actualQuery, setActualQuery] = useState(query); + useEffect(() => { + setActualQuery(query); + }, [query]); const { savedDataViews, managedDataViews, adHocDataViews } = useInternalStateSelector(selectDataViewsForPicker); const dataView = useInternalStateSelector((state) => state.dataView!); @@ -221,17 +226,25 @@ export const DiscoverTopNav = ({ const shouldHideDefaultDataviewPicker = !!searchBarCustomization?.CustomDataViewPicker || !!searchBarCustomization?.hideDataViewPicker; + const onQuerySubmit = useCallback( + (payload: { dateRange: TimeRange; query?: Query | AggregateQuery }, isUpdate?: boolean) => { + if (isUpdate === false) stateContainer.actions.onUpdateQuery(payload, isUpdate); + setActualQuery(payload.query); + }, + [stateContainer] + ); + return ( <>