Skip to content

Commit c343079

Browse files
committed
refactor(ml): reuse DataViewPicker
1 parent 5626631 commit c343079

29 files changed

Lines changed: 270 additions & 451 deletions

File tree

src/platform/plugins/shared/discover/public/plugin.tsx

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import { DISCOVER_ESQL_LOCATOR } from '@kbn/deeplinks-analytics';
2929
import { ADD_PANEL_TRIGGER, ON_OPEN_PANEL_MENU } from '@kbn/ui-actions-plugin/common/trigger_ids';
3030
import type { DrilldownTransforms } from '@kbn/embeddable-plugin/common';
3131
import { ProjectRoutingAccess } from '@kbn/cps-utils';
32+
import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public';
3233
import { DISCOVER_APP_LOCATOR, PLUGIN_ID, type DiscoverAppLocator } from '../common';
3334
import {
3435
DISCOVER_CONTEXT_APP_LOCATOR,
@@ -65,6 +66,8 @@ import type { ProfileProviderSharedServices, ProfilesManager } from './context_a
6566
import { forwardLegacyUrls } from './plugin_imports/forward_legacy_urls';
6667
import { registerEsqlResultsAttachmentUi } from './agent_builder/register_esql_results_ui';
6768
import { getProfilesInspectorView } from './context_awareness/inspector/get_profiles_inspector_view';
69+
import { OpenSearchPanel } from './application/main/components/top_nav/open_search_panel';
70+
import type { DiscoverServices } from './build_services';
6871

6972
/**
7073
* Contains Discover, one of the oldest parts of Kibana
@@ -304,6 +307,23 @@ export class DiscoverPlugin
304307
DiscoverContainer: (props: DiscoverContainerProps) => (
305308
<DiscoverContainerInternal getDiscoverServices={getDiscoverServicesInternal} {...props} />
306309
),
310+
OpenSessionPanel: (props: {
311+
onClose: () => void;
312+
onOpenSavedSearch: (id: string) => void;
313+
}) => {
314+
const openSessionServices = {
315+
addBasePath: (path: string) => core.http.basePath.prepend(path),
316+
capabilities: core.application.capabilities,
317+
savedObjectsTagging: plugins.savedObjectsTaggingOss?.getTaggingApi(),
318+
contentClient: plugins.contentManagement.client,
319+
uiSettings: core.uiSettings,
320+
};
321+
return (
322+
<KibanaContextProvider services={openSessionServices as unknown as DiscoverServices}>
323+
<OpenSearchPanel {...props} />
324+
</KibanaContextProvider>
325+
);
326+
},
307327
};
308328
}
309329

src/platform/plugins/shared/discover/public/types.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,10 @@ export interface DiscoverStart {
127127
* Use the Discover context awareness framework instead to register a custom Discover profile.
128128
*/
129129
readonly DiscoverContainer: ComponentType<DiscoverContainerProps>;
130+
readonly OpenSessionPanel: ComponentType<{
131+
onClose: () => void;
132+
onOpenSavedSearch: (id: string) => void;
133+
}>;
130134
}
131135

