Skip to content

Commit aa4fb69

Browse files
committed
feat(ml): shared DataViewSwitcher component and proper way of opening dropdown list
- Added a new `DataViewSwitcher` component to streamline data view selection across various ML UIs like AIOps and Data Visualizer - Enhanced auto-open behavior for the picker
1 parent 6060408 commit aa4fb69

19 files changed

Lines changed: 455 additions & 93 deletions

File tree

.github/CODEOWNERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -943,6 +943,7 @@ x-pack/platform/packages/private/ml/category_validator @elastic/ml-ui
943943
x-pack/platform/packages/private/ml/creation_wizard_utils @elastic/ml-ui
944944
x-pack/platform/packages/private/ml/data_frame_analytics_utils @elastic/ml-ui
945945
x-pack/platform/packages/private/ml/data_grid @elastic/ml-ui
946+
x-pack/platform/packages/private/ml/data_view_switcher @elastic/ml-ui
946947
x-pack/platform/packages/private/ml/data_view_utils @elastic/ml-ui
947948
x-pack/platform/packages/private/ml/date_picker @elastic/ml-ui
948949
x-pack/platform/packages/private/ml/date_utils @elastic/ml-ui

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -825,6 +825,7 @@
825825
"@kbn/ml-creation-wizard-utils": "link:x-pack/platform/packages/private/ml/creation_wizard_utils",
826826
"@kbn/ml-data-frame-analytics-utils": "link:x-pack/platform/packages/private/ml/data_frame_analytics_utils",
827827
"@kbn/ml-data-grid": "link:x-pack/platform/packages/private/ml/data_grid",
828+
"@kbn/ml-data-view-switcher": "link:x-pack/platform/packages/private/ml/data_view_switcher",
828829
"@kbn/ml-data-view-utils": "link:x-pack/platform/packages/private/ml/data_view_utils",
829830
"@kbn/ml-date-picker": "link:x-pack/platform/packages/private/ml/date_picker",
830831
"@kbn/ml-date-utils": "link:x-pack/platform/packages/private/ml/date_utils",

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,14 @@ export function ChangeDataView({
6666
onCreateDefaultAdHocDataView,
6767
onClosePopover,
6868
getDataViewHelpText,
69+
isOpen,
6970
}: DataViewPickerProps) {
7071
const { euiTheme } = useEuiTheme();
7172
const [isPopoverOpen, setPopoverIsOpen] = useState(false);
73+
74+
useEffect(() => {
75+
if (isOpen) setPopoverIsOpen(true);
76+
}, [isOpen]);
7277
const [dataViewsList, setDataViewsList] = useState<DataViewListItemEnhanced[]>([]);
7378

7479
const popoverId = useMemo(() => htmlIdGenerator()(), []);

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,10 @@ export interface DataViewPickerProps {
7878
* Optional callback to get help text based on the active data view
7979
*/
8080
getDataViewHelpText?: (dataView: DataView) => ReactNode | string | undefined;
81+
/**
82+
* When true the picker popover opens immediately on mount.
83+
*/
84+
isOpen?: boolean;
8185
}
8286

8387
export const DataViewPicker = ({
@@ -95,6 +99,7 @@ export const DataViewPicker = ({
9599
onCreateDefaultAdHocDataView,
96100
isDisabled,
97101
getDataViewHelpText,
102+
isOpen,
98103
}: DataViewPickerProps) => {
99104
return (
100105
<ChangeDataView
@@ -112,6 +117,7 @@ export const DataViewPicker = ({
112117
selectableProps={selectableProps}
113118
isDisabled={isDisabled}
114119
getDataViewHelpText={getDataViewHelpText}
120+
isOpen={isOpen}
115121
/>
116122
);
117123
};

tsconfig.base.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1624,6 +1624,8 @@
16241624
"@kbn/ml-data-frame-analytics-utils/*": ["x-pack/platform/packages/private/ml/data_frame_analytics_utils/*"],
16251625
"@kbn/ml-data-grid": ["x-pack/platform/packages/private/ml/data_grid"],
16261626
"@kbn/ml-data-grid/*": ["x-pack/platform/packages/private/ml/data_grid/*"],
1627+
"@kbn/ml-data-view-switcher": ["x-pack/platform/packages/private/ml/data_view_switcher"],
1628+
"@kbn/ml-data-view-switcher/*": ["x-pack/platform/packages/private/ml/data_view_switcher/*"],
16271629
"@kbn/ml-data-view-utils": ["x-pack/platform/packages/private/ml/data_view_utils"],
16281630
"@kbn/ml-data-view-utils/*": ["x-pack/platform/packages/private/ml/data_view_utils/*"],
16291631
"@kbn/ml-date-picker": ["x-pack/platform/packages/private/ml/date_picker"],

x-pack/.i18nrc.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@
8585
"platform/packages/shared/ml/anomaly_utils",
8686
"platform/packages/private/ml/creation_wizard_utils",
8787
"platform/packages/private/ml/data_grid",
88+
"platform/packages/private/ml/data_view_switcher",
8889
"platform/packages/private/ml/data_view_utils",
8990
"platform/packages/private/ml/date_picker",
9091
"platform/packages/private/ml/field_stats_flyout",
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
## @kbn/ml-data-view-switcher
2+
3+
Reusable data view switcher used in UIs maintained by the @elastic/ml-ui team
4+
(AIOps, Data Visualizer, etc.). Wraps the `DataViewPicker` from
5+
`@kbn/unified-search-plugin/public` with conventions shared across these views:
6+
7+
- defaults the dropdown to time-based data views,
8+
- renders a screen-reader-only page title alongside the picker,
9+
- supports an optional auto-open behaviour for landing pages, and
10+
- exposes slots for an "Open in Discover" link and additional right-side
11+
items.
12+
13+
Navigation is driven by the consumer via the `onChangeDataView` callback so
14+
the component stays decoupled from any specific routing or URL convention.
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the Elastic License
4+
* 2.0; you may not use this file except in compliance with the Elastic License
5+
* 2.0.
6+
*/
7+
8+
export { DataViewSwitcher } from './src/data_view_switcher';
9+
export type { DataViewSwitcherProps } from './src/data_view_switcher';
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the Elastic License
4+
* 2.0; you may not use this file except in compliance with the Elastic License
5+
* 2.0.
6+
*/
7+
8+
module.exports = {
9+
preset: '@kbn/test',
10+
rootDir: '../../../../../..',
11+
roots: ['<rootDir>/x-pack/platform/packages/private/ml/data_view_switcher'],
12+
};
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"type": "shared-browser",
3+
"id": "@kbn/ml-data-view-switcher",
4+
"owner": [
5+
"@elastic/ml-ui"
6+
],
7+
"group": "platform",
8+
"visibility": "private"
9+
}

0 commit comments

Comments
 (0)