From d2aaa294ac8110c279e7c808485f620bb5482097 Mon Sep 17 00:00:00 2001 From: Maja Grubic Date: Wed, 19 Jan 2022 18:56:53 +0100 Subject: [PATCH 1/8] [Discover] Create data view from sidebar --- src/plugins/discover/kibana.json | 3 +- .../components/layout/discover_layout.tsx | 8 ++- ...discover_index_pattern_management.test.tsx | 4 +- .../discover_index_pattern_management.tsx | 20 +++++- .../sidebar/discover_sidebar.test.tsx | 2 + .../components/sidebar/discover_sidebar.tsx | 5 ++ .../discover_sidebar_responsive.test.tsx | 1 + .../sidebar/discover_sidebar_responsive.tsx | 40 +++++++++++- src/plugins/discover/public/build_services.ts | 3 + src/plugins/discover/public/plugin.tsx | 2 + .../apps/discover/_data_view_editor.ts | 65 +++++++++++++++++++ test/functional/apps/discover/index.ts | 1 + test/functional/page_objects/discover_page.ts | 13 ++++ 13 files changed, 161 insertions(+), 6 deletions(-) create mode 100644 test/functional/apps/discover/_data_view_editor.ts diff --git a/src/plugins/discover/kibana.json b/src/plugins/discover/kibana.json index d0ff54290256e..015cb6ddaf285 100644 --- a/src/plugins/discover/kibana.json +++ b/src/plugins/discover/kibana.json @@ -13,7 +13,8 @@ "navigation", "uiActions", "savedObjects", - "dataViewFieldEditor" + "dataViewFieldEditor", + "dataViewEditor" ], "optionalPlugins": ["home", "share", "usageCollection", "spaces"], "requiredBundles": ["kibanaUtils", "home", "kibanaReact", "dataViews"], diff --git a/src/plugins/discover/public/application/main/components/layout/discover_layout.tsx b/src/plugins/discover/public/application/main/components/layout/discover_layout.tsx index e98605326cc32..5e43e1d12f930 100644 --- a/src/plugins/discover/public/application/main/components/layout/discover_layout.tsx +++ b/src/plugins/discover/public/application/main/components/layout/discover_layout.tsx @@ -47,7 +47,7 @@ import { import { FieldStatisticsTable } from '../field_stats_table'; import { VIEW_MODE } from '../../../../components/view_mode_toggle'; import { DOCUMENTS_VIEW_CLICK, FIELD_STATISTICS_VIEW_CLICK } from '../field_stats_table/constants'; -import { DataViewType } from '../../../../../../data_views/common'; +import { DataViewType, DataView } from '../../../../../../data_views/common'; /** * Local storage key for sidebar persistence state @@ -203,6 +203,11 @@ export function DiscoverLayout({ }, [isSidebarClosed, storage]); const contentCentered = resultState === 'uninitialized' || resultState === 'none'; + const onDataViewCreated = (dataView: DataView) => { + if (dataView.id) { + onChangeIndexPattern(dataView.id); + } + }; return ( @@ -246,6 +251,7 @@ export function DiscoverLayout({ useNewFieldsApi={useNewFieldsApi} onEditRuntimeField={onEditRuntimeField} viewMode={viewMode} + onDataViewCreated={onDataViewCreated} /> diff --git a/src/plugins/discover/public/application/main/components/sidebar/discover_index_pattern_management.test.tsx b/src/plugins/discover/public/application/main/components/sidebar/discover_index_pattern_management.test.tsx index d44091c27d297..db684b14b8e8e 100644 --- a/src/plugins/discover/public/application/main/components/sidebar/discover_index_pattern_management.test.tsx +++ b/src/plugins/discover/public/application/main/components/sidebar/discover_index_pattern_management.test.tsx @@ -53,6 +53,7 @@ describe('Discover DataView Management', () => { const indexPattern = stubLogstashIndexPattern; const editField = jest.fn(); + const createNewDataView = jest.fn(); const mountComponent = () => { return mountWithIntl( @@ -61,6 +62,7 @@ describe('Discover DataView Management', () => { editField={editField} selectedIndexPattern={indexPattern} useNewFieldsApi={true} + createNewDataView={createNewDataView} /> ); }; @@ -79,7 +81,7 @@ describe('Discover DataView Management', () => { button.simulate('click'); expect(component.find(EuiContextMenuPanel).length).toBe(1); - expect(component.find(EuiContextMenuItem).length).toBe(2); + expect(component.find(EuiContextMenuItem).length).toBe(3); }); test('click on an add button executes editField callback', () => { diff --git a/src/plugins/discover/public/application/main/components/sidebar/discover_index_pattern_management.tsx b/src/plugins/discover/public/application/main/components/sidebar/discover_index_pattern_management.tsx index ce201f6ed3ae5..2d957a871f6ca 100644 --- a/src/plugins/discover/public/application/main/components/sidebar/discover_index_pattern_management.tsx +++ b/src/plugins/discover/public/application/main/components/sidebar/discover_index_pattern_management.tsx @@ -30,11 +30,16 @@ export interface DiscoverIndexPatternManagementProps { * @param fieldName */ editField: (fieldName?: string) => void; + + /** + * Callback to execute on create new data action + */ + createNewDataView: () => void; } export function DiscoverIndexPatternManagement(props: DiscoverIndexPatternManagementProps) { const { dataViewFieldEditor, core } = props.services; - const { useNewFieldsApi, selectedIndexPattern, editField } = props; + const { useNewFieldsApi, selectedIndexPattern, editField, createNewDataView } = props; const dataViewEditPermission = dataViewFieldEditor?.userPermissions.editIndexPattern(); const canEditDataViewField = !!dataViewEditPermission && useNewFieldsApi; const [isAddIndexPatternFieldPopoverOpen, setIsAddIndexPatternFieldPopoverOpen] = useState(false); @@ -101,6 +106,19 @@ export function DiscoverIndexPatternManagement(props: DiscoverIndexPatternManage defaultMessage: 'Manage data view fields', })} , + { + setIsAddIndexPatternFieldPopoverOpen(false); + createNewDataView(); + }} + > + {i18n.translate('discover.fieldChooser.dataViews.createNewDataView', { + defaultMessage: 'Create new data view', + })} + , ]} /> diff --git a/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar.test.tsx b/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar.test.tsx index 95c167524af48..6de06a6ce29cb 100644 --- a/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar.test.tsx +++ b/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar.test.tsx @@ -67,6 +67,8 @@ function getCompProps(): DiscoverSidebarProps { onEditRuntimeField: jest.fn(), editField: jest.fn(), viewMode: VIEW_MODE.DOCUMENT_LEVEL, + createNewDataView: jest.fn(), + onDataViewCreated: jest.fn(), }; } diff --git a/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar.tsx b/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar.tsx index fd5c838c42f91..53d8d1897ebcc 100644 --- a/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar.tsx +++ b/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar.tsx @@ -68,6 +68,8 @@ export interface DiscoverSidebarProps extends Omit void; + createNewDataView: () => void; + /** * a statistics of the distribution of fields in the given hits */ @@ -104,6 +106,7 @@ export function DiscoverSidebarComponent({ closeFlyout, editField, viewMode, + createNewDataView, }: DiscoverSidebarProps) { const [fields, setFields] = useState(null); @@ -303,6 +306,7 @@ export function DiscoverSidebarComponent({ selectedIndexPattern={selectedIndexPattern} editField={editField} useNewFieldsApi={useNewFieldsApi} + createNewDataView={createNewDataView} /> @@ -341,6 +345,7 @@ export function DiscoverSidebarComponent({ selectedIndexPattern={selectedIndexPattern} useNewFieldsApi={useNewFieldsApi} editField={editField} + createNewDataView={createNewDataView} /> diff --git a/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar_responsive.test.tsx b/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar_responsive.test.tsx index 7366c8b3c6879..76e0a737e1876 100644 --- a/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar_responsive.test.tsx +++ b/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar_responsive.test.tsx @@ -105,6 +105,7 @@ function getCompProps(): DiscoverSidebarResponsiveProps { trackUiMetric: jest.fn(), onEditRuntimeField: jest.fn(), viewMode: VIEW_MODE.DOCUMENT_LEVEL, + onDataViewCreated: jest.fn(), }; } diff --git a/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar_responsive.tsx b/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar_responsive.tsx index df79b4a03578e..710422482fcd9 100644 --- a/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar_responsive.tsx +++ b/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar_responsive.tsx @@ -106,6 +106,10 @@ export interface DiscoverSidebarResponsiveProps { * callback to execute on edit runtime field */ onEditRuntimeField: () => void; + /** + * callback to execute on create dataview + */ + onDataViewCreated: (dataView: DataView) => void; /** * Discover view mode */ @@ -118,7 +122,13 @@ export interface DiscoverSidebarResponsiveProps { * Mobile: Index pattern selector is visible and a button to trigger a flyout with all elements */ export function DiscoverSidebarResponsive(props: DiscoverSidebarResponsiveProps) { - const { selectedIndexPattern, onEditRuntimeField, useNewFieldsApi, onChangeIndexPattern } = props; + const { + selectedIndexPattern, + onEditRuntimeField, + useNewFieldsApi, + onChangeIndexPattern, + onDataViewCreated, + } = props; const [fieldFilter, setFieldFilter] = useState(getDefaultFieldFilter()); const [isFlyoutVisible, setIsFlyoutVisible] = useState(false); /** @@ -149,6 +159,7 @@ export function DiscoverSidebarResponsive(props: DiscoverSidebarResponsiveProps) }, [selectedIndexPattern]); const closeFieldEditor = useRef<() => void | undefined>(); + const closeDataViewEditor = useRef<() => void | undefined>(); useEffect(() => { const cleanup = () => { @@ -166,11 +177,15 @@ export function DiscoverSidebarResponsive(props: DiscoverSidebarResponsiveProps) closeFieldEditor.current = ref; }, []); + const setDataViewEditorRef = useCallback((ref: () => void | undefined) => { + closeDataViewEditor.current = ref; + }, []); + const closeFlyout = useCallback(() => { setIsFlyoutVisible(false); }, []); - const { dataViewFieldEditor } = props.services; + const { dataViewFieldEditor, dataViewEditor } = props.services; const editField = useCallback( (fieldName?: string) => { @@ -206,6 +221,24 @@ export function DiscoverSidebarResponsive(props: DiscoverSidebarResponsiveProps) ] ); + const createNewDataView = useCallback(() => { + const indexPatternFieldEditPermission = dataViewEditor.userPermissions.editDataView; + if (!indexPatternFieldEditPermission) { + return; + } + const ref = dataViewEditor.openEditor({ + onSave: async (dataView) => { + onDataViewCreated(dataView); + }, + }); + if (setDataViewEditorRef) { + setDataViewEditorRef(ref); + } + if (closeFlyout) { + closeFlyout(); + } + }, [dataViewEditor, setDataViewEditorRef, closeFlyout, onDataViewCreated]); + if (!selectedIndexPattern) { return null; } @@ -221,6 +254,7 @@ export function DiscoverSidebarResponsive(props: DiscoverSidebarResponsiveProps) fieldCounts={fieldCounts.current} setFieldFilter={setFieldFilter} editField={editField} + createNewDataView={createNewDataView} /> )} @@ -248,6 +282,7 @@ export function DiscoverSidebarResponsive(props: DiscoverSidebarResponsiveProps) selectedIndexPattern={selectedIndexPattern} editField={editField} useNewFieldsApi={useNewFieldsApi} + createNewDataView={createNewDataView} /> @@ -311,6 +346,7 @@ export function DiscoverSidebarResponsive(props: DiscoverSidebarResponsiveProps) setFieldEditorRef={setFieldEditorRef} closeFlyout={closeFlyout} editField={editField} + createNewDataView={createNewDataView} /> diff --git a/src/plugins/discover/public/build_services.ts b/src/plugins/discover/public/build_services.ts index b77228e309286..67bbd5fbb664b 100644 --- a/src/plugins/discover/public/build_services.ts +++ b/src/plugins/discover/public/build_services.ts @@ -39,6 +39,7 @@ import { FieldFormatsStart } from '../../field_formats/public'; import { EmbeddableStart } from '../../embeddable/public'; import type { SpacesApi } from '../../../../x-pack/plugins/spaces/public'; +import { DataViewEditorStart } from '../../data_view_editor/target/types/public'; export interface HistoryLocationState { referrer: string; @@ -67,6 +68,7 @@ export interface DiscoverServices { uiSettings: IUiSettingsClient; trackUiMetric?: (metricType: UiCounterMetricType, eventName: string | string[]) => void; dataViewFieldEditor: IndexPatternFieldEditorStart; + dataViewEditor: DataViewEditorStart; http: HttpStart; storage: Storage; spaces?: SpacesApi; @@ -108,5 +110,6 @@ export function buildServices( dataViewFieldEditor: plugins.dataViewFieldEditor, http: core.http, spaces: plugins.spaces, + dataViewEditor: plugins.dataViewEditor, }; } diff --git a/src/plugins/discover/public/plugin.tsx b/src/plugins/discover/public/plugin.tsx index e881253a7d6d2..1fd3a93b0cee8 100644 --- a/src/plugins/discover/public/plugin.tsx +++ b/src/plugins/discover/public/plugin.tsx @@ -64,6 +64,7 @@ import type { SpacesPluginStart } from '../../../../x-pack/plugins/spaces/public import { FieldFormatsStart } from '../../field_formats/public'; import { injectTruncateStyles } from './utils/truncate_styles'; import { DOC_TABLE_LEGACY, TRUNCATE_MAX_HEIGHT } from '../common'; +import { DataViewEditorStart } from '../../data_view_editor/target/types/public'; declare module '../../share/public' { export interface UrlGeneratorStateMapping { @@ -177,6 +178,7 @@ export interface DiscoverSetupPlugins { * @internal */ export interface DiscoverStartPlugins { + dataViewEditor: DataViewEditorStart; uiActions: UiActionsStart; embeddable: EmbeddableStart; navigation: NavigationStart; diff --git a/test/functional/apps/discover/_data_view_editor.ts b/test/functional/apps/discover/_data_view_editor.ts new file mode 100644 index 0000000000000..c67964fddf93b --- /dev/null +++ b/test/functional/apps/discover/_data_view_editor.ts @@ -0,0 +1,65 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { FtrProviderContext } from './ftr_provider_context'; + +export default function ({ getService, getPageObjects }: FtrProviderContext) { + const retry = getService('retry'); + const testSubjects = getService('testSubjects'); + const kibanaServer = getService('kibanaServer'); + const esArchiver = getService('esArchiver'); + const security = getService('security'); + const PageObjects = getPageObjects(['common', 'discover', 'header', 'timePicker']); + const defaultSettings = { + defaultIndex: 'logstash-*', + }; + + const createDataView = async (dataViewName: string) => { + await PageObjects.discover.clickIndexPatternActions(); + await PageObjects.discover.clickCreateNewDataView(); + await testSubjects.setValue('createIndexPatternNameInput', dataViewName, { + clearWithKeyboard: true, + typeCharByChar: true, + }); + await testSubjects.click('saveIndexPatternButton'); + }; + + describe('discover integration with data view editor', function describeIndexTests() { + before(async function () { + await security.testUser.setRoles(['kibana_admin', 'test_logstash_reader']); + await esArchiver.loadIfNeeded('test/functional/fixtures/es_archiver/logstash_functional'); + await kibanaServer.savedObjects.clean({ types: ['saved-search', 'index-pattern'] }); + await kibanaServer.importExport.load('test/functional/fixtures/kbn_archiver/discover'); + await kibanaServer.uiSettings.replace(defaultSettings); + await PageObjects.timePicker.setDefaultAbsoluteRangeViaUiSettings(); + await PageObjects.common.navigateToApp('discover'); + }); + + after(async () => { + await security.testUser.restoreDefaults(); + await kibanaServer.importExport.unload('test/functional/fixtures/kbn_archiver/discover'); + await kibanaServer.savedObjects.clean({ types: ['saved-search', 'index-pattern'] }); + }); + + it('allows creating a new data view', async function () { + const dataViewToCreate = 'logstash'; + await createDataView(dataViewToCreate); + await PageObjects.header.waitUntilLoadingHasFinished(); + await retry.waitForWithTimeout( + 'data view selector to include a newly created dataview', + 5000, + async () => { + const dataViewTitle = await PageObjects.discover.getCurrentlySelectedDataView(); + // data view editor will add wildcard symbol by default + // so we need to include it in our original title when comparing + return dataViewTitle === `${dataViewToCreate}*`; + } + ); + }); + }); +} diff --git a/test/functional/apps/discover/index.ts b/test/functional/apps/discover/index.ts index 1241b0e892e9c..679d43508a69f 100644 --- a/test/functional/apps/discover/index.ts +++ b/test/functional/apps/discover/index.ts @@ -54,5 +54,6 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./_search_on_page_load')); loadTestFile(require.resolve('./_chart_hidden')); loadTestFile(require.resolve('./_context_encoded_url_param')); + loadTestFile(require.resolve('./_data_view_editor')); }); } diff --git a/test/functional/page_objects/discover_page.ts b/test/functional/page_objects/discover_page.ts index f9328e89cd19e..effacb30bdc89 100644 --- a/test/functional/page_objects/discover_page.ts +++ b/test/functional/page_objects/discover_page.ts @@ -363,6 +363,13 @@ export class DiscoverPageObject extends FtrService { }); } + public async clickCreateNewDataView() { + await this.retry.try(async () => { + await this.testSubjects.click('dataview-create-new'); + await this.find.byClassName('indexPatternEditor__form'); + }); + } + public async hasNoResults() { return await this.testSubjects.exists('discoverNoResults'); } @@ -598,4 +605,10 @@ export class DiscoverPageObject extends FtrService { await this.testSubjects.existOrFail('dscFieldStatsEmbeddedContent'); }); } + + public async getCurrentlySelectedDataView() { + await this.testSubjects.existOrFail('discover-sidebar'); + const button = await this.testSubjects.find('indexPattern-switch-link'); + return button.getAttribute('title'); + } } From 099d3467d3dd6fe52bd61305e70c1886e4a31700 Mon Sep 17 00:00:00 2001 From: Maja Grubic Date: Thu, 20 Jan 2022 08:56:00 +0100 Subject: [PATCH 2/8] Fix failing unit test --- .../discover_index_pattern_management.test.tsx.snap | 1 + .../sidebar/discover_index_pattern_management.test.tsx | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/src/plugins/discover/public/application/main/components/sidebar/__snapshots__/discover_index_pattern_management.test.tsx.snap b/src/plugins/discover/public/application/main/components/sidebar/__snapshots__/discover_index_pattern_management.test.tsx.snap index afadc293f6420..3214e6664ada8 100644 --- a/src/plugins/discover/public/application/main/components/sidebar/__snapshots__/discover_index_pattern_management.test.tsx.snap +++ b/src/plugins/discover/public/application/main/components/sidebar/__snapshots__/discover_index_pattern_management.test.tsx.snap @@ -2,6 +2,7 @@ exports[`Discover DataView Management renders correctly 1`] = ` { manageButton.simulate('click'); expect(mockServices.core.application.navigateToApp).toHaveBeenCalled(); }); + + test('click on add dataView button executes createNewDataView callback', () => { + const component = mountComponent(); + const button = findTestSubject(component, 'discoverIndexPatternActions'); + button.simulate('click'); + + const manageButton = findTestSubject(component, 'dataview-create-new'); + manageButton.simulate('click'); + expect(createNewDataView).toHaveBeenCalled(); + }); }); From 2c4f6080b8ac58a4bd575398af6b8cf883e62e8f Mon Sep 17 00:00:00 2001 From: Maja Grubic Date: Thu, 20 Jan 2022 09:01:18 +0100 Subject: [PATCH 3/8] Fix invalid import --- src/plugins/discover/public/build_services.ts | 2 +- src/plugins/discover/public/plugin.tsx | 2 +- src/plugins/discover/tsconfig.json | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/plugins/discover/public/build_services.ts b/src/plugins/discover/public/build_services.ts index 67bbd5fbb664b..15c4981d10688 100644 --- a/src/plugins/discover/public/build_services.ts +++ b/src/plugins/discover/public/build_services.ts @@ -39,7 +39,7 @@ import { FieldFormatsStart } from '../../field_formats/public'; import { EmbeddableStart } from '../../embeddable/public'; import type { SpacesApi } from '../../../../x-pack/plugins/spaces/public'; -import { DataViewEditorStart } from '../../data_view_editor/target/types/public'; +import { DataViewEditorStart } from '../../../plugins/data_view_editor/public'; export interface HistoryLocationState { referrer: string; diff --git a/src/plugins/discover/public/plugin.tsx b/src/plugins/discover/public/plugin.tsx index 1fd3a93b0cee8..db082585e3b4a 100644 --- a/src/plugins/discover/public/plugin.tsx +++ b/src/plugins/discover/public/plugin.tsx @@ -64,7 +64,7 @@ import type { SpacesPluginStart } from '../../../../x-pack/plugins/spaces/public import { FieldFormatsStart } from '../../field_formats/public'; import { injectTruncateStyles } from './utils/truncate_styles'; import { DOC_TABLE_LEGACY, TRUNCATE_MAX_HEIGHT } from '../common'; -import { DataViewEditorStart } from '../../data_view_editor/target/types/public'; +import { DataViewEditorStart } from '../../../plugins/data_view_editor/public'; declare module '../../share/public' { export interface UrlGeneratorStateMapping { diff --git a/src/plugins/discover/tsconfig.json b/src/plugins/discover/tsconfig.json index 961d265ab7ff9..f12660b2140a8 100644 --- a/src/plugins/discover/tsconfig.json +++ b/src/plugins/discover/tsconfig.json @@ -25,6 +25,7 @@ { "path": "../data_view_field_editor/tsconfig.json"}, { "path": "../field_formats/tsconfig.json" }, { "path": "../data_views/tsconfig.json" }, - { "path": "../../../x-pack/plugins/spaces/tsconfig.json" } + { "path": "../../../x-pack/plugins/spaces/tsconfig.json" }, + { "path": "../data_view_editor/tsconfig.json" } ] } From 59ae12458394296259b7ab7c80c98711b76c8053 Mon Sep 17 00:00:00 2001 From: Maja Grubic Date: Tue, 25 Jan 2022 10:01:51 +0100 Subject: [PATCH 4/8] Addressing PR comments --- .../main/components/layout/discover_layout.tsx | 13 ++++++++----- .../sidebar/discover_sidebar_responsive.tsx | 3 +++ 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/plugins/discover/public/application/main/components/layout/discover_layout.tsx b/src/plugins/discover/public/application/main/components/layout/discover_layout.tsx index 5e43e1d12f930..3d67380473282 100644 --- a/src/plugins/discover/public/application/main/components/layout/discover_layout.tsx +++ b/src/plugins/discover/public/application/main/components/layout/discover_layout.tsx @@ -203,11 +203,14 @@ export function DiscoverLayout({ }, [isSidebarClosed, storage]); const contentCentered = resultState === 'uninitialized' || resultState === 'none'; - const onDataViewCreated = (dataView: DataView) => { - if (dataView.id) { - onChangeIndexPattern(dataView.id); - } - }; + const onDataViewCreated = useCallback( + (dataView: DataView) => { + if (dataView.id) { + onChangeIndexPattern(dataView.id); + } + }, + [onChangeIndexPattern] + ); return ( diff --git a/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar_responsive.tsx b/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar_responsive.tsx index 710422482fcd9..5db7522129a8f 100644 --- a/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar_responsive.tsx +++ b/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar_responsive.tsx @@ -166,6 +166,9 @@ export function DiscoverSidebarResponsive(props: DiscoverSidebarResponsiveProps) if (closeFieldEditor?.current) { closeFieldEditor?.current(); } + if (closeDataViewEditor?.current) { + closeDataViewEditor?.current(); + } }; return () => { // Make sure to close the editor when unmounting From e845ccaa0745a827bace7173e20c979971fd5146 Mon Sep 17 00:00:00 2001 From: Maja Grubic Date: Wed, 26 Jan 2022 17:08:01 +0100 Subject: [PATCH 5/8] Add horizontal separator --- .../sidebar/discover_index_pattern_management.tsx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/plugins/discover/public/application/main/components/sidebar/discover_index_pattern_management.tsx b/src/plugins/discover/public/application/main/components/sidebar/discover_index_pattern_management.tsx index 2d957a871f6ca..ebdce51ac5b57 100644 --- a/src/plugins/discover/public/application/main/components/sidebar/discover_index_pattern_management.tsx +++ b/src/plugins/discover/public/application/main/components/sidebar/discover_index_pattern_management.tsx @@ -7,7 +7,13 @@ */ import React, { useState } from 'react'; -import { EuiButtonIcon, EuiContextMenuItem, EuiContextMenuPanel, EuiPopover } from '@elastic/eui'; +import { + EuiButtonIcon, + EuiContextMenuItem, + EuiContextMenuPanel, + EuiHorizontalRule, + EuiPopover, +} from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { DiscoverServices } from '../../../../build_services'; import { DataView } from '../../../../../../data/common'; @@ -106,6 +112,7 @@ export function DiscoverIndexPatternManagement(props: DiscoverIndexPatternManage defaultMessage: 'Manage data view fields', })} , + , Date: Wed, 26 Jan 2022 12:27:33 -0600 Subject: [PATCH 6/8] Design tweaks --- .../sidebar/discover_index_pattern_management.tsx | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/plugins/discover/public/application/main/components/sidebar/discover_index_pattern_management.tsx b/src/plugins/discover/public/application/main/components/sidebar/discover_index_pattern_management.tsx index ebdce51ac5b57..913ca35c8a3f7 100644 --- a/src/plugins/discover/public/application/main/components/sidebar/discover_index_pattern_management.tsx +++ b/src/plugins/discover/public/application/main/components/sidebar/discover_index_pattern_management.tsx @@ -60,7 +60,7 @@ export function DiscoverIndexPatternManagement(props: DiscoverIndexPatternManage return ( { setIsAddIndexPatternFieldPopoverOpen(false); @@ -82,7 +82,8 @@ export function DiscoverIndexPatternManagement(props: DiscoverIndexPatternManage } > {i18n.translate('discover.fieldChooser.indexPatterns.addFieldButton', { - defaultMessage: 'Add field to data view', + defaultMessage: 'Add field', })} , {i18n.translate('discover.fieldChooser.indexPatterns.manageFieldButton', { - defaultMessage: 'Manage data view fields', + defaultMessage: 'Manage settings', })} , , { setIsAddIndexPatternFieldPopoverOpen(false); From 447d8539d765e584dcf5ec8780e70b72e5915c35 Mon Sep 17 00:00:00 2001 From: Maja Grubic Date: Thu, 27 Jan 2022 09:43:30 +0100 Subject: [PATCH 7/8] Update unit test --- .../discover_index_pattern_management.test.tsx.snap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/discover/public/application/main/components/sidebar/__snapshots__/discover_index_pattern_management.test.tsx.snap b/src/plugins/discover/public/application/main/components/sidebar/__snapshots__/discover_index_pattern_management.test.tsx.snap index 3214e6664ada8..94e8658e5b14e 100644 --- a/src/plugins/discover/public/application/main/components/sidebar/__snapshots__/discover_index_pattern_management.test.tsx.snap +++ b/src/plugins/discover/public/application/main/components/sidebar/__snapshots__/discover_index_pattern_management.test.tsx.snap @@ -684,7 +684,7 @@ exports[`Discover DataView Management renders correctly 1`] = ` hasArrow={true} isOpen={false} ownFocus={true} - panelPaddingSize="s" + panelPaddingSize="none" >
Date: Fri, 28 Jan 2022 16:35:42 +0100 Subject: [PATCH 8/8] Remove double declaration --- .../main/components/sidebar/discover_sidebar_responsive.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar_responsive.tsx b/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar_responsive.tsx index 7b855146d8fcf..88b43341afe7c 100644 --- a/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar_responsive.tsx +++ b/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar_responsive.tsx @@ -119,7 +119,6 @@ export interface DiscoverSidebarResponsiveProps { */ export function DiscoverSidebarResponsive(props: DiscoverSidebarResponsiveProps) { const services = useDiscoverServices(); - const { selectedIndexPattern, onEditRuntimeField, useNewFieldsApi, onChangeIndexPattern } = props; const { selectedIndexPattern, onEditRuntimeField,