132136
/**

src/platform/plugins/shared/unified_search/public/dataview_picker/change_dataview.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ export function ChangeDataView({
6666
onCreateDefaultAdHocDataView,
6767
onClosePopover,
6868
getDataViewHelpText,
69+
compressed = true,
6970
}: DataViewPickerProps) {
7071
const { euiTheme } = useEuiTheme();
7172
const [isPopoverOpen, setPopoverIsOpen] = useState(false);
@@ -126,7 +127,7 @@ export function ChangeDataView({
126127
const { label, title, 'data-test-subj': dataTestSubj, fullWidth, ...rest } = trigger;
127128
return (
128129
<EuiFormControlButton
129-
compressed
130+
compressed={compressed}
130131
css={styles.trigger}
131132
isInvalid={isMissingCurrent}
132133
title={trigger.label}
@@ -328,7 +329,7 @@ export function ChangeDataView({
328329
<>
329330
<EuiFlexItem grow={true} css={shrinkableContainerCss}>
330331
<EuiFormControlLayout
331-
compressed
332+
compressed={compressed}
332333
isDropdown
333334
prepend={i18n.translate('unifiedSearch.query.queryBar.esqlMenu.switcherLabelTitle', {
334335
defaultMessage: 'Data view',

src/platform/plugins/shared/unified_search/public/dataview_picker/data_view_picker.tsx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@ export interface DataViewPickerProps {
2424
* The properties of the button that triggers the dataview picker.
2525
*/
2626
trigger: ChangeDataViewTriggerProps;
27+
/**
28+
* When false, renders the trigger at standard (non-compressed) height.
29+
* Defaults to true to preserve the default compact toolbar appearance.
30+
*/
31+
compressed?: boolean;
2732
/**
2833
* Flag that should be enabled when the current dataview is missing.
2934
*/
@@ -95,6 +100,7 @@ export const DataViewPicker = ({
95100
onCreateDefaultAdHocDataView,
96101
isDisabled,
97102
getDataViewHelpText,
103+
compressed = true,
98104
}: DataViewPickerProps) => {
99105
return (
100106
<ChangeDataView
@@ -112,6 +118,7 @@ export const DataViewPicker = ({
112118
selectableProps={selectableProps}
113119
isDisabled={isDisabled}
114120
getDataViewHelpText={getDataViewHelpText}
121+
compressed={compressed}
115122
/>
116123
);
117124
};

x-pack/platform/plugins/private/data_visualizer/public/application/data_drift/data_drift_page.tsx

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
* 2.0.
66
*/
77

8+
import { css } from '@emotion/react';
89
import type { FC, ReactNode } from 'react';
910
import React, { useCallback, useEffect, useState, useMemo, useRef } from 'react';
1011

@@ -55,6 +56,11 @@ import { useSearch } from '../common/hooks/use_search';
5556
import { DocumentCountWithBrush } from './document_count_with_brush';
5657
import { useDataDriftColors } from './use_data_drift_colors';
5758

59+
const maxInlineSizeStyles = css`
60+
max-inline-size: 100%;
61+
min-inline-size: 0;
62+
`;
63+
5864
interface PageHeaderProps {
5965
onRefresh: () => void;
6066
needsUpdate: boolean;
@@ -100,12 +106,12 @@ export const PageHeader: FC<PageHeaderProps> = ({ onRefresh, needsUpdate, header
100106
gutterSize="s"
101107
alignItems="center"
102108
justifyContent="spaceBetween"
103-
responsive={false}
109+
wrap={true}
104110
data-test-subj="dataComparisonTimeRangeSelectorSection"
105111
>
106112
<EuiFlexItem grow={false}>{headerContent ?? null}</EuiFlexItem>
107-
<EuiFlexItem grow={false}>
108-
<EuiFlexGroup gutterSize="s" alignItems="center" responsive={false}>
113+
<EuiFlexItem grow={false} css={maxInlineSizeStyles}>
114+
<EuiFlexGroup css={maxInlineSizeStyles} gutterSize="s" alignItems="center">
109115
{hasValidTimeField && (
110116
<EuiFlexItem grow={false}>
111117
<FullTimeRangeSelector
@@ -119,7 +125,7 @@ export const PageHeader: FC<PageHeaderProps> = ({ onRefresh, needsUpdate, header
119125
/>
120126
</EuiFlexItem>
121127
)}
122-
<EuiFlexItem grow={false}>
128+
<EuiFlexItem grow={false} css={maxInlineSizeStyles}>
123129
<DatePickerWrapper
124130
isAutoRefreshOnly={!hasValidTimeField}
125131
showRefresh={!hasValidTimeField}

x-pack/platform/plugins/private/data_visualizer/public/application/index_data_visualizer/components/data_view_management/data_view_management.tsx

Lines changed: 0 additions & 126 deletions
This file was deleted.

x-pack/platform/plugins/private/data_visualizer/public/application/index_data_visualizer/components/data_view_management/index.ts

Lines changed: 0 additions & 8 deletions
This file was deleted.

x-pack/platform/plugins/private/data_visualizer/public/application/index_data_visualizer/components/index_data_visualizer_view/index_data_visualizer_view.tsx

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
* 2.0.
66
*/
77

8+
import { css } from '@emotion/react';
89
import type { FC, ReactNode } from 'react';
910
import React, { useEffect, useMemo, useState, useCallback, useRef } from 'react';
1011
import type { Required } from 'utility-types';
@@ -62,7 +63,6 @@ import { DocumentCountContent } from '../../../common/components/document_count_
6263
import { OMIT_FIELDS } from '../../../../../common/constants';
6364
import { SearchPanel } from '../search_panel';
6465
import { ActionsPanel } from '../actions_panel';
65-
import { DataVisualizerDataViewManagement } from '../data_view_management';
6666
import type { GetAdditionalLinks } from '../../../common/components/results_links';
6767
import { useDataVisualizerGridData } from '../../hooks/use_data_visualizer_grid_data';
6868
import {
@@ -72,6 +72,11 @@ import {
7272
} from '../../constants/random_sampler';
7373
import type { FieldStatisticTableEmbeddableProps } from '../../embeddables/grid_embeddable/types';
7474

75+
const maxInlineSizeStyles = css`
76+
max-inline-size: 100%;
77+
min-inline-size: 0;
78+
`;
79+
7580
const defaultSearchQuery = {
7681
match_all: {},
7782
};
@@ -519,19 +524,12 @@ export const IndexDataVisualizerView: FC<IndexDataVisualizerViewProps> = ({
519524
gutterSize="s"
520525
alignItems="center"
521526
justifyContent="spaceBetween"
522-
responsive={false}
527+
wrap={true}
523528
data-test-subj="dataVisualizerTimeRangeSelectorSection"
524529
>
525-
<EuiFlexItem grow={false}>
526-
<EuiFlexGroup gutterSize="s" alignItems="center" responsive={false}>
527-
<EuiFlexItem grow={false}>{headerContent ?? null}</EuiFlexItem>
528-
<EuiFlexItem grow={false}>
529-
<DataVisualizerDataViewManagement currentDataView={currentDataView} />
530-
</EuiFlexItem>
531-
</EuiFlexGroup>
532-
</EuiFlexItem>
533-
<EuiFlexItem grow={false}>
534-
<EuiFlexGroup gutterSize="s" alignItems="center" responsive={false}>
530+
<EuiFlexItem grow={false}>{headerContent ?? null}</EuiFlexItem>
531+
<EuiFlexItem grow={false} css={maxInlineSizeStyles}>
532+
<EuiFlexGroup css={maxInlineSizeStyles} gutterSize="s" alignItems="center">
535533
{hasValidTimeField && (
536534
<EuiFlexItem grow={false}>
537535
<FullTimeRangeSelector
@@ -544,7 +542,7 @@ export const IndexDataVisualizerView: FC<IndexDataVisualizerViewProps> = ({
544542
/>
545543
</EuiFlexItem>
546544
)}
547-
<EuiFlexItem grow={false}>
545+
<EuiFlexItem grow={false} css={maxInlineSizeStyles}>
548546
<DatePickerWrapper
549547
isAutoRefreshOnly={!hasValidTimeField}
550548
showRefresh={!hasValidTimeField}

0 commit comments

Comments
 (0)